/* This file is part of the coreboot project. */ /* SPDX-License-Identifier: GPL-2.0-only */ /* * This is a driver for the Whirlwind LED ring, which is equipped with two LED * microcontrollers TI LP55231 (http://www.ti.com/product/lp55231), each of * them driving three multicolor LEDs. * * The only connection between the ring and the main board is an i2c bus. * * This driver imitates a depthcharge display device. On initialization the * driver sets up the controllers to prepare them to accept programs to run. * * When a certain vboot state needs to be indicated, the program for that * state is loaded into the controllers, resulting in the state appropriate * LED behavior. */ #ifndef __THIRD_PARTY_COREBOOT_SRC_DRIVERS_I2C_WW_RING_WW_RING_PROGRAMS_H__ #define __THIRD_PARTY_COREBOOT_SRC_DRIVERS_I2C_WW_RING_WW_RING_PROGRAMS_H__ #include #include "drivers/i2c/ww_ring/ww_ring.h" /* There are threee independent engines/cores in the controller. */ #define LP55231_NUM_OF_ENGINES 3 /* Number of lp55321 controllers on the ring */ #define WW_RING_NUM_LED_CONTROLLERS 1 /* * Structure to describe an lp55231 program: pointer to the text of the * program, its size and load address (load addr + size sould not exceed * LP55231_MAX_PROG_SIZE), and start addresses for all of the three * engines. */ typedef struct { const uint8_t *program_text; uint8_t program_size; uint8_t load_addr; uint8_t engine_start_addr[LP55231_NUM_OF_ENGINES]; } TiLp55231Program; /* A structure to bind controller programs to a vboot state. */ typedef struct { enum display_pattern led_pattern; const TiLp55231Program *programs[WW_RING_NUM_LED_CONTROLLERS]; } WwRingStateProg; extern const WwRingStateProg wwr_state_programs[]; #endif