soc/intel/ptl: Update ME specification version to 21
[coreboot.git] / src / drivers / i2c / ww_ring / ww_ring_programs.h
blob47d1c77339ae9a3c5eb3403914ae91c511830a87
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 /*
4 * This is a driver for the Whirlwind LED ring, which is equipped with two LED
5 * microcontrollers TI LP55231 (http://www.ti.com/product/lp55231), each of
6 * them driving three multicolor LEDs.
8 * The only connection between the ring and the main board is an i2c bus.
10 * This driver imitates a depthcharge display device. On initialization the
11 * driver sets up the controllers to prepare them to accept programs to run.
13 * When a certain vboot state needs to be indicated, the program for that
14 * state is loaded into the controllers, resulting in the state appropriate
15 * LED behavior.
18 #ifndef __THIRD_PARTY_COREBOOT_SRC_DRIVERS_I2C_WW_RING_WW_RING_PROGRAMS_H__
19 #define __THIRD_PARTY_COREBOOT_SRC_DRIVERS_I2C_WW_RING_WW_RING_PROGRAMS_H__
21 #include <stdint.h>
22 #include "drivers/i2c/ww_ring/ww_ring.h"
24 /* There are three independent engines/cores in the controller. */
25 #define LP55231_NUM_OF_ENGINES 3
27 /* Number of lp55321 controllers on the ring */
28 #define WW_RING_NUM_LED_CONTROLLERS 1
31 * Structure to describe an lp55231 program: pointer to the text of the
32 * program, its size and load address (load addr + size should not exceed
33 * LP55231_MAX_PROG_SIZE), and start addresses for all of the three
34 * engines.
36 typedef struct {
37 const uint8_t *program_text;
38 uint8_t program_size;
39 uint8_t load_addr;
40 uint8_t engine_start_addr[LP55231_NUM_OF_ENGINES];
41 } TiLp55231Program;
43 /* A structure to bind controller programs to a vboot state. */
44 typedef struct {
45 enum display_pattern led_pattern;
46 const TiLp55231Program *programs[WW_RING_NUM_LED_CONTROLLERS];
47 } WwRingStateProg;
49 extern const WwRingStateProg wwr_state_programs[];
51 #endif