summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/global_data.h18
-rw-r--r--include/asm-generic/u-boot.h4
-rw-r--r--include/bloblist.h32
-rw-r--r--include/clk/sunxi.h2
-rw-r--r--include/configs/am335x_evm.h2
-rw-r--r--include/configs/amd_versal2.h5
-rw-r--r--include/configs/aquila-imx95.h28
-rw-r--r--include/configs/aristainetos2.h5
-rw-r--r--include/configs/ax3005-scm3005.h29
-rw-r--r--include/configs/beaglev_fire.h2
-rw-r--r--include/configs/capricorn-common.h13
-rw-r--r--include/configs/draco-etamin.h4
-rw-r--r--include/configs/evb_ast2700.h58
-rw-r--r--include/configs/hmibsc.h4
-rw-r--r--include/configs/imx6q-bosch-acc.h12
-rw-r--r--include/configs/imx8ulp_evk.h2
-rw-r--r--include/configs/imx91_evk.h2
-rw-r--r--include/configs/imx91_frdm.h2
-rw-r--r--include/configs/imx93_evk.h3
-rw-r--r--include/configs/imx93_frdm.h3
-rw-r--r--include/configs/imx93_qsb.h2
-rw-r--r--include/configs/imx93_var_som.h3
-rw-r--r--include/configs/imx94_evk.h3
-rw-r--r--include/configs/imx95_evk.h2
-rw-r--r--include/configs/iot2050.h8
-rw-r--r--include/configs/kontron-osm-s-mx93.h2
-rw-r--r--include/configs/m53menlo.h4
-rw-r--r--include/configs/mccmon6.h2
-rw-r--r--include/configs/mt7987.h14
-rw-r--r--include/configs/mt7988.h14
-rw-r--r--include/configs/mx53cx9020.h4
-rw-r--r--include/configs/mx53loco.h4
-rw-r--r--include/configs/mx53ppd.h4
-rw-r--r--include/configs/mx6sabre_common.h122
-rw-r--r--include/configs/mx6sabreauto.h1
-rw-r--r--include/configs/mx6sabresd.h1
-rw-r--r--include/configs/mx6ullevk.h73
-rw-r--r--include/configs/mx7ulp_com.h3
-rw-r--r--include/configs/mx7ulp_evk.h66
-rw-r--r--include/configs/nbx10g.h29
-rw-r--r--include/configs/phycore_imx91_93.h3
-rw-r--r--include/configs/sc573-ezkit.h (renamed from include/configs/sc573-ezlite.h)4
-rw-r--r--include/configs/siemens-am33x-common.h12
-rw-r--r--include/configs/siemens-env-common.h8
-rw-r--r--include/configs/smegw01.h15
-rw-r--r--include/configs/socrates.h2
-rw-r--r--include/configs/ti_omap4_common.h40
-rw-r--r--include/configs/toradex-smarc-imx95.h2
-rw-r--r--include/configs/tqma6ul.h53
-rw-r--r--include/configs/tqma6ul_mba6ul.h19
-rw-r--r--include/configs/x220.h20
-rw-r--r--include/cros_ec.h43
-rw-r--r--include/dm/device.h2
-rw-r--r--include/ec_commands.h7240
-rw-r--r--include/env/adi/adi_boot.env103
-rw-r--r--include/env/nxp/mx6sabre_common.env114
-rw-r--r--include/env/phytec/k3_mmc.env4
-rw-r--r--include/env/phytec/rauc.env52
-rw-r--r--include/env/ti/k3_dfu.env7
-rw-r--r--include/env/ti/ti_common.env2
-rw-r--r--include/env_flags.h6
-rw-r--r--include/event.h35
-rw-r--r--include/fdtdec.h7
-rw-r--r--include/hexdump.h8
-rw-r--r--include/image.h117
-rw-r--r--include/init.h2
-rw-r--r--include/linker_lists.h9
-rw-r--r--include/linux/clk-provider.h5
-rw-r--r--include/linux/string.h19
-rw-r--r--include/net-common.h4
-rw-r--r--include/net-lwip.h1
-rw-r--r--include/reset-uclass.h19
-rw-r--r--include/reset.h49
-rw-r--r--include/stdio_dev.h1
-rw-r--r--include/sysinfo.h17
-rw-r--r--include/sysinfo/tq_eeprom.h24
-rw-r--r--include/sysreset.h18
-rw-r--r--include/tsec.h17
-rw-r--r--include/usbdevice.h6
-rw-r--r--include/video_font.h6
-rw-r--r--include/video_font_6x8.h2578
-rw-r--r--include/virtio.h3
-rw-r--r--include/virtio_mmio.h12
-rw-r--r--include/zynqmp_firmware.h4
84 files changed, 1907 insertions, 9396 deletions
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
index ad7ebb1bbc9..745d2c3a966 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -108,15 +108,6 @@ struct global_data {
*/
unsigned long relocaddr;
/**
- * @initial_relocaddr: top address of U-Boot in RAM
- *
- * This should be the value of relocaddr after setup_dest_addr() and
- * before reserve_pram() or any other allocations or reservations shift
- * it. This address will, depending on the platform, be equivalent to
- * ram_top and should also be considered an exclusive address.
- */
- unsigned long initial_relocaddr;
- /**
* @irq_sp: IRQ stack pointer
*/
unsigned long irq_sp;
@@ -457,13 +448,6 @@ struct global_data {
*/
struct upl *upl;
#endif
- /**
- * @dram: array describing DRAM banks (start address and size for each bank)
- */
- struct { /* RAM configuration */
- phys_addr_t start;
- phys_size_t size;
- } dram[CONFIG_NR_DRAM_BANKS];
};
#ifndef DO_DEPS_ONLY
static_assert(sizeof(struct global_data) == GD_SIZE);
@@ -554,7 +538,7 @@ static_assert(sizeof(struct global_data) == GD_SIZE);
#if CONFIG_VAL(SYS_MALLOC_F_LEN)
#define gd_malloc_ptr() gd->malloc_ptr
#else
-#define gd_malloc_ptr() 0
+#define gd_malloc_ptr() 0L
#endif
#if CONFIG_IS_ENABLED(UPL)
diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h
index 931fe2f3274..8c619c1b74a 100644
--- a/include/asm-generic/u-boot.h
+++ b/include/asm-generic/u-boot.h
@@ -59,6 +59,10 @@ struct bd_info {
#endif
ulong bi_arch_number; /* unique id for this board */
ulong bi_boot_params; /* where this board expects params */
+ struct { /* RAM configuration */
+ phys_addr_t start;
+ phys_size_t size;
+ } bi_dram[CONFIG_NR_DRAM_BANKS];
};
#endif /* __ASSEMBLY__ */
diff --git a/include/bloblist.h b/include/bloblist.h
index 4c578772965..e67b2a76358 100644
--- a/include/bloblist.h
+++ b/include/bloblist.h
@@ -489,23 +489,9 @@ const char *bloblist_tag_name(enum bloblist_tag_t tag);
int bloblist_reloc(void *to, uint to_size);
/**
- * bloblist_exists() - Check for the prior existence of a bloblist
- *
- * This will check for a transfer list having been passed via standard
- * convention. If CONFIG_BLOBLIST_PASSAGE_MANDATORY is selected and one is not
- * found, we return false.
- *
- * If CONFIG_BLOBLIST_FIXED is selected, it uses CONFIG_BLOBLIST_ADDR and
- * CONFIG_BLOBLIST_SIZE to check for a bloblist.
- *
- * Return: true if found, false if not
- */
-bool bloblist_exists(void);
-
-/**
* bloblist_init() - Init the bloblist system with a single bloblist
*
- * This creates a bloblist for use, if not already found.
+ * This locates and sets up the blocklist for use.
*
* If CONFIG_BLOBLIST_FIXED is selected, it uses CONFIG_BLOBLIST_ADDR and
* CONFIG_BLOBLIST_SIZE to set up a bloblist for use by U-Boot.
@@ -522,6 +508,22 @@ bool bloblist_exists(void);
*/
int bloblist_init(void);
+#if CONFIG_IS_ENABLED(BLOBLIST)
+/**
+ * bloblist_maybe_init() - Init the bloblist system if not already done
+ *
+ * Calls bloblist_init() if the GD_FLG_BLOBLIST_READY flag is not set
+ *
+ * Return: 0 if OK, -ve on error
+ */
+int bloblist_maybe_init(void);
+#else
+static inline int bloblist_maybe_init(void)
+{
+ return 0;
+}
+#endif /* BLOBLIST */
+
/**
* bloblist_check_reg_conv() - Check whether the bloblist is compliant to
* the register conventions according to the
diff --git a/include/clk/sunxi.h b/include/clk/sunxi.h
index 09cc7a4fc46..c298195c51e 100644
--- a/include/clk/sunxi.h
+++ b/include/clk/sunxi.h
@@ -85,4 +85,6 @@ struct ccu_plat {
const struct ccu_desc *desc;
};
+extern struct clk_ops sunxi_clk_ops;
+
#endif /* _CLK_SUNXI_H */
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index babf065bc3e..d2164b41d6d 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -83,8 +83,6 @@
"fdtfile=undefined\0" \
"finduuid=part uuid mmc 0:2 uuid\0" \
"console=ttyO0,115200n8\0" \
- "stdout=serial,vidconsole\0" \
- "stderr=serial,vidconsole\0" \
"partitions=" \
"uuid_disk=${uuid_gpt_disk};" \
"name=bootloader,start=384K,size=1792K," \
diff --git a/include/configs/amd_versal2.h b/include/configs/amd_versal2.h
index a07e12bd146..fccc786219f 100644
--- a/include/configs/amd_versal2.h
+++ b/include/configs/amd_versal2.h
@@ -23,11 +23,6 @@
#define CFG_SYS_BAUDRATE_TABLE \
{ 4800, 9600, 19200, 38400, 57600, 115200 }
-/* GUID for capsule updatable firmware image */
-#define XILINX_BOOT_IMAGE_GUID \
- EFI_GUID(0xed9e7fcf, 0x47b3, 0x40cd, 0xb6, 0xe3, \
- 0x56, 0x5f, 0x14, 0x67, 0x6d, 0x82)
-
#if defined(CONFIG_CMD_DFU)
#define DFU_DEFAULT_POLL_TIMEOUT 300
#define DFU_ALT_INFO_RAM \
diff --git a/include/configs/aquila-imx95.h b/include/configs/aquila-imx95.h
deleted file mode 100644
index 07d09d138cb..00000000000
--- a/include/configs/aquila-imx95.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/* Copyright (c) Toradex */
-
-#ifndef __AQUILA_IMX95_H
-#define __AQUILA_IMX95_H
-
-#include <linux/sizes.h>
-#include <asm/arch/imx-regs.h>
-
-#define CFG_SYS_UBOOT_BASE \
- (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
-
-/* module has 8GB, 2GB from 0x80000000..0xffffffff, 6GB above */
-#define SZ_6G _AC(0x180000000, ULL)
-
-/* first 256MB reserved for firmware */
-#define CFG_SYS_INIT_RAM_ADDR 0x90000000
-#define CFG_SYS_INIT_RAM_SIZE SZ_2M
-
-#define CFG_SYS_SDRAM_BASE 0x90000000
-#define PHYS_SDRAM 0x90000000
-#define PHYS_SDRAM_SIZE (SZ_2G - SZ_256M)
-#define PHYS_SDRAM_2_SIZE SZ_6G
-
-#define CFG_SYS_SECURE_SDRAM_BASE 0x8A000000 /* Secure DDR region for A55, SPL could use first 2MB */
-#define CFG_SYS_SECURE_SDRAM_SIZE 0x06000000
-
-#endif
diff --git a/include/configs/aristainetos2.h b/include/configs/aristainetos2.h
index 76b9d3166be..8a66b1275df 100644
--- a/include/configs/aristainetos2.h
+++ b/include/configs/aristainetos2.h
@@ -211,7 +211,7 @@
"${pubkey}\0" \
"rescueboot=echo Booting rescue system ...; " \
"run addmtd addmisc;" \
- "if test -n \"${rescue_reason}\"; then run rescue_reason;fi;" \
+ "if test -n ${rescue_reason}; then run rescue_reason;fi;" \
"run boot_board_type;" \
"if bootm ${fit_addr_r}; then ; " \
"else " \
@@ -413,4 +413,7 @@
/* UBI support */
+#define CFG_ENV_FLAGS_LIST_STATIC "ethaddr:mw,serial#:sw,board_type:sw," \
+ "sysnum:dw,panel:sw,ipaddr:iw,serverip:iw"
+
#endif /* __ARISTAINETOS2_CONFIG_H */
diff --git a/include/configs/ax3005-scm3005.h b/include/configs/ax3005-scm3005.h
deleted file mode 100644
index 4eead2910c8..00000000000
--- a/include/configs/ax3005-scm3005.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (c) 2021-2026 Axiado Corporation (or its affiliates).
- */
-
-#ifndef __AX3005_SCM3005_H
-#define __AX3005_SCM3005_H
-
-#include <linux/sizes.h>
-
-#define GICD_BASE 0x40400000
-#define GICR_BASE 0x40500000
-
-#define SYS_TIMER_CTRL 0x48016000
-#define SYS_TIMER_ENABLE 0x1
-#define SYS_TIMER_DISABLE 0x0
-
-/* DRAM: 2 GB at 0x80000000 */
-#define CFG_SYS_SDRAM_BASE 0x80000000
-#define CFG_SYS_SDRAM_SIZE SZ_2G
-#define CFG_SYS_INIT_SP_ADDR (CFG_SYS_SDRAM_BASE + SZ_1M)
-
-#define CFG_SYS_MAXARGS 64
-#define CFG_SYS_BARGSIZE CFG_SYS_CBSIZE
-
-#define CFG_SYS_BAUDRATE_TABLE \
- { 4800, 9600, 19200, 38400, 57600, 115200 }
-
-#endif /* __AX3005_SCM3005_H */
diff --git a/include/configs/beaglev_fire.h b/include/configs/beaglev_fire.h
index 8724a71504c..e3ee0f02f2d 100644
--- a/include/configs/beaglev_fire.h
+++ b/include/configs/beaglev_fire.h
@@ -30,7 +30,7 @@
#define BOOTENV_DESIGN_OVERLAYS \
"design_overlays=" \
- "if test -n \"${no_of_overlays}\"; then " \
+ "if test -n ${no_of_overlays}; then " \
"setenv inc 1; " \
"setenv idx 0; " \
"fdt resize ${dtbo_size}; " \
diff --git a/include/configs/capricorn-common.h b/include/configs/capricorn-common.h
index 7120a44d186..ee13d2ab950 100644
--- a/include/configs/capricorn-common.h
+++ b/include/configs/capricorn-common.h
@@ -38,6 +38,19 @@
#define CFG_EXTRA_ENV_SETTINGS \
AHAB_ENV
+#ifdef CONFIG_ENV_WRITEABLE_LIST
+#define CFG_ENV_FLAGS_LIST_STATIC \
+ "bootcount:dw," \
+ "bootdelay:sw," \
+ "bootlimit:dw," \
+ "partitionset_active:sw," \
+ "rastate:dw," \
+ "sig_a:sw,sig_b:sw," \
+ "target_env:sw," \
+ "upgrade_available:dw," \
+ "ustate:dw"
+#endif
+
/* Default location for tftp and bootm */
/* On CCP board, USDHC1 is for eMMC */
diff --git a/include/configs/draco-etamin.h b/include/configs/draco-etamin.h
index b1b403980b1..6ae85b575b7 100644
--- a/include/configs/draco-etamin.h
+++ b/include/configs/draco-etamin.h
@@ -99,10 +99,10 @@
"nand_args=run bootargs_defaults;" \
"mtdparts default;" \
"setenv ${partitionset_active} true;" \
- "if test -n \"${A}\"; then " \
+ "if test -n ${A}; then " \
"setenv nand_active_ubi_vol ${rootfs_name}_a;" \
"fi;" \
- "if test -n \"${B}\"; then " \
+ "if test -n ${B}; then " \
"setenv nand_active_ubi_vol ${rootfs_name}_b;" \
"fi;" \
"setenv nand_root ubi0:${nand_active_ubi_vol} rw " \
diff --git a/include/configs/evb_ast2700.h b/include/configs/evb_ast2700.h
deleted file mode 100644
index 6b73eddc1af..00000000000
--- a/include/configs/evb_ast2700.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) ASPEED Technology Inc.
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#include <configs/aspeed-common.h>
-
-/* Extra ENV for Boot Command */
-#define STR_HELPER(n) #n
-#define STR(n) STR_HELPER(n)
-
-#define CFG_SYS_UBOOT_BASE CONFIG_TEXT_BASE
-
-#define CFG_EXTRA_ENV_SETTINGS \
- "bootspi=fdt addr ${fdtspiaddr} && " \
- "fdt header get fitsize totalsize && " \
- "cp.b ${fdtspiaddr} ${loadaddr} ${fitsize} && " \
- "bootm ${loadaddr}; " \
- "echo Error loading kernel FIT image\0" \
- "loadaddr=" STR(CONFIG_SYS_LOAD_ADDR) "\0" \
- "bootside=a\0" \
- "rootfs=rofs-a\0" \
- "setmmcargs=setenv bootargs ${bootargs} " \
- "rootwait root=PARTLABEL=${rootfs}\0" \
- "boota=setenv bootpart 2; setenv rootfs rofs-a; " \
- "run setmmcargs; " \
- "ext4load mmc 0:${bootpart} ${loadaddr} fitImage && " \
- "bootm ${loadaddr}; " \
- "echo Error loading kernel FIT image\0" \
- "bootb=setenv bootpart 3; setenv rootfs rofs-b; " \
- "run setmmcargs; " \
- "ext4load mmc 0:${bootpart} ${loadaddr} fitImage && " \
- "bootm ${loadaddr}; " \
- "echo Error loading kernel FIT image\0" \
- "bootmmc=if test \"${bootside}\" = \"b\"; " \
- "then run bootb; run boota; " \
- "else run boota; run bootb; fi\0" \
- "setufsargs=setenv bootargs ${bootargs} " \
- "rootwait root=PARTLABEL=${rootfs}\0" \
- "ufsboota=setenv bootpart 2; setenv rootfs rofs-a; " \
- "run setufsargs; " \
- "ext4load scsi 0:${bootpart} ${loadaddr} fitImage && " \
- "bootm ${loadaddr}; " \
- "echo Error loading kernel FIT image\0" \
- "ufsbootb=setenv bootpart 3; setenv rootfs rofs-b; " \
- "run setufsargs; " \
- "ext4load scsi 0:${bootpart} ${loadaddr} fitImage && " \
- "bootm ${loadaddr}; " \
- "echo Error loading kernel FIT image\0" \
- "bootufs=if test \"${bootside}\" = \"b\"; " \
- "then run ufsbootb; run ufsboota; " \
- "else run ufsboota; run ufsbootb; fi\0" \
- "verify=no\0" \
- ""
-#endif /* __CONFIG_H */
diff --git a/include/configs/hmibsc.h b/include/configs/hmibsc.h
index ea9762ee448..950ec8b190d 100644
--- a/include/configs/hmibsc.h
+++ b/include/configs/hmibsc.h
@@ -8,4 +8,8 @@
#ifndef __CONFIGS_HMIBSC_H
#define __CONFIGS_HMIBSC_H
+/* PHY needs a longer aneg time */
+
+#define CFG_ENV_FLAGS_LIST_STATIC "BOOT_A_LEFT:dw,BOOT_B_LEFT:dw,BOOT_ORDER:sw"
+
#endif
diff --git a/include/configs/imx6q-bosch-acc.h b/include/configs/imx6q-bosch-acc.h
index e00cddfdac0..84da8250684 100644
--- a/include/configs/imx6q-bosch-acc.h
+++ b/include/configs/imx6q-bosch-acc.h
@@ -44,6 +44,18 @@
"then env set env_persisted 1; run save_env; fi;\0" \
"save_env=env save; env save\0"
+#define CFG_ENV_FLAGS_LIST_STATIC \
+ "bootset:bw," \
+ "clone_pending:bw," \
+ "endurance_test:bw," \
+ "env_persisted:bw," \
+ "factory_reset:bw," \
+ "fdtcontroladdr:xw," \
+ "fitpart:dw," \
+ "mmcpart:dw," \
+ "production:bw," \
+ "ustate:dw"
+
#else
/* SD Card boot */
#define ENV_EXTRA \
diff --git a/include/configs/imx8ulp_evk.h b/include/configs/imx8ulp_evk.h
index b4f80fb944b..edfd6f70815 100644
--- a/include/configs/imx8ulp_evk.h
+++ b/include/configs/imx8ulp_evk.h
@@ -30,4 +30,6 @@
#define PHYS_SDRAM 0x80000000
#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG3_RBASE
#endif
diff --git a/include/configs/imx91_evk.h b/include/configs/imx91_evk.h
index 13918e2b873..9c5014fd0a5 100644
--- a/include/configs/imx91_evk.h
+++ b/include/configs/imx91_evk.h
@@ -16,4 +16,6 @@
#define PHYS_SDRAM 0x80000000
#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/imx91_frdm.h b/include/configs/imx91_frdm.h
index 480b3fb477a..6d051ed88a5 100644
--- a/include/configs/imx91_frdm.h
+++ b/include/configs/imx91_frdm.h
@@ -20,4 +20,6 @@
#define PHYS_SDRAM 0x80000000
#define PHYS_SDRAM_SIZE SZ_2G /* 2GB DDR */
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/imx93_evk.h b/include/configs/imx93_evk.h
index 67774f54790..ffd72a38bcb 100644
--- a/include/configs/imx93_evk.h
+++ b/include/configs/imx93_evk.h
@@ -26,4 +26,7 @@
#define PHYS_SDRAM 0x80000000
#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/imx93_frdm.h b/include/configs/imx93_frdm.h
index bcea360b399..c98c10774cb 100644
--- a/include/configs/imx93_frdm.h
+++ b/include/configs/imx93_frdm.h
@@ -20,4 +20,7 @@
#define PHYS_SDRAM 0x80000000
#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/imx93_qsb.h b/include/configs/imx93_qsb.h
index 350f094c2a6..a7b94f7ab57 100644
--- a/include/configs/imx93_qsb.h
+++ b/include/configs/imx93_qsb.h
@@ -16,4 +16,6 @@
#define PHYS_SDRAM 0x80000000
#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/imx93_var_som.h b/include/configs/imx93_var_som.h
index 6a425e6d1ea..9dc10aea407 100644
--- a/include/configs/imx93_var_som.h
+++ b/include/configs/imx93_var_som.h
@@ -38,4 +38,7 @@
#define CFG_SYS_FSL_USDHC_NUM 2
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/imx94_evk.h b/include/configs/imx94_evk.h
index 2623c13db06..f93c3c4e4a8 100644
--- a/include/configs/imx94_evk.h
+++ b/include/configs/imx94_evk.h
@@ -18,4 +18,7 @@
#define PHYS_SDRAM_SIZE 0x70000000UL /* 2GB - 256MB DDR */
#define PHYS_SDRAM_2_SIZE 0x180000000 /* 8GB */
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/imx95_evk.h b/include/configs/imx95_evk.h
index 1fdc9ce21ef..3d22740b3f4 100644
--- a/include/configs/imx95_evk.h
+++ b/include/configs/imx95_evk.h
@@ -23,4 +23,6 @@
#define PHYS_SDRAM_2_SIZE 0x380000000 /* 14GB (Totally 16GB) */
#endif
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/iot2050.h b/include/configs/iot2050.h
index fac4bbcd4ed..5c58c7bbaab 100644
--- a/include/configs/iot2050.h
+++ b/include/configs/iot2050.h
@@ -38,4 +38,12 @@
func(MMC, mmc, 0) \
BOOT_TARGET_USB(func)
+#ifdef CONFIG_ENV_WRITEABLE_LIST
+#define CFG_ENV_FLAGS_LIST_STATIC \
+ "board_uuid:sw,board_name:sw,board_serial:sw,board_a5e:sw," \
+ "mlfb:sw,fw_version:sw,seboot_version:sw," \
+ "m2_manual_config:sw," \
+ "eth1addr:mw,eth2addr:mw,watchdog_timeout_ms:dw,boot_targets:sw"
+#endif
+
#endif /* __CONFIG_IOT2050_H */
diff --git a/include/configs/kontron-osm-s-mx93.h b/include/configs/kontron-osm-s-mx93.h
index fed75e6fa12..ab2b42298c8 100644
--- a/include/configs/kontron-osm-s-mx93.h
+++ b/include/configs/kontron-osm-s-mx93.h
@@ -25,4 +25,6 @@
#define CFG_MXC_USB_FLAGS 0
#endif
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif /* __KONTRON_MX93_CONFIG_H */
diff --git a/include/configs/m53menlo.h b/include/configs/m53menlo.h
index 36e330887cd..a6aafb51854 100644
--- a/include/configs/m53menlo.h
+++ b/include/configs/m53menlo.h
@@ -15,9 +15,9 @@
* Memory configurations
*/
#define PHYS_SDRAM_1 CSD0_BASE_ADDR
-#define PHYS_SDRAM_1_SIZE (gd->dram[0].size)
+#define PHYS_SDRAM_1_SIZE (gd->bd->bi_dram[0].size)
#define PHYS_SDRAM_2 CSD1_BASE_ADDR
-#define PHYS_SDRAM_2_SIZE (gd->dram[1].size)
+#define PHYS_SDRAM_2_SIZE (gd->bd->bi_dram[1].size)
#define PHYS_SDRAM_SIZE (gd->ram_size)
#define CFG_SYS_SDRAM_BASE (PHYS_SDRAM_1)
diff --git a/include/configs/mccmon6.h b/include/configs/mccmon6.h
index 0cf62d6bda8..9f401718bfb 100644
--- a/include/configs/mccmon6.h
+++ b/include/configs/mccmon6.h
@@ -88,7 +88,7 @@
"bootm $loadaddr};reset;" \
"fi\0" \
"bootcmd=" \
- "if test -n \"${recovery_status}\"; then " \
+ "if test -n ${recovery_status}; then " \
"run boot_recovery;" \
"else " \
"if test ! -n ${boot_medium}; then " \
diff --git a/include/configs/mt7987.h b/include/configs/mt7987.h
deleted file mode 100644
index 18ed3c7a55b..00000000000
--- a/include/configs/mt7987.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Configuration for MediaTek MT7987 SoC
- *
- * Copyright (C) 2025 MediaTek Inc.
- * Author: Sam Shih <[email protected]>
- */
-
-#ifndef __MT7987_H
-#define __MT7987_H
-
-#define CFG_MAX_MEM_MAPPED 0xC0000000
-
-#endif
diff --git a/include/configs/mt7988.h b/include/configs/mt7988.h
deleted file mode 100644
index e63825a5a19..00000000000
--- a/include/configs/mt7988.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Configuration for MediaTek MT7988 SoC
- *
- * Copyright (C) 2022 MediaTek Inc.
- * Author: Sam Shih <[email protected]>
- */
-
-#ifndef __MT7988_H
-#define __MT7988_H
-
-#define CFG_MAX_MEM_MAPPED 0xC0000000
-
-#endif
diff --git a/include/configs/mx53cx9020.h b/include/configs/mx53cx9020.h
index e823611d2e4..2bd1426c7d9 100644
--- a/include/configs/mx53cx9020.h
+++ b/include/configs/mx53cx9020.h
@@ -51,9 +51,9 @@
/* Physical Memory Map */
#define PHYS_SDRAM_1 CSD0_BASE_ADDR
-#define PHYS_SDRAM_1_SIZE (gd->dram[0].size)
+#define PHYS_SDRAM_1_SIZE (gd->bd->bi_dram[0].size)
#define PHYS_SDRAM_2 CSD1_BASE_ADDR
-#define PHYS_SDRAM_2_SIZE (gd->dram[1].size)
+#define PHYS_SDRAM_2_SIZE (gd->bd->bi_dram[1].size)
#define PHYS_SDRAM_SIZE (gd->ram_size)
#define CFG_SYS_SDRAM_BASE (PHYS_SDRAM_1)
diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h
index acd6eb6f8ac..14095b99f03 100644
--- a/include/configs/mx53loco.h
+++ b/include/configs/mx53loco.h
@@ -86,9 +86,9 @@
/* Physical Memory Map */
#define PHYS_SDRAM_1 CSD0_BASE_ADDR
-#define PHYS_SDRAM_1_SIZE (gd->dram[0].size)
+#define PHYS_SDRAM_1_SIZE (gd->bd->bi_dram[0].size)
#define PHYS_SDRAM_2 CSD1_BASE_ADDR
-#define PHYS_SDRAM_2_SIZE (gd->dram[1].size)
+#define PHYS_SDRAM_2_SIZE (gd->bd->bi_dram[1].size)
#define PHYS_SDRAM_SIZE (gd->ram_size)
#define CFG_SYS_SDRAM_BASE (PHYS_SDRAM_1)
diff --git a/include/configs/mx53ppd.h b/include/configs/mx53ppd.h
index 65babf50546..3707de254e1 100644
--- a/include/configs/mx53ppd.h
+++ b/include/configs/mx53ppd.h
@@ -81,9 +81,9 @@
/* Physical Memory Map */
#define PHYS_SDRAM_1 CSD0_BASE_ADDR
-#define PHYS_SDRAM_1_SIZE (gd->dram[0].size)
+#define PHYS_SDRAM_1_SIZE (gd->bd->bi_dram[0].size)
#define PHYS_SDRAM_2 CSD1_BASE_ADDR
-#define PHYS_SDRAM_2_SIZE (gd->dram[1].size)
+#define PHYS_SDRAM_2_SIZE (gd->bd->bi_dram[1].size)
#define PHYS_SDRAM_SIZE (gd->ram_size)
#define CFG_SYS_SDRAM_BASE (PHYS_SDRAM_1)
diff --git a/include/configs/mx6sabre_common.h b/include/configs/mx6sabre_common.h
index d3a57a10a16..ef2848b71f3 100644
--- a/include/configs/mx6sabre_common.h
+++ b/include/configs/mx6sabre_common.h
@@ -8,11 +8,133 @@
#ifndef __MX6QSABRE_COMMON_CONFIG_H
#define __MX6QSABRE_COMMON_CONFIG_H
+#include <linux/stringify.h>
+
#include "mx6_common.h"
/* MMC Configs */
#define CFG_SYS_FSL_ESDHC_ADDR 0
+#ifdef CONFIG_SUPPORT_EMMC_BOOT
+#define EMMC_ENV \
+ "emmcdev=2\0" \
+ "update_emmc_firmware=" \
+ "if test ${ip_dyn} = yes; then " \
+ "setenv get_cmd dhcp; " \
+ "else " \
+ "setenv get_cmd tftp; " \
+ "fi; " \
+ "if ${get_cmd} ${update_sd_firmware_filename}; then " \
+ "if mmc dev ${emmcdev} 1; then " \
+ "setexpr fw_sz ${filesize} / 0x200; " \
+ "setexpr fw_sz ${fw_sz} + 1; " \
+ "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
+ "fi; " \
+ "fi\0"
+#else
+#define EMMC_ENV ""
+#endif
+
+#define CFG_EXTRA_ENV_SETTINGS \
+ "script=boot.scr\0" \
+ "image=zImage\0" \
+ "fdtfile=undefined\0" \
+ "fdt_addr=0x18000000\0" \
+ "boot_fdt=try\0" \
+ "ip_dyn=yes\0" \
+ "console=" CONSOLE_DEV "\0" \
+ "dfuspi=dfu 0 sf 0:0:10000000:0\0" \
+ "dfu_alt_info_spl=spl raw 0x400\0" \
+ "dfu_alt_info_img=u-boot raw 0x10000\0" \
+ "dfu_alt_info=spl raw 0x400\0" \
+ "initrd_high=0xffffffff\0" \
+ "splashimage=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
+ "mmcdev=" __stringify(CONFIG_ENV_MMC_DEVICE_INDEX) "\0" \
+ "mmcpart=1\0" \
+ "finduuid=part uuid mmc ${mmcdev}:2 uuid\0" \
+ "update_sd_firmware=" \
+ "if test ${ip_dyn} = yes; then " \
+ "setenv get_cmd dhcp; " \
+ "else " \
+ "setenv get_cmd tftp; " \
+ "fi; " \
+ "if mmc dev ${mmcdev}; then " \
+ "if ${get_cmd} ${update_sd_firmware_filename}; then " \
+ "setexpr fw_sz ${filesize} / 0x200; " \
+ "setexpr fw_sz ${fw_sz} + 1; " \
+ "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
+ "fi; " \
+ "fi\0" \
+ EMMC_ENV \
+ "mmcargs=setenv bootargs console=${console},${baudrate} " \
+ "root=PARTUUID=${uuid} rootwait rw\0" \
+ "loadbootscript=" \
+ "load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script} || " \
+ "load mmc ${mmcdev}:${mmcpart} ${loadaddr} boot/${script};\0" \
+ "bootscript=echo Running bootscript from mmc ...; " \
+ "source\0" \
+ "loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} || " \
+ "load mmc ${mmcdev}:${mmcpart} ${loadaddr} boot/${image}\0" \
+ "loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdtfile} || " \
+ "load mmc ${mmcdev}:${mmcpart} ${fdt_addr} boot/${fdtfile}\0" \
+ "mmcboot=echo Booting from mmc ...; " \
+ "run finduuid; " \
+ "run mmcargs; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if run loadfdt; then " \
+ "bootz ${loadaddr} - ${fdt_addr}; " \
+ "else " \
+ "if test ${boot_fdt} = try; then " \
+ "bootz; " \
+ "else " \
+ "echo WARN: Cannot load the DT; " \
+ "fi; " \
+ "fi; " \
+ "else " \
+ "bootz; " \
+ "fi;\0" \
+ "netargs=setenv bootargs console=${console},${baudrate} " \
+ "root=/dev/nfs " \
+ "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+ "netboot=echo Booting from net ...; " \
+ "run netargs; " \
+ "if test ${ip_dyn} = yes; then " \
+ "setenv get_cmd dhcp; " \
+ "else " \
+ "setenv get_cmd tftp; " \
+ "fi; " \
+ "${get_cmd} ${image}; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if ${get_cmd} ${fdt_addr} ${fdtfile}; then " \
+ "bootz ${loadaddr} - ${fdt_addr}; " \
+ "else " \
+ "if test ${boot_fdt} = try; then " \
+ "bootz; " \
+ "else " \
+ "echo WARN: Cannot load the DT; " \
+ "fi; " \
+ "fi; " \
+ "else " \
+ "bootz; " \
+ "fi;\0" \
+ "findfdt="\
+ "if test $fdtfile = undefined; then " \
+ "if test $board_name = SABREAUTO && test $board_rev = MX6QP; then " \
+ "setenv fdtfile imx6qp-sabreauto.dtb; fi; " \
+ "if test $board_name = SABREAUTO && test $board_rev = MX6Q; then " \
+ "setenv fdtfile imx6q-sabreauto.dtb; fi; " \
+ "if test $board_name = SABREAUTO && test $board_rev = MX6DL; then " \
+ "setenv fdtfile imx6dl-sabreauto.dtb; fi; " \
+ "if test $board_name = SABRESD && test $board_rev = MX6QP; then " \
+ "setenv fdtfile imx6qp-sabresd.dtb; fi; " \
+ "if test $board_name = SABRESD && test $board_rev = MX6Q; then " \
+ "setenv fdtfile imx6q-sabresd.dtb; fi; " \
+ "if test $board_name = SABRESD && test $board_rev = MX6DL; then " \
+ "setenv fdtfile imx6dl-sabresd.dtb; fi; " \
+ "if test $fdtfile = undefined; then " \
+ "echo WARNING: Could not determine dtb to use; fi; " \
+ "fi;\0" \
+
/* Physical Memory Map */
#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
diff --git a/include/configs/mx6sabreauto.h b/include/configs/mx6sabreauto.h
index b5602def87d..e491af3e927 100644
--- a/include/configs/mx6sabreauto.h
+++ b/include/configs/mx6sabreauto.h
@@ -9,6 +9,7 @@
#define __MX6SABREAUTO_CONFIG_H
#define CFG_MXC_UART_BASE UART4_BASE
+#define CONSOLE_DEV "ttymxc3"
#define CFG_SYS_I2C_PCA953X_WIDTH { {0x30, 8}, {0x32, 8}, {0x34, 8} }
diff --git a/include/configs/mx6sabresd.h b/include/configs/mx6sabresd.h
index 1ea08f835dd..e34947c94d0 100644
--- a/include/configs/mx6sabresd.h
+++ b/include/configs/mx6sabresd.h
@@ -9,6 +9,7 @@
#define __MX6SABRESD_CONFIG_H
#define CFG_MXC_UART_BASE UART1_BASE
+#define CONSOLE_DEV "ttymxc0"
#include "mx6sabre_common.h"
diff --git a/include/configs/mx6ullevk.h b/include/configs/mx6ullevk.h
index a535163fd19..88b535e1bd0 100644
--- a/include/configs/mx6ullevk.h
+++ b/include/configs/mx6ullevk.h
@@ -9,6 +9,7 @@
#include <asm/arch/imx-regs.h>
#include <linux/sizes.h>
+#include <linux/stringify.h>
#include "mx6_common.h"
#include <asm/mach-imx/gpio.h>
@@ -22,6 +23,78 @@
#define CFG_SYS_FSL_USDHC_NUM 2
#endif
+#define CFG_EXTRA_ENV_SETTINGS \
+ "script=boot.scr\0" \
+ "image=zImage\0" \
+ "console=ttymxc0\0" \
+ "initrd_high=0xffffffff\0" \
+ "fdt_file=undefined\0" \
+ "fdt_addr=0x83000000\0" \
+ "boot_fdt=try\0" \
+ "ip_dyn=yes\0" \
+ "videomode=video=ctfb:x:480,y:272,depth:24,pclk:108695,le:8,ri:4,up:2,lo:4,hs:41,vs:10,sync:0,vmode:0\0" \
+ "mmcdev="__stringify(CONFIG_ENV_MMC_DEVICE_INDEX)"\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \
+ "mmcautodetect=yes\0" \
+ "mmcargs=setenv bootargs console=${console},${baudrate} " \
+ "root=${mmcroot}\0" \
+ "loadbootscript=" \
+ "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+ "bootscript=echo Running bootscript from mmc ...; " \
+ "source\0" \
+ "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
+ "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+ "mmcboot=echo Booting from mmc ...; " \
+ "run mmcargs; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if run loadfdt; then " \
+ "bootz ${loadaddr} - ${fdt_addr}; " \
+ "else " \
+ "if test ${boot_fdt} = try; then " \
+ "bootz; " \
+ "else " \
+ "echo WARN: Cannot load the DT; " \
+ "fi; " \
+ "fi; " \
+ "else " \
+ "bootz; " \
+ "fi;\0" \
+ "findfdt="\
+ "if test $fdt_file = undefined; then " \
+ "if test $board_name = ULZ-EVK && test $board_rev = 14X14; then " \
+ "setenv fdt_file imx6ulz-14x14-evk.dtb; fi; " \
+ "if test $board_name = EVK && test $board_rev = 14X14; then " \
+ "setenv fdt_file imx6ull-14x14-evk.dtb; fi; " \
+ "if test $fdt_file = undefined; then " \
+ "echo WARNING: Could not determine dtb to use; " \
+ "fi; " \
+ "fi;\0" \
+ "netargs=setenv bootargs console=${console},${baudrate} " \
+ "root=/dev/nfs " \
+ "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+ "netboot=echo Booting from net ...; " \
+ "run netargs; " \
+ "if test ${ip_dyn} = yes; then " \
+ "setenv get_cmd dhcp; " \
+ "else " \
+ "setenv get_cmd tftp; " \
+ "fi; " \
+ "${get_cmd} ${image}; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+ "bootz ${loadaddr} - ${fdt_addr}; " \
+ "else " \
+ "if test ${boot_fdt} = try; then " \
+ "bootz; " \
+ "else " \
+ "echo WARN: Cannot load the DT; " \
+ "fi; " \
+ "fi; " \
+ "else " \
+ "bootz; " \
+ "fi;\0" \
+
/* Miscellaneous configurable options */
/* Physical Memory Map */
diff --git a/include/configs/mx7ulp_com.h b/include/configs/mx7ulp_com.h
index 501c3059cc3..d27e9d2eaa1 100644
--- a/include/configs/mx7ulp_com.h
+++ b/include/configs/mx7ulp_com.h
@@ -15,6 +15,9 @@
#include "imx7ulp_spl.h"
#endif
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG1_RBASE
+
#define CFG_SYS_HZ_CLOCK 1000000 /* Fixed at 1MHz from TSTMR */
/* UART */
diff --git a/include/configs/mx7ulp_evk.h b/include/configs/mx7ulp_evk.h
index f36265f13e6..ace1eee70cf 100644
--- a/include/configs/mx7ulp_evk.h
+++ b/include/configs/mx7ulp_evk.h
@@ -11,6 +11,9 @@
#include <linux/sizes.h>
#include <asm/arch/imx-regs.h>
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG1_RBASE
+
#define CFG_SYS_HZ_CLOCK 1000000 /* Fixed at 1Mhz from TSTMR */
/* UART */
@@ -24,6 +27,69 @@
#define PHYS_SDRAM_SIZE SZ_1G
#define CFG_SYS_SDRAM_BASE PHYS_SDRAM
+#define CFG_EXTRA_ENV_SETTINGS \
+ "script=boot.scr\0" \
+ "image=zImage\0" \
+ "console=ttyLP0\0" \
+ "initrd_high=0xffffffff\0" \
+ "fdt_file=imx7ulp-evk.dtb\0" \
+ "fdt_addr=0x63000000\0" \
+ "boot_fdt=try\0" \
+ "earlycon=lpuart32,0x402D0010\0" \
+ "ip_dyn=yes\0" \
+ "mmcdev="__stringify(CONFIG_ENV_MMC_DEVICE_INDEX)"\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
+ "mmcautodetect=yes\0" \
+ "mmcargs=setenv bootargs console=${console},${baudrate} " \
+ "root=${mmcroot}\0" \
+ "loadbootscript=" \
+ "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+ "bootscript=echo Running bootscript from mmc ...; " \
+ "source\0" \
+ "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
+ "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+ "mmcboot=echo Booting from mmc ...; " \
+ "run mmcargs; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if run loadfdt; then " \
+ "bootz ${loadaddr} - ${fdt_addr}; " \
+ "else " \
+ "if test ${boot_fdt} = try; then " \
+ "bootz; " \
+ "else " \
+ "echo WARN: Cannot load the DT; " \
+ "fi; " \
+ "fi; " \
+ "else " \
+ "bootz; " \
+ "fi;\0" \
+ "netargs=setenv bootargs console=${console},${baudrate} " \
+ "root=/dev/nfs " \
+ "ip=:::::eth0:dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+ "netboot=echo Booting from net ...; " \
+ "run netargs; " \
+ "if test ${ip_dyn} = yes; then " \
+ "setenv get_cmd dhcp; " \
+ "else " \
+ "setenv get_cmd tftp; " \
+ "fi; " \
+ "usb start; "\
+ "${get_cmd} ${image}; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+ "bootz ${loadaddr} - ${fdt_addr}; " \
+ "else " \
+ "if test ${boot_fdt} = try; then " \
+ "bootz; " \
+ "else " \
+ "echo WARN: Cannot load the DT; " \
+ "fi; " \
+ "fi; " \
+ "else " \
+ "bootz; " \
+ "fi;\0" \
+
#define CFG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
#define CFG_SYS_INIT_RAM_SIZE SZ_256K
diff --git a/include/configs/nbx10g.h b/include/configs/nbx10g.h
deleted file mode 100644
index bd083b7e7d8..00000000000
--- a/include/configs/nbx10g.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2017-2018 Freebox SA
- * Copyright (C) 2026 Free Mobile, Vincent Jardin <[email protected]>
- *
- * Configuration for Freebox Nodebox 10G
- */
-
-#ifndef _CONFIG_NBX10G_H
-#define _CONFIG_NBX10G_H
-
-#include "mvebu_armada-8k.h"
-
-/* Override environment settings for NBX */
-#undef CFG_EXTRA_ENV_SETTINGS
-#define CFG_EXTRA_ENV_SETTINGS \
- "hostname=nodebox10G\0" \
- "ethrotate=no\0" \
- "image_addr=0x7000000\0" \
- "image_name=Image.nodebox10G\0" \
- "fdt_addr=0x6f00000\0" \
- "fdt_name=nodebox10G.dtb\0" \
- "console=ttyS0,115200\0" \
- "tftpboot=setenv bootargs console=${console} bank=tftp; " \
- "dhcp ${image_addr} ${image_name}; " \
- "tftp ${fdt_addr} ${fdt_name}; " \
- "booti ${image_addr} - ${fdt_addr}\0"
-
-#endif /* _CONFIG_NBX10G_H */
diff --git a/include/configs/phycore_imx91_93.h b/include/configs/phycore_imx91_93.h
index d1bf086546f..02fa1d9b274 100644
--- a/include/configs/phycore_imx91_93.h
+++ b/include/configs/phycore_imx91_93.h
@@ -22,4 +22,7 @@
#define PHYS_SDRAM 0x80000000
#define PHYS_SDRAM_SIZE 0x80000000
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif /* __PHYCORE_IMX91_93_H */
diff --git a/include/configs/sc573-ezlite.h b/include/configs/sc573-ezkit.h
index 590a8f06fb5..42e42f8150b 100644
--- a/include/configs/sc573-ezlite.h
+++ b/include/configs/sc573-ezkit.h
@@ -3,8 +3,8 @@
* (C) Copyright 2024 - Analog Devices, Inc.
*/
-#ifndef __CONFIG_SC573_EZLITE_H
-#define __CONFIG_SC573_EZLITE_H
+#ifndef __CONFIG_SC573_EZKIT_H
+#define __CONFIG_SC573_EZKIT_H
/*
* Memory Settings
diff --git a/include/configs/siemens-am33x-common.h b/include/configs/siemens-am33x-common.h
index da822556909..a918dc1350c 100644
--- a/include/configs/siemens-am33x-common.h
+++ b/include/configs/siemens-am33x-common.h
@@ -104,11 +104,11 @@
"then " \
"setenv upgrade_available 0;" \
"setenv ${partitionset_active} true;" \
- "if test -n \"${A}\"; then " \
+ "if test -n ${A}; then " \
"setenv partitionset_active B; " \
"env delete A; " \
"fi;" \
- "if test -n \"${B}\"; then " \
+ "if test -n ${B}; then " \
"setenv partitionset_active A; " \
"env delete B; " \
"fi;" \
@@ -205,11 +205,11 @@
"nand_args=run bootargs_defaults;" \
"mtdparts default;" \
"setenv ${partitionset_active} true;" \
- "if test -n \"${A}\"; then " \
+ "if test -n ${A}; then " \
"setenv nand_active_ubi_vol ${nand_active_ubi_vol_A};" \
"setenv nand_src_addr ${nand_src_addr_A};" \
"fi;" \
- "if test -n \"${B}\"; then " \
+ "if test -n ${B}; then " \
"setenv nand_active_ubi_vol ${nand_active_ubi_vol_B};" \
"setenv nand_src_addr ${nand_src_addr_B};" \
"fi;" \
@@ -279,10 +279,10 @@
"nand_args=run bootargs_defaults;" \
"mtdparts default;" \
"setenv ${partitionset_active} true;" \
- "if test -n \"${A}\"; then " \
+ "if test -n ${A}; then " \
"setenv nand_active_ubi_vol ${rootfs_name}_a;" \
"fi;" \
- "if test -n \"${B}\"; then " \
+ "if test -n ${B}; then " \
"setenv nand_active_ubi_vol ${rootfs_name}_b;" \
"fi;" \
"setenv nand_root ubi0:${nand_active_ubi_vol} rw " \
diff --git a/include/configs/siemens-env-common.h b/include/configs/siemens-env-common.h
index 8ced77cc5e2..c028823e1eb 100644
--- a/include/configs/siemens-env-common.h
+++ b/include/configs/siemens-env-common.h
@@ -81,12 +81,12 @@
*/
#define ENV_FCT_TOGGLE_PARTITION "toggle_partition="\
"setenv ${partitionset_active} true;" \
- "if test -n \"${A}\"; " \
+ "if test -n ${A}; " \
"then " \
"setenv partitionset_active B; " \
"env delete A; " \
"fi;" \
- "if test -n \"${B}\"; "\
+ "if test -n ${B}; "\
"then " \
"setenv partitionset_active A; " \
"env delete B; " \
@@ -103,11 +103,11 @@
*/
#define ENV_EMMC_FCT_SET_ACTIVE_PARTITION "set_partition=" \
"setenv ${partitionset_active} true;" \
- "if test -n \"${A}\"; " \
+ "if test -n ${A}; " \
"then " \
"setenv mmc_part_nr 1;" \
"fi;" \
- "if test -n \"${B}\"; " \
+ "if test -n ${B}; " \
"then " \
"setenv mmc_part_nr 2;" \
"fi;" \
diff --git a/include/configs/smegw01.h b/include/configs/smegw01.h
index c0ca5a7db2f..0aa25f9e2ea 100644
--- a/include/configs/smegw01.h
+++ b/include/configs/smegw01.h
@@ -22,6 +22,21 @@
#define EXTRA_BOOTPARAMS
#endif
+#ifdef CONFIG_SYS_BOOT_LOCKED
+#define EXTRA_ENV_FLAGS
+#else
+#define EXTRA_ENV_FLAGS "mmcdev:dw,"
+#endif
+
+#define CFG_ENV_FLAGS_LIST_STATIC \
+ "mmcpart:dw," \
+ "mmcpart_committed:dw," \
+ "ustate:dw," \
+ "bootcount:dw," \
+ "bootlimit:dw," \
+ "upgrade_available:dw," \
+ EXTRA_ENV_FLAGS
+
/* Physical Memory Map */
#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
diff --git a/include/configs/socrates.h b/include/configs/socrates.h
index 68d177d4ca3..006d649f6ed 100644
--- a/include/configs/socrates.h
+++ b/include/configs/socrates.h
@@ -108,6 +108,8 @@
*/
#define CFG_SYS_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
+#define CFG_ENV_FLAGS_LIST_STATIC "ethaddr:mw,eth1addr:mw,system1_addr:xw,serial#:sw,ethact:sw,ethprime:sw"
+
/* pass open firmware flat tree */
#endif /* __CONFIG_H */
diff --git a/include/configs/ti_omap4_common.h b/include/configs/ti_omap4_common.h
index e4b84719c86..7a333090b18 100644
--- a/include/configs/ti_omap4_common.h
+++ b/include/configs/ti_omap4_common.h
@@ -35,9 +35,25 @@
/*
* Environment setup
*/
+#define BOOTENV_DEV_LEGACY_MMC(devtypeu, devtypel, instance) \
+ "bootcmd_" #devtypel #instance "=" \
+ "setenv mmcdev " #instance"; "\
+ "setenv bootpart " #instance":2 ; "\
+ "run mmcboot\0"
+
+#define BOOTENV_DEV_NAME_LEGACY_MMC(devtypeu, devtypel, instance) \
+ #devtypel #instance " "
+
+#define BOOTENV_DEV_NAME_NAND(devtypeu, devtypel, instance) \
+ #devtypel #instance " "
+
#define BOOT_TARGET_DEVICES(func) \
func(MMC, mmc, 0) \
+ func(LEGACY_MMC, legacy_mmc, 0) \
func(MMC, mmc, 1) \
+ func(LEGACY_MMC, legacy_mmc, 1) \
+ func(PXE, pxe, na) \
+ func(DHCP, dhcp, na)
#include <config_distro_bootcmd.h>
#include <env/ti/mmc.h>
@@ -57,6 +73,30 @@
"uimageboot=echo Booting from mmc${mmcdev} ...; " \
"run args_mmc; " \
"bootm ${loadaddr}\0" \
+ "findfdt="\
+ "if test $board_name = sdp4430; then " \
+ "setenv fdtfile omap4-sdp.dtb; fi; " \
+ "if test $board_name = panda; then " \
+ "setenv fdtfile omap4-panda.dtb; fi;" \
+ "if test $board_name = panda-a4; then " \
+ "setenv fdtfile omap4-panda-a4.dtb; fi;" \
+ "if test $board_name = panda-es; then " \
+ "setenv fdtfile omap4-panda-es.dtb; fi;" \
+ "if test $board_name = duovero; then " \
+ "setenv fdtfile omap4-duovero-parlor.dtb; fi;" \
+ "if test $fdtfile = undefined; then " \
+ "echo WARNING: Could not determine device tree to use; fi; \0" \
BOOTENV
+/*
+ * Defines for SPL
+ * It is known that this will break HS devices. Since the current size of
+ * SPL is overlapped with public stack and breaking non HS devices to boot.
+ * So moving TEXT_BASE down to non-HS limit.
+ */
+
+#ifdef CONFIG_XPL_BUILD
+/* No need for i2c in SPL mode as we will use SRI2C for PMIC access on OMAP4 */
+#endif
+
#endif /* __CONFIG_TI_OMAP4_COMMON_H */
diff --git a/include/configs/toradex-smarc-imx95.h b/include/configs/toradex-smarc-imx95.h
index 8a880b96503..e1aebd70af2 100644
--- a/include/configs/toradex-smarc-imx95.h
+++ b/include/configs/toradex-smarc-imx95.h
@@ -19,4 +19,6 @@
#define PHYS_SDRAM_SIZE (SZ_2G - SZ_256M)
#define PHYS_SDRAM_2_SIZE SZ_6G
+#define WDOG_BASE_ADDR WDG3_BASE_ADDR
+
#endif
diff --git a/include/configs/tqma6ul.h b/include/configs/tqma6ul.h
deleted file mode 100644
index 89bd8102500..00000000000
--- a/include/configs/tqma6ul.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (c) 2016-2026 TQ-Systems GmbH <[email protected]>,
- * D-82229 Seefeld, Germany.
- * Author: Marco Felsch, Nora Schiffer, Max Merchel
- *
- * Configuration settings for the TQ-Systems TQMa6UL[L]x[L] SOM family.
- */
-
-#ifndef __TQMA6UL_CONFIG_H
-#define __TQMA6UL_CONFIG_H
-
-#include <linux/build_bug.h>
-
-#include "mx6_common.h"
-
-#define TQMA6UL_MMC_UBOOT_SECTOR_START 0x2
-#define TQMA6UL_MMC_UBOOT_SECTOR_COUNT 0x7fe
-
-#define TQMA6UL_SPI_FLASH_SECTOR_SIZE SZ_64K
-#define TQMA6UL_SPI_UBOOT_START SZ_4K
-#define TQMA6UL_SPI_UBOOT_SIZE 0xf0000
-
-/* 128 MiB offset as suggested in ARM related Linux docs */
-#define TQMA6UL_FDT_ADDRESS 0x88000000
-
-/* 256KiB above TQMA6UL_FDT_ADDRESS (TQMA6UL_FDT_ADDRESS + SZ_256K) */
-#define TQMA6UL_FDT_OVERLAY_ADDR 0x88040000
-
-/* 16MiB above TQMA6UL_FDT_ADDRESS (TQMA6UL_FDT_ADDRESS + SZ_16M) */
-#define TQMA6UL_INITRD_ADDRESS 0x89000000
-
-#ifndef __ASSEMBLY__
-static_assert(TQMA6UL_FDT_OVERLAY_ADDR == (TQMA6UL_FDT_ADDRESS + SZ_256K));
-static_assert(TQMA6UL_INITRD_ADDRESS == (TQMA6UL_FDT_ADDRESS + SZ_16M));
-#endif
-
-/* Physical Memory Map */
-#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
-
-#define CFG_SYS_SDRAM_BASE PHYS_SDRAM
-#define CFG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
-#define CFG_SYS_INIT_RAM_SIZE IRAM_SIZE
-
-/* u-boot.img base address for SPI-NOR boot */
-#define CFG_SYS_UBOOT_BASE (QSPI0_AMBA_BASE + SZ_4K + CONFIG_SPL_PAD_TO)
-
-#define CFG_SYS_INIT_SP_OFFSET \
- (CFG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CFG_SYS_INIT_SP_ADDR \
- (CFG_SYS_INIT_RAM_ADDR + CFG_SYS_INIT_SP_OFFSET)
-
-#endif /* __TQMA6UL_CONFIG_H */
diff --git a/include/configs/tqma6ul_mba6ul.h b/include/configs/tqma6ul_mba6ul.h
deleted file mode 100644
index b7a31b5ce26..00000000000
--- a/include/configs/tqma6ul_mba6ul.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (c) 2016-2026 TQ-Systems GmbH <[email protected]>,
- * D-82229 Seefeld, Germany.
- * Author: Markus Niebel, Nora Schiffer, Max Merchel
- *
- * Configuration settings for the TQ-Systems MBa6ULx carrier board for
- * TQMa6UL[L]x[L] SOM family.
- */
-
-#ifndef __CONFIG_TQMA6UL_MBA6UL_H
-#define __CONFIG_TQMA6UL_MBA6UL_H
-
-#include "tqma6ul.h"
-
-#define CFG_MXC_UART_BASE UART1_BASE
-#define CFG_SYS_FSL_ESDHC_ADDR 0
-
-#endif /* __CONFIG_TQMA6UL_MBA6UL_H */
diff --git a/include/configs/x220.h b/include/configs/x220.h
deleted file mode 100644
index 3022ad491b7..00000000000
--- a/include/configs/x220.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2025 Allied Telesis Labs
- */
-
-#ifndef _CONFIG_X220_H
-#define _CONFIG_X220_H
-
-/* Keep device tree and initrd in lower memory so the kernel can access them */
-#define CFG_EXTRA_ENV_SETTINGS \
- "fdt_high=0x10000000\0" \
- "initrd_high=0x10000000\0"
-
-/*
- * mv-common.h should be defined after CMD configs since it used them
- * to enable certain macros
- */
-#include "mv-common.h"
-
-#endif /* _CONFIG_X220_H */
diff --git a/include/cros_ec.h b/include/cros_ec.h
index 6e5153ceb6a..94c988a7d65 100644
--- a/include/cros_ec.h
+++ b/include/cros_ec.h
@@ -12,43 +12,8 @@
#include <ec_commands.h>
#include <cros_ec_message.h>
#include <asm/gpio.h>
-#include <dm/device.h>
#include <dm/of_extra.h>
-/*
- * Verified-boot NVRAM context interface the EC exposes via
- * EC_CMD_VBNV_CONTEXT. Upstream cros_ec_commands.h dropped the
- * whole vbnvcontext machinery, so keep the constants and request /
- * response structs here for U-Boot. Both 'cros_ec vbnvcontext' and
- * cros_ec_{read,write}_vbnvcontext() depend on these.
- */
-#define EC_CMD_VBNV_CONTEXT 0x0017
-#define EC_VER_VBNV_CONTEXT 1
-#define EC_VBNV_BLOCK_SIZE 16
-#define EC_VBNV_BLOCK_SIZE_V2 64
-
-enum ec_vbnvcontext_op {
- EC_VBNV_CONTEXT_OP_READ,
- EC_VBNV_CONTEXT_OP_WRITE,
-};
-
-struct __ec_align4 ec_params_vbnvcontext {
- uint32_t op;
- uint8_t block[EC_VBNV_BLOCK_SIZE_V2];
-};
-
-struct __ec_align4 ec_response_vbnvcontext {
- uint8_t block[EC_VBNV_BLOCK_SIZE_V2];
-};
-
-/*
- * EMI register window used by Microchip MEC-style EC LPC interfaces.
- * Upstream cros_ec_commands.h does not carry these, but apollolake's
- * SPL needs them to set up the EC ioport range.
- */
-#define MEC_EMI_BASE 0x800
-#define MEC_EMI_SIZE 8
-
/* Our configuration information */
struct cros_ec_dev {
struct udevice *dev; /* Transport device */
@@ -136,7 +101,7 @@ int cros_ec_get_next_event(struct udevice *dev,
* Return: 0 if ok, <0 on error
*/
int cros_ec_read_current_image(struct udevice *dev,
- enum ec_image *image);
+ enum ec_current_image *image);
/**
* Read the hash of the CROS-EC device firmware.
@@ -317,10 +282,8 @@ struct dm_cros_ec_ops {
int (*get_switches)(struct udevice *dev);
};
-static inline const struct dm_cros_ec_ops *dm_cros_ec_get_ops(struct udevice *dev)
-{
- return (const struct dm_cros_ec_ops *)(dev->driver->ops);
-}
+#define dm_cros_ec_get_ops(dev) \
+ ((struct dm_cros_ec_ops *)(dev)->driver->ops)
int cros_ec_register(struct udevice *dev);
diff --git a/include/dm/device.h b/include/dm/device.h
index 5d700888503..7bcf6df2892 100644
--- a/include/dm/device.h
+++ b/include/dm/device.h
@@ -388,7 +388,7 @@ struct driver {
const void *ops; /* driver-specific operations */
uint32_t flags;
#if CONFIG_IS_ENABLED(ACPIGEN)
- const struct acpi_ops *acpi_ops;
+ struct acpi_ops *acpi_ops;
#endif
};
diff --git a/include/ec_commands.h b/include/ec_commands.h
index cedc34dd0fc..23597d28b2c 100644
--- a/include/ec_commands.h
+++ b/include/ec_commands.h
@@ -1,97 +1,31 @@
-/* Copyright 2014 The ChromiumOS Authors
+/* Copyright (c) 2018 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* Host communication command constants for Chrome EC */
-#ifndef __CROS_EC_EC_COMMANDS_H
-#define __CROS_EC_EC_COMMANDS_H
-
-#if !defined(__ACPI__) && (!defined(__KERNEL__) || defined(__UBOOT__))
-#include <stdint.h>
-#endif
-
-#ifdef __UBOOT__
-#include <linux/bitops.h>
-#endif
-
-#ifdef CHROMIUM_EC
-/*
- * CHROMIUM_EC is defined by the Makefile system of Chromium EC repository.
- * It is used to not include macros that may cause conflicts in foreign
- * projects (refer to crbug.com/984623).
- */
-
-/*
- * Include common.h for CONFIG_HOSTCMD_ALIGNED, if it's defined. This
- * generates more efficient code for accessing request/response structures on
- * ARM Cortex-M if the structures are guaranteed 32-bit aligned.
- */
-#include "common.h"
-#include "compile_time_macros.h"
-
-#else
-/* If BUILD_ASSERT isn't already defined, make it a no-op */
-#ifndef BUILD_ASSERT
-#define BUILD_ASSERT(_cond)
-#endif /* !BUILD_ASSERT */
-#endif /* CHROMIUM_EC */
-
-#if defined(__KERNEL__)
-#if !defined(__UBOOT__)
-#include <linux/limits.h>
-#endif
-#else
-/*
- * Defines macros that may be needed but are for sure defined by the linux
- * kernel. This section is removed when cros_ec_commands.h is generated (by
- * util/make_linux_ec_commands_h.sh).
- * cros_ec_commands.h looks more integrated to the kernel.
- */
-
-#ifndef BIT
-#define BIT(nr) (1UL << (nr))
-#endif
-
-#ifndef BIT_ULL
-#define BIT_ULL(nr) (1ULL << (nr))
-#endif
+#ifndef __CROS_EC_COMMANDS_H
+#define __CROS_EC_COMMANDS_H
/*
- * When building Zephyr, this file ends up being included before Zephyr's
- * include/sys/util.h so causes a warning there. We don't want to add an #ifdef
- * in that file since it won't be accepted upstream. So work around it here.
- */
-#ifndef CONFIG_ZEPHYR
-#ifndef GENMASK
-#define GENMASK(h, l) (((BIT(h) << 1) - 1) ^ (BIT(l) - 1))
-#endif
-
-#ifndef GENMASK_ULL
-#define GENMASK_ULL(h, l) (((BIT_ULL(h) << 1) - 1) ^ (BIT_ULL(l) - 1))
-#endif
-#endif
-
-#endif /* __KERNEL__ */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Constant for creation of flexible array members that work in both C and
- * C++. Flexible array members were added in C99 and are not part of the C++
- * standard. However, clang++ supports them for C++.
- * When compiling with gcc, flexible array members are not allowed to appear
- * in an otherwise empty struct, so we use the GCC zero-length array
- * extension that works with both clang/gcc/g++.
+ * Protocol overview
+ *
+ * request: CMD [ P0 P1 P2 ... Pn S ]
+ * response: ERR [ P0 P1 P2 ... Pn S ]
+ *
+ * where the bytes are defined as follow :
+ * - CMD is the command code. (defined by EC_CMD_ constants)
+ * - ERR is the error code. (defined by EC_RES_ constants)
+ * - Px is the optional payload.
+ * it is not sent if the error code is not success.
+ * (defined by ec_params_ and ec_response_ structures)
+ * - S is the checksum which is the sum of all payload bytes.
+ *
+ * On LPC, CMD and ERR are sent/received at EC_LPC_ADDR_KERNEL|USER_CMD
+ * and the payloads are sent/received at EC_LPC_ADDR_KERNEL|USER_PARAM.
+ * On I2C, all bytes are sent serially in the same message.
*/
-#if defined(__cplusplus) && defined(__clang__)
-#define FLEXIBLE_ARRAY_MEMBER_SIZE
-#else
-#define FLEXIBLE_ARRAY_MEMBER_SIZE 0
-#endif
/*
* Current version of this protocol
@@ -100,111 +34,91 @@ extern "C" {
* determined in other ways. Remove this once the kernel code no longer
* depends on it.
*/
-#define EC_PROTO_VERSION 0x00000002
+#define EC_PROTO_VERSION 0x00000002
/* Command version mask */
-#define EC_VER_MASK(version) BIT(version)
+#define EC_VER_MASK(version) (1UL << (version))
/* I/O addresses for ACPI commands */
-#define EC_LPC_ADDR_ACPI_DATA 0x62
-#define EC_LPC_ADDR_ACPI_CMD 0x66
+#define EC_LPC_ADDR_ACPI_DATA 0x62
+#define EC_LPC_ADDR_ACPI_CMD 0x66
/* I/O addresses for host command */
-#define EC_LPC_ADDR_HOST_DATA 0x200
-#define EC_LPC_ADDR_HOST_CMD 0x204
+#define EC_LPC_ADDR_HOST_DATA 0x200
+#define EC_LPC_ADDR_HOST_CMD 0x204
/* I/O addresses for host command args and params */
/* Protocol version 2 */
-#define EC_LPC_ADDR_HOST_ARGS 0x800 /* And 0x801, 0x802, 0x803 */
-/* For version 2 params; size is EC_PROTO2_MAX_PARAM_SIZE */
-#define EC_LPC_ADDR_HOST_PARAM 0x804
-
+#define EC_LPC_ADDR_HOST_ARGS 0x800 /* And 0x801, 0x802, 0x803 */
+#define EC_LPC_ADDR_HOST_PARAM 0x804 /* For version 2 params; size is
+ * EC_PROTO2_MAX_PARAM_SIZE */
/* Protocol version 3 */
-#define EC_LPC_ADDR_HOST_PACKET 0x800 /* Offset of version 3 packet */
-#define EC_LPC_HOST_PACKET_SIZE 0x100 /* Max size of version 3 packet */
+#define EC_LPC_ADDR_HOST_PACKET 0x800 /* Offset of version 3 packet */
+#define EC_LPC_HOST_PACKET_SIZE 0x100 /* Max size of version 3 packet */
-/*
- * The actual block is 0x800-0x8ff, but some BIOSes think it's 0x880-0x8ff
- * and they tell the kernel that so we have to think of it as two parts.
- *
- * Other BIOSes report only the I/O port region spanned by the Microchip
- * MEC series EC; an attempt to address a larger region may fail.
- */
-#define EC_HOST_CMD_REGION0 0x800
-#define EC_HOST_CMD_REGION1 0x880
+/* The actual block is 0x800-0x8ff, but some BIOSes think it's 0x880-0x8ff
+ * and they tell the kernel that so we have to think of it as two parts. */
+#define EC_HOST_CMD_REGION0 0x800
+#define EC_HOST_CMD_REGION1 0x880
#define EC_HOST_CMD_REGION_SIZE 0x80
-#define EC_HOST_CMD_MEC_REGION_SIZE 0x8
/* EC command register bit functions */
-#define EC_LPC_CMDR_DATA BIT(0) /* Data ready for host to read */
-#define EC_LPC_CMDR_PENDING BIT(1) /* Write pending to EC */
-#define EC_LPC_CMDR_BUSY BIT(2) /* EC is busy processing a command */
-#define EC_LPC_CMDR_CMD BIT(3) /* Last host write was a command */
-#define EC_LPC_CMDR_ACPI_BRST BIT(4) /* Burst mode (not used) */
-#define EC_LPC_CMDR_SCI BIT(5) /* SCI event is pending */
-#define EC_LPC_CMDR_SMI BIT(6) /* SMI event is pending */
+#define EC_LPC_CMDR_DATA (1 << 0) /* Data ready for host to read */
+#define EC_LPC_CMDR_PENDING (1 << 1) /* Write pending to EC */
+#define EC_LPC_CMDR_BUSY (1 << 2) /* EC is busy processing a command */
+#define EC_LPC_CMDR_CMD (1 << 3) /* Last host write was a command */
+#define EC_LPC_CMDR_ACPI_BRST (1 << 4) /* Burst mode (not used) */
+#define EC_LPC_CMDR_SCI (1 << 5) /* SCI event is pending */
+#define EC_LPC_CMDR_SMI (1 << 6) /* SMI event is pending */
-#define EC_LPC_ADDR_MEMMAP 0x900
-#define EC_MEMMAP_SIZE 255 /* ACPI IO buffer max is 255 bytes */
-#define EC_MEMMAP_TEXT_MAX 8 /* Size of a string in the memory map */
+/* MEC uses 0x800/0x804 as register/index pair, thus an 8-byte resource */
+#define MEC_EMI_BASE 0x800
+#define MEC_EMI_SIZE 8
-#define EC_LPC_ADDR_MEMMAP_INDEXED_IO 0x380
+#define EC_LPC_ADDR_MEMMAP 0x900
+#define EC_MEMMAP_SIZE 255 /* ACPI IO buffer max is 255 bytes */
+#define EC_MEMMAP_TEXT_MAX 8 /* Size of a string in the memory map */
/* The offset address of each type of data in mapped memory. */
-#define EC_MEMMAP_TEMP_SENSOR 0x00 /* Temp sensors 0x00 - 0x0f */
-#define EC_MEMMAP_FAN 0x10 /* Fan speeds 0x10 - 0x17 */
-#define EC_MEMMAP_TEMP_SENSOR_B 0x18 /* More temp sensors 0x18 - 0x1f */
-#define EC_MEMMAP_ID 0x20 /* 0x20 == 'E', 0x21 == 'C' */
-#define EC_MEMMAP_ID_VERSION 0x22 /* Version of data in 0x20 - 0x2f */
-#define EC_MEMMAP_THERMAL_VERSION 0x23 /* Version of data in 0x00 - 0x1f */
-#define EC_MEMMAP_BATTERY_VERSION 0x24 /* Version of data in 0x40 - 0x7f */
+#define EC_MEMMAP_TEMP_SENSOR 0x00 /* Temp sensors 0x00 - 0x0f */
+#define EC_MEMMAP_FAN 0x10 /* Fan speeds 0x10 - 0x17 */
+#define EC_MEMMAP_TEMP_SENSOR_B 0x18 /* More temp sensors 0x18 - 0x1f */
+#define EC_MEMMAP_ID 0x20 /* 0x20 == 'E', 0x21 == 'C' */
+#define EC_MEMMAP_ID_VERSION 0x22 /* Version of data in 0x20 - 0x2f */
+#define EC_MEMMAP_THERMAL_VERSION 0x23 /* Version of data in 0x00 - 0x1f */
+#define EC_MEMMAP_BATTERY_VERSION 0x24 /* Version of data in 0x40 - 0x7f */
#define EC_MEMMAP_SWITCHES_VERSION 0x25 /* Version of data in 0x30 - 0x33 */
-#define EC_MEMMAP_EVENTS_VERSION 0x26 /* Version of data in 0x34 - 0x3f */
-#define EC_MEMMAP_HOST_CMD_FLAGS 0x27 /* Host cmd interface flags (8 bits) */
+#define EC_MEMMAP_EVENTS_VERSION 0x26 /* Version of data in 0x34 - 0x3f */
+#define EC_MEMMAP_HOST_CMD_FLAGS 0x27 /* Host cmd interface flags (8 bits) */
/* Unused 0x28 - 0x2f */
-#define EC_MEMMAP_SWITCHES 0x30 /* 8 bits */
+#define EC_MEMMAP_SWITCHES 0x30 /* 8 bits */
/* Unused 0x31 - 0x33 */
-#define EC_MEMMAP_HOST_EVENTS 0x34 /* 64 bits */
-/* Battery values are all 32 bits, unless otherwise noted. */
-#define EC_MEMMAP_BATT_VOLT 0x40 /* Battery Present Voltage */
-#define EC_MEMMAP_BATT_RATE 0x44 /* Battery Present Rate */
-#define EC_MEMMAP_BATT_CAP 0x48 /* Battery Remaining Capacity */
-#define EC_MEMMAP_BATT_FLAG 0x4c /* Battery State, see below (8-bit) */
-#define EC_MEMMAP_BATT_COUNT 0x4d /* Battery Count (8-bit) */
-#define EC_MEMMAP_BATT_INDEX 0x4e /* Current Battery Data Index (8-bit) */
-/* Unused 0x4f */
-#define EC_MEMMAP_BATT_DCAP 0x50 /* Battery Design Capacity */
-#define EC_MEMMAP_BATT_DVLT 0x54 /* Battery Design Voltage */
-#define EC_MEMMAP_BATT_LFCC 0x58 /* Battery Last Full Charge Capacity */
-#define EC_MEMMAP_BATT_CCNT 0x5c /* Battery Cycle Count */
+#define EC_MEMMAP_HOST_EVENTS 0x34 /* 32 bits */
+/* Reserve 0x38 - 0x3f for additional host event-related stuff */
+/* Battery values are all 32 bits */
+#define EC_MEMMAP_BATT_VOLT 0x40 /* Battery Present Voltage */
+#define EC_MEMMAP_BATT_RATE 0x44 /* Battery Present Rate */
+#define EC_MEMMAP_BATT_CAP 0x48 /* Battery Remaining Capacity */
+#define EC_MEMMAP_BATT_FLAG 0x4c /* Battery State, defined below */
+#define EC_MEMMAP_BATT_DCAP 0x50 /* Battery Design Capacity */
+#define EC_MEMMAP_BATT_DVLT 0x54 /* Battery Design Voltage */
+#define EC_MEMMAP_BATT_LFCC 0x58 /* Battery Last Full Charge Capacity */
+#define EC_MEMMAP_BATT_CCNT 0x5c /* Battery Cycle Count */
/* Strings are all 8 bytes (EC_MEMMAP_TEXT_MAX) */
-#define EC_MEMMAP_BATT_MFGR 0x60 /* Battery Manufacturer String */
-#define EC_MEMMAP_BATT_MODEL 0x68 /* Battery Model Number String */
-#define EC_MEMMAP_BATT_SERIAL 0x70 /* Battery Serial Number String */
-#define EC_MEMMAP_BATT_TYPE 0x78 /* Battery Type String */
-#define EC_MEMMAP_ALS 0x80 /* ALS readings in lux (2 X 16 bits) */
+#define EC_MEMMAP_BATT_MFGR 0x60 /* Battery Manufacturer String */
+#define EC_MEMMAP_BATT_MODEL 0x68 /* Battery Model Number String */
+#define EC_MEMMAP_BATT_SERIAL 0x70 /* Battery Serial Number String */
+#define EC_MEMMAP_BATT_TYPE 0x78 /* Battery Type String */
+#define EC_MEMMAP_ALS 0x80 /* ALS readings in lux (2 X 16 bits) */
/* Unused 0x84 - 0x8f */
-#define EC_MEMMAP_ACC_STATUS 0x90 /* Accelerometer status (8 bits )*/
+#define EC_MEMMAP_ACC_STATUS 0x90 /* Accelerometer status (8 bits )*/
/* Unused 0x91 */
-#define EC_MEMMAP_ACC_DATA 0x92 /* Accelerometers data 0x92 - 0x9f */
+#define EC_MEMMAP_ACC_DATA 0x92 /* Accelerometers data 0x92 - 0x9f */
/* 0x92: Lid Angle if available, LID_ANGLE_UNRELIABLE otherwise */
/* 0x94 - 0x99: 1st Accelerometer */
/* 0x9a - 0x9f: 2nd Accelerometer */
-
-#define EC_MEMMAP_GYRO_DATA 0xa0 /* Gyroscope data 0xa0 - 0xa5 */
-#define EC_MEMMAP_GPU 0xa6 /* GPU-specific, 8 bits */
-
-/*
- * Bit fields for EC_MEMMAP_GPU
- * 0:2: D-Notify level (0:D1, ... 4:D5)
- * 3: Over temperature
- */
-#define EC_MEMMAP_GPU_D_NOTIFY_MASK GENMASK(2, 0)
-#define EC_MEMMAP_GPU_OVERT_BIT BIT(3)
-
-/* Power Participant related components */
-#define EC_MEMMAP_PWR_SRC 0xa7 /* Power source (8-bit) */
-/* Unused 0xa8 - 0xdf */
+#define EC_MEMMAP_GYRO_DATA 0xa0 /* Gyroscope data 0xa0 - 0xa5 */
+/* Unused 0xa6 - 0xdf */
/*
* ACPI is unable to access memory mapped data at or above this offset due to
@@ -214,101 +128,76 @@ extern "C" {
#define EC_MEMMAP_NO_ACPI 0xe0
/* Define the format of the accelerometer mapped memory status byte. */
-#define EC_MEMMAP_ACC_STATUS_SAMPLE_ID_MASK 0x0f
-#define EC_MEMMAP_ACC_STATUS_BUSY_BIT BIT(4)
-#define EC_MEMMAP_ACC_STATUS_PRESENCE_BIT BIT(7)
+#define EC_MEMMAP_ACC_STATUS_SAMPLE_ID_MASK 0x0f
+#define EC_MEMMAP_ACC_STATUS_BUSY_BIT (1 << 4)
+#define EC_MEMMAP_ACC_STATUS_PRESENCE_BIT (1 << 7)
/* Number of temp sensors at EC_MEMMAP_TEMP_SENSOR */
-#define EC_TEMP_SENSOR_ENTRIES 16
+#define EC_TEMP_SENSOR_ENTRIES 16
/*
* Number of temp sensors at EC_MEMMAP_TEMP_SENSOR_B.
*
* Valid only if EC_MEMMAP_THERMAL_VERSION returns >= 2.
*/
-#define EC_TEMP_SENSOR_B_ENTRIES 8
-
-/* Max temp sensor entries for host commands */
-#define EC_MAX_TEMP_SENSOR_ENTRIES \
- (EC_TEMP_SENSOR_ENTRIES + EC_TEMP_SENSOR_B_ENTRIES)
+#define EC_TEMP_SENSOR_B_ENTRIES 8
/* Special values for mapped temperature sensors */
-#define EC_TEMP_SENSOR_NOT_PRESENT 0xff
-#define EC_TEMP_SENSOR_ERROR 0xfe
-#define EC_TEMP_SENSOR_NOT_POWERED 0xfd
+#define EC_TEMP_SENSOR_NOT_PRESENT 0xff
+#define EC_TEMP_SENSOR_ERROR 0xfe
+#define EC_TEMP_SENSOR_NOT_POWERED 0xfd
#define EC_TEMP_SENSOR_NOT_CALIBRATED 0xfc
/*
* The offset of temperature value stored in mapped memory. This allows
* reporting a temperature range of 200K to 454K = -73C to 181C.
*/
-#define EC_TEMP_SENSOR_OFFSET 200
+#define EC_TEMP_SENSOR_OFFSET 200
/*
* Number of ALS readings at EC_MEMMAP_ALS
*/
-#define EC_ALS_ENTRIES 2
+#define EC_ALS_ENTRIES 2
/*
* The default value a temperature sensor will return when it is present but
* has not been read this boot. This is a reasonable number to avoid
* triggering alarms on the host.
*/
-#define EC_TEMP_SENSOR_DEFAULT (296 - EC_TEMP_SENSOR_OFFSET)
+#define EC_TEMP_SENSOR_DEFAULT (296 - EC_TEMP_SENSOR_OFFSET)
-#define EC_FAN_SPEED_ENTRIES 4 /* Number of fans at EC_MEMMAP_FAN */
-#define EC_FAN_SPEED_NOT_PRESENT 0xffff /* Entry not present */
-
-/* Report 0 for fan stalled so userspace applications can take
- * an appropriate action based on this value to control the fan.
- */
-#define EC_FAN_SPEED_STALLED 0x0
-/* This should be used only for ectool to support old ECs. */
-#define EC_FAN_SPEED_STALLED_DEPRECATED 0xfffe
+#define EC_FAN_SPEED_ENTRIES 4 /* Number of fans at EC_MEMMAP_FAN */
+#define EC_FAN_SPEED_NOT_PRESENT 0xffff /* Entry not present */
+#define EC_FAN_SPEED_STALLED 0xfffe /* Fan stalled */
/* Battery bit flags at EC_MEMMAP_BATT_FLAG. */
-#define EC_BATT_FLAG_AC_PRESENT 0x01
+#define EC_BATT_FLAG_AC_PRESENT 0x01
#define EC_BATT_FLAG_BATT_PRESENT 0x02
-#define EC_BATT_FLAG_DISCHARGING 0x04
-#define EC_BATT_FLAG_CHARGING 0x08
+#define EC_BATT_FLAG_DISCHARGING 0x04
+#define EC_BATT_FLAG_CHARGING 0x08
#define EC_BATT_FLAG_LEVEL_CRITICAL 0x10
-/* Set if some of the static/dynamic data is invalid (or outdated). */
-#define EC_BATT_FLAG_INVALID_DATA 0x20
-#define EC_BATT_FLAG_CUT_OFF 0x40
-
-/*
- * Value written to EC_MEMMAP_BATT_DCAP, EC_MEMMAP_BATT_DVLT, EC_MEMMAP_CCNT,
- * EC_MEMMAP_BATT_VOLT, EC_MEMMAP_BATT_RATE, EC_MEMMAP_BATT_CAP, and
- * EC_MEMMAP_BATT_LFCC if the actual value is unknown.
- *
- * This corresponds with the unknown value specified by ACPI release 6.5
- * Section 10.2.2 (and earlier versions), to match expectations of ACPI
- * firmware.
- */
-#define EC_MEMMAP_BATT_UNKNOWN_VALUE (-1)
/* Switch flags at EC_MEMMAP_SWITCHES */
-#define EC_SWITCH_LID_OPEN 0x01
-#define EC_SWITCH_POWER_BUTTON_PRESSED 0x02
-/* Was write protect disabled; now unused. */
-#define EC_SWITCH_IGNORE2 0x04
+#define EC_SWITCH_LID_OPEN 0x01
+#define EC_SWITCH_POWER_BUTTON_PRESSED 0x02
+#define EC_SWITCH_WRITE_PROTECT_DISABLED 0x04
/* Was recovery requested via keyboard; now unused. */
-#define EC_SWITCH_IGNORE1 0x08
+#define EC_SWITCH_IGNORE1 0x08
/* Recovery requested via dedicated signal (from servo board) */
-#define EC_SWITCH_DEDICATED_RECOVERY 0x10
+#define EC_SWITCH_DEDICATED_RECOVERY 0x10
/* Was fake developer mode switch; now unused. Remove in next refactor. */
-#define EC_SWITCH_IGNORE0 0x20
+#define EC_SWITCH_IGNORE0 0x20
/* Host command interface flags */
/* Host command interface supports LPC args (LPC interface only) */
-#define EC_HOST_CMD_FLAG_LPC_ARGS_SUPPORTED 0x01
+#define EC_HOST_CMD_FLAG_LPC_ARGS_SUPPORTED 0x01
/* Host command interface supports version 3 protocol */
-#define EC_HOST_CMD_FLAG_VERSION_3 0x02
+#define EC_HOST_CMD_FLAG_VERSION_3 0x02
/* Wireless switch flags */
-#define EC_WIRELESS_SWITCH_ALL ~0x00 /* All flags */
-#define EC_WIRELESS_SWITCH_WLAN 0x01 /* WLAN radio */
-#define EC_WIRELESS_SWITCH_BLUETOOTH 0x02 /* Bluetooth radio */
-#define EC_WIRELESS_SWITCH_WWAN 0x04 /* WWAN power */
-#define EC_WIRELESS_SWITCH_WLAN_POWER 0x08 /* WLAN power */
+#define EC_WIRELESS_SWITCH_ALL ~0x00 /* All flags */
+#define EC_WIRELESS_SWITCH_WLAN 0x01 /* WLAN radio */
+#define EC_WIRELESS_SWITCH_BLUETOOTH 0x02 /* Bluetooth radio */
+#define EC_WIRELESS_SWITCH_WWAN 0x04 /* WWAN power */
+#define EC_WIRELESS_SWITCH_WLAN_POWER 0x08 /* WLAN power */
/*****************************************************************************/
/*
@@ -376,19 +265,19 @@ extern "C" {
/* Valid addresses in ACPI memory space, for read/write commands */
/* Memory space version; set to EC_ACPI_MEM_VERSION_CURRENT */
-#define EC_ACPI_MEM_VERSION 0x00
+#define EC_ACPI_MEM_VERSION 0x00
/*
* Test location; writing value here updates test compliment byte to (0xff -
* value).
*/
-#define EC_ACPI_MEM_TEST 0x01
+#define EC_ACPI_MEM_TEST 0x01
/* Test compliment; writes here are ignored. */
-#define EC_ACPI_MEM_TEST_COMPLIMENT 0x02
+#define EC_ACPI_MEM_TEST_COMPLIMENT 0x02
/* Keyboard backlight brightness percent (0 - 100) */
#define EC_ACPI_MEM_KEYBOARD_BACKLIGHT 0x03
/* DPTF Target Fan Duty (0-100, 0xff for auto/none) */
-#define EC_ACPI_MEM_FAN_DUTY 0x04
+#define EC_ACPI_MEM_FAN_DUTY 0x04
/*
* DPTF temp thresholds. Any of the EC's temp sensors can have up to two
@@ -405,17 +294,17 @@ extern "C" {
* have tripped". Setting or enabling the thresholds for a sensor will clear
* the unread event count for that sensor.
*/
-#define EC_ACPI_MEM_TEMP_ID 0x05
-#define EC_ACPI_MEM_TEMP_THRESHOLD 0x06
-#define EC_ACPI_MEM_TEMP_COMMIT 0x07
+#define EC_ACPI_MEM_TEMP_ID 0x05
+#define EC_ACPI_MEM_TEMP_THRESHOLD 0x06
+#define EC_ACPI_MEM_TEMP_COMMIT 0x07
/*
* Here are the bits for the COMMIT register:
* bit 0 selects the threshold index for the chosen sensor (0/1)
* bit 1 enables/disables the selected threshold (0 = off, 1 = on)
* Each write to the commit register affects one threshold.
*/
-#define EC_ACPI_MEM_TEMP_COMMIT_SELECT_MASK BIT(0)
-#define EC_ACPI_MEM_TEMP_COMMIT_ENABLE_MASK BIT(1)
+#define EC_ACPI_MEM_TEMP_COMMIT_SELECT_MASK (1 << 0)
+#define EC_ACPI_MEM_TEMP_COMMIT_ENABLE_MASK (1 << 1)
/*
* Example:
*
@@ -432,179 +321,26 @@ extern "C" {
*/
/* DPTF battery charging current limit */
-#define EC_ACPI_MEM_CHARGING_LIMIT 0x08
+#define EC_ACPI_MEM_CHARGING_LIMIT 0x08
/* Charging limit is specified in 64 mA steps */
-#define EC_ACPI_MEM_CHARGING_LIMIT_STEP_MA 64
+#define EC_ACPI_MEM_CHARGING_LIMIT_STEP_MA 64
/* Value to disable DPTF battery charging limit */
-#define EC_ACPI_MEM_CHARGING_LIMIT_DISABLED 0xff
+#define EC_ACPI_MEM_CHARGING_LIMIT_DISABLED 0xff
/*
* Report device orientation
- * Bits Definition
- * 4 Off Body/On Body status: 0 = Off Body.
- * 3:1 Device DPTF Profile Number (DDPN)
- * 0 = Reserved for backward compatibility (indicates no valid
- * profile number. Host should fall back to using TBMD).
- * 1..7 = DPTF Profile number to indicate to host which table needs
- * to be loaded.
- * 0 Tablet Mode Device Indicator (TBMD)
+ * bit 0 device is tablet mode
*/
#define EC_ACPI_MEM_DEVICE_ORIENTATION 0x09
-#define EC_ACPI_MEM_TBMD_SHIFT 0
-#define EC_ACPI_MEM_TBMD_MASK 0x1
-#define EC_ACPI_MEM_DDPN_SHIFT 1
-#define EC_ACPI_MEM_DDPN_MASK 0x7
-#define EC_ACPI_MEM_STTB_SHIFT 4
-#define EC_ACPI_MEM_STTB_MASK 0x1
-
-/*
- * Report device features. Uses the same format as the host command, except:
- *
- * bit 0 (EC_FEATURE_LIMITED) changes meaning from "EC code has a limited set
- * of features", which is of limited interest when the system is already
- * interpreting ACPI bytecode, to "EC_FEATURES[0-7] is not supported". Since
- * these are supported, it defaults to 0.
- * This allows detecting the presence of this field since older versions of
- * the EC codebase would simply return 0xff to that unknown address. Check
- * FEATURES0 != 0xff (or FEATURES0[0] == 0) to make sure that the other bits
- * are valid.
- */
-#define EC_ACPI_MEM_DEVICE_FEATURES0 0x0a
-#define EC_ACPI_MEM_DEVICE_FEATURES1 0x0b
-#define EC_ACPI_MEM_DEVICE_FEATURES2 0x0c
-#define EC_ACPI_MEM_DEVICE_FEATURES3 0x0d
-#define EC_ACPI_MEM_DEVICE_FEATURES4 0x0e
-#define EC_ACPI_MEM_DEVICE_FEATURES5 0x0f
-#define EC_ACPI_MEM_DEVICE_FEATURES6 0x10
-#define EC_ACPI_MEM_DEVICE_FEATURES7 0x11
-
-#define EC_ACPI_MEM_BATTERY_INDEX 0x12
-
-/*
- * USB Port Power. Each bit indicates whether the corresponding USB ports' power
- * is enabled (1) or disabled (0).
- * bit 0 USB port ID 0
- * ...
- * bit 7 USB port ID 7
- */
-#define EC_ACPI_MEM_USB_PORT_POWER 0x13
-
-/*
- * USB Retimer firmware update.
- * Read:
- * Result of last operation AP requested
- * Write:
- * bits[3:0]: USB-C port number
- * bits[7:4]: Operation requested by AP
- *
- * NDA (no device attached) case:
- * To update retimer firmware, AP needs set up TBT Alt mode.
- * AP requests operations in this sequence:
- * 1. Get port information about which ports support retimer firmware update.
- * In the query result, each bit represents one port.
- * 2. Get current MUX mode, it's NDA.
- * 3. Suspend specified PD port's task.
- * 4. AP requests EC to enter USB mode -> enter Safe mode -> enter TBT mode ->
- * update firmware -> disconnect MUX -> resume PD task.
- *
- * DA (device attached) cases:
- * Retimer firmware update is not supported in DA cases.
- * 1. Get port information about which ports support retimer firmware update
- * 2. Get current MUX mode, it's DA.
- * 3. AP continues. No more retimer firmware update activities.
- *
- */
-#define EC_ACPI_MEM_USB_RETIMER_FW_UPDATE 0x14
-
-#define USB_RETIMER_FW_UPDATE_OP_SHIFT 4
-#define USB_RETIMER_FW_UPDATE_ERR 0xfe
-#define USB_RETIMER_FW_UPDATE_INVALID_MUX 0xff
-/* Mask to clear unused MUX bits in retimer firmware update */
-#define USB_RETIMER_FW_UPDATE_MUX_MASK \
- (USB_PD_MUX_USB_ENABLED | USB_PD_MUX_DP_ENABLED | \
- USB_PD_MUX_SAFE_MODE | USB_PD_MUX_TBT_COMPAT_ENABLED | \
- USB_PD_MUX_USB4_ENABLED)
-
-/* Retimer firmware update operations */
-#define USB_RETIMER_FW_UPDATE_QUERY_PORT 0 /* Which ports has retimer */
-#define USB_RETIMER_FW_UPDATE_SUSPEND_PD 1 /* Suspend PD port */
-#define USB_RETIMER_FW_UPDATE_RESUME_PD 2 /* Resume PD port */
-#define USB_RETIMER_FW_UPDATE_GET_MUX 3 /* Read current USB MUX */
-#define USB_RETIMER_FW_UPDATE_SET_USB 4 /* Set MUX to USB mode */
-#define USB_RETIMER_FW_UPDATE_SET_SAFE 5 /* Set MUX to Safe mode */
-#define USB_RETIMER_FW_UPDATE_SET_TBT 6 /* Set MUX to TBT mode */
-#define USB_RETIMER_FW_UPDATE_DISCONNECT 7 /* Set MUX to disconnect */
-
-#define EC_ACPI_MEM_USB_RETIMER_PORT(x) ((x) & 0x0f)
-#define EC_ACPI_MEM_USB_RETIMER_OP(x) \
- (((x) & 0xf0) >> USB_RETIMER_FW_UPDATE_OP_SHIFT)
-
-/*
- * Offset 0x15 is reserved for PBOK, added to coreboot in
- * https://crrev.com/c/3840943 and proposed for inclusion here
- * in https://crrev.com/c/3547317.
- */
-
-/*
- * Get extended strings from the EC.
- * Write:
- * String index, or 0 to probe for EC support.
- * Read:
- * String bytes, following by repeating null bytes.
- *
- * Writing a byte (EC_ACPI_MEM_STRINGS_FIFO_ID_*) selects a string, and the
- * following reads return the non-null bytes of the string in sequence until
- * the end of the string is reached. After the end of the string, reads 0 until
- * another byte is written. This interface allows ACPI firmware to read longer
- * strings from the EC than can reasonably fit into the shared memory region.
- *
- * To probe for EC support, write FIFO_ID_VERSION and read will return at least
- * one nonzero (MEM_STRINGS_FIFO_V1 for example) if MEM_STRINGS_FIFO is
- * supported. Returned values will indicate which strings are supported. If the
- * first byte is 0xff, the strings FIFO is unsupported.
- */
-#define EC_ACPI_MEM_STRINGS_FIFO 0x16
-
-/* String index to probe EC support. */
-#define EC_ACPI_MEM_STRINGS_FIFO_ID_VERSION 0
-#define EC_ACPI_MEM_STRINGS_FIFO_V1 1
-/*
- * 0xff is the value the EC returns for unimplemented reads, indicating
- * the current EC firmware does not implement this command.
- */
-#define EC_ACPI_MEM_STRINGS_FIFO_UNSUPPORTED 0xff
-
-/*
- * Battery model number for the selected battery. Supported since V1.
- * Presents the same data as EC_MEMMAP_BATT_MODEL, but can provide more
- * than 8 bytes.
- *
- * This and the other FIFO_ID_BATTERY strings can select one of multiple
- * batteries by changing the value at EC_MEMMAP_BATT_INDEX. Once that index
- * is changed, reads of these strings will return information for the
- * corresponding battery, if present.
- */
-#define EC_ACPI_MEM_STRINGS_FIFO_ID_BATTERY_MODEL 1
-/*
- * Battery serial number for the selected battery. Supported since V1.
- * Presents the same data as EC_MEMMAP_BATT_SERIAL, but can provide more
- * than 8 bytes.
- */
-#define EC_ACPI_MEM_STRINGS_FIFO_ID_BATTERY_SERIAL 2
-/*
- * Battery manufacturer for the selected battery. Supported since V1.
- * Presents the same data as EC_MEMMAP_BATT_MFGR, but can provide more
- * than 8 bytes.
- */
-#define EC_ACPI_MEM_STRINGS_FIFO_ID_BATTERY_MANUFACTURER 3
+#define EC_ACPI_MEM_DEVICE_TABLET_MODE 0x01
/*
* ACPI addresses 0x20 - 0xff map to EC_MEMMAP offset 0x00 - 0xdf. This data
* is read-only from the AP. Added in EC_ACPI_MEM_VERSION 2.
*/
-#define EC_ACPI_MEM_MAPPED_BEGIN 0x20
-#define EC_ACPI_MEM_MAPPED_SIZE 0xe0
+#define EC_ACPI_MEM_MAPPED_BEGIN 0x20
+#define EC_ACPI_MEM_MAPPED_SIZE 0xe0
/* Current version of ACPI memory address space */
#define EC_ACPI_MEM_VERSION_CURRENT 2
@@ -616,7 +352,6 @@ extern "C" {
*/
#ifndef __ACPI__
-#ifndef __KERNEL__
/*
* Define __packed if someone hasn't beat us to it. Linux kernel style
* checking prefers __packed over __attribute__((packed)).
@@ -628,7 +363,6 @@ extern "C" {
#ifndef __aligned
#define __aligned(x) __attribute__((aligned(x)))
#endif
-#endif /* __KERNEL__ */
/*
* Attributes for EC request and response packets. Just defining __packed
@@ -642,7 +376,7 @@ extern "C" {
* parent structure that the alignment will still be true given the packing of
* the parent structure. This is particularly important if the sub-structure
* will be passed as a pointer to another function, since that function will
- * not know about the misalignment caused by the parent structure's packing.
+ * not know about the misaligment caused by the parent structure's packing.
*
* Also be very careful using __packed - particularly when nesting non-packed
* structures inside packed ones. In fact, DO NOT use __packed directly;
@@ -695,7 +429,7 @@ extern "C" {
#define __ec_todo_packed __packed
#define __ec_todo_unpacked
-#else /* !CONFIG_HOSTCMD_ALIGNED */
+#else /* !CONFIG_HOSTCMD_ALIGNED */
/*
* Packed structures make no assumption about alignment, so they do inefficient
@@ -710,25 +444,25 @@ extern "C" {
#define __ec_todo_packed __packed
#define __ec_todo_unpacked
-#endif /* !CONFIG_HOSTCMD_ALIGNED */
+#endif /* !CONFIG_HOSTCMD_ALIGNED */
/* LPC command status byte masks */
/* EC has written a byte in the data register and host hasn't read it yet */
-#define EC_LPC_STATUS_TO_HOST 0x01
+#define EC_LPC_STATUS_TO_HOST 0x01
/* Host has written a command/data byte and the EC hasn't read it yet */
-#define EC_LPC_STATUS_FROM_HOST 0x02
+#define EC_LPC_STATUS_FROM_HOST 0x02
/* EC is processing a command */
-#define EC_LPC_STATUS_PROCESSING 0x04
+#define EC_LPC_STATUS_PROCESSING 0x04
/* Last write to EC was a command, not data */
-#define EC_LPC_STATUS_LAST_CMD 0x08
+#define EC_LPC_STATUS_LAST_CMD 0x08
/* EC is in burst mode */
-#define EC_LPC_STATUS_BURST_MODE 0x10
+#define EC_LPC_STATUS_BURST_MODE 0x10
/* SCI event is pending (requesting SCI query) */
#define EC_LPC_STATUS_SCI_PENDING 0x20
/* SMI event is pending (requesting SMI query) */
#define EC_LPC_STATUS_SMI_PENDING 0x40
/* (reserved) */
-#define EC_LPC_STATUS_RESERVED 0x80
+#define EC_LPC_STATUS_RESERVED 0x80
/*
* EC is busy. This covers both the EC processing a command, and the host has
@@ -737,8 +471,8 @@ extern "C" {
#define EC_LPC_STATUS_BUSY_MASK \
(EC_LPC_STATUS_FROM_HOST | EC_LPC_STATUS_PROCESSING)
-/*
- * Host command response codes (16-bit).
+/* Host command response codes (16-bit). Note that response codes should be
+ * stored in a uint16_t rather than directly in a value of this type.
*/
enum ec_status {
EC_RES_SUCCESS = 0,
@@ -749,112 +483,25 @@ enum ec_status {
EC_RES_INVALID_RESPONSE = 5,
EC_RES_INVALID_VERSION = 6,
EC_RES_INVALID_CHECKSUM = 7,
- EC_RES_IN_PROGRESS = 8, /* Accepted, command in progress */
- EC_RES_UNAVAILABLE = 9, /* No response available */
- EC_RES_TIMEOUT = 10, /* We got a timeout */
- EC_RES_OVERFLOW = 11, /* Table / data overflow */
- EC_RES_INVALID_HEADER = 12, /* Header contains invalid data */
- EC_RES_REQUEST_TRUNCATED = 13, /* Didn't get the entire request */
- EC_RES_RESPONSE_TOO_BIG = 14, /* Response was too big to handle */
- EC_RES_BUS_ERROR = 15, /* Communications bus error */
- EC_RES_BUSY = 16, /* Up but too busy. Should retry */
- EC_RES_INVALID_HEADER_VERSION = 17, /* Header version invalid */
- EC_RES_INVALID_HEADER_CRC = 18, /* Header CRC invalid */
- EC_RES_INVALID_DATA_CRC = 19, /* Data CRC invalid */
- EC_RES_DUP_UNAVAILABLE = 20, /* Can't resend response */
-
- EC_RES_COUNT,
-
- EC_RES_MAX = UINT16_MAX, /**< Force enum to be 16 bits */
-} __packed;
-BUILD_ASSERT(sizeof(enum ec_status) == sizeof(uint16_t));
-#ifdef CONFIG_EC_HOST_CMD
-#ifdef CONFIG_ZEPHYR
-/*
- * Make sure Zephyre uses the same status codes.
- */
-#include <zephyr/mgmt/ec_host_cmd/ec_host_cmd.h>
-#endif
-
-BUILD_ASSERT((uint16_t)EC_RES_SUCCESS == (uint16_t)EC_HOST_CMD_SUCCESS);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_COMMAND ==
- (uint16_t)EC_HOST_CMD_INVALID_COMMAND);
-BUILD_ASSERT((uint16_t)EC_RES_ERROR == (uint16_t)EC_HOST_CMD_ERROR);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_PARAM ==
- (uint16_t)EC_HOST_CMD_INVALID_PARAM);
-BUILD_ASSERT((uint16_t)EC_RES_ACCESS_DENIED ==
- (uint16_t)EC_HOST_CMD_ACCESS_DENIED);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_RESPONSE ==
- (uint16_t)EC_HOST_CMD_INVALID_RESPONSE);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_VERSION ==
- (uint16_t)EC_HOST_CMD_INVALID_VERSION);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_CHECKSUM ==
- (uint16_t)EC_HOST_CMD_INVALID_CHECKSUM);
-BUILD_ASSERT((uint16_t)EC_RES_IN_PROGRESS == (uint16_t)EC_HOST_CMD_IN_PROGRESS);
-BUILD_ASSERT((uint16_t)EC_RES_UNAVAILABLE == (uint16_t)EC_HOST_CMD_UNAVAILABLE);
-BUILD_ASSERT((uint16_t)EC_RES_TIMEOUT == (uint16_t)EC_HOST_CMD_TIMEOUT);
-BUILD_ASSERT((uint16_t)EC_RES_OVERFLOW == (uint16_t)EC_HOST_CMD_OVERFLOW);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_HEADER ==
- (uint16_t)EC_HOST_CMD_INVALID_HEADER);
-BUILD_ASSERT((uint16_t)EC_RES_REQUEST_TRUNCATED ==
- (uint16_t)EC_HOST_CMD_REQUEST_TRUNCATED);
-BUILD_ASSERT((uint16_t)EC_RES_RESPONSE_TOO_BIG ==
- (uint16_t)EC_HOST_CMD_RESPONSE_TOO_BIG);
-BUILD_ASSERT((uint16_t)EC_RES_BUS_ERROR == (uint16_t)EC_HOST_CMD_BUS_ERROR);
-BUILD_ASSERT((uint16_t)EC_RES_BUSY == (uint16_t)EC_HOST_CMD_BUSY);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_HEADER_VERSION ==
- (uint16_t)EC_HOST_CMD_INVALID_HEADER_VERSION);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_HEADER_CRC ==
- (uint16_t)EC_HOST_CMD_INVALID_HEADER_CRC);
-BUILD_ASSERT((uint16_t)EC_RES_INVALID_DATA_CRC ==
- (uint16_t)EC_HOST_CMD_INVALID_DATA_CRC);
-BUILD_ASSERT((uint16_t)EC_RES_DUP_UNAVAILABLE ==
- (uint16_t)EC_HOST_CMD_DUP_UNAVAILABLE);
-BUILD_ASSERT((uint16_t)EC_RES_MAX == (uint16_t)EC_HOST_CMD_MAX);
-
-#endif
-
-/* clang-format off */
-#define EC_STATUS_TEXT \
- { \
- EC_MAP_ITEM(EC_RES_SUCCESS, SUCCESS), \
- EC_MAP_ITEM(EC_RES_INVALID_COMMAND, INVALID_COMMAND), \
- EC_MAP_ITEM(EC_RES_ERROR, ERROR), \
- EC_MAP_ITEM(EC_RES_INVALID_PARAM, INVALID_PARAM), \
- EC_MAP_ITEM(EC_RES_ACCESS_DENIED, ACCESS_DENIED), \
- EC_MAP_ITEM(EC_RES_INVALID_RESPONSE, INVALID_RESPONSE), \
- EC_MAP_ITEM(EC_RES_INVALID_VERSION, INVALID_VERSION), \
- EC_MAP_ITEM(EC_RES_INVALID_CHECKSUM, INVALID_CHECKSUM), \
- EC_MAP_ITEM(EC_RES_IN_PROGRESS, IN_PROGRESS), \
- EC_MAP_ITEM(EC_RES_UNAVAILABLE, UNAVAILABLE), \
- EC_MAP_ITEM(EC_RES_TIMEOUT, TIMEOUT), \
- EC_MAP_ITEM(EC_RES_OVERFLOW, OVERFLOW), \
- EC_MAP_ITEM(EC_RES_INVALID_HEADER, INVALID_HEADER), \
- EC_MAP_ITEM(EC_RES_REQUEST_TRUNCATED, REQUEST_TRUNCATED), \
- EC_MAP_ITEM(EC_RES_RESPONSE_TOO_BIG, RESPONSE_TOO_BIG), \
- EC_MAP_ITEM(EC_RES_BUS_ERROR, BUS_ERROR), \
- EC_MAP_ITEM(EC_RES_BUSY, BUSY), \
- EC_MAP_ITEM(EC_RES_INVALID_HEADER_VERSION, INVALID_HEADER_VERSION), \
- EC_MAP_ITEM(EC_RES_INVALID_HEADER_CRC, INVALID_HEADER_CRC), \
- EC_MAP_ITEM(EC_RES_INVALID_DATA_CRC, INVALID_DATA_CRC), \
- EC_MAP_ITEM(EC_RES_DUP_UNAVAILABLE, DUP_UNAVAILABLE), \
- }
-/* clang-format on */
-
-#ifndef __cplusplus
-#define EC_MAP_ITEM(k, v) [k] = #v
-BUILD_ASSERT(ARRAY_SIZE(((const char *[])EC_STATUS_TEXT)) == EC_RES_COUNT);
-#undef EC_MAP_ITEM
-#endif
+ EC_RES_IN_PROGRESS = 8, /* Accepted, command in progress */
+ EC_RES_UNAVAILABLE = 9, /* No response available */
+ EC_RES_TIMEOUT = 10, /* We got a timeout */
+ EC_RES_OVERFLOW = 11, /* Table / data overflow */
+ EC_RES_INVALID_HEADER = 12, /* Header contains invalid data */
+ EC_RES_REQUEST_TRUNCATED = 13, /* Didn't get the entire request */
+ EC_RES_RESPONSE_TOO_BIG = 14, /* Response was too big to handle */
+ EC_RES_BUS_ERROR = 15, /* Communications bus error */
+ EC_RES_BUSY = 16 /* Up but too busy. Should retry */
+};
/*
- * Host event codes. ACPI query EC command uses code 0 to mean "no event
- * pending". We explicitly specify each value in the enum listing so they won't
- * change if we delete/insert an item or rearrange the list (it needs to be
- * stable across platforms, not just within a single compiled instance).
+ * Host event codes. Note these are 1-based, not 0-based, because ACPI query
+ * EC command uses code 0 to mean "no event pending". We explicitly specify
+ * each value in the enum listing so they won't change if we delete/insert an
+ * item or rearrange the list (it needs to be stable across platforms, not
+ * just within a single compiled instance).
*/
enum host_event_code {
- EC_HOST_EVENT_NONE = 0,
EC_HOST_EVENT_LID_CLOSED = 1,
EC_HOST_EVENT_LID_OPEN = 2,
EC_HOST_EVENT_POWER_BUTTON = 3,
@@ -867,8 +514,7 @@ enum host_event_code {
/* Event generated by a device attached to the EC */
EC_HOST_EVENT_DEVICE = 10,
EC_HOST_EVENT_THERMAL = 11,
- /* GPU related event. Formerly named EC_HOST_EVENT_USB_CHARGER. */
- EC_HOST_EVENT_GPU = 12,
+ EC_HOST_EVENT_USB_CHARGER = 12,
EC_HOST_EVENT_KEY_PRESSED = 13,
/*
* EC has finished initializing the host interface. The host can check
@@ -915,20 +561,17 @@ enum host_event_code {
/* EC desires to change state of host-controlled USB mux */
EC_HOST_EVENT_USB_MUX = 28,
- /*
- * The device has changed "modes". This can be one of the following:
- *
- * - TABLET/LAPTOP mode
- * - detachable base attach/detach event
- * - on body/off body transition event
- */
+ /* TABLET/LAPTOP mode event*/
EC_HOST_EVENT_MODE_CHANGE = 29,
/* Keyboard recovery combo with hardware reinitialization */
EC_HOST_EVENT_KEYBOARD_RECOVERY_HW_REINIT = 30,
- /* WoV */
- EC_HOST_EVENT_WOV = 31,
+ /*
+ * Reserve this last bit to indicate that at least one bit in a
+ * secondary host event word is set. See crbug.com/633646.
+ */
+ EC_HOST_EVENT_EXTENDED = 31,
/*
* The high bit of the event mask is not used as a host event code. If
@@ -937,79 +580,22 @@ enum host_event_code {
* raw event status via EC_MEMMAP_HOST_EVENTS but the LPC interface is
* not initialized on the EC, or improperly configured on the host.
*/
- EC_HOST_EVENT_INVALID = 32,
-
- /* Body detect (lap/desk) change event */
- EC_HOST_EVENT_BODY_DETECT_CHANGE = 33,
-
- /* New console logs since last snapshot */
- EC_HOST_EVENT_CONSOLE_LOGS = 34,
-
- /*
- * Only 64 host events are supported. This enum uses 1-based counting so
- * it can skip 0 (NONE), so the last legal host event number is 64.
- */
+ EC_HOST_EVENT_INVALID = 32
};
-
/* Host event mask */
-#define EC_HOST_EVENT_MASK(event_code) BIT_ULL((event_code) - 1)
+#define EC_HOST_EVENT_MASK(event_code) (1ULL << ((event_code) - 1))
-/* clang-format off */
-#define HOST_EVENT_TEXT \
- { \
- [EC_HOST_EVENT_NONE] = "NONE", \
- [EC_HOST_EVENT_LID_CLOSED] = "LID_CLOSED", \
- [EC_HOST_EVENT_LID_OPEN] = "LID_OPEN", \
- [EC_HOST_EVENT_POWER_BUTTON] = "POWER_BUTTON", \
- [EC_HOST_EVENT_AC_CONNECTED] = "AC_CONNECTED", \
- [EC_HOST_EVENT_AC_DISCONNECTED] = "AC_DISCONNECTED", \
- [EC_HOST_EVENT_BATTERY_LOW] = "BATTERY_LOW", \
- [EC_HOST_EVENT_BATTERY_CRITICAL] = "BATTERY_CRITICAL", \
- [EC_HOST_EVENT_BATTERY] = "BATTERY", \
- [EC_HOST_EVENT_THERMAL_THRESHOLD] = "THERMAL_THRESHOLD", \
- [EC_HOST_EVENT_DEVICE] = "DEVICE", \
- [EC_HOST_EVENT_THERMAL] = "THERMAL", \
- [EC_HOST_EVENT_GPU] = "GPU", \
- [EC_HOST_EVENT_KEY_PRESSED] = "KEY_PRESSED", \
- [EC_HOST_EVENT_INTERFACE_READY] = "INTERFACE_READY", \
- [EC_HOST_EVENT_KEYBOARD_RECOVERY] = "KEYBOARD_RECOVERY", \
- [EC_HOST_EVENT_THERMAL_SHUTDOWN] = "THERMAL_SHUTDOWN", \
- [EC_HOST_EVENT_BATTERY_SHUTDOWN] = "BATTERY_SHUTDOWN", \
- [EC_HOST_EVENT_THROTTLE_START] = "THROTTLE_START", \
- [EC_HOST_EVENT_THROTTLE_STOP] = "THROTTLE_STOP", \
- [EC_HOST_EVENT_HANG_DETECT] = "HANG_DETECT", \
- [EC_HOST_EVENT_HANG_REBOOT] = "HANG_REBOOT", \
- [EC_HOST_EVENT_PD_MCU] = "PD_MCU", \
- [EC_HOST_EVENT_BATTERY_STATUS] = "BATTERY_STATUS", \
- [EC_HOST_EVENT_PANIC] = "PANIC", \
- [EC_HOST_EVENT_KEYBOARD_FASTBOOT] = "KEYBOARD_FASTBOOT", \
- [EC_HOST_EVENT_RTC] = "RTC", \
- [EC_HOST_EVENT_MKBP] = "MKBP", \
- [EC_HOST_EVENT_USB_MUX] = "USB_MUX", \
- [EC_HOST_EVENT_MODE_CHANGE] = "MODE_CHANGE", \
- [EC_HOST_EVENT_KEYBOARD_RECOVERY_HW_REINIT] = \
- "KEYBOARD_RECOVERY_HW_REINIT", \
- [EC_HOST_EVENT_WOV] = "WOV", \
- [EC_HOST_EVENT_INVALID] = "INVALID", \
- [EC_HOST_EVENT_BODY_DETECT_CHANGE] = "BODY_DETECT_CHANGE", \
- [EC_HOST_EVENT_CONSOLE_LOGS] = "CONSOLE_LOGS", \
- }
-/* clang-format on */
-
-/**
- * struct ec_lpc_host_args - Arguments at EC_LPC_ADDR_HOST_ARGS
- * @flags: The host argument flags.
- * @command_version: Command version.
- * @data_size: The length of data.
- * @checksum: Checksum; sum of command + flags + command_version + data_size +
- * all params/response data bytes.
- */
-struct ec_lpc_host_args {
+/* Arguments at EC_LPC_ADDR_HOST_ARGS */
+struct __ec_align4 ec_lpc_host_args {
uint8_t flags;
uint8_t command_version;
uint8_t data_size;
+ /*
+ * Checksum; sum of command + flags + command_version + data_size +
+ * all params/response data bytes.
+ */
uint8_t checksum;
-} __ec_align4;
+};
/* Flags for ec_lpc_host_args.flags */
/*
@@ -1029,7 +615,7 @@ struct ec_lpc_host_args {
* response. Command version is 0 and response data from EC is at
* EC_LPC_ADDR_OLD_PARAM with unknown length.
*/
-#define EC_HOST_ARGS_FLAG_TO_HOST 0x02
+#define EC_HOST_ARGS_FLAG_TO_HOST 0x02
/*****************************************************************************/
/*
@@ -1071,52 +657,48 @@ struct ec_lpc_host_args {
* request, the AP will clock in bytes until it sees the framing byte, then
* clock in the response packet.
*/
-#define EC_SPI_FRAME_START 0xec
+#define EC_SPI_FRAME_START 0xec
/*
* Padding bytes which are clocked out after the end of a response packet.
*/
-#define EC_SPI_PAST_END 0xed
+#define EC_SPI_PAST_END 0xed
/*
- * EC is ready to receive, and has ignored the byte sent by the AP. EC expects
+ * EC is ready to receive, and has ignored the byte sent by the AP. EC expects
* that the AP will send a valid packet header (starting with
* EC_COMMAND_PROTOCOL_3) in the next 32 bytes.
- *
- * NOTE: Some SPI configurations place the Most Significant Bit on SDO when
- * CS goes low. This macro has the Most Significant Bit set to zero,
- * so SDO will not be driven high when CS goes low.
*/
-#define EC_SPI_RX_READY 0x78
+#define EC_SPI_RX_READY 0xf8
/*
* EC has started receiving the request from the AP, but hasn't started
* processing it yet.
*/
-#define EC_SPI_RECEIVING 0xf9
+#define EC_SPI_RECEIVING 0xf9
/* EC has received the entire request from the AP and is processing it. */
-#define EC_SPI_PROCESSING 0xfa
+#define EC_SPI_PROCESSING 0xfa
/*
* EC received bad data from the AP, such as a packet header with an invalid
* length. EC will ignore all data until chip select deasserts.
*/
-#define EC_SPI_RX_BAD_DATA 0xfb
+#define EC_SPI_RX_BAD_DATA 0xfb
/*
* EC received data from the AP before it was ready. That is, the AP asserted
* chip select and started clocking data before the EC was ready to receive it.
* EC will ignore all data until chip select deasserts.
*/
-#define EC_SPI_NOT_READY 0xfc
+#define EC_SPI_NOT_READY 0xfc
/*
* EC was ready to receive a request from the AP. EC has treated the byte sent
* by the AP as part of a request packet, or (for old-style ECs) is processing
* a fully received packet but is not ready to respond yet.
*/
-#define EC_SPI_OLD_READY 0xfd
+#define EC_SPI_OLD_READY 0xfd
/*****************************************************************************/
@@ -1138,22 +720,22 @@ struct ec_lpc_host_args {
*/
#define EC_PROTO2_REQUEST_HEADER_BYTES 3
#define EC_PROTO2_REQUEST_TRAILER_BYTES 1
-#define EC_PROTO2_REQUEST_OVERHEAD \
- (EC_PROTO2_REQUEST_HEADER_BYTES + EC_PROTO2_REQUEST_TRAILER_BYTES)
+#define EC_PROTO2_REQUEST_OVERHEAD (EC_PROTO2_REQUEST_HEADER_BYTES + \
+ EC_PROTO2_REQUEST_TRAILER_BYTES)
#define EC_PROTO2_RESPONSE_HEADER_BYTES 2
#define EC_PROTO2_RESPONSE_TRAILER_BYTES 1
-#define EC_PROTO2_RESPONSE_OVERHEAD \
- (EC_PROTO2_RESPONSE_HEADER_BYTES + EC_PROTO2_RESPONSE_TRAILER_BYTES)
+#define EC_PROTO2_RESPONSE_OVERHEAD (EC_PROTO2_RESPONSE_HEADER_BYTES + \
+ EC_PROTO2_RESPONSE_TRAILER_BYTES)
/* Parameter length was limited by the LPC interface */
#define EC_PROTO2_MAX_PARAM_SIZE 0xfc
/* Maximum request and response packet sizes for protocol version 2 */
-#define EC_PROTO2_MAX_REQUEST_SIZE \
- (EC_PROTO2_REQUEST_OVERHEAD + EC_PROTO2_MAX_PARAM_SIZE)
-#define EC_PROTO2_MAX_RESPONSE_SIZE \
- (EC_PROTO2_RESPONSE_OVERHEAD + EC_PROTO2_MAX_PARAM_SIZE)
+#define EC_PROTO2_MAX_REQUEST_SIZE (EC_PROTO2_REQUEST_OVERHEAD + \
+ EC_PROTO2_MAX_PARAM_SIZE)
+#define EC_PROTO2_MAX_RESPONSE_SIZE (EC_PROTO2_RESPONSE_OVERHEAD + \
+ EC_PROTO2_MAX_PARAM_SIZE)
/*****************************************************************************/
@@ -1165,175 +747,56 @@ struct ec_lpc_host_args {
#define EC_HOST_REQUEST_VERSION 3
-/**
- * struct ec_host_request - Version 3 request from host.
- * @struct_version: Should be 3. The EC will return EC_RES_INVALID_HEADER if it
- * receives a header with a version it doesn't know how to
- * parse.
- * @checksum: Checksum of request and data; sum of all bytes including checksum
- * should total to 0.
- * @command: Command to send (EC_CMD_...)
- * @command_version: Command version.
- * @reserved: Unused byte in current protocol version; set to 0.
- * @data_len: Length of data which follows this header.
- */
-struct ec_host_request {
- uint8_t struct_version;
- uint8_t checksum;
- uint16_t command;
- uint8_t command_version;
- uint8_t reserved;
- uint16_t data_len;
-} __ec_align4;
-
-#define EC_HOST_RESPONSE_VERSION 3
-
-/**
- * struct ec_host_response - Version 3 response from EC.
- * @struct_version: Struct version (=3).
- * @checksum: Checksum of response and data; sum of all bytes including
- * checksum should total to 0.
- * @result: EC's response to the command (separate from communication failure)
- * @data_len: Length of data which follows this header.
- * @reserved: Unused bytes in current protocol version; set to 0.
- */
-struct ec_host_response {
- uint8_t struct_version;
- uint8_t checksum;
- uint16_t result;
- uint16_t data_len;
- uint16_t reserved;
-} __ec_align4;
-
-/*****************************************************************************/
-
-/*
- * Host command protocol V4.
- *
- * Packets always start with a request or response header. They are followed
- * by data_len bytes of data. If the data_crc_present flag is set, the data
- * bytes are followed by a CRC-8 of that data, using x^8 + x^2 + x + 1
- * polynomial.
- *
- * Host algorithm when sending a request q:
- *
- * 101) tries_left=(some value, e.g. 3);
- * 102) q.seq_num++
- * 103) q.seq_dup=0
- * 104) Calculate q.header_crc.
- * 105) Send request q to EC.
- * 106) Wait for response r. Go to 201 if received or 301 if timeout.
- *
- * 201) If r.struct_version != 4, go to 301.
- * 202) If r.header_crc mismatches calculated CRC for r header, go to 301.
- * 203) If r.data_crc_present and r.data_crc mismatches, go to 301.
- * 204) If r.seq_num != q.seq_num, go to 301.
- * 205) If r.seq_dup == q.seq_dup, return success.
- * 207) If r.seq_dup == 1, go to 301.
- * 208) Return error.
- *
- * 301) If --tries_left <= 0, return error.
- * 302) If q.seq_dup == 1, go to 105.
- * 303) q.seq_dup = 1
- * 304) Go to 104.
- *
- * EC algorithm when receiving a request q.
- * EC has response buffer r, error buffer e.
- *
- * 101) If q.struct_version != 4, set e.result = EC_RES_INVALID_HEADER_VERSION
- * and go to 301
- * 102) If q.header_crc mismatches calculated CRC, set e.result =
- * EC_RES_INVALID_HEADER_CRC and go to 301
- * 103) If q.data_crc_present, calculate data CRC. If that mismatches the CRC
- * byte at the end of the packet, set e.result = EC_RES_INVALID_DATA_CRC
- * and go to 301.
- * 104) If q.seq_dup == 0, go to 201.
- * 105) If q.seq_num != r.seq_num, go to 201.
- * 106) If q.seq_dup == r.seq_dup, go to 205, else go to 203.
- *
- * 201) Process request q into response r.
- * 202) r.seq_num = q.seq_num
- * 203) r.seq_dup = q.seq_dup
- * 204) Calculate r.header_crc
- * 205) If r.data_len > 0 and data is no longer available, set e.result =
- * EC_RES_DUP_UNAVAILABLE and go to 301.
- * 206) Send response r.
- *
- * 301) e.seq_num = q.seq_num
- * 302) e.seq_dup = q.seq_dup
- * 303) Calculate e.header_crc.
- * 304) Send error response e.
- */
-
-/* Version 4 request from host */
-struct ec_host_request4 {
- /*
- * bits 0-3: struct_version: Structure version (=4)
- * bit 4: is_response: Is response (=0)
- * bits 5-6: seq_num: Sequence number
- * bit 7: seq_dup: Sequence duplicate flag
+/* Version 3 request from host */
+struct __ec_align4 ec_host_request {
+ /* Structure version (=3)
+ *
+ * EC will return EC_RES_INVALID_HEADER if it receives a header with a
+ * version it doesn't know how to parse.
*/
- uint8_t fields0;
+ uint8_t struct_version;
/*
- * bits 0-4: command_version: Command version
- * bits 5-6: Reserved (set 0, ignore on read)
- * bit 7: data_crc_present: Is data CRC present after data
+ * Checksum of request and data; sum of all bytes including checksum
+ * should total to 0.
*/
- uint8_t fields1;
+ uint8_t checksum;
- /* Command code (EC_CMD_*) */
+ /* Command code */
uint16_t command;
- /* Length of data which follows this header (not including data CRC) */
- uint16_t data_len;
+ /* Command version */
+ uint8_t command_version;
- /* Reserved (set 0, ignore on read) */
+ /* Unused byte in current protocol version; set to 0 */
uint8_t reserved;
- /* CRC-8 of above fields, using x^8 + x^2 + x + 1 polynomial */
- uint8_t header_crc;
-} __ec_align4;
+ /* Length of data which follows this header */
+ uint16_t data_len;
+};
-/* Version 4 response from EC */
-struct ec_host_response4 {
- /*
- * bits 0-3: struct_version: Structure version (=4)
- * bit 4: is_response: Is response (=1)
- * bits 5-6: seq_num: Sequence number
- * bit 7: seq_dup: Sequence duplicate flag
- */
- uint8_t fields0;
+#define EC_HOST_RESPONSE_VERSION 3
+
+/* Version 3 response from EC */
+struct __ec_align4 ec_host_response {
+ /* Structure version (=3) */
+ uint8_t struct_version;
/*
- * bits 0-6: Reserved (set 0, ignore on read)
- * bit 7: data_crc_present: Is data CRC present after data
+ * Checksum of response and data; sum of all bytes including checksum
+ * should total to 0.
*/
- uint8_t fields1;
+ uint8_t checksum;
/* Result code (EC_RES_*) */
uint16_t result;
- /* Length of data which follows this header (not including data CRC) */
+ /* Length of data which follows this header */
uint16_t data_len;
- /* Reserved (set 0, ignore on read) */
- uint8_t reserved;
-
- /* CRC-8 of above fields, using x^8 + x^2 + x + 1 polynomial */
- uint8_t header_crc;
-} __ec_align4;
-
-/* Fields in fields0 byte */
-#define EC_PACKET4_0_STRUCT_VERSION_MASK 0x0f
-#define EC_PACKET4_0_IS_RESPONSE_MASK 0x10
-#define EC_PACKET4_0_SEQ_NUM_SHIFT 5
-#define EC_PACKET4_0_SEQ_NUM_MASK 0x60
-#define EC_PACKET4_0_SEQ_DUP_MASK 0x80
-
-/* Fields in fields1 byte */
-#define EC_PACKET4_1_COMMAND_VERSION_MASK 0x1f /* (request only) */
-#define EC_PACKET4_1_DATA_CRC_PRESENT_MASK 0x80
+ /* Unused bytes in current protocol version; set to 0 */
+ uint16_t reserved;
+};
/*****************************************************************************/
/*
@@ -1359,13 +822,9 @@ struct ec_host_response4 {
*/
#define EC_CMD_PROTO_VERSION 0x0000
-/**
- * struct ec_response_proto_version - Response to the proto version command.
- * @version: The protocol version.
- */
-struct ec_response_proto_version {
+struct __ec_align4 ec_response_proto_version {
uint32_t version;
-} __ec_align4;
+};
/*
* Hello. This is a simple command to test the EC is responsive to
@@ -1373,72 +832,43 @@ struct ec_response_proto_version {
*/
#define EC_CMD_HELLO 0x0001
-/**
- * struct ec_params_hello - Parameters to the hello command.
- * @in_data: Pass anything here.
- */
-struct ec_params_hello {
- uint32_t in_data;
-} __ec_align4;
+struct __ec_align4 ec_params_hello {
+ uint32_t in_data; /* Pass anything here */
+};
-/**
- * struct ec_response_hello - Response to the hello command.
- * @out_data: Output will be in_data + 0x01020304.
- */
-struct ec_response_hello {
- uint32_t out_data;
-} __ec_align4;
+struct __ec_align4 ec_response_hello {
+ uint32_t out_data; /* Output will be in_data + 0x01020304 */
+};
/* Get version number */
#define EC_CMD_GET_VERSION 0x0002
-enum ec_image {
+enum ec_current_image {
EC_IMAGE_UNKNOWN = 0,
EC_IMAGE_RO,
- EC_IMAGE_RW,
- EC_IMAGE_RW_A = EC_IMAGE_RW,
- EC_IMAGE_RO_B,
- EC_IMAGE_RW_B,
+ EC_IMAGE_RW
};
-/**
- * struct ec_response_get_version - Response to the v0 get version command.
- * @version_string_ro: Null-terminated RO firmware version string.
- * @version_string_rw: Null-terminated RW firmware version string.
- * @reserved: Unused bytes; was previously RW-B firmware version string.
- * @current_image: One of ec_image.
- */
-struct ec_response_get_version {
- char version_string_ro[32];
- char version_string_rw[32];
- char reserved[32]; /* Changed to cros_fwid_ro in version 1 */
- uint32_t current_image;
-} __ec_align4;
-
-/**
- * struct ec_response_get_version_v1 - Response to the v1 get version command.
- *
- * ec_response_get_version_v1 is a strict superset of ec_response_get_version.
- * The v1 response changes the semantics of one field (reserved to cros_fwid_ro)
- * and adds one additional field (cros_fwid_rw).
- *
- * @version_string_ro: Null-terminated RO firmware version string.
- * @version_string_rw: Null-terminated RW firmware version string.
- * @cros_fwid_ro: Null-terminated RO CrOS FWID string.
- * @current_image: One of ec_image.
- * @cros_fwid_rw: Null-terminated RW CrOS FWID string.
- */
-struct ec_response_get_version_v1 {
+struct __ec_align4 ec_response_get_version {
+ /* Null-terminated version strings for RO, RW */
char version_string_ro[32];
char version_string_rw[32];
- char cros_fwid_ro[32]; /* Added in version 1 (Used to be reserved) */
- uint32_t current_image;
- char cros_fwid_rw[32]; /* Added in version 1 */
-} __ec_align4;
+ char reserved[32]; /* Was previously RW-B string */
+ uint32_t current_image; /* One of ec_current_image */
+};
-/* Read test - OBSOLETE */
+/* Read test */
#define EC_CMD_READ_TEST 0x0003
+struct __ec_align4 ec_params_read_test {
+ uint32_t offset; /* Starting value for read buffer */
+ uint32_t size; /* Size to read in bytes */
+};
+
+struct __ec_align4 ec_response_read_test {
+ uint32_t data[32];
+};
+
/*
* Get build information
*
@@ -1449,28 +879,19 @@ struct ec_response_get_version_v1 {
/* Get chip info */
#define EC_CMD_GET_CHIP_INFO 0x0005
-/**
- * struct ec_response_get_chip_info - Response to the get chip info command.
- * @vendor: Null-terminated string for chip vendor.
- * @name: Null-terminated string for chip name.
- * @revision: Null-terminated string for chip mask version.
- */
-struct ec_response_get_chip_info {
+struct __ec_align4 ec_response_get_chip_info {
+ /* Null-terminated strings */
char vendor[32];
char name[32];
- char revision[32];
-} __ec_align4;
+ char revision[32]; /* Mask version */
+};
/* Get board HW version */
#define EC_CMD_GET_BOARD_VERSION 0x0006
-/**
- * struct ec_response_board_version - Response to the board version command.
- * @board_version: A monotonously incrementing number.
- */
-struct ec_response_board_version {
- uint16_t board_version;
-} __ec_align2;
+struct __ec_align2 ec_response_board_version {
+ uint16_t board_version; /* A monotonously incrementing number. */
+};
/*
* Read memory-mapped data.
@@ -1482,44 +903,29 @@ struct ec_response_board_version {
*/
#define EC_CMD_READ_MEMMAP 0x0007
-/**
- * struct ec_params_read_memmap - Parameters for the read memory map command.
- * @offset: Offset in memmap (EC_MEMMAP_*).
- * @size: Size to read in bytes.
- */
-struct ec_params_read_memmap {
- uint8_t offset;
- uint8_t size;
-} __ec_align1;
+struct __ec_align1 ec_params_read_memmap {
+ uint8_t offset; /* Offset in memmap (EC_MEMMAP_*) */
+ uint8_t size; /* Size to read in bytes */
+};
/* Read versions supported for a command */
#define EC_CMD_GET_CMD_VERSIONS 0x0008
-/**
- * struct ec_params_get_cmd_versions - Parameters for the get command versions.
- * @cmd: Command to check.
- */
-struct ec_params_get_cmd_versions {
- uint8_t cmd;
-} __ec_align1;
+struct __ec_align1 ec_params_get_cmd_versions {
+ uint8_t cmd; /* Command to check */
+};
-/**
- * struct ec_params_get_cmd_versions_v1 - Parameters for the get command
- * versions (v1)
- * @cmd: Command to check.
- */
-struct ec_params_get_cmd_versions_v1 {
- uint16_t cmd;
-} __ec_align2;
+struct __ec_align2 ec_params_get_cmd_versions_v1 {
+ uint16_t cmd; /* Command to check */
+};
-/**
- * struct ec_response_get_cmd_version - Response to the get command versions.
- * @version_mask: Mask of supported versions; use EC_VER_MASK() to compare with
- * a desired version.
- */
-struct ec_response_get_cmd_versions {
+struct __ec_align4 ec_response_get_cmd_versions {
+ /*
+ * Mask of supported versions; use EC_VER_MASK() to compare with a
+ * desired version.
+ */
uint32_t version_mask;
-} __ec_align4;
+};
/*
* Check EC communications status (busy). This is needed on i2c/spi but not
@@ -1528,88 +934,81 @@ struct ec_response_get_cmd_versions {
* lpc must read the status from the command register. Attempting this on
* lpc will overwrite the args/parameter space and corrupt its data.
*/
-#define EC_CMD_GET_COMMS_STATUS 0x0009
+#define EC_CMD_GET_COMMS_STATUS 0x0009
/* Avoid using ec_status which is for return values */
enum ec_comms_status {
- EC_COMMS_STATUS_PROCESSING = BIT(0), /* Processing cmd */
+ EC_COMMS_STATUS_PROCESSING = 1 << 0, /* Processing cmd */
};
-/**
- * struct ec_response_get_comms_status - Response to the get comms status
- * command.
- * @flags: Mask of enum ec_comms_status.
- */
-struct ec_response_get_comms_status {
- uint32_t flags; /* Mask of enum ec_comms_status */
-} __ec_align4;
+struct __ec_align4 ec_response_get_comms_status {
+ uint32_t flags; /* Mask of enum ec_comms_status */
+};
/* Fake a variety of responses, purely for testing purposes. */
-#define EC_CMD_TEST_PROTOCOL 0x000A
+#define EC_CMD_TEST_PROTOCOL 0x000A
/* Tell the EC what to send back to us. */
-struct ec_params_test_protocol {
+struct __ec_align4 ec_params_test_protocol {
uint32_t ec_result;
uint32_t ret_len;
uint8_t buf[32];
-} __ec_align4;
+};
/* Here it comes... */
-struct ec_response_test_protocol {
+struct __ec_align4 ec_response_test_protocol {
uint8_t buf[32];
-} __ec_align4;
+};
/* Get protocol information */
-#define EC_CMD_GET_PROTOCOL_INFO 0x000B
+#define EC_CMD_GET_PROTOCOL_INFO 0x000B
/* Flags for ec_response_get_protocol_info.flags */
/* EC_RES_IN_PROGRESS may be returned if a command is slow */
-#define EC_PROTOCOL_INFO_IN_PROGRESS_SUPPORTED BIT(0)
+#define EC_PROTOCOL_INFO_IN_PROGRESS_SUPPORTED (1 << 0)
-/**
- * struct ec_response_get_protocol_info - Response to the get protocol info.
- * @protocol_versions: Bitmask of protocol versions supported (1 << n means
- * version n).
- * @max_request_packet_size: Maximum request packet size in bytes.
- * @max_response_packet_size: Maximum response packet size in bytes.
- * @flags: see EC_PROTOCOL_INFO_*
- */
-struct ec_response_get_protocol_info {
+struct __ec_align4 ec_response_get_protocol_info {
/* Fields which exist if at least protocol version 3 supported */
+
+ /* Bitmask of protocol versions supported (1 << n means version n)*/
uint32_t protocol_versions;
+
+ /* Maximum request packet size, in bytes */
uint16_t max_request_packet_size;
+
+ /* Maximum response packet size, in bytes */
uint16_t max_response_packet_size;
+
+ /* Flags; see EC_PROTOCOL_INFO_* */
uint32_t flags;
-} __ec_align4;
+};
/*****************************************************************************/
/* Get/Set miscellaneous values */
/* The upper byte of .flags tells what to do (nothing means "get") */
-#define EC_GSV_SET 0x80000000
+#define EC_GSV_SET 0x80000000
-/*
- * The lower three bytes of .flags identifies the parameter, if that has
- * meaning for an individual command.
- */
+/* The lower three bytes of .flags identifies the parameter, if that has
+ meaning for an individual command. */
#define EC_GSV_PARAM_MASK 0x00ffffff
-struct ec_params_get_set_value {
+struct __ec_align4 ec_params_get_set_value {
uint32_t flags;
uint32_t value;
-} __ec_align4;
+};
-struct ec_response_get_set_value {
+struct __ec_align4 ec_response_get_set_value {
uint32_t flags;
uint32_t value;
-} __ec_align4;
+};
/* More than one command can use these structs to get/set parameters. */
-#define EC_CMD_GSV_PAUSE_IN_S5 0x000C
+#define EC_CMD_GSV_PAUSE_IN_S5 0x000C
/*****************************************************************************/
/* List the features supported by the firmware */
-#define EC_CMD_GET_FEATURES 0x000D
+#define EC_CMD_GET_FEATURES 0x000D
/* Supported features */
enum ec_feature_code {
@@ -1736,66 +1135,6 @@ enum ec_feature_code {
* mux.
*/
EC_FEATURE_TYPEC_MUX_REQUIRE_AP_ACK = 43,
- /*
- * The EC supports entering and residing in S4.
- */
- EC_FEATURE_S4_RESIDENCY = 44,
- /*
- * The EC supports the AP directing mux sets for the board.
- */
- EC_FEATURE_TYPEC_AP_MUX_SET = 45,
- /*
- * The EC supports the AP composing VDMs for us to send.
- */
- EC_FEATURE_TYPEC_AP_VDM_SEND = 46,
- /*
- * The EC supports system safe mode panic recovery.
- */
- EC_FEATURE_SYSTEM_SAFE_MODE = 47,
- /*
- * The EC will reboot on runtime assertion failures.
- */
- EC_FEATURE_ASSERT_REBOOTS = 48,
- /*
- * The EC image is built with tokenized logging enabled.
- */
- EC_FEATURE_TOKENIZED_LOGGING = 49,
- /*
- * The EC supports triggering an STB dump.
- */
- EC_FEATURE_AMD_STB_DUMP = 50,
- /*
- * The EC supports memory dump commands.
- */
- EC_FEATURE_MEMORY_DUMP = 51,
- /*
- * The EC supports DP2.1 capability
- */
- EC_FEATURE_TYPEC_DP2_1 = 52,
- /*
- * The MCU is System Companion Processor Core 1
- */
- EC_FEATURE_SCP_C1 = 53,
- /*
- * The EC supports UCSI PPM.
- */
- EC_FEATURE_UCSI_PPM = 54,
- /*
- * The EC supports Strauss keyboard.
- */
- EC_FEATURE_STRAUSS = 55,
- /*
- * The EC supports PoE.
- */
- EC_FEATURE_POE = 56,
- /*
- * The EC supports a hybrid boost charger
- */
- EC_FEATURE_CHARGER_HYBRID_POWER_BOOST = 57,
- /*
- * Support signaling new console logs via host event
- */
- EC_FEATURE_CONSOLE_LOG_EVENT = 58,
};
#define EC_FEATURE_MASK_0(event_code) BIT(event_code % 32)
@@ -1812,9 +1151,9 @@ struct ec_response_get_features {
/* Set SKU ID from AP */
#define EC_CMD_SET_SKU_ID 0x000F
-struct ec_sku_id_info {
+struct __ec_align4 ec_sku_id_info {
uint32_t sku_id;
-} __ec_align4;
+};
/*****************************************************************************/
/* Flash commands */
@@ -1823,56 +1162,39 @@ struct ec_sku_id_info {
#define EC_CMD_FLASH_INFO 0x0010
#define EC_VER_FLASH_INFO 2
-/**
- * struct ec_response_flash_info - Response to the flash info command.
- * @flash_size: Usable flash size in bytes.
- * @write_block_size: Write block size. Write offset and size must be a
- * multiple of this.
- * @erase_block_size: Erase block size. Erase offset and size must be a
- * multiple of this.
- * @protect_block_size: Protection block size. Protection offset and size
- * must be a multiple of this.
- *
- * Version 0 returns these fields.
- */
-struct ec_response_flash_info {
+/* Version 0 returns these fields */
+struct __ec_align4 ec_response_flash_info {
+ /* Usable flash size, in bytes */
uint32_t flash_size;
+ /*
+ * Write block size. Write offset and size must be a multiple
+ * of this.
+ */
uint32_t write_block_size;
+ /*
+ * Erase block size. Erase offset and size must be a multiple
+ * of this.
+ */
uint32_t erase_block_size;
+ /*
+ * Protection block size. Protection offset and size must be a
+ * multiple of this.
+ */
uint32_t protect_block_size;
-} __ec_align4;
+};
-/*
- * Flags for version 1+ flash info command
- * EC flash erases bits to 0 instead of 1.
- */
-#define EC_FLASH_INFO_ERASE_TO_0 BIT(0)
+/* Flags for version 1+ flash info command */
+/* EC flash erases bits to 0 instead of 1 */
+#define EC_FLASH_INFO_ERASE_TO_0 (1 << 0)
-/*
- * Flash must be selected for read/write/erase operations to succeed. This may
+/* Flash must be selected for read/write/erase operations to succeed. This may
* be necessary on a chip where write/erase can be corrupted by other board
* activity, or where the chip needs to enable some sort of programming voltage,
* or where the read/write/erase operations require cleanly suspending other
- * chip functionality.
- */
-#define EC_FLASH_INFO_SELECT_REQUIRED BIT(1)
+ * chip functionality. */
+#define EC_FLASH_INFO_SELECT_REQUIRED (1 << 1)
-/**
- * struct ec_response_flash_info_1 - Response to the flash info v1 command.
- * @flash_size: Usable flash size in bytes.
- * @write_block_size: Write block size. Write offset and size must be a
- * multiple of this.
- * @erase_block_size: Erase block size. Erase offset and size must be a
- * multiple of this.
- * @protect_block_size: Protection block size. Protection offset and size
- * must be a multiple of this.
- * @write_ideal_size: Ideal write size in bytes. Writes will be fastest if
- * size is exactly this and offset is a multiple of this.
- * For example, an EC may have a write buffer which can do
- * half-page operations if data is aligned, and a slower
- * word-at-a-time write mode.
- * @flags: Flags; see EC_FLASH_INFO_*
- *
+/*
* Version 1 returns the same initial fields as version 0, with additional
* fields following.
*
@@ -1886,7 +1208,7 @@ struct ec_response_flash_info {
* The EC returns the number of banks describing the flash memory.
* It adds banks descriptions up to num_banks_desc.
*/
-struct ec_response_flash_info_1 {
+struct __ec_align4 ec_response_flash_info_1 {
/* Version 0 fields; see above for description */
uint32_t flash_size;
uint32_t write_block_size;
@@ -1894,16 +1216,24 @@ struct ec_response_flash_info_1 {
uint32_t protect_block_size;
/* Version 1 adds these fields: */
+ /*
+ * Ideal write size in bytes. Writes will be fastest if size is
+ * exactly this and offset is a multiple of this. For example, an EC
+ * may have a write buffer which can do half-page operations if data is
+ * aligned, and a slower word-at-a-time write mode.
+ */
uint32_t write_ideal_size;
+
+ /* Flags; see EC_FLASH_INFO_* */
uint32_t flags;
-} __ec_align4;
+};
-struct ec_params_flash_info_2 {
+struct __ec_align4 ec_params_flash_info_2 {
/* Number of banks to describe */
uint16_t num_banks_desc;
/* Reserved; set 0; ignore on read */
uint8_t reserved[2];
-} __ec_align4;
+};
struct ec_flash_bank {
/* Number of sector is in this bank. */
@@ -1920,7 +1250,7 @@ struct ec_flash_bank {
uint8_t reserved[2];
};
-struct ec_response_flash_info_2 {
+struct __ec_align4 ec_response_flash_info_2 {
/* Total flash in the EC. */
uint32_t flash_size;
/* Flags; see EC_FLASH_INFO_* */
@@ -1931,8 +1261,8 @@ struct ec_response_flash_info_2 {
uint16_t num_banks_total;
/* Number of banks described in banks array. */
uint16_t num_banks_desc;
- struct ec_flash_bank banks[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
+ struct ec_flash_bank banks[0];
+};
/*
* Read flash
@@ -1941,15 +1271,10 @@ struct ec_response_flash_info_2 {
*/
#define EC_CMD_FLASH_READ 0x0011
-/**
- * struct ec_params_flash_read - Parameters for the flash read command.
- * @offset: Byte offset to read.
- * @size: Size to read in bytes.
- */
-struct ec_params_flash_read {
- uint32_t offset;
- uint32_t size;
-} __ec_align4;
+struct __ec_align4 ec_params_flash_read {
+ uint32_t offset; /* Byte offset to read */
+ uint32_t size; /* Size to read in bytes */
+};
/* Write flash */
#define EC_CMD_FLASH_WRITE 0x0012
@@ -1958,42 +1283,23 @@ struct ec_params_flash_read {
/* Version 0 of the flash command supported only 64 bytes of data */
#define EC_FLASH_WRITE_VER0_SIZE 64
-/**
- * struct ec_params_flash_write - Parameters for the flash write command.
- * @offset: Byte offset to write.
- * @size: Size to write in bytes.
- * @data: Data to write.
- * @data.words32: uint32_t data to write.
- * @data.bytes: uint8_t data to write.
- */
-struct ec_params_flash_write {
- uint32_t offset;
- uint32_t size;
- /* Followed by data to write. This union allows accessing an
- * underlying buffer as uint32s or uint8s for convenience.
- */
- union {
- uint32_t words32[FLEXIBLE_ARRAY_MEMBER_SIZE];
- uint8_t bytes[FLEXIBLE_ARRAY_MEMBER_SIZE];
- } data;
-} __ec_align4;
-BUILD_ASSERT(member_size(struct ec_params_flash_write, data) == 0);
+struct __ec_align4 ec_params_flash_write {
+ uint32_t offset; /* Byte offset to write */
+ uint32_t size; /* Size to write in bytes */
+ /* Followed by data to write */
+};
/* Erase flash */
#define EC_CMD_FLASH_ERASE 0x0013
-/**
- * struct ec_params_flash_erase - Parameters for the flash erase command, v0.
- * @offset: Byte offset to erase.
- * @size: Size to erase in bytes.
- */
-struct ec_params_flash_erase {
- uint32_t offset;
- uint32_t size;
-} __ec_align4;
+/* v0 */
+struct __ec_align4 ec_params_flash_erase {
+ uint32_t offset; /* Byte offset to erase */
+ uint32_t size; /* Size to erase in bytes */
+};
-/*
- * v1 add async erase:
+#define EC_VER_FLASH_WRITE 1
+/* v1 add async erase:
* subcommands can returns:
* EC_RES_SUCCESS : erased (see ERASE_SECTOR_ASYNC case below).
* EC_RES_INVALID_PARAM : offset/size are not aligned on a erase boundary.
@@ -2010,24 +1316,21 @@ struct ec_params_flash_erase {
* permitted while erasing. (For instance, STM32F4).
*/
enum ec_flash_erase_cmd {
- FLASH_ERASE_SECTOR, /* Erase and wait for result */
- FLASH_ERASE_SECTOR_ASYNC, /* Erase and return immediately. */
- FLASH_ERASE_GET_RESULT, /* Ask for last erase result */
+ FLASH_ERASE_SECTOR, /* Erase and wait for result */
+ FLASH_ERASE_SECTOR_ASYNC, /* Erase and return immediately. */
+ FLASH_ERASE_GET_RESULT, /* Ask for last erase result */
};
-/**
- * struct ec_params_flash_erase_v1 - Parameters for the flash erase command, v1.
- * @cmd: One of ec_flash_erase_cmd.
- * @reserved: Pad byte; currently always contains 0.
- * @flag: No flags defined yet; set to 0.
- * @params: Same as v0 parameters.
- */
-struct ec_params_flash_erase_v1 {
- uint8_t cmd;
- uint8_t reserved;
+struct __ec_align4 ec_params_flash_erase_v1 {
+ /* One of ec_flash_erase_cmd. */
+ uint8_t cmd;
+ /* Pad byte; currently always contains 0 */
+ uint8_t reserved;
+ /* No flags defined yet; set to 0 */
uint16_t flag;
+ /* Same as v0 parameters. */
struct ec_params_flash_erase params;
-} __ec_align4;
+};
/*
* Get/set flash protection.
@@ -2040,78 +1343,56 @@ struct ec_params_flash_erase_v1 {
* If mask=0, simply returns the current flags state.
*/
#define EC_CMD_FLASH_PROTECT 0x0015
-#define EC_VER_FLASH_PROTECT 1 /* Command version 1 */
+#define EC_VER_FLASH_PROTECT 1 /* Command version 1 */
/* Flags for flash protection */
/* RO flash code protected when the EC boots */
-#define EC_FLASH_PROTECT_RO_AT_BOOT BIT(0)
+#define EC_FLASH_PROTECT_RO_AT_BOOT (1 << 0)
/*
* RO flash code protected now. If this bit is set, at-boot status cannot
* be changed.
*/
-#define EC_FLASH_PROTECT_RO_NOW BIT(1)
+#define EC_FLASH_PROTECT_RO_NOW (1 << 1)
/* Entire flash code protected now, until reboot. */
-#define EC_FLASH_PROTECT_ALL_NOW BIT(2)
+#define EC_FLASH_PROTECT_ALL_NOW (1 << 2)
/* Flash write protect GPIO is asserted now */
-#define EC_FLASH_PROTECT_GPIO_ASSERTED BIT(3)
+#define EC_FLASH_PROTECT_GPIO_ASSERTED (1 << 3)
/* Error - at least one bank of flash is stuck locked, and cannot be unlocked */
-#define EC_FLASH_PROTECT_ERROR_STUCK BIT(4)
+#define EC_FLASH_PROTECT_ERROR_STUCK (1 << 4)
/*
* Error - flash protection is in inconsistent state. At least one bank of
* flash which should be protected is not protected. Usually fixed by
* re-requesting the desired flags, or by a hard reset if that fails.
*/
-#define EC_FLASH_PROTECT_ERROR_INCONSISTENT BIT(5)
+#define EC_FLASH_PROTECT_ERROR_INCONSISTENT (1 << 5)
/* Entire flash code protected when the EC boots */
-#define EC_FLASH_PROTECT_ALL_AT_BOOT BIT(6)
+#define EC_FLASH_PROTECT_ALL_AT_BOOT (1 << 6)
/* RW flash code protected when the EC boots */
-#define EC_FLASH_PROTECT_RW_AT_BOOT BIT(7)
+#define EC_FLASH_PROTECT_RW_AT_BOOT (1 << 7)
/* RW flash code protected now. */
-#define EC_FLASH_PROTECT_RW_NOW BIT(8)
+#define EC_FLASH_PROTECT_RW_NOW (1 << 8)
/* Rollback information flash region protected when the EC boots */
-#define EC_FLASH_PROTECT_ROLLBACK_AT_BOOT BIT(9)
+#define EC_FLASH_PROTECT_ROLLBACK_AT_BOOT (1 << 9)
/* Rollback information flash region protected now */
-#define EC_FLASH_PROTECT_ROLLBACK_NOW BIT(10)
-/* Error - Unknown error */
-#define EC_FLASH_PROTECT_ERROR_UNKNOWN BIT(11)
-
-/**
- * struct ec_params_flash_protect - Parameters for the flash protect command.
- * @mask: Bits in flags to apply.
- * @flags: New flags to apply.
- */
-struct ec_params_flash_protect {
- uint32_t mask;
- uint32_t flags;
-} __ec_align4;
+#define EC_FLASH_PROTECT_ROLLBACK_NOW (1 << 10)
-enum flash_protect_action {
- FLASH_PROTECT_ASYNC = 0,
- FLASH_PROTECT_GET_RESULT = 1,
+struct __ec_align4 ec_params_flash_protect {
+ uint32_t mask; /* Bits in flags to apply */
+ uint32_t flags; /* New flags to apply */
};
-/* Version 2 of the command is "asynchronous". */
-struct ec_params_flash_protect_v2 {
- uint8_t action; /**< enum flash_protect_action */
- uint8_t reserved[3]; /**< padding for alignment */
- uint32_t mask;
- uint32_t flags;
-} __ec_align4;
-
-/**
- * struct ec_response_flash_protect - Response to the flash protect command.
- * @flags: Current value of flash protect flags.
- * @valid_flags: Flags which are valid on this platform. This allows the
- * caller to distinguish between flags which aren't set vs. flags
- * which can't be set on this platform.
- * @writable_flags: Flags which can be changed given the current protection
- * state.
- */
-struct ec_response_flash_protect {
+struct __ec_align4 ec_response_flash_protect {
+ /* Current value of flash protect flags */
uint32_t flags;
+ /*
+ * Flags which are valid on this platform. This allows the caller
+ * to distinguish between flags which aren't set vs. flags which can't
+ * be set on this platform.
+ */
uint32_t valid_flags;
+ /* Flags which can be changed given the current protection state */
uint32_t writable_flags;
-} __ec_align4;
+};
/*
* Note: commands 0x14 - 0x19 version 0 were old commands to get/set flash
@@ -2125,50 +1406,52 @@ struct ec_response_flash_protect {
enum ec_flash_region {
/* Region which holds read-only EC image */
EC_FLASH_REGION_RO = 0,
- /*
- * Region which holds active RW image. 'Active' is different from
- * 'running'. Active means 'scheduled-to-run'. Since RO image always
- * scheduled to run, active/non-active applies only to RW images (for
- * the same reason 'update' applies only to RW images. It's a state of
- * an image on a flash. Running image can be RO, RW_A, RW_B but active
- * image can only be RW_A or RW_B. In recovery mode, an active RW image
- * doesn't enter 'running' state but it's still active on a flash.
- */
+ /* Region which holds active rewritable EC image */
EC_FLASH_REGION_ACTIVE,
/*
* Region which should be write-protected in the factory (a superset of
* EC_FLASH_REGION_RO)
*/
EC_FLASH_REGION_WP_RO,
- /* Region which holds updatable (non-active) RW image */
+ /* Region which holds updatable image */
EC_FLASH_REGION_UPDATE,
/* Number of regions */
EC_FLASH_REGION_COUNT,
};
-/*
- * 'RW' is vague if there are multiple RW images; we mean the active one,
- * so the old constant is deprecated.
- */
-#define EC_FLASH_REGION_RW EC_FLASH_REGION_ACTIVE
-/**
- * struct ec_params_flash_region_info - Parameters for the flash region info
- * command.
- * @region: Flash region; see EC_FLASH_REGION_*
- */
-struct ec_params_flash_region_info {
- uint32_t region;
-} __ec_align4;
+struct __ec_align4 ec_params_flash_region_info {
+ uint32_t region; /* enum ec_flash_region */
+};
-struct ec_response_flash_region_info {
+struct __ec_align4 ec_response_flash_region_info {
uint32_t offset;
uint32_t size;
-} __ec_align4;
+};
+
+/* Read/write VbNvContext */
+#define EC_CMD_VBNV_CONTEXT 0x0017
+#define EC_VER_VBNV_CONTEXT 1
+#define EC_VBNV_BLOCK_SIZE 16
+#define EC_VBNV_BLOCK_SIZE_V2 64
+
+enum ec_vbnvcontext_op {
+ EC_VBNV_CONTEXT_OP_READ,
+ EC_VBNV_CONTEXT_OP_WRITE,
+};
+
+struct __ec_align4 ec_params_vbnvcontext {
+ uint32_t op;
+ uint8_t block[EC_VBNV_BLOCK_SIZE_V2];
+};
+
+struct __ec_align4 ec_response_vbnvcontext {
+ uint8_t block[EC_VBNV_BLOCK_SIZE_V2];
+};
/* Get SPI flash information */
#define EC_CMD_FLASH_SPI_INFO 0x0018
-struct ec_response_flash_spi_info {
+struct __ec_align1 ec_response_flash_spi_info {
/* JEDEC info from command 0x9F (manufacturer, memory type, size) */
uint8_t jedec[3];
@@ -2180,163 +1463,70 @@ struct ec_response_flash_spi_info {
/* Status registers from command 0x05 and 0x35 */
uint8_t sr1, sr2;
-} __ec_align1;
+};
/* Select flash during flash operations */
#define EC_CMD_FLASH_SELECT 0x0019
-/**
- * struct ec_params_flash_select - Parameters for the flash select command.
- * @select: 1 to select flash, 0 to deselect flash
- */
-struct ec_params_flash_select {
+struct __ec_align4 ec_params_flash_select {
+ /* 1 to select flash, 0 to deselect flash */
uint8_t select;
-} __ec_align4;
-
-/**
- * Request random numbers to be generated and returned.
- * Can be used to test the random number generator is truly random.
- * See https://csrc.nist.gov/publications/detail/sp/800-22/rev-1a/final and
- * https://webhome.phy.duke.edu/~rgb/General/dieharder.php.
- */
-#define EC_CMD_RAND_NUM 0x001A
-#define EC_VER_RAND_NUM 0
-
-struct ec_params_rand_num {
- uint16_t num_rand_bytes; /**< num random bytes to generate */
-} __ec_align4;
-
-struct ec_response_rand_num {
- /**
- * generated random numbers in the range of 1 to EC_MAX_INSIZE. The true
- * size of rand is determined by ec_params_rand_num's num_rand_bytes.
- */
- uint8_t rand[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align1;
-BUILD_ASSERT(sizeof(struct ec_response_rand_num) == 0);
-
-/**
- * Get information about the key used to sign the RW firmware.
- * For more details on the fields, see "struct vb21_packed_key".
- */
-#define EC_CMD_RWSIG_INFO 0x001B
-#define EC_VER_RWSIG_INFO 0
-
-#define VBOOT2_KEY_ID_BYTES 20
-
-#ifdef CHROMIUM_EC
-/* Don't force external projects to depend on the vboot headers. */
-#include "vb21_struct.h"
-BUILD_ASSERT(sizeof(struct vb2_id) == VBOOT2_KEY_ID_BYTES);
-#endif
-
-struct ec_response_rwsig_info {
- /**
- * Signature algorithm used by the key
- * (enum vb2_signature_algorithm).
- */
- uint16_t sig_alg;
-
- /**
- * Hash digest algorithm used with the key
- * (enum vb2_hash_algorithm).
- */
- uint16_t hash_alg;
-
- /** Key version. */
- uint32_t key_version;
-
- /** Key ID (struct vb2_id). */
- uint8_t key_id[VBOOT2_KEY_ID_BYTES];
-
- uint8_t key_is_valid;
-
- /** Alignment padding. */
- uint8_t reserved[3];
-} __ec_align4;
-
-BUILD_ASSERT(sizeof(struct ec_response_rwsig_info) == 32);
-
-/**
- * Get information about the system, such as reset flags, locked state, etc.
- */
-#define EC_CMD_SYSINFO 0x001C
-#define EC_VER_SYSINFO 0
-
-enum sysinfo_flags {
- SYSTEM_IS_LOCKED = BIT(0),
- SYSTEM_IS_FORCE_LOCKED = BIT(1),
- SYSTEM_JUMP_ENABLED = BIT(2),
- SYSTEM_JUMPED_TO_CURRENT_IMAGE = BIT(3),
- SYSTEM_REBOOT_AT_SHUTDOWN = BIT(4),
- /*
- * Used internally. It's set when EC_HOST_EVENT_KEYBOARD_RECOVERY is
- * set and cleared when the system shuts down (not when the host event
- * flag is cleared).
- */
- SYSTEM_IN_MANUAL_RECOVERY = BIT(5),
};
-struct ec_response_sysinfo {
- uint32_t reset_flags; /**< EC_RESET_FLAG_* flags */
- uint32_t current_image; /**< enum ec_image */
- uint32_t flags; /**< enum sysinfo_flags */
-} __ec_align4;
-
/*****************************************************************************/
/* PWM commands */
/* Get fan target RPM */
#define EC_CMD_PWM_GET_FAN_TARGET_RPM 0x0020
-struct ec_response_pwm_get_fan_rpm {
+struct __ec_align4 ec_response_pwm_get_fan_rpm {
uint32_t rpm;
-} __ec_align4;
+};
/* Set target fan RPM */
#define EC_CMD_PWM_SET_FAN_TARGET_RPM 0x0021
/* Version 0 of input params */
-struct ec_params_pwm_set_fan_target_rpm_v0 {
+struct __ec_align4 ec_params_pwm_set_fan_target_rpm_v0 {
uint32_t rpm;
-} __ec_align4;
+};
/* Version 1 of input params */
-struct ec_params_pwm_set_fan_target_rpm_v1 {
+struct __ec_align_size1 ec_params_pwm_set_fan_target_rpm_v1 {
uint32_t rpm;
uint8_t fan_idx;
-} __ec_align_size1;
+};
/* Get keyboard backlight */
/* OBSOLETE - Use EC_CMD_PWM_SET_DUTY */
#define EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT 0x0022
-struct ec_response_pwm_get_keyboard_backlight {
+struct __ec_align1 ec_response_pwm_get_keyboard_backlight {
uint8_t percent;
uint8_t enabled;
-} __ec_align1;
+};
/* Set keyboard backlight */
/* OBSOLETE - Use EC_CMD_PWM_SET_DUTY */
#define EC_CMD_PWM_SET_KEYBOARD_BACKLIGHT 0x0023
-struct ec_params_pwm_set_keyboard_backlight {
+struct __ec_align1 ec_params_pwm_set_keyboard_backlight {
uint8_t percent;
-} __ec_align1;
+};
/* Set target fan PWM duty cycle */
#define EC_CMD_PWM_SET_FAN_DUTY 0x0024
/* Version 0 of input params */
-struct ec_params_pwm_set_fan_duty_v0 {
+struct __ec_align4 ec_params_pwm_set_fan_duty_v0 {
uint32_t percent;
-} __ec_align4;
+};
/* Version 1 of input params */
-struct ec_params_pwm_set_fan_duty_v1 {
+struct __ec_align_size1 ec_params_pwm_set_fan_duty_v1 {
uint32_t percent;
uint8_t fan_idx;
-} __ec_align_size1;
+};
#define EC_CMD_PWM_SET_DUTY 0x0025
/* 16 bit duty cycle, 0xffff = 100% */
@@ -2352,32 +1542,22 @@ enum ec_pwm_type {
EC_PWM_TYPE_COUNT,
};
-struct ec_params_pwm_set_duty {
- uint16_t duty; /* Duty cycle, EC_PWM_MAX_DUTY = 100% */
- uint8_t pwm_type; /* ec_pwm_type */
- uint8_t index; /* Type-specific index, or 0 if unique */
-} __ec_align4;
+struct __ec_align4 ec_params_pwm_set_duty {
+ uint16_t duty; /* Duty cycle, EC_PWM_MAX_DUTY = 100% */
+ uint8_t pwm_type; /* ec_pwm_type */
+ uint8_t index; /* Type-specific index, or 0 if unique */
+};
#define EC_CMD_PWM_GET_DUTY 0x0026
-struct ec_params_pwm_get_duty {
- uint8_t pwm_type; /* ec_pwm_type */
- uint8_t index; /* Type-specific index, or 0 if unique */
-} __ec_align1;
-
-struct ec_response_pwm_get_duty {
- uint16_t duty; /* Duty cycle, EC_PWM_MAX_DUTY = 100% */
-} __ec_align2;
-
-#define EC_CMD_PWM_GET_FAN_DUTY 0x0027
-
-struct ec_params_pwm_get_fan_duty {
- uint8_t fan_idx;
-} __ec_align1;
+struct __ec_align1 ec_params_pwm_get_duty {
+ uint8_t pwm_type; /* ec_pwm_type */
+ uint8_t index; /* Type-specific index, or 0 if unique */
+};
-struct ec_response_pwm_get_fan_duty {
- uint32_t percent; /* Percentage of duty cycle, ranging from 0 ~ 100 */
-} __ec_align4;
+struct __ec_align2 ec_response_pwm_get_duty {
+ uint16_t duty; /* Duty cycle, EC_PWM_MAX_DUTY = 100% */
+};
/*****************************************************************************/
/*
@@ -2388,23 +1568,21 @@ struct ec_response_pwm_get_fan_duty {
*/
#define EC_CMD_LIGHTBAR_CMD 0x0028
-struct rgb_s {
+struct __ec_todo_unpacked rgb_s {
uint8_t r, g, b;
-} __ec_todo_unpacked;
+};
#define LB_BATTERY_LEVELS 4
-
-/*
- * List of tweakable parameters. NOTE: It's __packed so it can be sent in a
+/* List of tweakable parameters. NOTE: It's __packed so it can be sent in a
* host command, but the alignment is the same regardless. Keep it that way.
*/
-struct lightbar_params_v0 {
+struct __ec_todo_packed lightbar_params_v0 {
/* Timing */
int32_t google_ramp_up;
int32_t google_ramp_down;
int32_t s3s0_ramp_up;
- int32_t s0_tick_delay[2]; /* AC=0/1 */
- int32_t s0a_tick_delay[2]; /* AC=0/1 */
+ int32_t s0_tick_delay[2]; /* AC=0/1 */
+ int32_t s0a_tick_delay[2]; /* AC=0/1 */
int32_t s0s3_ramp_down;
int32_t s3_sleep_for;
int32_t s3_ramp_up;
@@ -2412,33 +1590,33 @@ struct lightbar_params_v0 {
/* Oscillation */
uint8_t new_s0;
- uint8_t osc_min[2]; /* AC=0/1 */
- uint8_t osc_max[2]; /* AC=0/1 */
- uint8_t w_ofs[2]; /* AC=0/1 */
+ uint8_t osc_min[2]; /* AC=0/1 */
+ uint8_t osc_max[2]; /* AC=0/1 */
+ uint8_t w_ofs[2]; /* AC=0/1 */
/* Brightness limits based on the backlight and AC. */
- uint8_t bright_bl_off_fixed[2]; /* AC=0/1 */
- uint8_t bright_bl_on_min[2]; /* AC=0/1 */
- uint8_t bright_bl_on_max[2]; /* AC=0/1 */
+ uint8_t bright_bl_off_fixed[2]; /* AC=0/1 */
+ uint8_t bright_bl_on_min[2]; /* AC=0/1 */
+ uint8_t bright_bl_on_max[2]; /* AC=0/1 */
/* Battery level thresholds */
uint8_t battery_threshold[LB_BATTERY_LEVELS - 1];
/* Map [AC][battery_level] to color index */
- uint8_t s0_idx[2][LB_BATTERY_LEVELS]; /* AP is running */
- uint8_t s3_idx[2][LB_BATTERY_LEVELS]; /* AP is sleeping */
+ uint8_t s0_idx[2][LB_BATTERY_LEVELS]; /* AP is running */
+ uint8_t s3_idx[2][LB_BATTERY_LEVELS]; /* AP is sleeping */
/* Color palette */
- struct rgb_s color[8]; /* 0-3 are Google colors */
-} __ec_todo_packed;
+ struct rgb_s color[8]; /* 0-3 are Google colors */
+};
-struct lightbar_params_v1 {
+struct __ec_todo_packed lightbar_params_v1 {
/* Timing */
int32_t google_ramp_up;
int32_t google_ramp_down;
int32_t s3s0_ramp_up;
- int32_t s0_tick_delay[2]; /* AC=0/1 */
- int32_t s0a_tick_delay[2]; /* AC=0/1 */
+ int32_t s0_tick_delay[2]; /* AC=0/1 */
+ int32_t s0a_tick_delay[2]; /* AC=0/1 */
int32_t s0s3_ramp_down;
int32_t s3_sleep_for;
int32_t s3_ramp_up;
@@ -2458,28 +1636,28 @@ struct lightbar_params_v1 {
uint8_t tap_idx[3];
/* Oscillation */
- uint8_t osc_min[2]; /* AC=0/1 */
- uint8_t osc_max[2]; /* AC=0/1 */
- uint8_t w_ofs[2]; /* AC=0/1 */
+ uint8_t osc_min[2]; /* AC=0/1 */
+ uint8_t osc_max[2]; /* AC=0/1 */
+ uint8_t w_ofs[2]; /* AC=0/1 */
/* Brightness limits based on the backlight and AC. */
- uint8_t bright_bl_off_fixed[2]; /* AC=0/1 */
- uint8_t bright_bl_on_min[2]; /* AC=0/1 */
- uint8_t bright_bl_on_max[2]; /* AC=0/1 */
+ uint8_t bright_bl_off_fixed[2]; /* AC=0/1 */
+ uint8_t bright_bl_on_min[2]; /* AC=0/1 */
+ uint8_t bright_bl_on_max[2]; /* AC=0/1 */
/* Battery level thresholds */
uint8_t battery_threshold[LB_BATTERY_LEVELS - 1];
/* Map [AC][battery_level] to color index */
- uint8_t s0_idx[2][LB_BATTERY_LEVELS]; /* AP is running */
- uint8_t s3_idx[2][LB_BATTERY_LEVELS]; /* AP is sleeping */
+ uint8_t s0_idx[2][LB_BATTERY_LEVELS]; /* AP is running */
+ uint8_t s3_idx[2][LB_BATTERY_LEVELS]; /* AP is sleeping */
/* s5: single color pulse on inhibited power-up */
uint8_t s5_idx;
/* Color palette */
- struct rgb_s color[8]; /* 0-3 are Google colors */
-} __ec_todo_packed;
+ struct rgb_s color[8]; /* 0-3 are Google colors */
+};
/* Lightbar command params v2
* crbug.com/467716
@@ -2490,13 +1668,13 @@ struct lightbar_params_v1 {
* NOTE: Each of these groups must be less than 120 bytes.
*/
-struct lightbar_params_v2_timing {
+struct __ec_todo_packed lightbar_params_v2_timing {
/* Timing */
int32_t google_ramp_up;
int32_t google_ramp_down;
int32_t s3s0_ramp_up;
- int32_t s0_tick_delay[2]; /* AC=0/1 */
- int32_t s0a_tick_delay[2]; /* AC=0/1 */
+ int32_t s0_tick_delay[2]; /* AC=0/1 */
+ int32_t s0a_tick_delay[2]; /* AC=0/1 */
int32_t s0s3_ramp_down;
int32_t s3_sleep_for;
int32_t s3_ramp_up;
@@ -2506,9 +1684,9 @@ struct lightbar_params_v2_timing {
int32_t tap_tick_delay;
int32_t tap_gate_delay;
int32_t tap_display_time;
-} __ec_todo_packed;
+};
-struct lightbar_params_v2_tap {
+struct __ec_todo_packed lightbar_params_v2_tap {
/* Tap-for-battery params */
uint8_t tap_pct_red;
uint8_t tap_pct_green;
@@ -2516,79 +1694,56 @@ struct lightbar_params_v2_tap {
uint8_t tap_seg_max_on;
uint8_t tap_seg_osc;
uint8_t tap_idx[3];
-} __ec_todo_packed;
+};
-struct lightbar_params_v2_oscillation {
+struct __ec_todo_packed lightbar_params_v2_oscillation {
/* Oscillation */
- uint8_t osc_min[2]; /* AC=0/1 */
- uint8_t osc_max[2]; /* AC=0/1 */
- uint8_t w_ofs[2]; /* AC=0/1 */
-} __ec_todo_packed;
+ uint8_t osc_min[2]; /* AC=0/1 */
+ uint8_t osc_max[2]; /* AC=0/1 */
+ uint8_t w_ofs[2]; /* AC=0/1 */
+};
-struct lightbar_params_v2_brightness {
+struct __ec_todo_packed lightbar_params_v2_brightness {
/* Brightness limits based on the backlight and AC. */
- uint8_t bright_bl_off_fixed[2]; /* AC=0/1 */
- uint8_t bright_bl_on_min[2]; /* AC=0/1 */
- uint8_t bright_bl_on_max[2]; /* AC=0/1 */
-} __ec_todo_packed;
+ uint8_t bright_bl_off_fixed[2]; /* AC=0/1 */
+ uint8_t bright_bl_on_min[2]; /* AC=0/1 */
+ uint8_t bright_bl_on_max[2]; /* AC=0/1 */
+};
-struct lightbar_params_v2_thresholds {
+struct __ec_todo_packed lightbar_params_v2_thresholds {
/* Battery level thresholds */
uint8_t battery_threshold[LB_BATTERY_LEVELS - 1];
-} __ec_todo_packed;
+};
-struct lightbar_params_v2_colors {
+struct __ec_todo_packed lightbar_params_v2_colors {
/* Map [AC][battery_level] to color index */
- uint8_t s0_idx[2][LB_BATTERY_LEVELS]; /* AP is running */
- uint8_t s3_idx[2][LB_BATTERY_LEVELS]; /* AP is sleeping */
+ uint8_t s0_idx[2][LB_BATTERY_LEVELS]; /* AP is running */
+ uint8_t s3_idx[2][LB_BATTERY_LEVELS]; /* AP is sleeping */
/* s5: single color pulse on inhibited power-up */
uint8_t s5_idx;
/* Color palette */
- struct rgb_s color[8]; /* 0-3 are Google colors */
-} __ec_todo_packed;
-
-struct lightbar_params_v3 {
- /*
- * Number of LEDs reported by the EC.
- * May be less than the actual number of LEDs in the lightbar.
- */
- uint8_t reported_led_num;
-} __ec_todo_packed;
+ struct rgb_s color[8]; /* 0-3 are Google colors */
+};
-/* Lightbar program. */
+/* Lightbyte program. */
#define EC_LB_PROG_LEN 192
-struct lightbar_program {
+struct __ec_todo_unpacked lightbar_program {
uint8_t size;
uint8_t data[EC_LB_PROG_LEN];
-} __ec_todo_unpacked;
-
-/*
- * Lightbar program for large sequences. Sequences are sent in pieces, with
- * increasing offset. The sequences are still limited by the amount reserved in
- * EC RAM.
- */
-struct lightbar_program_ex {
- uint8_t size;
- uint16_t offset;
- uint8_t data[0];
-} __ec_todo_packed;
+};
-struct ec_params_lightbar {
- uint8_t cmd; /* Command (see enum lightbar_command) */
+struct __ec_todo_packed ec_params_lightbar {
+ uint8_t cmd; /* Command (see enum lightbar_command) */
union {
- /*
- * The following commands have no args:
- *
- * dump, off, on, init, get_seq, get_params_v0, get_params_v1,
- * version, get_brightness, get_demo, suspend, resume,
- * get_params_v2_timing, get_params_v2_tap, get_params_v2_osc,
- * get_params_v2_bright, get_params_v2_thlds,
- * get_params_v2_colors
- *
- * Don't use an empty struct, because C++ hates that.
- */
+ struct __ec_todo_unpacked {
+ /* no args */
+ } dump, off, on, init, get_seq, get_params_v0, get_params_v1,
+ version, get_brightness, get_demo, suspend, resume,
+ get_params_v2_timing, get_params_v2_tap,
+ get_params_v2_osc, get_params_v2_bright,
+ get_params_v2_thlds, get_params_v2_colors;
struct __ec_todo_unpacked {
uint8_t num;
@@ -2621,11 +1776,10 @@ struct ec_params_lightbar {
struct lightbar_params_v2_colors set_v2par_colors;
struct lightbar_program set_program;
- struct lightbar_program_ex set_program_ex;
};
-} __ec_todo_packed;
+};
-struct ec_response_lightbar {
+struct __ec_todo_packed ec_response_lightbar {
union {
struct __ec_todo_unpacked {
struct __ec_todo_unpacked {
@@ -2649,8 +1803,6 @@ struct ec_response_lightbar {
struct lightbar_params_v2_thresholds get_params_v2_thlds;
struct lightbar_params_v2_colors get_params_v2_colors;
- struct lightbar_params_v3 get_params_v3;
-
struct __ec_todo_unpacked {
uint32_t num;
uint32_t flags;
@@ -2660,17 +1812,16 @@ struct ec_response_lightbar {
uint8_t red, green, blue;
} get_rgb;
- /*
- * The following commands have no response:
- *
- * off, on, init, set_brightness, seq, reg, set_rgb, demo,
- * set_params_v0, set_params_v1, set_program,
- * manual_suspend_ctrl, suspend, resume, set_v2par_timing,
- * set_v2par_tap, set_v2par_osc, set_v2par_bright,
- * set_v2par_thlds, set_v2par_colors
- */
+ struct __ec_todo_unpacked {
+ /* no return params */
+ } off, on, init, set_brightness, seq, reg, set_rgb,
+ demo, set_params_v0, set_params_v1,
+ set_program, manual_suspend_ctrl, suspend, resume,
+ set_v2par_timing, set_v2par_tap,
+ set_v2par_osc, set_v2par_bright, set_v2par_thlds,
+ set_v2par_colors;
};
-} __ec_todo_packed;
+};
/* Lightbar commands */
enum lightbar_command {
@@ -2708,9 +1859,7 @@ enum lightbar_command {
LIGHTBAR_CMD_SET_PARAMS_V2_THRESHOLDS = 31,
LIGHTBAR_CMD_GET_PARAMS_V2_COLORS = 32,
LIGHTBAR_CMD_SET_PARAMS_V2_COLORS = 33,
- LIGHTBAR_CMD_GET_PARAMS_V3 = 34,
- LIGHTBAR_CMD_SET_PROGRAM_EX = 35,
- LIGHTBAR_NUM_CMDS,
+ LIGHTBAR_NUM_CMDS
};
/*****************************************************************************/
@@ -2736,37 +1885,33 @@ enum ec_led_id {
EC_LED_ID_RECOVERY_HW_REINIT_LED,
/* LED to indicate sysrq debug mode. */
EC_LED_ID_SYSRQ_DEBUG_LED,
- /* LED strip for advanced patterns. */
- EC_LED_ID_LIGHTBAR_LED,
- EC_LED_ID_COUNT,
+ EC_LED_ID_COUNT
};
/* LED control flags */
-#define EC_LED_FLAGS_QUERY BIT(0) /* Query LED capability only */
-#define EC_LED_FLAGS_AUTO BIT(1) /* Switch LED back to automatic control */
+#define EC_LED_FLAGS_QUERY (1 << 0) /* Query LED capability only */
+#define EC_LED_FLAGS_AUTO (1 << 1) /* Switch LED back to automatic control */
enum ec_led_colors {
- EC_LED_COLOR_INVALID = -1,
EC_LED_COLOR_RED = 0,
EC_LED_COLOR_GREEN,
EC_LED_COLOR_BLUE,
EC_LED_COLOR_YELLOW,
EC_LED_COLOR_WHITE,
EC_LED_COLOR_AMBER,
- EC_LED_COLOR_MAGENTA,
- EC_LED_COLOR_COUNT,
+ EC_LED_COLOR_COUNT
};
-struct ec_params_led_control {
- uint8_t led_id; /* Which LED to control */
- uint8_t flags; /* Control flags */
+struct __ec_align1 ec_params_led_control {
+ uint8_t led_id; /* Which LED to control */
+ uint8_t flags; /* Control flags */
uint8_t brightness[EC_LED_COLOR_COUNT];
-} __ec_align1;
+};
-struct ec_response_led_control {
+struct __ec_align1 ec_response_led_control {
/*
* Available brightness value range.
*
@@ -2775,7 +1920,7 @@ struct ec_response_led_control {
* Other values means the LED is control by PWM.
*/
uint8_t brightness_range[EC_LED_COLOR_COUNT];
-} __ec_align1;
+};
/*****************************************************************************/
/* Verified boot commands */
@@ -2788,31 +1933,31 @@ struct ec_response_led_control {
/* Verified boot hash command */
#define EC_CMD_VBOOT_HASH 0x002A
-struct ec_params_vboot_hash {
- uint8_t cmd; /* enum ec_vboot_hash_cmd */
- uint8_t hash_type; /* enum ec_vboot_hash_type */
- uint8_t nonce_size; /* Nonce size; may be 0 */
- uint8_t reserved0; /* Reserved; set 0 */
- uint32_t offset; /* Offset in flash to hash */
- uint32_t size; /* Number of bytes to hash */
- uint8_t nonce_data[64]; /* Nonce data; ignored if nonce_size=0 */
-} __ec_align4;
+struct __ec_align4 ec_params_vboot_hash {
+ uint8_t cmd; /* enum ec_vboot_hash_cmd */
+ uint8_t hash_type; /* enum ec_vboot_hash_type */
+ uint8_t nonce_size; /* Nonce size; may be 0 */
+ uint8_t reserved0; /* Reserved; set 0 */
+ uint32_t offset; /* Offset in flash to hash */
+ uint32_t size; /* Number of bytes to hash */
+ uint8_t nonce_data[64]; /* Nonce data; ignored if nonce_size=0 */
+};
-struct ec_response_vboot_hash {
- uint8_t status; /* enum ec_vboot_hash_status */
- uint8_t hash_type; /* enum ec_vboot_hash_type */
- uint8_t digest_size; /* Size of hash digest in bytes */
- uint8_t reserved0; /* Ignore; will be 0 */
- uint32_t offset; /* Offset in flash which was hashed */
- uint32_t size; /* Number of bytes hashed */
+struct __ec_align4 ec_response_vboot_hash {
+ uint8_t status; /* enum ec_vboot_hash_status */
+ uint8_t hash_type; /* enum ec_vboot_hash_type */
+ uint8_t digest_size; /* Size of hash digest in bytes */
+ uint8_t reserved0; /* Ignore; will be 0 */
+ uint32_t offset; /* Offset in flash which was hashed */
+ uint32_t size; /* Number of bytes hashed */
uint8_t hash_digest[64]; /* Hash digest data */
-} __ec_align4;
+};
enum ec_vboot_hash_cmd {
- EC_VBOOT_HASH_GET = 0, /* Get current hash status */
- EC_VBOOT_HASH_ABORT = 1, /* Abort calculating current hash */
- EC_VBOOT_HASH_START = 2, /* Start computing a new hash */
- EC_VBOOT_HASH_RECALC = 3, /* Synchronously compute a new hash */
+ EC_VBOOT_HASH_GET = 0, /* Get current hash status */
+ EC_VBOOT_HASH_ABORT = 1, /* Abort calculating current hash */
+ EC_VBOOT_HASH_START = 2, /* Start computing a new hash */
+ EC_VBOOT_HASH_RECALC = 3, /* Synchronously compute a new hash */
};
enum ec_vboot_hash_type {
@@ -2830,15 +1975,9 @@ enum ec_vboot_hash_status {
* If one of these is specified, the EC will automatically update offset and
* size to the correct values for the specified image (RO or RW).
*/
-#define EC_VBOOT_HASH_OFFSET_RO 0xfffffffe
-#define EC_VBOOT_HASH_OFFSET_ACTIVE 0xfffffffd
-#define EC_VBOOT_HASH_OFFSET_UPDATE 0xfffffffc
-
-/*
- * 'RW' is vague if there are multiple RW images; we mean the active one,
- * so the old constant is deprecated.
- */
-#define EC_VBOOT_HASH_OFFSET_RW EC_VBOOT_HASH_OFFSET_ACTIVE
+#define EC_VBOOT_HASH_OFFSET_RO 0xfffffffe
+#define EC_VBOOT_HASH_OFFSET_ACTIVE 0xfffffffd
+#define EC_VBOOT_HASH_OFFSET_UPDATE 0xfffffffc
/*****************************************************************************/
/*
@@ -2924,7 +2063,7 @@ enum motionsense_command {
/*
* Sensor Offset command is a setter/getter command for the offset
- * used for factory calibration.
+ * used for calibration.
* The offsets can be calculated by the host, or via
* PERFORM_CALIB command.
*/
@@ -2960,28 +2099,8 @@ enum motionsense_command {
*/
MOTIONSENSE_CMD_SPOOF = 16,
- /* Set lid angle for tablet mode detection. */
- MOTIONSENSE_CMD_TABLET_MODE_LID_ANGLE = 17,
-
- /*
- * Sensor Scale command is a setter/getter command for the calibration
- * scale.
- */
- MOTIONSENSE_CMD_SENSOR_SCALE = 18,
-
- /*
- * Read the current online calibration values (if available).
- */
- MOTIONSENSE_CMD_ONLINE_CALIB_READ = 19,
-
- /*
- * Activity management
- * Retrieve current status of given activity.
- */
- MOTIONSENSE_CMD_GET_ACTIVITY = 20,
-
/* Number of motionsense sub-commands. */
- MOTIONSENSE_NUM_CMDS,
+ MOTIONSENSE_NUM_CMDS
};
/* List of motion sensor types. */
@@ -2993,8 +2112,6 @@ enum motionsensor_type {
MOTIONSENSE_TYPE_LIGHT = 4,
MOTIONSENSE_TYPE_ACTIVITY = 5,
MOTIONSENSE_TYPE_BARO = 6,
- MOTIONSENSE_TYPE_SYNC = 7,
- MOTIONSENSE_TYPE_LIGHT_RGB = 8,
MOTIONSENSE_TYPE_MAX,
};
@@ -3002,7 +2119,6 @@ enum motionsensor_type {
enum motionsensor_location {
MOTIONSENSE_LOC_BASE = 0,
MOTIONSENSE_LOC_LID = 1,
- MOTIONSENSE_LOC_CAMERA = 2,
MOTIONSENSE_LOC_MAX,
};
@@ -3019,127 +2135,76 @@ enum motionsensor_chip {
MOTIONSENSE_CHIP_BMA255 = 8,
MOTIONSENSE_CHIP_BMP280 = 9,
MOTIONSENSE_CHIP_OPT3001 = 10,
- MOTIONSENSE_CHIP_BH1730 = 11,
- MOTIONSENSE_CHIP_GPIO = 12,
- MOTIONSENSE_CHIP_LIS2DH = 13,
- MOTIONSENSE_CHIP_LSM6DSM = 14,
- MOTIONSENSE_CHIP_LIS2DE = 15,
- MOTIONSENSE_CHIP_LIS2MDL = 16,
- MOTIONSENSE_CHIP_LSM6DS3 = 17,
- MOTIONSENSE_CHIP_LSM6DSO = 18,
- MOTIONSENSE_CHIP_LNG2DM = 19,
- MOTIONSENSE_CHIP_TCS3400 = 20,
- MOTIONSENSE_CHIP_LIS2DW12 = 21,
- MOTIONSENSE_CHIP_LIS2DWL = 22,
- MOTIONSENSE_CHIP_LIS2DS = 23,
- MOTIONSENSE_CHIP_BMI260 = 24,
- MOTIONSENSE_CHIP_ICM426XX = 25,
- MOTIONSENSE_CHIP_ICM42607 = 26,
- MOTIONSENSE_CHIP_BMA422 = 27,
- MOTIONSENSE_CHIP_BMI323 = 28,
- MOTIONSENSE_CHIP_BMI220 = 29,
- MOTIONSENSE_CHIP_CM32183 = 30,
- MOTIONSENSE_CHIP_VEML3328 = 31,
- MOTIONSENSE_CHIP_CM36781 = 32,
- MOTIONSENSE_CHIP_MAX,
-};
-
-/* List of orientation positions */
-enum motionsensor_orientation {
- MOTIONSENSE_ORIENTATION_LANDSCAPE = 0,
- MOTIONSENSE_ORIENTATION_PORTRAIT = 1,
- MOTIONSENSE_ORIENTATION_UPSIDE_DOWN_PORTRAIT = 2,
- MOTIONSENSE_ORIENTATION_UPSIDE_DOWN_LANDSCAPE = 3,
- MOTIONSENSE_ORIENTATION_UNKNOWN = 4,
};
-struct ec_response_activity_data {
- uint8_t activity; /* motionsensor_activity */
- uint8_t state;
-} __ec_todo_packed;
-
-struct ec_response_motion_sensor_data {
+struct __ec_todo_packed ec_response_motion_sensor_data {
/* Flags for each sensor. */
uint8_t flags;
- /* Sensor number the data comes from. */
+ /* sensor number the data comes from */
uint8_t sensor_num;
/* Each sensor is up to 3-axis. */
union {
- int16_t data[3];
- /* for sensors using unsigned data */
- uint16_t udata[3];
+ int16_t data[3];
struct __ec_todo_packed {
- uint16_t reserved;
- uint32_t timestamp;
+ uint16_t reserved;
+ uint32_t timestamp;
};
struct __ec_todo_unpacked {
- struct ec_response_activity_data activity_data;
- int16_t add_info[2];
+ uint8_t activity; /* motionsensor_activity */
+ uint8_t state;
+ int16_t add_info[2];
};
};
-} __ec_todo_packed;
-
-/* Response to AP reporting calibration data for a given sensor. */
-struct ec_response_online_calibration_data {
- /** The calibration values. */
- int16_t data[3];
};
/* Note: used in ec_response_get_next_data */
-struct ec_response_motion_sense_fifo_info {
+struct __ec_todo_packed ec_response_motion_sense_fifo_info {
/* Size of the fifo */
uint16_t size;
/* Amount of space used in the fifo */
uint16_t count;
- /* Timestamp recorded in us.
- * aka accurate timestamp when host event was triggered.
- */
+ /* Timestamp recorded in us */
uint32_t timestamp;
/* Total amount of vector lost */
uint16_t total_lost;
/* Lost events since the last fifo_info, per sensors */
uint16_t lost[0];
-} __ec_todo_packed;
+};
-struct ec_response_motion_sense_fifo_data {
+struct __ec_todo_packed ec_response_motion_sense_fifo_data {
uint32_t number_data;
struct ec_response_motion_sensor_data data[0];
-} __ec_todo_packed;
+};
/* List supported activity recognition */
enum motionsensor_activity {
MOTIONSENSE_ACTIVITY_RESERVED = 0,
MOTIONSENSE_ACTIVITY_SIG_MOTION = 1,
MOTIONSENSE_ACTIVITY_DOUBLE_TAP = 2,
- MOTIONSENSE_ACTIVITY_ORIENTATION = 3,
- MOTIONSENSE_ACTIVITY_BODY_DETECTION = 4,
};
-struct ec_motion_sense_activity {
+struct __ec_todo_unpacked ec_motion_sense_activity {
uint8_t sensor_num;
uint8_t activity; /* one of enum motionsensor_activity */
- uint8_t enable; /* 1: enable, 0: disable */
+ uint8_t enable; /* 1: enable, 0: disable */
uint8_t reserved;
- uint16_t parameters[4]; /* activity dependent parameters */
-} __ec_todo_packed;
+ uint16_t parameters[3]; /* activity dependent parameters */
+};
/* Module flag masks used for the dump sub-command. */
-#define MOTIONSENSE_MODULE_FLAG_ACTIVE BIT(0)
+#define MOTIONSENSE_MODULE_FLAG_ACTIVE (1<<0)
/* Sensor flag masks used for the dump sub-command. */
-#define MOTIONSENSE_SENSOR_FLAG_PRESENT BIT(0)
+#define MOTIONSENSE_SENSOR_FLAG_PRESENT (1<<0)
/*
* Flush entry for synchronization.
* data contains time stamp
*/
-#define MOTIONSENSE_SENSOR_FLAG_FLUSH BIT(0)
-#define MOTIONSENSE_SENSOR_FLAG_TIMESTAMP BIT(1)
-#define MOTIONSENSE_SENSOR_FLAG_WAKEUP BIT(2)
-#define MOTIONSENSE_SENSOR_FLAG_TABLET_MODE BIT(3)
-#define MOTIONSENSE_SENSOR_FLAG_ODR BIT(4)
-
-#define MOTIONSENSE_SENSOR_FLAG_BYPASS_FIFO BIT(7)
+#define MOTIONSENSE_SENSOR_FLAG_FLUSH (1<<0)
+#define MOTIONSENSE_SENSOR_FLAG_TIMESTAMP (1<<1)
+#define MOTIONSENSE_SENSOR_FLAG_WAKEUP (1<<2)
+#define MOTIONSENSE_SENSOR_FLAG_TABLET_MODE (1<<3)
/*
* Send this value for the data element to only perform a read. If you
@@ -3148,14 +2213,11 @@ struct ec_motion_sense_activity {
*/
#define EC_MOTION_SENSE_NO_VALUE -1
-#define EC_MOTION_SENSE_INVALID_CALIB_TEMP INT16_MIN
+#define EC_MOTION_SENSE_INVALID_CALIB_TEMP 0x8000
/* MOTIONSENSE_CMD_SENSOR_OFFSET subcommand flag */
/* Set Calibration information */
-#define MOTION_SENSE_SET_OFFSET BIT(0)
-
-/* Default Scale value, factor 1. */
-#define MOTION_SENSE_DEFAULT_SCALE BIT(15)
+#define MOTION_SENSE_SET_OFFSET 1
#define LID_ANGLE_UNRELIABLE 500
@@ -3173,10 +2235,10 @@ enum motionsense_spoof_mode {
MOTIONSENSE_SPOOF_MODE_QUERY,
};
-struct ec_params_motion_sense {
+struct __ec_todo_packed ec_params_motion_sense {
uint8_t cmd;
union {
- /* Used for MOTIONSENSE_CMD_DUMP. */
+ /* Used for MOTIONSENSE_CMD_DUMP */
struct __ec_todo_unpacked {
/*
* Maximal number of sensor the host is expecting.
@@ -3191,26 +2253,17 @@ struct ec_params_motion_sense {
*/
struct __ec_todo_unpacked {
/* Data to set or EC_MOTION_SENSE_NO_VALUE to read.
- * kb_wake_angle: angle to wakeup AP.
+ * kb_wake_angle: angle to wakup AP.
*/
int16_t data;
} kb_wake_angle;
- /*
- * Used for MOTIONSENSE_CMD_INFO, MOTIONSENSE_CMD_DATA
- */
+ /* Used for MOTIONSENSE_CMD_INFO, MOTIONSENSE_CMD_DATA
+ * and MOTIONSENSE_CMD_PERFORM_CALIB. */
struct __ec_todo_unpacked {
uint8_t sensor_num;
- } info, info_3, info_4, data, fifo_flush, list_activities;
-
- /*
- * Used for MOTIONSENSE_CMD_PERFORM_CALIB:
- * Allow entering/exiting the calibration mode.
- */
- struct __ec_todo_unpacked {
- uint8_t sensor_num;
- uint8_t enable;
- } perform_calib;
+ } info, info_3, data, fifo_flush, perform_calib,
+ list_activities;
/*
* Used for MOTIONSENSE_CMD_EC_RATE, MOTIONSENSE_CMD_SENSOR_ODR
@@ -3257,37 +2310,9 @@ struct ec_params_motion_sense {
int16_t offset[3];
} sensor_offset;
- /* Used for MOTIONSENSE_CMD_SENSOR_SCALE */
- struct __ec_todo_packed {
- uint8_t sensor_num;
-
- /*
- * bit 0: If set (MOTION_SENSE_SET_OFFSET), set
- * the calibration information in the EC.
- * If unset, just retrieve calibration information.
- */
- uint16_t flags;
-
- /*
- * Temperature at calibration, in units of 0.01 C
- * 0x8000: invalid / unknown.
- * 0x0: 0C
- * 0x7fff: +327.67C
- */
- int16_t temp;
-
- /*
- * Scale for calibration:
- * By default scale is 1, it is encoded on 16bits:
- * 1 = BIT(15)
- * ~2 = 0xFFFF
- * ~0 = 0.
- */
- uint16_t scale[3];
- } sensor_scale;
-
/* Used for MOTIONSENSE_CMD_FIFO_INFO */
- /* (no params) */
+ struct __ec_todo_unpacked {
+ } fifo_info;
/* Used for MOTIONSENSE_CMD_FIFO_READ */
struct __ec_todo_unpacked {
@@ -3298,11 +2323,11 @@ struct ec_params_motion_sense {
uint32_t max_data_vector;
} fifo_read;
- /* Used for MOTIONSENSE_CMD_SET_ACTIVITY */
struct ec_motion_sense_activity set_activity;
/* Used for MOTIONSENSE_CMD_LID_ANGLE */
- /* (no params) */
+ struct __ec_todo_unpacked {
+ } lid_angle;
/* Used for MOTIONSENSE_CMD_FIFO_INT_ENABLE */
struct __ec_todo_unpacked {
@@ -3323,74 +2348,24 @@ struct ec_params_motion_sense {
/* Ignored, used for alignment. */
uint8_t reserved;
- union {
- /* Individual component values to spoof. */
- int16_t components[3];
-
- /* Used when spoofing an activity */
- struct {
- /* enum motionsensor_activity */
- uint8_t activity_num;
-
- /* spoof activity state */
- uint8_t activity_state;
- };
- } __ec_todo_packed;
+ /* Individual component values to spoof. */
+ int16_t components[3];
} spoof;
-
- /* Used for MOTIONSENSE_CMD_TABLET_MODE_LID_ANGLE. */
- struct __ec_todo_unpacked {
- /*
- * Lid angle threshold for switching between tablet and
- * clamshell mode.
- */
- int16_t lid_angle;
-
- /*
- * Hysteresis degree to prevent fluctuations between
- * clamshell and tablet mode if lid angle keeps
- * changing around the threshold. Lid motion driver will
- * use lid_angle + hys_degree to trigger tablet mode and
- * lid_angle - hys_degree to trigger clamshell mode.
- */
- int16_t hys_degree;
- } tablet_mode_threshold;
-
- /*
- * Used for MOTIONSENSE_CMD_ONLINE_CALIB_READ:
- * Allow reading a single sensor's online calibration value.
- */
- struct __ec_todo_unpacked {
- uint8_t sensor_num;
- } online_calib_read;
-
- /*
- * Used for MOTIONSENSE_CMD_GET_ACTIVITY.
- */
- struct __ec_todo_unpacked {
- uint8_t sensor_num;
- uint8_t activity; /* enum motionsensor_activity */
- } get_activity;
- } __ec_todo_packed;
-} __ec_todo_packed;
-
-enum motion_sense_cmd_info_flags {
- /* The sensor supports online calibration */
- MOTION_SENSE_CMD_INFO_FLAG_ONLINE_CALIB = BIT(0),
+ };
};
-struct ec_response_motion_sense {
+struct __ec_todo_packed ec_response_motion_sense {
union {
/* Used for MOTIONSENSE_CMD_DUMP */
struct __ec_todo_unpacked {
/* Flags representing the motion sensor module. */
uint8_t module_flags;
- /* Number of sensors managed directly by the EC. */
+ /* Number of sensors managed directly by the EC */
uint8_t sensor_count;
/*
- * Sensor data is truncated if response_max is too small
+ * sensor data is truncated if response_max is too small
* for holding all the data.
*/
struct ec_response_motion_sensor_data sensor[0];
@@ -3429,33 +2404,6 @@ struct ec_response_motion_sense {
uint32_t fifo_max_event_count;
} info_3;
- /* Used for MOTIONSENSE_CMD_INFO version 4 */
- struct __ec_align4 {
- /* Should be element of enum motionsensor_type. */
- uint8_t type;
-
- /* Should be element of enum motionsensor_location. */
- uint8_t location;
-
- /* Should be element of enum motionsensor_chip. */
- uint8_t chip;
-
- /* Minimum sensor sampling frequency */
- uint32_t min_frequency;
-
- /* Maximum sensor sampling frequency */
- uint32_t max_frequency;
-
- /* Max number of sensor events that could be in fifo */
- uint32_t fifo_max_event_count;
-
- /*
- * Should be elements of
- * enum motion_sense_cmd_info_flags
- */
- uint32_t flags;
- } info_4;
-
/* Used for MOTIONSENSE_CMD_DATA */
struct ec_response_motion_sensor_data data;
@@ -3470,36 +2418,26 @@ struct ec_response_motion_sense {
/* Current value of the parameter queried. */
int32_t ret;
} ec_rate, sensor_odr, sensor_range, kb_wake_angle,
- fifo_int_enable, spoof;
+ fifo_int_enable, spoof;
- /*
- * Used for MOTIONSENSE_CMD_SENSOR_OFFSET,
- * PERFORM_CALIB.
- */
- struct __ec_todo_unpacked {
+ /* Used for MOTIONSENSE_CMD_SENSOR_OFFSET */
+ struct __ec_todo_unpacked {
int16_t temp;
int16_t offset[3];
} sensor_offset, perform_calib;
- /* Used for MOTIONSENSE_CMD_SENSOR_SCALE */
- struct __ec_todo_unpacked {
- int16_t temp;
- uint16_t scale[3];
- } sensor_scale;
-
struct ec_response_motion_sense_fifo_info fifo_info, fifo_flush;
struct ec_response_motion_sense_fifo_data fifo_read;
- struct ec_response_online_calibration_data online_calib_read;
-
struct __ec_todo_packed {
uint16_t reserved;
uint32_t enabled;
uint32_t disabled;
} list_activities;
- /* No params for set activity */
+ struct __ec_todo_unpacked {
+ } set_activity;
/* Used for MOTIONSENSE_CMD_LID_ANGLE */
struct __ec_todo_unpacked {
@@ -3509,25 +2447,8 @@ struct ec_response_motion_sense {
*/
uint16_t value;
} lid_angle;
-
- /* Used for MOTIONSENSE_CMD_TABLET_MODE_LID_ANGLE. */
- struct __ec_todo_unpacked {
- /*
- * Lid angle threshold for switching between tablet and
- * clamshell mode.
- */
- uint16_t lid_angle;
-
- /* Hysteresis degree. */
- uint16_t hys_degree;
- } tablet_mode_threshold;
-
- /* USED for MOTIONSENSE_CMD_GET_ACTIVITY. */
- struct __ec_todo_unpacked {
- uint8_t state;
- } get_activity;
};
-} __ec_todo_packed;
+};
/*****************************************************************************/
/* Force lid open command */
@@ -3535,9 +2456,9 @@ struct ec_response_motion_sense {
/* Make lid event always open */
#define EC_CMD_FORCE_LID_OPEN 0x002C
-struct ec_params_force_lid_open {
+struct __ec_align1 ec_params_force_lid_open {
uint8_t enabled;
-} __ec_align1;
+};
/*****************************************************************************/
/* Configure the behavior of the power button */
@@ -3545,13 +2466,13 @@ struct ec_params_force_lid_open {
enum ec_config_power_button_flags {
/* Enable/Disable power button pulses for x86 devices */
- EC_POWER_BUTTON_ENABLE_PULSE = BIT(0),
+ EC_POWER_BUTTON_ENABLE_PULSE = (1 << 0),
};
-struct ec_params_config_power_button {
+struct __ec_align1 ec_params_config_power_button {
/* See enum ec_config_power_button_flags */
uint8_t flags;
-} __ec_align1;
+};
/*****************************************************************************/
/* USB charging control commands */
@@ -3559,52 +2480,11 @@ struct ec_params_config_power_button {
/* Set USB port charging mode */
#define EC_CMD_USB_CHARGE_SET_MODE 0x0030
-enum usb_charge_mode {
- /* Disable USB port. */
- USB_CHARGE_MODE_DISABLED,
- /* Set USB port to Standard Downstream Port, USB 2.0 mode. */
- USB_CHARGE_MODE_SDP2,
- /* Set USB port to Charging Downstream Port, BC 1.2. */
- USB_CHARGE_MODE_CDP,
- /* Set USB port to Dedicated Charging Port, BC 1.2. */
- USB_CHARGE_MODE_DCP_SHORT,
- /* Enable USB port (for dumb ports). */
- USB_CHARGE_MODE_ENABLED,
- /* Set USB port to CONFIG_USB_PORT_POWER_SMART_DEFAULT_MODE. */
- USB_CHARGE_MODE_DEFAULT,
-
- USB_CHARGE_MODE_COUNT,
-};
-
-enum usb_suspend_charge {
- /* Enable charging in suspend */
- USB_ALLOW_SUSPEND_CHARGE,
- /* Disable charging in suspend */
- USB_DISALLOW_SUSPEND_CHARGE,
-};
-
-struct ec_params_usb_charge_set_mode {
+struct __ec_align1 ec_params_usb_charge_set_mode {
uint8_t usb_port_id;
- uint8_t mode : 7; /* enum usb_charge_mode */
- uint8_t inhibit_charge : 1; /* enum usb_suspend_charge */
-} __ec_align1;
-
-/*****************************************************************************/
-/* Tablet mode commands */
-
-/* Set tablet mode */
-#define EC_CMD_SET_TABLET_MODE 0x0031
-
-enum tablet_mode_override {
- TABLET_MODE_DEFAULT,
- TABLET_MODE_FORCE_TABLET,
- TABLET_MODE_FORCE_CLAMSHELL,
+ uint8_t mode;
};
-struct ec_params_set_tablet_mode {
- uint8_t tablet_mode; /* enum tablet_mode_override */
-} __ec_align1;
-
/*****************************************************************************/
/* Persistent storage for host */
@@ -3614,12 +2494,12 @@ struct ec_params_set_tablet_mode {
/* Get persistent storage info */
#define EC_CMD_PSTORE_INFO 0x0040
-struct ec_response_pstore_info {
+struct __ec_align4 ec_response_pstore_info {
/* Persistent storage size, in bytes */
uint32_t pstore_size;
/* Access size; read/write offset and size must be a multiple of this */
uint32_t access_size;
-} __ec_align4;
+};
/*
* Read persistent storage
@@ -3628,31 +2508,31 @@ struct ec_response_pstore_info {
*/
#define EC_CMD_PSTORE_READ 0x0041
-struct ec_params_pstore_read {
- uint32_t offset; /* Byte offset to read */
- uint32_t size; /* Size to read in bytes */
-} __ec_align4;
+struct __ec_align4 ec_params_pstore_read {
+ uint32_t offset; /* Byte offset to read */
+ uint32_t size; /* Size to read in bytes */
+};
/* Write persistent storage */
#define EC_CMD_PSTORE_WRITE 0x0042
-struct ec_params_pstore_write {
- uint32_t offset; /* Byte offset to write */
- uint32_t size; /* Size to write in bytes */
+struct __ec_align4 ec_params_pstore_write {
+ uint32_t offset; /* Byte offset to write */
+ uint32_t size; /* Size to write in bytes */
uint8_t data[EC_PSTORE_SIZE_MAX];
-} __ec_align4;
+};
/*****************************************************************************/
/* Real-time clock */
/* RTC params and response structures */
-struct ec_params_rtc {
+struct __ec_align4 ec_params_rtc {
uint32_t time;
-} __ec_align4;
+};
-struct ec_response_rtc {
+struct __ec_align4 ec_response_rtc {
uint32_t time;
-} __ec_align4;
+};
/* These use ec_response_rtc */
#define EC_CMD_RTC_GET_VALUE 0x0044
@@ -3680,17 +2560,17 @@ enum ec_port80_subcmd {
EC_PORT80_READ_BUFFER,
};
-struct ec_params_port80_read {
+struct __ec_todo_packed ec_params_port80_read {
uint16_t subcmd;
union {
struct __ec_todo_unpacked {
uint32_t offset;
uint32_t num_entries;
} read_buffer;
- } __ec_todo_packed;
-} __ec_todo_packed;
+ };
+};
-struct ec_response_port80_read {
+struct __ec_todo_packed ec_response_port80_read {
union {
struct __ec_todo_unpacked {
uint32_t writes;
@@ -3701,11 +2581,11 @@ struct ec_response_port80_read {
uint16_t codes[EC_PORT80_SIZE_MAX];
} data;
};
-} __ec_todo_packed;
+};
-struct ec_response_port80_last_boot {
+struct __ec_align2 ec_response_port80_last_boot {
uint16_t code;
-} __ec_align2;
+};
/*****************************************************************************/
/* Temporary secure storage for host verified boot use */
@@ -3718,12 +2598,12 @@ struct ec_response_port80_last_boot {
/* Get persistent storage info */
#define EC_CMD_VSTORE_INFO 0x0049
-struct ec_response_vstore_info {
+struct __ec_align_size1 ec_response_vstore_info {
/* Indicates which slots are locked */
uint32_t slot_locked;
/* Total number of slots available */
uint8_t slot_count;
-} __ec_align_size1;
+};
/*
* Read temporary secure storage
@@ -3732,23 +2612,23 @@ struct ec_response_vstore_info {
*/
#define EC_CMD_VSTORE_READ 0x004A
-struct ec_params_vstore_read {
+struct __ec_align1 ec_params_vstore_read {
uint8_t slot; /* Slot to read from */
-} __ec_align1;
+};
-struct ec_response_vstore_read {
+struct __ec_align1 ec_response_vstore_read {
uint8_t data[EC_VSTORE_SLOT_SIZE];
-} __ec_align1;
+};
/*
* Write temporary secure storage and lock it.
*/
#define EC_CMD_VSTORE_WRITE 0x004B
-struct ec_params_vstore_write {
+struct __ec_align1 ec_params_vstore_write {
uint8_t slot; /* Slot to write to */
uint8_t data[EC_VSTORE_SLOT_SIZE];
-} __ec_align1;
+};
/*****************************************************************************/
/* Thermal engine commands. Note that there are two implementations. We'll
@@ -3765,21 +2645,21 @@ struct ec_params_vstore_write {
*/
/* Version 0 - set */
-struct ec_params_thermal_set_threshold {
+struct __ec_align2 ec_params_thermal_set_threshold {
uint8_t sensor_type;
uint8_t threshold_id;
uint16_t value;
-} __ec_align2;
+};
/* Version 0 - get */
-struct ec_params_thermal_get_threshold {
+struct __ec_align1 ec_params_thermal_get_threshold {
uint8_t sensor_type;
uint8_t threshold_id;
-} __ec_align1;
+};
-struct ec_response_thermal_get_threshold {
+struct __ec_align2 ec_response_thermal_get_threshold {
uint16_t value;
-} __ec_align2;
+};
/* The version 1 structs are visible. */
enum ec_temp_thresholds {
@@ -3787,80 +2667,45 @@ enum ec_temp_thresholds {
EC_TEMP_THRESH_HIGH,
EC_TEMP_THRESH_HALT,
- EC_TEMP_THRESH_COUNT,
+ EC_TEMP_THRESH_COUNT
};
/*
* Thermal configuration for one temperature sensor. Temps are in degrees K.
* Zero values will be silently ignored by the thermal task.
*
- * Set 'temp_host' value allows thermal task to trigger some event with 1 degree
- * hysteresis.
- * For example,
- * temp_host[EC_TEMP_THRESH_HIGH] = 300 K
- * temp_host_release[EC_TEMP_THRESH_HIGH] = 0 K
- * EC will throttle ap when temperature >= 301 K, and release throttling when
- * temperature <= 299 K.
- *
- * Set 'temp_host_release' value allows thermal task has a custom hysteresis.
- * For example,
- * temp_host[EC_TEMP_THRESH_HIGH] = 300 K
- * temp_host_release[EC_TEMP_THRESH_HIGH] = 295 K
- * EC will throttle ap when temperature >= 301 K, and release throttling when
- * temperature <= 294 K.
- *
* Note that this structure is a sub-structure of
* ec_params_thermal_set_threshold_v1, but maintains its alignment there.
*/
-struct ec_thermal_config {
+struct __ec_align4 ec_thermal_config {
uint32_t temp_host[EC_TEMP_THRESH_COUNT]; /* levels of hotness */
- uint32_t temp_host_release[EC_TEMP_THRESH_COUNT]; /* release levels */
- uint32_t temp_fan_off; /* no active cooling needed */
- uint32_t temp_fan_max; /* max active cooling needed */
-} __ec_align4;
+ uint32_t temp_fan_off; /* no active cooling needed */
+ uint32_t temp_fan_max; /* max active cooling needed */
+};
/* Version 1 - get config for one sensor. */
-struct ec_params_thermal_get_threshold_v1 {
+struct __ec_align4 ec_params_thermal_get_threshold_v1 {
uint32_t sensor_num;
-} __ec_align4;
+};
/* This returns a struct ec_thermal_config */
-/*
- * Version 1 - set config for one sensor.
- * Use read-modify-write for best results!
- */
-struct ec_params_thermal_set_threshold_v1 {
+/* Version 1 - set config for one sensor.
+ * Use read-modify-write for best results! */
+struct __ec_align4 ec_params_thermal_set_threshold_v1 {
uint32_t sensor_num;
struct ec_thermal_config cfg;
-} __ec_align4;
+};
/* This returns no data */
/****************************************************************************/
-/* Set or get fan control mode */
+/* Toggle automatic fan control */
#define EC_CMD_THERMAL_AUTO_FAN_CTRL 0x0052
-enum ec_auto_fan_ctrl_cmd {
- EC_AUTO_FAN_CONTROL_CMD_SET = 0,
- EC_AUTO_FAN_CONTROL_CMD_GET,
-};
-
/* Version 1 of input params */
-struct ec_params_auto_fan_ctrl_v1 {
- uint8_t fan_idx;
-} __ec_align1;
-
-/* Version 2 of input params */
-struct ec_params_auto_fan_ctrl_v2 {
+struct __ec_align1 ec_params_auto_fan_ctrl_v1 {
uint8_t fan_idx;
- uint8_t cmd; /* enum ec_auto_fan_ctrl_cmd */
- uint8_t set_auto; /* only used with EC_AUTO_FAN_CONTROL_CMD_SET - bool
- */
-} __ec_align4;
-
-struct ec_response_auto_fan_control {
- uint8_t is_auto; /* bool */
-} __ec_align1;
+};
/* Get/Set TMP006 calibration data */
#define EC_CMD_TMP006_GET_CALIBRATION 0x0053
@@ -3876,54 +2721,54 @@ struct ec_response_auto_fan_control {
*/
/* This is the same struct for both v0 and v1. */
-struct ec_params_tmp006_get_calibration {
+struct __ec_align1 ec_params_tmp006_get_calibration {
uint8_t index;
-} __ec_align1;
+};
/* Version 0 */
-struct ec_response_tmp006_get_calibration_v0 {
+struct __ec_align4 ec_response_tmp006_get_calibration_v0 {
float s0;
float b0;
float b1;
float b2;
-} __ec_align4;
+};
-struct ec_params_tmp006_set_calibration_v0 {
+struct __ec_align4 ec_params_tmp006_set_calibration_v0 {
uint8_t index;
uint8_t reserved[3];
float s0;
float b0;
float b1;
float b2;
-} __ec_align4;
+};
/* Version 1 */
-struct ec_response_tmp006_get_calibration_v1 {
+struct __ec_align4 ec_response_tmp006_get_calibration_v1 {
uint8_t algorithm;
uint8_t num_params;
uint8_t reserved[2];
- float val[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
+ float val[0];
+};
-struct ec_params_tmp006_set_calibration_v1 {
+struct __ec_align4 ec_params_tmp006_set_calibration_v1 {
uint8_t index;
uint8_t algorithm;
uint8_t num_params;
uint8_t reserved;
- float val[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
+ float val[0];
+};
/* Read raw TMP006 data */
#define EC_CMD_TMP006_GET_RAW 0x0055
-struct ec_params_tmp006_get_raw {
+struct __ec_align1 ec_params_tmp006_get_raw {
uint8_t index;
-} __ec_align1;
+};
-struct ec_response_tmp006_get_raw {
- int32_t t; /* In 1/100 K */
- int32_t v; /* In nV */
-} __ec_align4;
+struct __ec_align4 ec_response_tmp006_get_raw {
+ int32_t t; /* In 1/100 K */
+ int32_t v; /* In nV */
+};
/*****************************************************************************/
/* MKBP - Matrix KeyBoard Protocol */
@@ -3945,17 +2790,17 @@ struct ec_response_tmp006_get_raw {
*/
#define EC_CMD_MKBP_INFO 0x0061
-struct ec_response_mkbp_info {
+struct __ec_align_size1 ec_response_mkbp_info {
uint32_t rows;
uint32_t cols;
/* Formerly "switches", which was 0. */
uint8_t reserved;
-} __ec_align_size1;
+};
-struct ec_params_mkbp_info {
+struct __ec_align1 ec_params_mkbp_info {
uint8_t info_type;
uint8_t event_type;
-} __ec_align1;
+};
enum ec_mkbp_info_type {
/*
@@ -3999,11 +2844,11 @@ enum ec_mkbp_info_type {
/* Simulate key press */
#define EC_CMD_MKBP_SIMULATE_KEY 0x0062
-struct ec_params_mkbp_simulate_key {
+struct __ec_align1 ec_params_mkbp_simulate_key {
uint8_t col;
uint8_t row;
uint8_t pressed;
-} __ec_align1;
+};
/* Configure keyboard scanning */
#define EC_CMD_MKBP_SET_CONFIG 0x0064
@@ -4011,17 +2856,17 @@ struct ec_params_mkbp_simulate_key {
/* flags */
enum mkbp_config_flags {
- EC_MKBP_FLAGS_ENABLE = 1, /* Enable keyboard scanning */
+ EC_MKBP_FLAGS_ENABLE = 1, /* Enable keyboard scanning */
};
enum mkbp_config_valid {
- EC_MKBP_VALID_SCAN_PERIOD = BIT(0),
- EC_MKBP_VALID_POLL_TIMEOUT = BIT(1),
- EC_MKBP_VALID_MIN_POST_SCAN_DELAY = BIT(3),
- EC_MKBP_VALID_OUTPUT_SETTLE = BIT(4),
- EC_MKBP_VALID_DEBOUNCE_DOWN = BIT(5),
- EC_MKBP_VALID_DEBOUNCE_UP = BIT(6),
- EC_MKBP_VALID_FIFO_MAX_DEPTH = BIT(7),
+ EC_MKBP_VALID_SCAN_PERIOD = 1 << 0,
+ EC_MKBP_VALID_POLL_TIMEOUT = 1 << 1,
+ EC_MKBP_VALID_MIN_POST_SCAN_DELAY = 1 << 3,
+ EC_MKBP_VALID_OUTPUT_SETTLE = 1 << 4,
+ EC_MKBP_VALID_DEBOUNCE_DOWN = 1 << 5,
+ EC_MKBP_VALID_DEBOUNCE_UP = 1 << 6,
+ EC_MKBP_VALID_FIFO_MAX_DEPTH = 1 << 7,
};
/*
@@ -4030,11 +2875,11 @@ enum mkbp_config_valid {
* Note that this is used as a sub-structure of
* ec_{params/response}_mkbp_get_config.
*/
-struct ec_mkbp_config {
- uint32_t valid_mask; /* valid fields */
- uint8_t flags; /* some flags (enum mkbp_config_flags) */
- uint8_t valid_flags; /* which flags are valid */
- uint16_t scan_period_us; /* period between start of scans */
+struct __ec_align_size1 ec_mkbp_config {
+ uint32_t valid_mask; /* valid fields */
+ uint8_t flags; /* some flags (enum mkbp_config_flags) */
+ uint8_t valid_flags; /* which flags are valid */
+ uint16_t scan_period_us; /* period between start of scans */
/* revert to interrupt mode after no activity for this long */
uint32_t poll_timeout_us;
/*
@@ -4045,29 +2890,29 @@ struct ec_mkbp_config {
uint16_t min_post_scan_delay_us;
/* delay between setting up output and waiting for it to settle */
uint16_t output_settle_us;
- uint16_t debounce_down_us; /* time for debounce on key down */
- uint16_t debounce_up_us; /* time for debounce on key up */
+ uint16_t debounce_down_us; /* time for debounce on key down */
+ uint16_t debounce_up_us; /* time for debounce on key up */
/* maximum depth to allow for fifo (0 = no keyscan output) */
uint8_t fifo_max_depth;
-} __ec_align_size1;
+};
-struct ec_params_mkbp_set_config {
+struct __ec_align_size1 ec_params_mkbp_set_config {
struct ec_mkbp_config config;
-} __ec_align_size1;
+};
-struct ec_response_mkbp_get_config {
+struct __ec_align_size1 ec_response_mkbp_get_config {
struct ec_mkbp_config config;
-} __ec_align_size1;
+};
/* Run the key scan emulation */
#define EC_CMD_KEYSCAN_SEQ_CTRL 0x0066
enum ec_keyscan_seq_cmd {
- EC_KEYSCAN_SEQ_STATUS = 0, /* Get status information */
- EC_KEYSCAN_SEQ_CLEAR = 1, /* Clear sequence */
- EC_KEYSCAN_SEQ_ADD = 2, /* Add item to sequence */
- EC_KEYSCAN_SEQ_START = 3, /* Start running sequence */
- EC_KEYSCAN_SEQ_COLLECT = 4, /* Collect sequence summary data */
+ EC_KEYSCAN_SEQ_STATUS = 0, /* Get status information */
+ EC_KEYSCAN_SEQ_CLEAR = 1, /* Clear sequence */
+ EC_KEYSCAN_SEQ_ADD = 2, /* Add item to sequence */
+ EC_KEYSCAN_SEQ_START = 3, /* Start running sequence */
+ EC_KEYSCAN_SEQ_COLLECT = 4, /* Collect sequence summary data */
};
enum ec_collect_flags {
@@ -4075,19 +2920,19 @@ enum ec_collect_flags {
* Indicates this scan was processed by the EC. Due to timing, some
* scans may be skipped.
*/
- EC_KEYSCAN_SEQ_FLAG_DONE = BIT(0),
+ EC_KEYSCAN_SEQ_FLAG_DONE = 1 << 0,
};
-struct ec_collect_item {
- uint8_t flags; /* some flags (enum ec_collect_flags) */
-} __ec_align1;
+struct __ec_align1 ec_collect_item {
+ uint8_t flags; /* some flags (enum ec_collect_flags) */
+};
-struct ec_params_keyscan_seq_ctrl {
- uint8_t cmd; /* Command to send (enum ec_keyscan_seq_cmd) */
+struct __ec_todo_packed ec_params_keyscan_seq_ctrl {
+ uint8_t cmd; /* Command to send (enum ec_keyscan_seq_cmd) */
union {
struct __ec_align1 {
- uint8_t active; /* still active */
- uint8_t num_items; /* number of items */
+ uint8_t active; /* still active */
+ uint8_t num_items; /* number of items */
/* Current item being presented */
uint8_t cur_item;
} status;
@@ -4097,49 +2942,32 @@ struct ec_params_keyscan_seq_ctrl {
* start of the sequence.
*/
uint32_t time_us;
- /* keyscan data */
- uint8_t scan[FLEXIBLE_ARRAY_MEMBER_SIZE];
+ uint8_t scan[0]; /* keyscan data */
} add;
struct __ec_align1 {
- uint8_t start_item; /* First item to return */
- uint8_t num_items; /* Number of items to return */
+ uint8_t start_item; /* First item to return */
+ uint8_t num_items; /* Number of items to return */
} collect;
};
-} __ec_todo_packed;
+};
-struct ec_result_keyscan_seq_ctrl {
+struct __ec_todo_packed ec_result_keyscan_seq_ctrl {
union {
struct __ec_todo_unpacked {
- uint8_t num_items; /* Number of items */
+ uint8_t num_items; /* Number of items */
/* Data for each item */
- struct ec_collect_item item[FLEXIBLE_ARRAY_MEMBER_SIZE];
+ struct ec_collect_item item[0];
} collect;
};
-} __ec_todo_packed;
+};
/*
* Get the next pending MKBP event.
*
* Returns EC_RES_UNAVAILABLE if there is no event pending.
- *
- * V0: ec_response_get_next_data
- * V1: ec_response_get_next_data_v1. Increased key_matrix size from 13 -> 16.
- * V2: Added EC_MKBP_HAS_MORE_EVENTS.
- * V3: ec_response_get_next_data_v3. Increased key_matrix size from 16 -> 18.
*/
#define EC_CMD_GET_NEXT_EVENT 0x0067
-#define EC_MKBP_HAS_MORE_EVENTS_SHIFT 7
-
-/*
- * We use the most significant bit of the event type to indicate to the host
- * that the EC has more MKBP events available to provide.
- */
-#define EC_MKBP_HAS_MORE_EVENTS BIT(EC_MKBP_HAS_MORE_EVENTS_SHIFT)
-
-/* The mask to apply to get the raw event type */
-#define EC_MKBP_EVENT_TYPE_MASK (BIT(EC_MKBP_HAS_MORE_EVENTS_SHIFT) - 1)
-
enum ec_mkbp_event {
/* Keyboard matrix changed. The event data is the new matrix state. */
EC_MKBP_EVENT_KEY_MATRIX = 0,
@@ -4165,82 +2993,15 @@ enum ec_mkbp_event {
*/
EC_MKBP_EVENT_SYSRQ = 6,
- /*
- * New 64-bit host event.
- * The event data is 8 bytes of host event flags.
- */
- EC_MKBP_EVENT_HOST_EVENT64 = 7,
-
- /* Notify the AP that something happened on CEC */
- EC_MKBP_EVENT_CEC_EVENT = 8,
-
- /* Send an incoming CEC message to the AP */
- EC_MKBP_EVENT_CEC_MESSAGE = 9,
-
- /* We have entered DisplayPort Alternate Mode on a Type-C port. */
- EC_MKBP_EVENT_DP_ALT_MODE_ENTERED = 10,
-
- /* New online calibration values are available. */
- EC_MKBP_EVENT_ONLINE_CALIBRATION = 11,
-
- /* Peripheral device charger event */
- EC_MKBP_EVENT_PCHG = 12,
-
/* Number of MKBP events */
EC_MKBP_EVENT_COUNT,
};
-BUILD_ASSERT(EC_MKBP_EVENT_COUNT <= EC_MKBP_EVENT_TYPE_MASK);
-
-/* clang-format off */
-#define EC_MKBP_EVENT_TEXT \
- { \
- [EC_MKBP_EVENT_KEY_MATRIX] = "KEY_MATRIX", \
- [EC_MKBP_EVENT_HOST_EVENT] = "HOST_EVENT", \
- [EC_MKBP_EVENT_SENSOR_FIFO] = "SENSOR_FIFO", \
- [EC_MKBP_EVENT_BUTTON] = "BUTTON", \
- [EC_MKBP_EVENT_SWITCH] = "SWITCH", \
- [EC_MKBP_EVENT_FINGERPRINT] = "FINGERPRINT", \
- [EC_MKBP_EVENT_SYSRQ] = "SYSRQ", \
- [EC_MKBP_EVENT_HOST_EVENT64] = "HOST_EVENT64", \
- [EC_MKBP_EVENT_CEC_EVENT] = "CEC_EVENT", \
- [EC_MKBP_EVENT_CEC_MESSAGE] = "CEC_MESSAGE", \
- [EC_MKBP_EVENT_DP_ALT_MODE_ENTERED] = "DP_ALT_MODE_ENTERED", \
- [EC_MKBP_EVENT_ONLINE_CALIBRATION] = "ONLINE_CALIBRATION", \
- [EC_MKBP_EVENT_PCHG] = "PCHG", \
- }
-/* clang-format on */
union __ec_align_offset1 ec_response_get_next_data {
uint8_t key_matrix[13];
/* Unaligned */
uint32_t host_event;
- uint64_t host_event64;
-
- struct __ec_todo_unpacked {
- /* For aligning the fifo_info */
- uint8_t reserved[3];
- struct ec_response_motion_sense_fifo_info info;
- } sensor_fifo;
-
- uint32_t buttons;
-
- uint32_t switches;
-
- uint32_t fp_events;
-
- uint32_t sysrq;
-
- /* CEC events from enum mkbp_cec_event */
- uint32_t cec_events;
-};
-
-union __ec_align_offset1 ec_response_get_next_data_v1 {
- uint8_t key_matrix[16];
-
- /* Unaligned */
- uint32_t host_event;
- uint64_t host_event64;
struct __ec_todo_unpacked {
/* For aligning the fifo_info */
@@ -4255,164 +3016,37 @@ union __ec_align_offset1 ec_response_get_next_data_v1 {
uint32_t fp_events;
uint32_t sysrq;
-
- /* CEC events from enum mkbp_cec_event */
- uint32_t cec_events;
-
- uint8_t cec_message[16];
};
-BUILD_ASSERT(sizeof(union ec_response_get_next_data_v1) == 16);
-union __ec_align_offset1 ec_response_get_next_data_v3 {
- uint8_t key_matrix[18];
-
- /* Unaligned */
- uint32_t host_event;
- uint64_t host_event64;
-
- struct __ec_todo_unpacked {
- /* For aligning the fifo_info */
- uint8_t reserved[3];
- struct ec_response_motion_sense_fifo_info info;
- } sensor_fifo;
-
- uint32_t buttons;
-
- uint32_t switches;
-
- uint32_t fp_events;
-
- uint32_t sysrq;
-
- /* CEC events from enum mkbp_cec_event */
- uint32_t cec_events;
-
- uint8_t cec_message[16];
-};
-BUILD_ASSERT(sizeof(union ec_response_get_next_data_v3) == 18);
-
-struct ec_response_get_next_event {
+struct __ec_align1 ec_response_get_next_event {
uint8_t event_type;
/* Followed by event data if any */
union ec_response_get_next_data data;
-} __ec_align1;
-
-struct ec_response_get_next_event_v1 {
- uint8_t event_type;
- /* Followed by event data if any */
- union ec_response_get_next_data_v1 data;
-} __ec_align1;
-
-struct ec_response_get_next_event_v3 {
- uint8_t event_type;
- /* Followed by event data if any */
- union ec_response_get_next_data_v3 data;
-} __ec_align1;
+};
/* Bit indices for buttons and switches.*/
/* Buttons */
-#define EC_MKBP_POWER_BUTTON 0
-#define EC_MKBP_VOL_UP 1
-#define EC_MKBP_VOL_DOWN 2
-#define EC_MKBP_RECOVERY 3
+#define EC_MKBP_POWER_BUTTON 0
+#define EC_MKBP_VOL_UP 1
+#define EC_MKBP_VOL_DOWN 2
+#define EC_MKBP_RECOVERY 3
/* Switches */
-#define EC_MKBP_LID_OPEN 0
-#define EC_MKBP_TABLET_MODE 1
-#define EC_MKBP_BASE_ATTACHED 2
-#define EC_MKBP_FRONT_PROXIMITY 3
+#define EC_MKBP_LID_OPEN 0
+#define EC_MKBP_TABLET_MODE 1
/* Run keyboard factory test scanning */
#define EC_CMD_KEYBOARD_FACTORY_TEST 0x0068
-struct ec_response_keyboard_factory_test {
- uint16_t shorted; /* Keyboard pins are shorted */
-} __ec_align2;
+struct __ec_align2 ec_response_keyboard_factory_test {
+ uint16_t shorted; /* Keyboard pins are shorted */
+};
/* Fingerprint events in 'fp_events' for EC_MKBP_EVENT_FINGERPRINT */
#define EC_MKBP_FP_RAW_EVENT(fp_events) ((fp_events) & 0x00FFFFFF)
-#define EC_MKBP_FP_ERRCODE(fp_events) ((fp_events) & 0x0000000F)
-#define EC_MKBP_FP_ENROLL_PROGRESS_OFFSET 4
-#define EC_MKBP_FP_ENROLL_PROGRESS(fpe) \
- (((fpe) & 0x00000FF0) >> EC_MKBP_FP_ENROLL_PROGRESS_OFFSET)
-#define EC_MKBP_FP_MATCH_IDX_OFFSET 12
-#define EC_MKBP_FP_MATCH_IDX_MASK 0x0000F000
-#define EC_MKBP_FP_MATCH_IDX(fpe) \
- (((fpe) & EC_MKBP_FP_MATCH_IDX_MASK) >> EC_MKBP_FP_MATCH_IDX_OFFSET)
-#define EC_MKBP_FP_ENROLL BIT(27)
-#define EC_MKBP_FP_MATCH BIT(28)
-#define EC_MKBP_FP_FINGER_DOWN BIT(29)
-#define EC_MKBP_FP_FINGER_UP BIT(30)
-#define EC_MKBP_FP_IMAGE_READY BIT(31)
-/* code given by EC_MKBP_FP_ERRCODE() when EC_MKBP_FP_ENROLL is set */
-#define EC_MKBP_FP_ERR_ENROLL_OK 0
-#define EC_MKBP_FP_ERR_ENROLL_LOW_QUALITY 1
-#define EC_MKBP_FP_ERR_ENROLL_IMMOBILE 2
-#define EC_MKBP_FP_ERR_ENROLL_LOW_COVERAGE 3
-#define EC_MKBP_FP_ERR_ENROLL_INTERNAL 5
-/* Can be used to detect if image was usable for enrollment or not. */
-#define EC_MKBP_FP_ERR_ENROLL_PROBLEM_MASK 1
-/* code given by EC_MKBP_FP_ERRCODE() when EC_MKBP_FP_MATCH is set */
-#define EC_MKBP_FP_ERR_MATCH_NO 0
-#define EC_MKBP_FP_ERR_MATCH_NO_INTERNAL 6
-#define EC_MKBP_FP_ERR_MATCH_NO_TEMPLATES 7
-#define EC_MKBP_FP_ERR_MATCH_NO_AUTH_FAIL 8
-#define EC_MKBP_FP_ERR_MATCH_NO_LOW_QUALITY 2
-#define EC_MKBP_FP_ERR_MATCH_NO_LOW_COVERAGE 4
-#define EC_MKBP_FP_ERR_MATCH_YES 1
-#define EC_MKBP_FP_ERR_MATCH_YES_UPDATED 3
-#define EC_MKBP_FP_ERR_MATCH_YES_UPDATE_FAILED 5
-
-#define EC_CMD_MKBP_WAKE_MASK 0x0069
-enum ec_mkbp_event_mask_action {
- /* Retrieve the value of a wake mask. */
- GET_WAKE_MASK = 0,
-
- /* Set the value of a wake mask. */
- SET_WAKE_MASK,
-};
-
-enum ec_mkbp_mask_type {
- /*
- * These are host events sent via MKBP.
- *
- * Some examples are:
- * EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_OPEN)
- * EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEY_PRESSED)
- *
- * The only things that should be in this mask are:
- * EC_HOST_EVENT_MASK(EC_HOST_EVENT_*)
- */
- EC_MKBP_HOST_EVENT_WAKE_MASK = 0,
-
- /*
- * These are MKBP events. Some examples are:
- *
- * EC_MKBP_EVENT_KEY_MATRIX
- * EC_MKBP_EVENT_SWITCH
- *
- * The only things that should be in this mask are EC_MKBP_EVENT_*.
- */
- EC_MKBP_EVENT_WAKE_MASK,
-};
-
-struct ec_params_mkbp_event_wake_mask {
- /* One of enum ec_mkbp_event_mask_action */
- uint8_t action;
-
- /*
- * Which MKBP mask are you interested in acting upon? This is one of
- * ec_mkbp_mask_type.
- */
- uint8_t mask_type;
-
- /* If setting a new wake mask, this contains the mask to set. */
- uint32_t new_wake_mask;
-};
-
-struct ec_response_mkbp_event_wake_mask {
- uint32_t wake_mask;
-};
+#define EC_MKBP_FP_FINGER_DOWN (1 << 29)
+#define EC_MKBP_FP_FINGER_UP (1 << 30)
+#define EC_MKBP_FP_IMAGE_READY (1 << 31)
/*****************************************************************************/
/* Temperature sensor commands */
@@ -4420,14 +3054,14 @@ struct ec_response_mkbp_event_wake_mask {
/* Read temperature sensor info */
#define EC_CMD_TEMP_SENSOR_GET_INFO 0x0070
-struct ec_params_temp_sensor_get_info {
+struct __ec_align1 ec_params_temp_sensor_get_info {
uint8_t id;
-} __ec_align1;
+};
-struct ec_response_temp_sensor_get_info {
+struct __ec_align1 ec_response_temp_sensor_get_info {
char sensor_name[32];
uint8_t sensor_type;
-} __ec_align1;
+};
/*****************************************************************************/
@@ -4440,42 +3074,39 @@ struct ec_response_temp_sensor_get_info {
/*****************************************************************************/
/* Host event commands */
-/* Obsolete. New implementation should use EC_CMD_HOST_EVENT instead */
+/* Obsolete. New implementation should use EC_CMD_PROGRAM_HOST_EVENT instead */
/*
* Host event mask params and response structures, shared by all of the host
* event commands below.
*/
-struct ec_params_host_event_mask {
+struct __ec_align4 ec_params_host_event_mask {
uint32_t mask;
-} __ec_align4;
+};
-struct ec_response_host_event_mask {
+struct __ec_align4 ec_response_host_event_mask {
uint32_t mask;
-} __ec_align4;
+};
/* These all use ec_response_host_event_mask */
-#define EC_CMD_HOST_EVENT_GET_B 0x0087
-#define EC_CMD_HOST_EVENT_GET_SMI_MASK 0x0088
-#define EC_CMD_HOST_EVENT_GET_SCI_MASK 0x0089
+#define EC_CMD_HOST_EVENT_GET_B 0x0087
+#define EC_CMD_HOST_EVENT_GET_SMI_MASK 0x0088
+#define EC_CMD_HOST_EVENT_GET_SCI_MASK 0x0089
#define EC_CMD_HOST_EVENT_GET_WAKE_MASK 0x008D
/* These all use ec_params_host_event_mask */
-#define EC_CMD_HOST_EVENT_SET_SMI_MASK 0x008A
-#define EC_CMD_HOST_EVENT_SET_SCI_MASK 0x008B
-#define EC_CMD_HOST_EVENT_CLEAR 0x008C
+#define EC_CMD_HOST_EVENT_SET_SMI_MASK 0x008A
+#define EC_CMD_HOST_EVENT_SET_SCI_MASK 0x008B
+#define EC_CMD_HOST_EVENT_CLEAR 0x008C
#define EC_CMD_HOST_EVENT_SET_WAKE_MASK 0x008E
-#define EC_CMD_HOST_EVENT_CLEAR_B 0x008F
+#define EC_CMD_HOST_EVENT_CLEAR_B 0x008F
/*
* Unified host event programming interface - Should be used by newer versions
* of BIOS/OS to program host events and masks
- *
- * EC returns:
- * - EC_RES_INVALID_PARAM: Action or mask type is unknown.
- * - EC_RES_ACCESS_DENIED: Action is prohibited for specified mask type.
*/
-struct ec_params_host_event {
+struct __ec_align4 ec_params_host_event {
+
/* Action requested by host - one of enum ec_host_event_action. */
uint8_t action;
@@ -4490,17 +3121,18 @@ struct ec_params_host_event {
/* Value to be used in case of set operations. */
uint64_t value;
-} __ec_align4;
+};
/*
* Response structure returned by EC_CMD_HOST_EVENT.
* Update the value on a GET request. Set to 0 on GET/CLEAR
*/
-struct ec_response_host_event {
+struct __ec_align4 ec_response_host_event {
+
/* Mask value in case of get operation */
uint64_t value;
-} __ec_align4;
+};
enum ec_host_event_action {
/*
@@ -4546,7 +3178,7 @@ enum ec_host_event_mask_type {
EC_HOST_EVENT_LAZY_WAKE_MASK_S5,
};
-#define EC_CMD_HOST_EVENT 0x00A4
+#define EC_CMD_HOST_EVENT 0x00A4
/*****************************************************************************/
/* Switch commands */
@@ -4554,21 +3186,21 @@ enum ec_host_event_mask_type {
/* Enable/disable LCD backlight */
#define EC_CMD_SWITCH_ENABLE_BKLIGHT 0x0090
-struct ec_params_switch_enable_backlight {
+struct __ec_align1 ec_params_switch_enable_backlight {
uint8_t enabled;
-} __ec_align1;
+};
/* Enable/disable WLAN/Bluetooth */
#define EC_CMD_SWITCH_ENABLE_WIRELESS 0x0091
#define EC_VER_SWITCH_ENABLE_WIRELESS 1
/* Version 0 params; no response */
-struct ec_params_switch_enable_wireless_v0 {
+struct __ec_align1 ec_params_switch_enable_wireless_v0 {
uint8_t enabled;
-} __ec_align1;
+};
/* Version 1 params */
-struct ec_params_switch_enable_wireless_v1 {
+struct __ec_align1 ec_params_switch_enable_wireless_v1 {
/* Flags to enable now */
uint8_t now_flags;
@@ -4584,16 +3216,16 @@ struct ec_params_switch_enable_wireless_v1 {
/* Which flags to copy from suspend_flags */
uint8_t suspend_mask;
-} __ec_align1;
+};
/* Version 1 response */
-struct ec_response_switch_enable_wireless_v1 {
+struct __ec_align1 ec_response_switch_enable_wireless_v1 {
/* Flags to enable now */
uint8_t now_flags;
/* Flags to leave enabled in S3 */
uint8_t suspend_flags;
-} __ec_align1;
+};
/*****************************************************************************/
/* GPIO commands. Only available on EC if write protect has been disabled. */
@@ -4601,25 +3233,25 @@ struct ec_response_switch_enable_wireless_v1 {
/* Set GPIO output value */
#define EC_CMD_GPIO_SET 0x0092
-struct ec_params_gpio_set {
+struct __ec_align1 ec_params_gpio_set {
char name[32];
uint8_t val;
-} __ec_align1;
+};
/* Get GPIO value */
#define EC_CMD_GPIO_GET 0x0093
/* Version 0 of input params and response */
-struct ec_params_gpio_get {
+struct __ec_align1 ec_params_gpio_get {
char name[32];
-} __ec_align1;
+};
-struct ec_response_gpio_get {
+struct __ec_align1 ec_response_gpio_get {
uint8_t val;
-} __ec_align1;
+};
/* Version 1 of input params and response */
-struct ec_params_gpio_get_v1 {
+struct __ec_align1 ec_params_gpio_get_v1 {
uint8_t subcmd;
union {
struct __ec_align1 {
@@ -4629,9 +3261,9 @@ struct ec_params_gpio_get_v1 {
uint8_t index;
} get_info;
};
-} __ec_align1;
+};
-struct ec_response_gpio_get_v1 {
+struct __ec_todo_packed ec_response_gpio_get_v1 {
union {
struct __ec_align1 {
uint8_t val;
@@ -4642,7 +3274,7 @@ struct ec_response_gpio_get_v1 {
uint32_t flags;
} get_info;
};
-} __ec_todo_packed;
+};
enum gpio_get_subcmd {
EC_GPIO_GET_BY_NAME = 0,
@@ -4663,27 +3295,27 @@ enum gpio_get_subcmd {
/* Read I2C bus */
#define EC_CMD_I2C_READ 0x0094
-struct ec_params_i2c_read {
+struct __ec_align_size1 ec_params_i2c_read {
uint16_t addr; /* 8-bit address (7-bit shifted << 1) */
uint8_t read_size; /* Either 8 or 16. */
uint8_t port;
uint8_t offset;
-} __ec_align_size1;
+};
-struct ec_response_i2c_read {
+struct __ec_align2 ec_response_i2c_read {
uint16_t data;
-} __ec_align2;
+};
/* Write I2C bus */
#define EC_CMD_I2C_WRITE 0x0095
-struct ec_params_i2c_write {
+struct __ec_align_size1 ec_params_i2c_write {
uint16_t data;
uint16_t addr; /* 8-bit address (7-bit shifted << 1) */
uint8_t write_size; /* Either 8 or 16. */
uint8_t port;
uint8_t offset;
-} __ec_align_size1;
+};
/*****************************************************************************/
/* Charge state commands. Only available when flash write protect unlocked. */
@@ -4692,64 +3324,20 @@ struct ec_params_i2c_write {
* discharge the battery.
*/
#define EC_CMD_CHARGE_CONTROL 0x0096
-#define EC_VER_CHARGE_CONTROL 3
+#define EC_VER_CHARGE_CONTROL 1
enum ec_charge_control_mode {
CHARGE_CONTROL_NORMAL = 0,
CHARGE_CONTROL_IDLE,
CHARGE_CONTROL_DISCHARGE,
- /* Add no more entry below. */
- CHARGE_CONTROL_COUNT,
};
-#define EC_CHARGE_MODE_TEXT \
- { \
- [CHARGE_CONTROL_NORMAL] = "NORMAL", \
- [CHARGE_CONTROL_IDLE] = "IDLE", \
- [CHARGE_CONTROL_DISCHARGE] = "DISCHARGE", \
- }
-
-enum ec_charge_control_cmd {
- EC_CHARGE_CONTROL_CMD_SET = 0,
- EC_CHARGE_CONTROL_CMD_GET,
-};
-
-enum ec_charge_control_flag {
- EC_CHARGE_CONTROL_FLAG_NO_IDLE = BIT(0),
+struct __ec_align4 ec_params_charge_control {
+ uint32_t mode; /* enum charge_control_mode */
};
-struct ec_params_charge_control {
- uint32_t mode; /* enum charge_control_mode */
-
- /* Below are the fields added in V2. */
- uint8_t cmd; /* enum ec_charge_control_cmd. */
- uint8_t flags; /* enum ec_charge_control_flag (v3+) */
- /*
- * Lower and upper thresholds for battery sustainer. This struct isn't
- * named to avoid tainting foreign projects' name spaces.
- *
- * If charge mode is explicitly set (e.g. DISCHARGE), battery sustainer
- * will be disabled. To disable battery sustainer, set mode=NORMAL,
- * lower=-1, upper=-1.
- */
- struct {
- int8_t lower; /* Display SoC in percentage. */
- int8_t upper; /* Display SoC in percentage. */
- } sustain_soc;
-} __ec_align4;
-
-/* Added in v2 */
-struct ec_response_charge_control {
- uint32_t mode; /* enum charge_control_mode */
- struct { /* Battery sustainer thresholds */
- int8_t lower;
- int8_t upper;
- } sustain_soc;
- uint8_t flags; /* enum ec_charge_control_flag (v3+) */
- uint8_t reserved;
-} __ec_align4;
-
/*****************************************************************************/
+/* Console commands. Only available when flash write protect is unlocked. */
/* Snapshot console output buffer for use by EC_CMD_CONSOLE_READ. */
#define EC_CMD_CONSOLE_SNAPSHOT 0x0097
@@ -4770,15 +3358,12 @@ struct ec_response_charge_control {
enum ec_console_read_subcmd {
CONSOLE_READ_NEXT = 0,
- CONSOLE_READ_RECENT,
+ CONSOLE_READ_RECENT
};
-struct ec_params_console_read_v1 {
+struct __ec_align1 ec_params_console_read_v1 {
uint8_t subcmd; /* enum ec_console_read_subcmd */
-} __ec_align1;
-
-/* Print directly to EC console from host. */
-#define EC_CMD_CONSOLE_PRINT 0x00AC
+};
/*****************************************************************************/
@@ -4791,11 +3376,11 @@ struct ec_params_console_read_v1 {
*/
#define EC_CMD_BATTERY_CUT_OFF 0x0099
-#define EC_BATTERY_CUTOFF_FLAG_AT_SHUTDOWN BIT(0)
+#define EC_BATTERY_CUTOFF_FLAG_AT_SHUTDOWN (1 << 0)
-struct ec_params_battery_cutoff {
+struct __ec_align1 ec_params_battery_cutoff {
uint8_t flags;
-} __ec_align1;
+};
/*****************************************************************************/
/* USB port mux control. */
@@ -4805,16 +3390,16 @@ struct ec_params_battery_cutoff {
*/
#define EC_CMD_USB_MUX 0x009A
-struct ec_params_usb_mux {
+struct __ec_align1 ec_params_usb_mux {
uint8_t mux;
-} __ec_align1;
+};
/*****************************************************************************/
/* LDOs / FETs control. */
enum ec_ldo_state {
- EC_LDO_STATE_OFF = 0, /* the LDO / FET is shut down */
- EC_LDO_STATE_ON = 1, /* the LDO / FET is ON / providing power */
+ EC_LDO_STATE_OFF = 0, /* the LDO / FET is shut down */
+ EC_LDO_STATE_ON = 1, /* the LDO / FET is ON / providing power */
};
/*
@@ -4822,174 +3407,130 @@ enum ec_ldo_state {
*/
#define EC_CMD_LDO_SET 0x009B
-struct ec_params_ldo_set {
+struct __ec_align1 ec_params_ldo_set {
uint8_t index;
uint8_t state;
-} __ec_align1;
+};
/*
* Get LDO state.
*/
#define EC_CMD_LDO_GET 0x009C
-struct ec_params_ldo_get {
+struct __ec_align1 ec_params_ldo_get {
uint8_t index;
-} __ec_align1;
+};
-struct ec_response_ldo_get {
+struct __ec_align1 ec_response_ldo_get {
uint8_t state;
-} __ec_align1;
+};
/*****************************************************************************/
/* Power info. */
/*
* Get power info.
- *
- * Note: v0 of this command is deprecated
*/
#define EC_CMD_POWER_INFO 0x009D
-/*
- * v1 of EC_CMD_POWER_INFO
- */
-enum system_power_source {
- /*
- * Haven't established which power source is used yet,
- * or no presence signals are available
- */
- POWER_SOURCE_UNKNOWN = 0,
- /* System is running on battery alone */
- POWER_SOURCE_BATTERY = 1,
- /* System is running on A/C alone */
- POWER_SOURCE_AC = 2,
- /* System is running on A/C and battery */
- POWER_SOURCE_AC_BATTERY = 3,
+struct __ec_align4 ec_response_power_info {
+ uint32_t usb_dev_type;
+ uint16_t voltage_ac;
+ uint16_t voltage_system;
+ uint16_t current_system;
+ uint16_t usb_current_limit;
};
-struct ec_response_power_info_v1 {
- /* enum system_power_source */
- uint8_t system_power_source;
- /* Battery state-of-charge, 0-100, 0 if not present */
- uint8_t battery_soc;
- /* AC Adapter 100% rating, Watts */
- uint8_t ac_adapter_100pct;
- /* AC Adapter 10ms rating, Watts */
- uint8_t ac_adapter_10ms;
- /* Battery 1C rating, derated */
- uint8_t battery_1cd;
- /* Rest of Platform average, Watts */
- uint8_t rop_avg;
- /* Rest of Platform peak, Watts */
- uint8_t rop_peak;
- /* Nominal charger efficiency, % */
- uint8_t nominal_charger_eff;
- /* Rest of Platform VR Average Efficiency, % */
- uint8_t rop_avg_eff;
- /* Rest of Platform VR Peak Efficiency, % */
- uint8_t rop_peak_eff;
- /* SoC VR Efficiency at Average level, % */
- uint8_t soc_avg_eff;
- /* SoC VR Efficiency at Peak level, % */
- uint8_t soc_peak_eff;
- /* Intel-specific items */
- struct {
- /* Battery's level of DBPT support: 0, 2 */
- uint8_t batt_dbpt_support_level;
- /*
- * Maximum peak power from battery (10ms), Watts
- * If DBPT is not supported, this is 0
- */
- uint8_t batt_dbpt_max_peak_power;
- /*
- * Sustained peak power from battery, Watts
- * If DBPT is not supported, this is 0
- */
- uint8_t batt_dbpt_sus_peak_power;
- } intel;
-} __ec_align1;
-
/*****************************************************************************/
/* I2C passthru command */
#define EC_CMD_I2C_PASSTHRU 0x009E
/* Read data; if not present, message is a write */
-#define EC_I2C_FLAG_READ BIT(15)
+#define EC_I2C_FLAG_READ (1 << 15)
/* Mask for address */
-#define EC_I2C_ADDR_MASK 0x3ff
+#define EC_I2C_ADDR_MASK 0x3ff
-#define EC_I2C_STATUS_NAK BIT(0) /* Transfer was not acknowledged */
-#define EC_I2C_STATUS_TIMEOUT BIT(1) /* Timeout during transfer */
+#define EC_I2C_STATUS_NAK (1 << 0) /* Transfer was not acknowledged */
+#define EC_I2C_STATUS_TIMEOUT (1 << 1) /* Timeout during transfer */
/* Any error */
-#define EC_I2C_STATUS_ERROR (EC_I2C_STATUS_NAK | EC_I2C_STATUS_TIMEOUT)
+#define EC_I2C_STATUS_ERROR (EC_I2C_STATUS_NAK | EC_I2C_STATUS_TIMEOUT)
-struct ec_params_i2c_passthru_msg {
- uint16_t addr_flags; /* I2C peripheral address and flags */
- uint16_t len; /* Number of bytes to read or write */
-} __ec_align2;
+struct __ec_align2 ec_params_i2c_passthru_msg {
+ uint16_t addr_flags; /* I2C slave address (7 or 10 bits) and flags */
+ uint16_t len; /* Number of bytes to read or write */
+};
-struct ec_params_i2c_passthru {
- uint8_t port; /* I2C port number */
- uint8_t num_msgs; /* Number of messages */
- struct ec_params_i2c_passthru_msg msg[FLEXIBLE_ARRAY_MEMBER_SIZE];
+struct __ec_align2 ec_params_i2c_passthru {
+ uint8_t port; /* I2C port number */
+ uint8_t num_msgs; /* Number of messages */
+ struct ec_params_i2c_passthru_msg msg[];
/* Data to write for all messages is concatenated here */
-} __ec_align2;
+};
-struct ec_response_i2c_passthru {
- uint8_t i2c_status; /* Status flags (EC_I2C_STATUS_...) */
- uint8_t num_msgs; /* Number of messages processed */
- /* Data read by messages concatenated here */
- uint8_t data[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align1;
+struct __ec_align1 ec_response_i2c_passthru {
+ uint8_t i2c_status; /* Status flags (EC_I2C_STATUS_...) */
+ uint8_t num_msgs; /* Number of messages processed */
+ uint8_t data[]; /* Data read by messages concatenated here */
+};
/*****************************************************************************/
-/* AP hang detect */
+/* Power button hang detect */
+
#define EC_CMD_HANG_DETECT 0x009F
-#define EC_HANG_DETECT_MIN_TIMEOUT 5
+/* Reasons to start hang detection timer */
+/* Power button pressed */
+#define EC_HANG_START_ON_POWER_PRESS (1 << 0)
-/* EC hang detect commands */
-enum ec_hang_detect_cmds {
- /* Reload AP hang detect timer. */
- EC_HANG_DETECT_CMD_RELOAD = 0x0,
+/* Lid closed */
+#define EC_HANG_START_ON_LID_CLOSE (1 << 1)
- /* Stop AP hang detect timer. */
- EC_HANG_DETECT_CMD_CANCEL = 0x1,
+ /* Lid opened */
+#define EC_HANG_START_ON_LID_OPEN (1 << 2)
- /* Configure watchdog with given reboot timeout and
- * cancel currently running AP hand detect timer.
- */
- EC_HANG_DETECT_CMD_SET_TIMEOUT = 0x2,
+/* Start of AP S3->S0 transition (booting or resuming from suspend) */
+#define EC_HANG_START_ON_RESUME (1 << 3)
- /* Get last hang status - whether the AP boot was clear or not */
- EC_HANG_DETECT_CMD_GET_STATUS = 0x3,
+/* Reasons to cancel hang detection */
- /* Clear last hang status. Called when AP is rebooting/shutting down
- * gracefully.
- */
- EC_HANG_DETECT_CMD_CLEAR_STATUS = 0x4
-};
+/* Power button released */
+#define EC_HANG_STOP_ON_POWER_RELEASE (1 << 8)
+
+/* Any host command from AP received */
+#define EC_HANG_STOP_ON_HOST_COMMAND (1 << 9)
+
+/* Stop on end of AP S0->S3 transition (suspending or shutting down) */
+#define EC_HANG_STOP_ON_SUSPEND (1 << 10)
-struct ec_params_hang_detect {
- uint16_t command; /* enum ec_hang_detect_cmds */
- /* Timeout in seconds before generating reboot */
- uint16_t reboot_timeout_sec;
-} __ec_align2;
+/*
+ * If this flag is set, all the other fields are ignored, and the hang detect
+ * timer is started. This provides the AP a way to start the hang timer
+ * without reconfiguring any of the other hang detect settings. Note that
+ * you must previously have configured the timeouts.
+ */
+#define EC_HANG_START_NOW (1 << 30)
-/* Status codes that describe whether AP has boot normally or the hang has been
- * detected and EC has reset AP
+/*
+ * If this flag is set, all the other fields are ignored (including
+ * EC_HANG_START_NOW). This provides the AP a way to stop the hang timer
+ * without reconfiguring any of the other hang detect settings.
*/
-enum ec_hang_detect_status {
- EC_HANG_DETECT_AP_BOOT_NORMAL = 0x0,
- EC_HANG_DETECT_AP_BOOT_EC_WDT = 0x1,
- EC_HANG_DETECT_AP_BOOT_COUNT,
+#define EC_HANG_STOP_NOW (1 << 31)
+
+struct __ec_align4 ec_params_hang_detect {
+ /* Flags; see EC_HANG_* */
+ uint32_t flags;
+
+ /* Timeout in msec before generating host event, if enabled */
+ uint16_t host_event_timeout_msec;
+
+ /* Timeout in msec before generating warm reboot, if enabled */
+ uint16_t warm_reboot_timeout_msec;
};
-struct ec_response_hang_detect {
- uint8_t status; /* enum ec_hang_detect_status */
-} __ec_align1;
+
/*****************************************************************************/
/* Commands for battery charging */
@@ -5004,7 +3545,7 @@ enum charge_state_command {
CHARGE_STATE_CMD_GET_STATE,
CHARGE_STATE_CMD_GET_PARAM,
CHARGE_STATE_CMD_SET_PARAM,
- CHARGE_STATE_NUM_CMDS,
+ CHARGE_STATE_NUM_CMDS
};
/*
@@ -5012,62 +3553,16 @@ enum charge_state_command {
* params, which are handled by the particular implementations.
*/
enum charge_state_params {
- /* charger voltage limit */
- CS_PARAM_CHG_VOLTAGE,
-
- /* charger current limit */
- CS_PARAM_CHG_CURRENT,
-
- /* charger input current limit */
- CS_PARAM_CHG_INPUT_CURRENT,
-
- /* charger-specific status */
- CS_PARAM_CHG_STATUS,
-
- /* charger-specific options */
- CS_PARAM_CHG_OPTION,
-
- /*
- * Check if power is limited due to low battery and / or a
- * weak external charger. READ ONLY.
- */
- CS_PARAM_LIMIT_POWER,
-
- /* min value of charger voltage limit (READ ONLY) */
- CS_PARAM_CHG_VOLTAGE_MIN,
-
- /* max value of charger voltage limit (READ ONLY) */
- CS_PARAM_CHG_VOLTAGE_MAX,
-
- /* step value of charger voltage limit (READ ONLY) */
- CS_PARAM_CHG_VOLTAGE_STEP,
-
- /* min value of charger current limit (READ ONLY) */
- CS_PARAM_CHG_CURRENT_MIN,
-
- /* max value of charger current limit (READ ONLY) */
- CS_PARAM_CHG_CURRENT_MAX,
-
- /* step value of charger current limit (READ ONLY) */
- CS_PARAM_CHG_CURRENT_STEP,
-
- /* min value of charger input current limit (READ ONLY) */
- CS_PARAM_CHG_INPUT_CURRENT_MIN,
-
- /* max value of charger input current limit (READ ONLY) */
- CS_PARAM_CHG_INPUT_CURRENT_MAX,
-
- /* step value of charger input current limit (READ ONLY) */
- CS_PARAM_CHG_INPUT_CURRENT_STEP,
-
- /* Minimum required voltage for hybrid boost chargers (READ ONLY) */
- CS_PARAM_CHG_MIN_REQUIRED_MV,
-
- /* For hybrid boost chargers returns !=0 when attached charger is
- * capable of charging the battery
- */
- CS_PARAM_CHG_IS_ADAPTER_SUFFICIENT,
-
+ CS_PARAM_CHG_VOLTAGE, /* charger voltage limit */
+ CS_PARAM_CHG_CURRENT, /* charger current limit */
+ CS_PARAM_CHG_INPUT_CURRENT, /* charger input current limit */
+ CS_PARAM_CHG_STATUS, /* charger-specific status */
+ CS_PARAM_CHG_OPTION, /* charger-specific options */
+ CS_PARAM_LIMIT_POWER, /*
+ * Check if power is limited due to
+ * low battery and / or a weak external
+ * charger. READ ONLY.
+ */
/* How many so far? */
CS_NUM_BASE_PARAMS,
@@ -5075,38 +3570,28 @@ enum charge_state_params {
CS_PARAM_CUSTOM_PROFILE_MIN = 0x10000,
CS_PARAM_CUSTOM_PROFILE_MAX = 0x1ffff,
- /* Range for CONFIG_CHARGE_STATE_DEBUG params */
- CS_PARAM_DEBUG_MIN = 0x20000,
- CS_PARAM_DEBUG_CTL_MODE = 0x20000,
- CS_PARAM_DEBUG_MANUAL_MODE,
- CS_PARAM_DEBUG_SEEMS_DEAD,
- CS_PARAM_DEBUG_SEEMS_DISCONNECTED,
- CS_PARAM_DEBUG_BATT_REMOVED, /* Deprecated */
- CS_PARAM_DEBUG_MANUAL_CURRENT,
- CS_PARAM_DEBUG_MANUAL_VOLTAGE,
- CS_PARAM_DEBUG_MAX = 0x2ffff,
-
/* Other custom param ranges go here... */
};
-struct ec_params_charge_state {
- uint8_t cmd; /* enum charge_state_command */
+struct __ec_todo_packed ec_params_charge_state {
+ uint8_t cmd; /* enum charge_state_command */
union {
- /* get_state has no args */
+ struct __ec_align1 {
+ /* no args */
+ } get_state;
struct __ec_todo_unpacked {
- uint32_t param; /* enum charge_state_param */
+ uint32_t param; /* enum charge_state_param */
} get_param;
struct __ec_todo_unpacked {
- uint32_t param; /* param to set */
- uint32_t value; /* value to set */
+ uint32_t param; /* param to set */
+ uint32_t value; /* value to set */
} set_param;
- } __ec_todo_packed;
- uint8_t chgnum; /* Version 1 supports chgnum */
-} __ec_todo_packed;
+ };
+};
-struct ec_response_charge_state {
+struct __ec_align4 ec_response_charge_state {
union {
struct __ec_align4 {
int ac;
@@ -5119,30 +3604,20 @@ struct ec_response_charge_state {
struct __ec_align4 {
uint32_t value;
} get_param;
-
- /* set_param returns no args */
+ struct __ec_align4 {
+ /* no return values */
+ } set_param;
};
-} __ec_align4;
+};
/*
* Set maximum battery charging current.
*/
#define EC_CMD_CHARGE_CURRENT_LIMIT 0x00A1
-#define EC_VER_CHARGE_CURRENT_LIMIT 1
-
-struct ec_params_current_limit {
- uint32_t limit; /* in mA */
-} __ec_align4;
-struct ec_params_current_limit_v1 {
+struct __ec_align4 ec_params_current_limit {
uint32_t limit; /* in mA */
- /*
- * Battery state of charge is the minimum charge percentage at which
- * the battery charge current limit will apply.
- * When not set, the limit will apply regardless of state of charge.
- */
- uint8_t battery_soc; /* battery state of charge, 0-100 */
-} __ec_align4;
+};
/*
* Set maximum external voltage / current.
@@ -5150,10 +3625,10 @@ struct ec_params_current_limit_v1 {
#define EC_CMD_EXTERNAL_POWER_LIMIT 0x00A2
/* Command v0 is used only on Spring and is obsolete + unsupported */
-struct ec_params_external_power_limit_v1 {
+struct __ec_align2 ec_params_external_power_limit_v1 {
uint16_t current_lim; /* in mA, or EC_POWER_LIMIT_NONE to clear limit */
uint16_t voltage_lim; /* in mV, or EC_POWER_LIMIT_NONE to clear limit */
-} __ec_align2;
+};
#define EC_POWER_LIMIT_NONE 0xffff
@@ -5162,42 +3637,9 @@ struct ec_params_external_power_limit_v1 {
*/
#define EC_CMD_OVERRIDE_DEDICATED_CHARGER_LIMIT 0x00A3
-struct ec_params_dedicated_charger_limit {
+struct __ec_align2 ec_params_dedicated_charger_limit {
uint16_t current_lim; /* in mA */
uint16_t voltage_lim; /* in mV */
-} __ec_align2;
-
-/*
- * Get and set charging splashscreen variables
- */
-#define EC_CMD_CHARGESPLASH 0x00A5
-
-enum ec_chargesplash_cmd {
- /* Get the current state variables */
- EC_CHARGESPLASH_GET_STATE = 0,
-
- /* Indicate initialization of the display loop */
- EC_CHARGESPLASH_DISPLAY_READY,
-
- /* Manually put the EC into the requested state */
- EC_CHARGESPLASH_REQUEST,
-
- /* Reset all state variables */
- EC_CHARGESPLASH_RESET,
-
- /* Manually trigger a lockout */
- EC_CHARGESPLASH_LOCKOUT,
-};
-
-struct __ec_align1 ec_params_chargesplash {
- /* enum ec_chargesplash_cmd */
- uint8_t cmd;
-};
-
-struct __ec_align1 ec_response_chargesplash {
- uint8_t requested;
- uint8_t display_initialized;
- uint8_t locked_out;
};
/*****************************************************************************/
@@ -5206,15 +3648,15 @@ struct __ec_align1 ec_response_chargesplash {
/* Set the delay before going into hibernation. */
#define EC_CMD_HIBERNATION_DELAY 0x00A8
-struct ec_params_hibernation_delay {
+struct __ec_align4 ec_params_hibernation_delay {
/*
* Seconds to wait in G3 before hibernate. Pass in 0 to read the
* current settings without changing them.
*/
uint32_t seconds;
-} __ec_align4;
+};
-struct ec_response_hibernation_delay {
+struct __ec_align4 ec_response_hibernation_delay {
/*
* The current time in seconds in which the system has been in the G3
* state. This value is reset if the EC transitions out of G3.
@@ -5232,80 +3674,21 @@ struct ec_response_hibernation_delay {
* hibernating.
*/
uint32_t hibernate_delay;
-} __ec_align4;
+};
/* Inform the EC when entering a sleep state */
#define EC_CMD_HOST_SLEEP_EVENT 0x00A9
enum host_sleep_event {
- HOST_SLEEP_EVENT_S3_SUSPEND = 1,
- HOST_SLEEP_EVENT_S3_RESUME = 2,
+ HOST_SLEEP_EVENT_S3_SUSPEND = 1,
+ HOST_SLEEP_EVENT_S3_RESUME = 2,
HOST_SLEEP_EVENT_S0IX_SUSPEND = 3,
- HOST_SLEEP_EVENT_S0IX_RESUME = 4,
- /* S3 suspend with additional enabled wake sources */
- HOST_SLEEP_EVENT_S3_WAKEABLE_SUSPEND = 5,
+ HOST_SLEEP_EVENT_S0IX_RESUME = 4
};
-struct ec_params_host_sleep_event {
- uint8_t sleep_event;
-} __ec_align1;
-
-/*
- * Use a default timeout value (CONFIG_SLEEP_TIMEOUT_MS) for detecting sleep
- * transition failures
- */
-#define EC_HOST_SLEEP_TIMEOUT_DEFAULT 0
-
-/* Disable timeout detection for this sleep transition */
-#define EC_HOST_SLEEP_TIMEOUT_INFINITE 0xFFFF
-
-struct ec_params_host_sleep_event_v1 {
- /* The type of sleep being entered or exited. */
+struct __ec_align1 ec_params_host_sleep_event {
uint8_t sleep_event;
-
- /* Padding */
- uint8_t reserved;
- union {
- /* Parameters that apply for suspend messages. */
- struct {
- /*
- * The timeout in milliseconds between when this message
- * is received and when the EC will declare sleep
- * transition failure if the sleep signal is not
- * asserted.
- */
- uint16_t sleep_timeout_ms;
- } suspend_params;
-
- /* No parameters for non-suspend messages. */
- };
-} __ec_align2;
-
-/* A timeout occurred when this bit is set */
-#define EC_HOST_RESUME_SLEEP_TIMEOUT 0x80000000
-
-/*
- * The mask defining which bits correspond to the number of sleep transitions,
- * as well as the maximum number of suspend line transitions that will be
- * reported back to the host.
- */
-#define EC_HOST_RESUME_SLEEP_TRANSITIONS_MASK 0x7FFFFFFF
-
-struct ec_response_host_sleep_event_v1 {
- union {
- /* Response fields that apply for resume messages. */
- struct {
- /*
- * The number of sleep power signal transitions that
- * occurred since the suspend message. The high bit
- * indicates a timeout occurred.
- */
- uint32_t sleep_transitions;
- } resume_response;
-
- /* No response fields for non-resume messages. */
- };
-} __ec_align4;
+};
/*****************************************************************************/
/* Device events */
@@ -5315,7 +3698,6 @@ enum ec_device_event {
EC_DEVICE_EVENT_TRACKPAD,
EC_DEVICE_EVENT_DSP,
EC_DEVICE_EVENT_WIFI,
- EC_DEVICE_EVENT_WLC,
};
enum ec_device_event_param {
@@ -5327,57 +3709,51 @@ enum ec_device_event_param {
EC_DEVICE_EVENT_PARAM_SET_ENABLED_EVENTS,
};
-#define EC_DEVICE_EVENT_MASK(event_code) BIT(event_code % 32)
+#define EC_DEVICE_EVENT_MASK(event_code) (1UL << (event_code % 32))
-struct ec_params_device_event {
+struct __ec_align_size1 ec_params_device_event {
uint32_t event_mask;
uint8_t param;
-} __ec_align_size1;
+};
-struct ec_response_device_event {
+struct __ec_align4 ec_response_device_event {
uint32_t event_mask;
-} __ec_align4;
+};
/*****************************************************************************/
-/* Get s0ix counter */
-#define EC_CMD_GET_S0IX_COUNTER 0x00AB
-
-/* Flag use to reset the counter */
-#define EC_S0IX_COUNTER_RESET 0x1
-
-struct ec_params_s0ix_cnt {
- /* If EC_S0IX_COUNTER_RESET then reset otherwise get the counter */
- uint32_t flags;
-} __ec_align4;
+/* Smart battery pass-through */
-struct ec_response_s0ix_cnt {
- /* Value of the s0ix_counter */
- uint32_t s0ix_counter;
-} __ec_align4;
+/* Get / Set 16-bit smart battery registers */
+#define EC_CMD_SB_READ_WORD 0x00B0
+#define EC_CMD_SB_WRITE_WORD 0x00B1
-/*****************************************************************************/
-/* Ask the EC for sleep_signal_transitions without needing to send a
- * HOST_SLEEP_EVENT command, which this command is related to.
- * Note: EC_CMD_CONSOLE_PRINT has value 0x00AC, so skip over it.
+/* Get / Set string smart battery parameters
+ * formatted as SMBUS "block".
*/
-#define EC_CMD_HOST_SLEEP_SIGNAL_TRANSITIONS 0x00AD
+#define EC_CMD_SB_READ_BLOCK 0x00B2
+#define EC_CMD_SB_WRITE_BLOCK 0x00B3
-struct ec_response_host_sleep_signal_transitions {
- uint32_t sleep_signal_transitions;
-} __ec_align4;
+struct __ec_align1 ec_params_sb_rd {
+ uint8_t reg;
+};
-/*****************************************************************************/
-/* Smart battery pass-through */
+struct __ec_align2 ec_response_sb_rd_word {
+ uint16_t value;
+};
-/* Get / Set 16-bit smart battery registers - OBSOLETE */
-#define EC_CMD_SB_READ_WORD 0x00B0
-#define EC_CMD_SB_WRITE_WORD 0x00B1
+struct __ec_align1 ec_params_sb_wr_word {
+ uint8_t reg;
+ uint16_t value;
+};
-/* Get / Set string smart battery parameters
- * formatted as SMBUS "block". - OBSOLETE
- */
-#define EC_CMD_SB_READ_BLOCK 0x00B2
-#define EC_CMD_SB_WRITE_BLOCK 0x00B3
+struct __ec_align1 ec_response_sb_rd_block {
+ uint8_t data[32];
+};
+
+struct __ec_align1 ec_params_sb_wr_block {
+ uint8_t reg;
+ uint16_t data[32];
+};
/*****************************************************************************/
/* Battery vendor parameters
@@ -5395,459 +3771,110 @@ enum ec_battery_vendor_param_mode {
BATTERY_VENDOR_PARAM_MODE_SET,
};
-struct ec_params_battery_vendor_param {
+struct __ec_align_size1 ec_params_battery_vendor_param {
uint32_t param;
uint32_t value;
uint8_t mode;
-} __ec_align_size1;
+};
-struct ec_response_battery_vendor_param {
+struct __ec_align4 ec_response_battery_vendor_param {
uint32_t value;
-} __ec_align4;
-
-/*****************************************************************************/
-/*
- * Smart Battery Firmware Update Command - OBSOLETE
- */
-#define EC_CMD_SB_FW_UPDATE 0x00B5
-
-/*
- * Entering Verified Boot Mode Command
- * Default mode is VBOOT_MODE_NORMAL if EC did not receive this command.
- * Valid Modes are: normal, developer, and recovery.
- *
- * EC no longer needs to know what mode vboot has entered,
- * so this command is deprecated. (See chromium:1014379.)
- */
-#define EC_CMD_ENTERING_MODE 0x00B6
-
-struct ec_params_entering_mode {
- int vboot_mode;
-} __ec_align4;
-
-#define VBOOT_MODE_NORMAL 0
-#define VBOOT_MODE_DEVELOPER 1
-#define VBOOT_MODE_RECOVERY 2
-
-/*****************************************************************************/
-/*
- * I2C passthru protection command: Protects I2C tunnels against access on
- * certain addresses (board-specific).
- */
-#define EC_CMD_I2C_PASSTHRU_PROTECT 0x00B7
-
-enum ec_i2c_passthru_protect_subcmd {
- EC_CMD_I2C_PASSTHRU_PROTECT_STATUS = 0,
- EC_CMD_I2C_PASSTHRU_PROTECT_ENABLE = 1,
- EC_CMD_I2C_PASSTHRU_PROTECT_ENABLE_TCPCS = 2,
};
-struct ec_params_i2c_passthru_protect {
- uint8_t subcmd;
- uint8_t port; /* I2C port number */
-} __ec_align1;
-
-struct ec_response_i2c_passthru_protect {
- uint8_t status; /* Status flags (0: unlocked, 1: locked) */
-} __ec_align1;
-
/*****************************************************************************/
/*
- * HDMI CEC commands
- *
- * These commands are for sending and receiving message via HDMI CEC
- */
-
-#define EC_CEC_MAX_PORTS 16
-
-#define MAX_CEC_MSG_LEN 16
-
-/*
- * Helper macros for packing/unpacking cec_events.
- * bits[27:0] : bitmask of events from enum mkbp_cec_event
- * bits[31:28]: port number
- */
-#define EC_MKBP_EVENT_CEC_PACK(events, port) \
- (((events) & GENMASK(27, 0)) | (((port) & 0xf) << 28))
-#define EC_MKBP_EVENT_CEC_GET_EVENTS(event) ((event) & GENMASK(27, 0))
-#define EC_MKBP_EVENT_CEC_GET_PORT(event) (((event) >> 28) & 0xf)
-
-/* CEC message from the AP to be written on the CEC bus */
-#define EC_CMD_CEC_WRITE_MSG 0x00B8
-
-/**
- * struct ec_params_cec_write - Message to write to the CEC bus
- * @msg: message content to write to the CEC bus
+ * Smart Battery Firmware Update Commands
*/
-struct ec_params_cec_write {
- uint8_t msg[MAX_CEC_MSG_LEN];
-} __ec_align1;
-
-/**
- * struct ec_params_cec_write_v1 - Message to write to the CEC bus
- * @port: CEC port to write the message on
- * @msg_len: length of msg in bytes
- * @msg: message content to write to the CEC bus
- */
-struct ec_params_cec_write_v1 {
- uint8_t port;
- uint8_t msg_len;
- uint8_t msg[MAX_CEC_MSG_LEN];
-} __ec_align1;
-
-/* CEC message read from a CEC bus reported back to the AP */
-#define EC_CMD_CEC_READ_MSG 0x00B9
-
-/**
- * struct ec_params_cec_read - Read a message from the CEC bus
- * @port: CEC port to read a message on
- */
-struct ec_params_cec_read {
- uint8_t port;
-} __ec_align1;
-
-/**
- * struct ec_response_cec_read - Message read from the CEC bus
- * @msg_len: length of msg in bytes
- * @msg: message content read from the CEC bus
- */
-struct ec_response_cec_read {
- uint8_t msg_len;
- uint8_t msg[MAX_CEC_MSG_LEN];
-} __ec_align1;
-
-/* Set various CEC parameters */
-#define EC_CMD_CEC_SET 0x00BA
-
-/**
- * struct ec_params_cec_set - CEC parameters set
- * @cmd: parameter type, can be CEC_CMD_ENABLE or CEC_CMD_LOGICAL_ADDRESS
- * @port: CEC port to set the parameter on
- * @val: in case cmd is CEC_CMD_ENABLE, this field can be 0 to disable CEC
- * or 1 to enable CEC functionality, in case cmd is
- * CEC_CMD_LOGICAL_ADDRESS, this field encodes the requested logical
- * address between 0 and 15 or 0xff to unregister
- */
-struct ec_params_cec_set {
- uint8_t cmd : 4; /* enum cec_command */
- uint8_t port : 4;
- uint8_t val;
-} __ec_align1;
-
-/* Read various CEC parameters */
-#define EC_CMD_CEC_GET 0x00BB
-
-/**
- * struct ec_params_cec_get - CEC parameters get
- * @cmd: parameter type, can be CEC_CMD_ENABLE or CEC_CMD_LOGICAL_ADDRESS
- * @port: CEC port to get the parameter on
- */
-struct ec_params_cec_get {
- uint8_t cmd : 4; /* enum cec_command */
- uint8_t port : 4;
-} __ec_align1;
-
-/**
- * struct ec_response_cec_get - CEC parameters get response
- * @val: in case cmd was CEC_CMD_ENABLE, this field will 0 if CEC is
- * disabled or 1 if CEC functionality is enabled,
- * in case cmd was CEC_CMD_LOGICAL_ADDRESS, this will encode the
- * configured logical address between 0 and 15 or 0xff if unregistered
- */
-struct ec_response_cec_get {
- uint8_t val;
-} __ec_align1;
-
-/* Get the number of CEC ports */
-#define EC_CMD_CEC_PORT_COUNT 0x00C1
-
-/**
- * struct ec_response_cec_port_count - CEC port count response
- * @port_count: number of CEC ports
- */
-struct ec_response_cec_port_count {
- uint8_t port_count;
-} __ec_align1;
-
-/* CEC parameters command */
-enum cec_command {
- /* CEC reading, writing and events enable */
- CEC_CMD_ENABLE,
- /* CEC logical address */
- CEC_CMD_LOGICAL_ADDRESS,
-};
-
-/* Events from CEC to AP */
-enum mkbp_cec_event {
- /* Outgoing message was acknowledged by a follower */
- EC_MKBP_CEC_SEND_OK = BIT(0),
- /* Outgoing message was not acknowledged */
- EC_MKBP_CEC_SEND_FAILED = BIT(1),
- /* Incoming message can be read out by AP */
- EC_MKBP_CEC_HAVE_DATA = BIT(2),
-};
-
-/*****************************************************************************/
-
-/* Commands for audio codec. */
-#define EC_CMD_EC_CODEC 0x00BC
-
-enum ec_codec_subcmd {
- EC_CODEC_GET_CAPABILITIES = 0x0,
- EC_CODEC_GET_SHM_ADDR = 0x1,
- EC_CODEC_SET_SHM_ADDR = 0x2,
- EC_CODEC_SUBCMD_COUNT,
-};
-
-enum ec_codec_cap {
- EC_CODEC_CAP_WOV_AUDIO_SHM = 0,
- EC_CODEC_CAP_WOV_LANG_SHM = 1,
- EC_CODEC_CAP_LAST = 32,
-};
-
-enum ec_codec_shm_id {
- EC_CODEC_SHM_ID_WOV_AUDIO = 0x0,
- EC_CODEC_SHM_ID_WOV_LANG = 0x1,
- EC_CODEC_SHM_ID_LAST,
-};
+#define EC_CMD_SB_FW_UPDATE 0x00B5
-enum ec_codec_shm_type {
- EC_CODEC_SHM_TYPE_EC_RAM = 0x0,
- EC_CODEC_SHM_TYPE_SYSTEM_RAM = 0x1,
+enum ec_sb_fw_update_subcmd {
+ EC_SB_FW_UPDATE_PREPARE = 0x0,
+ EC_SB_FW_UPDATE_INFO = 0x1, /*query sb info */
+ EC_SB_FW_UPDATE_BEGIN = 0x2, /*check if protected */
+ EC_SB_FW_UPDATE_WRITE = 0x3, /*check if protected */
+ EC_SB_FW_UPDATE_END = 0x4,
+ EC_SB_FW_UPDATE_STATUS = 0x5,
+ EC_SB_FW_UPDATE_PROTECT = 0x6,
+ EC_SB_FW_UPDATE_MAX = 0x7,
};
-struct __ec_align1 ec_param_ec_codec_get_shm_addr {
- uint8_t shm_id;
- uint8_t reserved[3];
-};
+#define SB_FW_UPDATE_CMD_WRITE_BLOCK_SIZE 32
+#define SB_FW_UPDATE_CMD_STATUS_SIZE 2
+#define SB_FW_UPDATE_CMD_INFO_SIZE 8
-struct __ec_align4 ec_param_ec_codec_set_shm_addr {
- uint64_t phys_addr;
- uint32_t len;
- uint8_t shm_id;
- uint8_t reserved[3];
+struct __ec_align4 ec_sb_fw_update_header {
+ uint16_t subcmd; /* enum ec_sb_fw_update_subcmd */
+ uint16_t fw_id; /* firmware id */
};
-struct __ec_align4 ec_param_ec_codec {
- uint8_t cmd; /* enum ec_codec_subcmd */
- uint8_t reserved[3];
-
+struct __ec_align4 ec_params_sb_fw_update {
+ struct ec_sb_fw_update_header hdr;
union {
- struct ec_param_ec_codec_get_shm_addr get_shm_addr_param;
- struct ec_param_ec_codec_set_shm_addr set_shm_addr_param;
- };
-};
-
-struct __ec_align4 ec_response_ec_codec_get_capabilities {
- uint32_t capabilities;
-};
-
-struct __ec_align4 ec_response_ec_codec_get_shm_addr {
- uint64_t phys_addr;
- uint32_t len;
- uint8_t type;
- uint8_t reserved[3];
-};
-
-/*****************************************************************************/
-
-/* Commands for DMIC on audio codec. */
-#define EC_CMD_EC_CODEC_DMIC 0x00BD
-
-enum ec_codec_dmic_subcmd {
- EC_CODEC_DMIC_GET_MAX_GAIN = 0x0,
- EC_CODEC_DMIC_SET_GAIN_IDX = 0x1,
- EC_CODEC_DMIC_GET_GAIN_IDX = 0x2,
- EC_CODEC_DMIC_SUBCMD_COUNT,
-};
-
-enum ec_codec_dmic_channel {
- EC_CODEC_DMIC_CHANNEL_0 = 0x0,
- EC_CODEC_DMIC_CHANNEL_1 = 0x1,
- EC_CODEC_DMIC_CHANNEL_2 = 0x2,
- EC_CODEC_DMIC_CHANNEL_3 = 0x3,
- EC_CODEC_DMIC_CHANNEL_4 = 0x4,
- EC_CODEC_DMIC_CHANNEL_5 = 0x5,
- EC_CODEC_DMIC_CHANNEL_6 = 0x6,
- EC_CODEC_DMIC_CHANNEL_7 = 0x7,
- EC_CODEC_DMIC_CHANNEL_COUNT,
-};
-
-struct __ec_align1 ec_param_ec_codec_dmic_set_gain_idx {
- uint8_t channel; /* enum ec_codec_dmic_channel */
- uint8_t gain;
- uint8_t reserved[2];
-};
-
-struct __ec_align1 ec_param_ec_codec_dmic_get_gain_idx {
- uint8_t channel; /* enum ec_codec_dmic_channel */
- uint8_t reserved[3];
-};
-
-struct __ec_align4 ec_param_ec_codec_dmic {
- uint8_t cmd; /* enum ec_codec_dmic_subcmd */
- uint8_t reserved[3];
+ /* EC_SB_FW_UPDATE_PREPARE = 0x0 */
+ /* EC_SB_FW_UPDATE_INFO = 0x1 */
+ /* EC_SB_FW_UPDATE_BEGIN = 0x2 */
+ /* EC_SB_FW_UPDATE_END = 0x4 */
+ /* EC_SB_FW_UPDATE_STATUS = 0x5 */
+ /* EC_SB_FW_UPDATE_PROTECT = 0x6 */
+ struct __ec_align4 {
+ /* no args */
+ } dummy;
- union {
- struct ec_param_ec_codec_dmic_set_gain_idx set_gain_idx_param;
- struct ec_param_ec_codec_dmic_get_gain_idx get_gain_idx_param;
+ /* EC_SB_FW_UPDATE_WRITE = 0x3 */
+ struct __ec_align4 {
+ uint8_t data[SB_FW_UPDATE_CMD_WRITE_BLOCK_SIZE];
+ } write;
};
};
-struct __ec_align1 ec_response_ec_codec_dmic_get_max_gain {
- uint8_t max_gain;
-};
-
-struct __ec_align1 ec_response_ec_codec_dmic_get_gain_idx {
- uint8_t gain;
-};
-
-/*****************************************************************************/
-
-/* Commands for I2S RX on audio codec. */
-
-#define EC_CMD_EC_CODEC_I2S_RX 0x00BE
-
-enum ec_codec_i2s_rx_subcmd {
- EC_CODEC_I2S_RX_ENABLE = 0x0,
- EC_CODEC_I2S_RX_DISABLE = 0x1,
- EC_CODEC_I2S_RX_SET_SAMPLE_DEPTH = 0x2,
- EC_CODEC_I2S_RX_SET_DAIFMT = 0x3,
- EC_CODEC_I2S_RX_SET_BCLK = 0x4,
- EC_CODEC_I2S_RX_RESET = 0x5,
- EC_CODEC_I2S_RX_SUBCMD_COUNT,
-};
-
-enum ec_codec_i2s_rx_sample_depth {
- EC_CODEC_I2S_RX_SAMPLE_DEPTH_16 = 0x0,
- EC_CODEC_I2S_RX_SAMPLE_DEPTH_24 = 0x1,
- EC_CODEC_I2S_RX_SAMPLE_DEPTH_COUNT,
-};
-
-enum ec_codec_i2s_rx_daifmt {
- EC_CODEC_I2S_RX_DAIFMT_I2S = 0x0,
- EC_CODEC_I2S_RX_DAIFMT_RIGHT_J = 0x1,
- EC_CODEC_I2S_RX_DAIFMT_LEFT_J = 0x2,
- EC_CODEC_I2S_RX_DAIFMT_COUNT,
-};
-
-struct __ec_align1 ec_param_ec_codec_i2s_rx_set_sample_depth {
- uint8_t depth;
- uint8_t reserved[3];
-};
-
-struct __ec_align1 ec_param_ec_codec_i2s_rx_set_gain {
- uint8_t left;
- uint8_t right;
- uint8_t reserved[2];
-};
-
-struct __ec_align1 ec_param_ec_codec_i2s_rx_set_daifmt {
- uint8_t daifmt;
- uint8_t reserved[3];
-};
-
-struct __ec_align4 ec_param_ec_codec_i2s_rx_set_bclk {
- uint32_t bclk;
-};
-
-struct __ec_align4 ec_param_ec_codec_i2s_rx {
- uint8_t cmd; /* enum ec_codec_i2s_rx_subcmd */
- uint8_t reserved[3];
-
+struct __ec_align1 ec_response_sb_fw_update {
union {
- struct ec_param_ec_codec_i2s_rx_set_sample_depth
- set_sample_depth_param;
- struct ec_param_ec_codec_i2s_rx_set_daifmt set_daifmt_param;
- struct ec_param_ec_codec_i2s_rx_set_bclk set_bclk_param;
- };
-};
-
-/*****************************************************************************/
-/* Commands for WoV on audio codec. */
-
-#define EC_CMD_EC_CODEC_WOV 0x00BF
+ /* EC_SB_FW_UPDATE_INFO = 0x1 */
+ struct __ec_align1 {
+ uint8_t data[SB_FW_UPDATE_CMD_INFO_SIZE];
+ } info;
-enum ec_codec_wov_subcmd {
- EC_CODEC_WOV_SET_LANG = 0x0,
- EC_CODEC_WOV_SET_LANG_SHM = 0x1,
- EC_CODEC_WOV_GET_LANG = 0x2,
- EC_CODEC_WOV_ENABLE = 0x3,
- EC_CODEC_WOV_DISABLE = 0x4,
- EC_CODEC_WOV_READ_AUDIO = 0x5,
- EC_CODEC_WOV_READ_AUDIO_SHM = 0x6,
- EC_CODEC_WOV_SUBCMD_COUNT,
+ /* EC_SB_FW_UPDATE_STATUS = 0x5 */
+ struct __ec_align1 {
+ uint8_t data[SB_FW_UPDATE_CMD_STATUS_SIZE];
+ } status;
+ };
};
/*
- * @hash is SHA256 of the whole language model.
- * @total_len indicates the length of whole language model.
- * @offset is the cursor from the beginning of the model.
- * @buf is the packet buffer.
- * @len denotes how many bytes in the buf.
+ * Entering Verified Boot Mode Command
+ * Default mode is VBOOT_MODE_NORMAL if EC did not receive this command.
+ * Valid Modes are: normal, developer, and recovery.
*/
-struct __ec_align4 ec_param_ec_codec_wov_set_lang {
- uint8_t hash[32];
- uint32_t total_len;
- uint32_t offset;
- uint8_t buf[128];
- uint32_t len;
-};
-
-struct __ec_align4 ec_param_ec_codec_wov_set_lang_shm {
- uint8_t hash[32];
- uint32_t total_len;
-};
-
-struct __ec_align4 ec_param_ec_codec_wov {
- uint8_t cmd; /* enum ec_codec_wov_subcmd */
- uint8_t reserved[3];
-
- union {
- struct ec_param_ec_codec_wov_set_lang set_lang_param;
- struct ec_param_ec_codec_wov_set_lang_shm set_lang_shm_param;
- };
-};
-
-struct __ec_align4 ec_response_ec_codec_wov_get_lang {
- uint8_t hash[32];
-};
+#define EC_CMD_ENTERING_MODE 0x00B6
-struct __ec_align4 ec_response_ec_codec_wov_read_audio {
- uint8_t buf[128];
- uint32_t len;
+struct __ec_align4 ec_params_entering_mode {
+ int vboot_mode;
};
-struct __ec_align4 ec_response_ec_codec_wov_read_audio_shm {
- uint32_t offset;
- uint32_t len;
-};
+#define VBOOT_MODE_NORMAL 0
+#define VBOOT_MODE_DEVELOPER 1
+#define VBOOT_MODE_RECOVERY 2
/*****************************************************************************/
-/* Commands for PoE PSE controller */
-
-#define EC_CMD_PSE 0x00C0
-
-enum ec_pse_subcmd {
- EC_PSE_STATUS = 0x0,
- EC_PSE_ENABLE = 0x1,
- EC_PSE_DISABLE = 0x2,
- EC_PSE_SUBCMD_COUNT,
-};
+/*
+ * I2C passthru protection command: Protects I2C tunnels against access on
+ * certain addresses (board-specific).
+ */
+#define EC_CMD_I2C_PASSTHRU_PROTECT 0x00B7
-struct __ec_align1 ec_params_pse {
- uint8_t cmd; /* enum ec_pse_subcmd */
- uint8_t port; /* PSE port */
+enum ec_i2c_passthru_protect_subcmd {
+ EC_CMD_I2C_PASSTHRU_PROTECT_STATUS = 0x0,
+ EC_CMD_I2C_PASSTHRU_PROTECT_ENABLE = 0x1,
};
-enum ec_pse_status {
- EC_PSE_STATUS_DISABLED = 0x0,
- EC_PSE_STATUS_ENABLED = 0x1,
- EC_PSE_STATUS_POWERED = 0x2,
+struct __ec_align1 ec_params_i2c_passthru_protect {
+ uint8_t subcmd;
+ uint8_t port; /* I2C port number */
};
-struct __ec_align1 ec_response_pse_status {
- uint8_t status; /* enum ec_pse_status */
+struct __ec_align1 ec_response_i2c_passthru_protect {
+ uint8_t status; /* Status flags (0: unlocked, 1: locked) */
};
/*****************************************************************************/
@@ -5861,33 +3888,25 @@ struct __ec_align1 ec_response_pse_status {
/* Command */
enum ec_reboot_cmd {
- EC_REBOOT_CANCEL = 0, /* Cancel a pending reboot */
- EC_REBOOT_JUMP_RO = 1, /* Jump to RO without rebooting */
- EC_REBOOT_JUMP_RW = 2, /* Jump to active RW without rebooting */
+ EC_REBOOT_CANCEL = 0, /* Cancel a pending reboot */
+ EC_REBOOT_JUMP_RO = 1, /* Jump to RO without rebooting */
+ EC_REBOOT_JUMP_RW = 2, /* Jump to RW without rebooting */
/* (command 3 was jump to RW-B) */
- EC_REBOOT_COLD = 4, /* Cold-reboot */
- EC_REBOOT_DISABLE_JUMP = 5, /* Disable jump until next reboot */
- EC_REBOOT_HIBERNATE = 6, /* Hibernate EC */
- /*
- * DEPRECATED: Hibernate EC and clears AP_IDLE flag.
- * Use EC_REBOOT_HIBERNATE and EC_REBOOT_FLAG_CLEAR_AP_IDLE, instead.
- */
- EC_REBOOT_HIBERNATE_CLEAR_AP_OFF = 7,
- EC_REBOOT_COLD_AP_OFF = 8, /* Cold-reboot and don't boot AP */
- EC_REBOOT_NO_OP = 9, /* Do nothing but apply the flags. */
+ EC_REBOOT_COLD = 4, /* Cold-reboot */
+ EC_REBOOT_DISABLE_JUMP = 5, /* Disable jump until next reboot */
+ EC_REBOOT_HIBERNATE = 6, /* Hibernate EC */
+ EC_REBOOT_HIBERNATE_CLEAR_AP_OFF = 7, /* and clears AP_OFF flag */
};
/* Flags for ec_params_reboot_ec.reboot_flags */
-#define EC_REBOOT_FLAG_IMMEDIATE 0 /* Trigger Cold Reset */
-#define EC_REBOOT_FLAG_RESERVED0 BIT(0) /* Was recovery request */
-#define EC_REBOOT_FLAG_ON_AP_SHUTDOWN BIT(1) /* Reboot after AP shutdown */
-#define EC_REBOOT_FLAG_SWITCH_RW_SLOT BIT(2) /* Switch RW slot */
-#define EC_REBOOT_FLAG_CLEAR_AP_IDLE BIT(3) /* Clear AP_IDLE flag */
+#define EC_REBOOT_FLAG_RESERVED0 (1 << 0) /* Was recovery request */
+#define EC_REBOOT_FLAG_ON_AP_SHUTDOWN (1 << 1) /* Reboot after AP shutdown */
+#define EC_REBOOT_FLAG_SWITCH_RW_SLOT (1 << 2) /* Switch RW slot */
-struct ec_params_reboot_ec {
- uint8_t cmd; /* enum ec_reboot_cmd */
- uint8_t flags; /* See EC_REBOOT_FLAG_* */
-} __ec_align1;
+struct __ec_align1 ec_params_reboot_ec {
+ uint8_t cmd; /* enum ec_reboot_cmd */
+ uint8_t flags; /* See EC_REBOOT_FLAG_* */
+};
/*
* Get information on last EC panic.
@@ -5897,21 +3916,6 @@ struct ec_params_reboot_ec {
*/
#define EC_CMD_GET_PANIC_INFO 0x00D3
-struct ec_params_get_panic_info_v1 {
- /* Do not modify PANIC_DATA_FLAG_OLD_HOSTCMD when reading panic info */
- uint8_t preserve_old_hostcmd_flag;
-} __ec_align1;
-
-struct ec_params_get_panic_info_v2 {
- /* Do not modify PANIC_DATA_FLAG_OLD_HOSTCMD when reading panic info */
- uint8_t preserve_old_hostcmd_flag;
-
- /* Read panic_data struct from this offset.
- * Signal end of data with empty success.
- */
- uint16_t read_offset;
-} __ec_align1;
-
/*****************************************************************************/
/*
* Special commands
@@ -5929,7 +3933,7 @@ struct ec_params_get_panic_info_v2 {
*
* Use EC_CMD_REBOOT_EC to reboot the EC more politely.
*/
-#define EC_CMD_REBOOT 0x00D1 /* Think "die" */
+#define EC_CMD_REBOOT 0x00D1 /* Think "die" */
/*
* Resend last response (not supported on LPC).
@@ -5952,122 +3956,6 @@ struct ec_params_get_panic_info_v2 {
*/
#define EC_CMD_VERSION0 0x00DC
-/*
- * Memory Dump Commands
- *
- * Since the HOSTCMD response size is limited, depending on the
- * protocol, retrieving a memory dump is split into 3 commands.
- *
- * 1. EC_CMD_MEMORY_DUMP_GET_METADATA returns the number of memory dump entries,
- * and the total dump size.
- * 2. EC_CMD_MEMORY_DUMP_GET_ENTRY_INFO returns the address and size for a given
- * memory dump entry index.
- * 3. EC_CMD_MEMORY_DUMP_READ_MEMORY returns the actual memory at a given
- * address. The address and size must be within the bounds of the given
- * memory dump entry index. Each response is limited to the max response size
- * of the host protocol, so this may need to be called repeatedly to retrieve
- * the entire memory dump entry.
- *
- * Memory entries may overlap and may be out of order.
- * The host should check for overlaps to optimize transfer rate.
- */
-#define EC_CMD_MEMORY_DUMP_GET_METADATA 0x00DD
-struct ec_response_memory_dump_get_metadata {
- uint16_t memory_dump_entry_count;
- uint32_t memory_dump_total_size;
-} __ec_align4;
-
-#define EC_CMD_MEMORY_DUMP_GET_ENTRY_INFO 0x00DE
-struct ec_params_memory_dump_get_entry_info {
- uint16_t memory_dump_entry_index;
-} __ec_align4;
-
-struct ec_response_memory_dump_get_entry_info {
- uint32_t address;
- uint32_t size;
-} __ec_align4;
-
-#define EC_CMD_MEMORY_DUMP_READ_MEMORY 0x00DF
-
-struct ec_params_memory_dump_read_memory {
- uint16_t memory_dump_entry_index;
- uint32_t address;
- uint32_t size;
-} __ec_align4;
-
-#define EC_CMD_PANIC_LOG_INFO 0x00E0
-
-/*
- * Parameters for configuring the panic log.
- * Freeze and unfreeze are mutually exclusive.
- */
-struct ec_params_panic_log_info {
- /* Reset panic log */
- uint8_t reset;
- /* Freeze panic log */
- uint8_t freeze;
- /* Unfreeze panic log */
- uint8_t unfreeze;
-} __ec_align1;
-
-/*
- * Returns the panic log info before applying the configuration
- * in ec_params_panic_log_info.
- */
-struct ec_response_panic_log_info {
- uint32_t version;
- uint32_t capacity;
- uint32_t length;
- uint8_t valid;
- uint8_t frozen;
-} __ec_align4;
-
-#define EC_CMD_PANIC_LOG_READ 0x00E1
-
-/*
- * Read from panic log at given byte offset. Will read up to the end of the
- * panic log or response max. Use EC_CMD_PANIC_LOG_INFO command to freeze
- * the log and get the length before reading.
- */
-struct ec_params_panic_log_read {
- uint32_t offset;
-} __ec_align4;
-
-/*
- * EC_CMD_MEMORY_DUMP_READ_MEMORY response buffer is written directly into
- * host_cmd_handler_args.response and host_cmd_handler_args.response_size.
- */
-
-/*
- * Enter bootloader mode
- *
- * This command requests EC to enter bootloader mode.
- */
-#define EC_CMD_ENTER_BOOTLOADER 0x00E2
-
-struct ec_params_enter_bootloader {
- /* Mode to enter bootloader. Chip specific value. Can be unused. */
- uint8_t mode;
-} __ec_align1;
-
-#define EC_CMD_HOSTCMD_WATCHDOG_INFO 0x00E3
-
-struct ec_params_hostcmd_watchdog_info {
- uint8_t reset_stats;
-} __ec_align1;
-
-struct ec_response_hostcmd_watchdog_info {
- /* Static watchdog info */
- int32_t watchdog_period_ms;
- int32_t watchdog_warning_period_ms;
- int32_t watchdog_reload_period_nominal_ms;
- /* Dynamic watchdog stats */
- int32_t watchdog_reload_period_max_ms;
- int64_t watchdog_reload_period_max_ts_ms;
- uint32_t watchdog_reload_count;
- int64_t watchdog_stats_elapsed_ms;
-} __ec_align4;
-
/*****************************************************************************/
/*
* PD commands
@@ -6080,77 +3968,51 @@ struct ec_response_hostcmd_watchdog_info {
#define EC_VER_PD_EXCHANGE_STATUS 2
enum pd_charge_state {
- /* Don't change charge state */
- PD_CHARGE_NO_CHANGE = 0,
-
- /* No charging allowed */
- PD_CHARGE_NONE,
-
- /* 5V charging only */
- PD_CHARGE_5V,
-
- /* Charge at max voltage */
- PD_CHARGE_MAX,
+ PD_CHARGE_NO_CHANGE = 0, /* Don't change charge state */
+ PD_CHARGE_NONE, /* No charging allowed */
+ PD_CHARGE_5V, /* 5V charging only */
+ PD_CHARGE_MAX /* Charge at max voltage */
};
/* Status of EC being sent to PD */
-#define EC_STATUS_HIBERNATING BIT(0)
-
-struct ec_params_pd_status {
- /* EC status */
- uint8_t status;
+#define EC_STATUS_HIBERNATING (1 << 0)
- /* battery state of charge */
- int8_t batt_soc;
-
- /* charging state (from enum pd_charge_state) */
- uint8_t charge_state;
-} __ec_align1;
+struct __ec_align1 ec_params_pd_status {
+ uint8_t status; /* EC status */
+ int8_t batt_soc; /* battery state of charge */
+ uint8_t charge_state; /* charging state (from enum pd_charge_state) */
+};
/* Status of PD being sent back to EC */
-#define PD_STATUS_HOST_EVENT BIT(0) /* Forward host event to AP */
-#define PD_STATUS_IN_RW BIT(1) /* Running RW image */
-#define PD_STATUS_JUMPED_TO_IMAGE BIT(2) /* Current image was jumped to */
-#define PD_STATUS_TCPC_ALERT_0 BIT(3) /* Alert active in port 0 TCPC */
-#define PD_STATUS_TCPC_ALERT_1 BIT(4) /* Alert active in port 1 TCPC */
-#define PD_STATUS_TCPC_ALERT_2 BIT(5) /* Alert active in port 2 TCPC */
-#define PD_STATUS_TCPC_ALERT_3 BIT(6) /* Alert active in port 3 TCPC */
-#define PD_STATUS_EC_INT_ACTIVE \
- (PD_STATUS_TCPC_ALERT_0 | PD_STATUS_TCPC_ALERT_1 | PD_STATUS_HOST_EVENT)
-struct ec_response_pd_status {
- /* input current limit */
- uint32_t curr_lim_ma;
-
- /* PD MCU status */
- uint16_t status;
-
- /* active charging port */
- int8_t active_charge_port;
-} __ec_align_size1;
+#define PD_STATUS_HOST_EVENT (1 << 0) /* Forward host event to AP */
+#define PD_STATUS_IN_RW (1 << 1) /* Running RW image */
+#define PD_STATUS_JUMPED_TO_IMAGE (1 << 2) /* Current image was jumped to */
+#define PD_STATUS_TCPC_ALERT_0 (1 << 3) /* Alert active in port 0 TCPC */
+#define PD_STATUS_TCPC_ALERT_1 (1 << 4) /* Alert active in port 1 TCPC */
+#define PD_STATUS_TCPC_ALERT_2 (1 << 5) /* Alert active in port 2 TCPC */
+#define PD_STATUS_TCPC_ALERT_3 (1 << 6) /* Alert active in port 3 TCPC */
+#define PD_STATUS_EC_INT_ACTIVE (PD_STATUS_TCPC_ALERT_0 | \
+ PD_STATUS_TCPC_ALERT_1 | \
+ PD_STATUS_HOST_EVENT)
+struct __ec_align_size1 ec_response_pd_status {
+ uint32_t curr_lim_ma; /* input current limit */
+ uint16_t status; /* PD MCU status */
+ int8_t active_charge_port; /* active charging port */
+};
/* AP to PD MCU host event status command, cleared on read */
#define EC_CMD_PD_HOST_EVENT_STATUS 0x0104
/* PD MCU host event status bits */
-#define PD_EVENT_UPDATE_DEVICE BIT(0)
-#define PD_EVENT_POWER_CHANGE BIT(1)
-#define PD_EVENT_IDENTITY_RECEIVED BIT(2)
-#define PD_EVENT_DATA_SWAP BIT(3)
-#define PD_EVENT_TYPEC BIT(4)
-#define PD_EVENT_PPM BIT(5)
-#define PD_EVENT_INIT BIT(6)
-
-struct ec_response_host_event_status {
- uint32_t status; /* PD MCU host event status */
-} __ec_align4;
+#define PD_EVENT_UPDATE_DEVICE (1 << 0)
+#define PD_EVENT_POWER_CHANGE (1 << 1)
+#define PD_EVENT_IDENTITY_RECEIVED (1 << 2)
+#define PD_EVENT_DATA_SWAP (1 << 3)
+struct __ec_align4 ec_response_host_event_status {
+ uint32_t status; /* PD MCU host event status */
+};
-/*
- * Set USB type-C port role and muxes
- *
- * Deprecated in favor of TYPEC_STATUS and TYPEC_CONTROL commands.
- *
- * TODO(b/169771803): TCPMv2: Remove EC_CMD_USB_PD_CONTROL
- */
+/* Set USB type-C port role and muxes */
#define EC_CMD_USB_PD_CONTROL 0x0101
enum usb_pd_control_role {
@@ -6159,8 +4021,7 @@ enum usb_pd_control_role {
USB_PD_CTRL_ROLE_TOGGLE_OFF = 2,
USB_PD_CTRL_ROLE_FORCE_SINK = 3,
USB_PD_CTRL_ROLE_FORCE_SOURCE = 4,
- USB_PD_CTRL_ROLE_FREEZE = 5,
- USB_PD_CTRL_ROLE_COUNT,
+ USB_PD_CTRL_ROLE_COUNT
};
enum usb_pd_control_mux {
@@ -6170,7 +4031,7 @@ enum usb_pd_control_mux {
USB_PD_CTRL_MUX_DP = 3,
USB_PD_CTRL_MUX_DOCK = 4,
USB_PD_CTRL_MUX_AUTO = 5,
- USB_PD_CTRL_MUX_COUNT,
+ USB_PD_CTRL_MUX_COUNT
};
enum usb_pd_control_swap {
@@ -6178,97 +4039,57 @@ enum usb_pd_control_swap {
USB_PD_CTRL_SWAP_DATA = 1,
USB_PD_CTRL_SWAP_POWER = 2,
USB_PD_CTRL_SWAP_VCONN = 3,
- USB_PD_CTRL_SWAP_COUNT,
+ USB_PD_CTRL_SWAP_COUNT
};
-struct ec_params_usb_pd_control {
+struct __ec_align1 ec_params_usb_pd_control {
uint8_t port;
uint8_t role;
uint8_t mux;
uint8_t swap;
-} __ec_align1;
+};
-#define PD_CTRL_RESP_ENABLED_COMMS BIT(0) /* Communication enabled */
-#define PD_CTRL_RESP_ENABLED_CONNECTED BIT(1) /* Device connected */
-#define PD_CTRL_RESP_ENABLED_PD_CAPABLE BIT(2) /* Partner is PD capable */
+#define PD_CTRL_RESP_ENABLED_COMMS (1 << 0) /* Communication enabled */
+#define PD_CTRL_RESP_ENABLED_CONNECTED (1 << 1) /* Device connected */
+#define PD_CTRL_RESP_ENABLED_PD_CAPABLE (1 << 2) /* Partner is PD capable */
-#define PD_CTRL_RESP_ROLE_POWER BIT(0) /* 0=SNK/1=SRC */
-#define PD_CTRL_RESP_ROLE_DATA BIT(1) /* 0=UFP/1=DFP */
-#define PD_CTRL_RESP_ROLE_VCONN BIT(2) /* Vconn status */
-#define PD_CTRL_RESP_ROLE_DR_POWER BIT(3) /* Partner is dualrole power */
-#define PD_CTRL_RESP_ROLE_DR_DATA BIT(4) /* Partner is dualrole data */
-#define PD_CTRL_RESP_ROLE_USB_COMM BIT(5) /* Partner USB comm capable */
-/* Partner unconstrained power */
-#define PD_CTRL_RESP_ROLE_UNCONSTRAINED BIT(6)
+#define PD_CTRL_RESP_ROLE_POWER (1 << 0) /* 0=SNK/1=SRC */
+#define PD_CTRL_RESP_ROLE_DATA (1 << 1) /* 0=UFP/1=DFP */
+#define PD_CTRL_RESP_ROLE_VCONN (1 << 2) /* Vconn status */
+#define PD_CTRL_RESP_ROLE_DR_POWER (1 << 3) /* Partner is dualrole power */
+#define PD_CTRL_RESP_ROLE_DR_DATA (1 << 4) /* Partner is dualrole data */
+#define PD_CTRL_RESP_ROLE_USB_COMM (1 << 5) /* Partner USB comm capable */
+#define PD_CTRL_RESP_ROLE_EXT_POWERED (1 << 6) /* Partner externally powerd */
-struct ec_response_usb_pd_control {
+struct __ec_align1 ec_response_usb_pd_control {
uint8_t enabled;
uint8_t role;
uint8_t polarity;
uint8_t state;
-} __ec_align1;
-
-struct ec_response_usb_pd_control_v1 {
- uint8_t enabled;
- uint8_t role;
- uint8_t polarity;
- char state[32];
-} __ec_align1;
-
-/* Possible port partner connections based on CC line states */
-enum pd_cc_states {
- PD_CC_NONE = 0, /* No port partner attached */
-
- /* From DFP perspective */
- PD_CC_UFP_NONE = 1, /* No UFP accessory connected */
- PD_CC_UFP_AUDIO_ACC = 2, /* UFP Audio accessory connected */
- PD_CC_UFP_DEBUG_ACC = 3, /* UFP Debug accessory connected */
- PD_CC_UFP_ATTACHED = 4, /* Plain UFP attached */
-
- /* From UFP perspective */
- PD_CC_DFP_ATTACHED = 5, /* Plain DFP attached */
- PD_CC_DFP_DEBUG_ACC = 6, /* DFP debug accessory connected */
};
-/* Active/Passive Cable */
-#define USB_PD_CTRL_ACTIVE_CABLE BIT(0)
-/* Optical/Non-optical cable */
-#define USB_PD_CTRL_OPTICAL_CABLE BIT(1)
-/* 3rd Gen TBT device (or AMA)/2nd gen tbt Adapter */
-#define USB_PD_CTRL_TBT_LEGACY_ADAPTER BIT(2)
-/* Active Link Uni-Direction */
-#define USB_PD_CTRL_ACTIVE_LINK_UNIDIR BIT(3)
-/* Retimer/Redriver cable */
-#define USB_PD_CTRL_RETIMER_CABLE BIT(4)
-
-struct ec_response_usb_pd_control_v2 {
+struct __ec_align1 ec_response_usb_pd_control_v1 {
uint8_t enabled;
uint8_t role;
uint8_t polarity;
char state[32];
- uint8_t cc_state; /* enum pd_cc_states representing cc state */
- uint8_t dp_mode; /* Current DP pin mode (MODE_DP_PIN_[A-E]) */
- uint8_t reserved; /* Reserved for future use */
- uint8_t control_flags; /* USB_PD_CTRL_*flags */
- uint8_t cable_speed; /* TBT_SS_* cable speed */
- uint8_t cable_gen; /* TBT_GEN3_* cable rounded support */
-} __ec_align1;
+};
#define EC_CMD_USB_PD_PORTS 0x0102
/* Maximum number of PD ports on a device, num_ports will be <= this */
#define EC_USB_PD_MAX_PORTS 8
-struct ec_response_usb_pd_ports {
+struct __ec_align1 ec_response_usb_pd_ports {
uint8_t num_ports;
-} __ec_align1;
+};
#define EC_CMD_USB_PD_POWER_INFO 0x0103
#define PD_POWER_CHARGING_PORT 0xff
-struct ec_params_usb_pd_power_info {
+struct __ec_align1 ec_params_usb_pd_power_info {
uint8_t port;
-} __ec_align1;
+};
enum usb_chg_type {
USB_CHG_TYPE_NONE,
@@ -6281,7 +4102,6 @@ enum usb_chg_type {
USB_CHG_TYPE_OTHER,
USB_CHG_TYPE_VBUS,
USB_CHG_TYPE_UNKNOWN,
- USB_CHG_TYPE_DEDICATED,
};
enum usb_power_roles {
USB_PD_PORT_POWER_DISCONNECTED,
@@ -6290,58 +4110,21 @@ enum usb_power_roles {
USB_PD_PORT_POWER_SINK_NOT_CHARGING,
};
-struct usb_chg_measures {
+struct __ec_align2 usb_chg_measures {
uint16_t voltage_max;
uint16_t voltage_now;
uint16_t current_max;
uint16_t current_lim;
-} __ec_align2;
+};
-struct ec_response_usb_pd_power_info {
+struct __ec_align4 ec_response_usb_pd_power_info {
uint8_t role;
uint8_t type;
uint8_t dualrole;
uint8_t reserved1;
struct usb_chg_measures meas;
uint32_t max_power;
-} __ec_align4;
-
-/*
- * This command will return the number of USB PD charge port + the number
- * of dedicated port present.
- * EC_CMD_USB_PD_PORTS does NOT include the dedicated ports
- */
-#define EC_CMD_CHARGE_PORT_COUNT 0x0105
-struct ec_response_charge_port_count {
- uint8_t port_count;
-} __ec_align1;
-
-/*
- * This command enable/disable dynamic PDO selection.
- */
-#define EC_CMD_USB_PD_DPS_CONTROL 0x0106
-
-struct ec_params_usb_pd_dps_control {
- uint8_t enable;
-} __ec_align1;
-
-/*
- * This command return the status of dynamic PDO selection.
- */
-#define EC_CMD_USB_PD_DPS_STATUS 0x0107
-
-struct ec_response_usb_pd_dps_status {
- int32_t is_enabled;
- int32_t port;
- int32_t requested_voltage;
- int32_t requested_current;
- int32_t input_power;
- int32_t input_voltage;
- int32_t input_current;
- int32_t efficient_voltage;
- int32_t battery_voltage;
- int32_t max_voltage;
-} __ec_align4;
+};
/* Write USB-PD device FW */
#define EC_CMD_USB_PD_FW_UPDATE 0x0110
@@ -6353,116 +4136,98 @@ enum usb_pd_fw_update_cmds {
USB_PD_FW_ERASE_SIG,
};
-struct ec_params_usb_pd_fw_update {
+struct __ec_align4 ec_params_usb_pd_fw_update {
uint16_t dev_id;
uint8_t cmd;
uint8_t port;
-
- /* Size to write in bytes */
- uint32_t size;
-
+ uint32_t size; /* Size to write in bytes */
/* Followed by data to write */
-} __ec_align4;
+};
/* Write USB-PD Accessory RW_HASH table entry */
#define EC_CMD_USB_PD_RW_HASH_ENTRY 0x0111
/* RW hash is first 20 bytes of SHA-256 of RW section */
#define PD_RW_HASH_SIZE 20
-struct ec_params_usb_pd_rw_hash_entry {
+struct __ec_align1 ec_params_usb_pd_rw_hash_entry {
uint16_t dev_id;
uint8_t dev_rw_hash[PD_RW_HASH_SIZE];
-
- /*
- * Reserved for alignment of current_image
- * TODO(rspangler) but it's not aligned!
- * Should have been reserved[2].
- */
- uint8_t reserved;
-
- /* One of ec_image */
- uint32_t current_image;
-} __ec_align1;
+ uint8_t reserved; /* For alignment of current_image
+ * TODO(rspangler) but it's not aligned!
+ * Should have been reserved[2]. */
+ uint32_t current_image; /* One of ec_current_image */
+};
/* Read USB-PD Accessory info */
#define EC_CMD_USB_PD_DEV_INFO 0x0112
-struct ec_params_usb_pd_info_request {
+struct __ec_align1 ec_params_usb_pd_info_request {
uint8_t port;
-} __ec_align1;
+};
/* Read USB-PD Device discovery info */
#define EC_CMD_USB_PD_DISCOVERY 0x0113
-struct ec_params_usb_pd_discovery_entry {
- uint16_t vid; /* USB-IF VID */
- uint16_t pid; /* USB-IF PID */
+struct __ec_align_size1 ec_params_usb_pd_discovery_entry {
+ uint16_t vid; /* USB-IF VID */
+ uint16_t pid; /* USB-IF PID */
uint8_t ptype; /* product type (hub,periph,cable,ama) */
-} __ec_align_size1;
+};
/* Override default charge behavior */
#define EC_CMD_PD_CHARGE_PORT_OVERRIDE 0x0114
/* Negative port parameters have special meaning */
enum usb_pd_override_ports {
- /*
- * DONT_CHARGE is for all ports. Thus it's persistent across plug-in
- * or plug-out.
- */
OVERRIDE_DONT_CHARGE = -2,
OVERRIDE_OFF = -1,
- /* [0, CONFIG_USB_PD_PORT_MAX_COUNT): Port# */
+ /* [0, CONFIG_USB_PD_PORT_COUNT): Port# */
};
-struct ec_params_charge_port_override {
+struct __ec_align2 ec_params_charge_port_override {
int16_t override_port; /* Override port# */
-} __ec_align2;
+};
-/*
- * Read (and delete) one entry of PD event log.
- * TODO(crbug.com/751742): Make this host command more generic to accommodate
- * future non-PD logs that use the same internal EC event_log.
- */
+/* Read (and delete) one entry of PD event log */
#define EC_CMD_PD_GET_LOG_ENTRY 0x0115
-struct ec_response_pd_log {
+struct __ec_align4 ec_response_pd_log {
uint32_t timestamp; /* relative timestamp in milliseconds */
- uint8_t type; /* event type : see PD_EVENT_xx below */
- uint8_t size_port; /* [7:5] port number [4:0] payload size in bytes */
- uint16_t data; /* type-defined data payload */
- /* optional additional data payload: 0..16 bytes */
- uint8_t payload[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
+ uint8_t type; /* event type : see PD_EVENT_xx below */
+ uint8_t size_port; /* [7:5] port number [4:0] payload size in bytes */
+ uint16_t data; /* type-defined data payload */
+ uint8_t payload[0]; /* optional additional data payload: 0..16 bytes */
+};
/* The timestamp is the microsecond counter shifted to get about a ms. */
#define PD_LOG_TIMESTAMP_SHIFT 10 /* 1 LSB = 1024us */
-#define PD_LOG_SIZE_MASK 0x1f
-#define PD_LOG_PORT_MASK 0xe0
-#define PD_LOG_PORT_SHIFT 5
-#define PD_LOG_PORT_SIZE(port, size) \
- (((port) << PD_LOG_PORT_SHIFT) | ((size) & PD_LOG_SIZE_MASK))
+#define PD_LOG_SIZE_MASK 0x1f
+#define PD_LOG_PORT_MASK 0xe0
+#define PD_LOG_PORT_SHIFT 5
+#define PD_LOG_PORT_SIZE(port, size) (((port) << PD_LOG_PORT_SHIFT) | \
+ ((size) & PD_LOG_SIZE_MASK))
#define PD_LOG_PORT(size_port) ((size_port) >> PD_LOG_PORT_SHIFT)
#define PD_LOG_SIZE(size_port) ((size_port) & PD_LOG_SIZE_MASK)
/* PD event log : entry types */
/* PD MCU events */
-#define PD_EVENT_MCU_BASE 0x00
-#define PD_EVENT_MCU_CHARGE (PD_EVENT_MCU_BASE + 0)
-#define PD_EVENT_MCU_CONNECT (PD_EVENT_MCU_BASE + 1)
+#define PD_EVENT_MCU_BASE 0x00
+#define PD_EVENT_MCU_CHARGE (PD_EVENT_MCU_BASE+0)
+#define PD_EVENT_MCU_CONNECT (PD_EVENT_MCU_BASE+1)
/* Reserved for custom board event */
-#define PD_EVENT_MCU_BOARD_CUSTOM (PD_EVENT_MCU_BASE + 2)
+#define PD_EVENT_MCU_BOARD_CUSTOM (PD_EVENT_MCU_BASE+2)
/* PD generic accessory events */
-#define PD_EVENT_ACC_BASE 0x20
-#define PD_EVENT_ACC_RW_FAIL (PD_EVENT_ACC_BASE + 0)
-#define PD_EVENT_ACC_RW_ERASE (PD_EVENT_ACC_BASE + 1)
+#define PD_EVENT_ACC_BASE 0x20
+#define PD_EVENT_ACC_RW_FAIL (PD_EVENT_ACC_BASE+0)
+#define PD_EVENT_ACC_RW_ERASE (PD_EVENT_ACC_BASE+1)
/* PD power supply events */
-#define PD_EVENT_PS_BASE 0x40
-#define PD_EVENT_PS_FAULT (PD_EVENT_PS_BASE + 0)
+#define PD_EVENT_PS_BASE 0x40
+#define PD_EVENT_PS_FAULT (PD_EVENT_PS_BASE+0)
/* PD video dongles events */
-#define PD_EVENT_VIDEO_BASE 0x60
-#define PD_EVENT_VIDEO_DP_MODE (PD_EVENT_VIDEO_BASE + 0)
-#define PD_EVENT_VIDEO_CODEC (PD_EVENT_VIDEO_BASE + 1)
+#define PD_EVENT_VIDEO_BASE 0x60
+#define PD_EVENT_VIDEO_DP_MODE (PD_EVENT_VIDEO_BASE+0)
+#define PD_EVENT_VIDEO_CODEC (PD_EVENT_VIDEO_BASE+1)
/* Returned in the "type" field, when there is no entry available */
-#define PD_EVENT_NO_ENTRY 0xff
+#define PD_EVENT_NO_ENTRY 0xff
/*
* PD_EVENT_MCU_CHARGE event definition :
@@ -6470,40 +4235,40 @@ struct ec_response_pd_log {
* the data field contains the port state flags as defined below :
*/
/* Port partner is a dual role device */
-#define CHARGE_FLAGS_DUAL_ROLE BIT(15)
+#define CHARGE_FLAGS_DUAL_ROLE (1 << 15)
/* Port is the pending override port */
-#define CHARGE_FLAGS_DELAYED_OVERRIDE BIT(14)
+#define CHARGE_FLAGS_DELAYED_OVERRIDE (1 << 14)
/* Port is the override port */
-#define CHARGE_FLAGS_OVERRIDE BIT(13)
+#define CHARGE_FLAGS_OVERRIDE (1 << 13)
/* Charger type */
-#define CHARGE_FLAGS_TYPE_SHIFT 3
-#define CHARGE_FLAGS_TYPE_MASK (0xf << CHARGE_FLAGS_TYPE_SHIFT)
+#define CHARGE_FLAGS_TYPE_SHIFT 3
+#define CHARGE_FLAGS_TYPE_MASK (0xf << CHARGE_FLAGS_TYPE_SHIFT)
/* Power delivery role */
-#define CHARGE_FLAGS_ROLE_MASK (7 << 0)
+#define CHARGE_FLAGS_ROLE_MASK (7 << 0)
/*
* PD_EVENT_PS_FAULT data field flags definition :
*/
-#define PS_FAULT_OCP 1
-#define PS_FAULT_FAST_OCP 2
-#define PS_FAULT_OVP 3
-#define PS_FAULT_DISCH 4
+#define PS_FAULT_OCP 1
+#define PS_FAULT_FAST_OCP 2
+#define PS_FAULT_OVP 3
+#define PS_FAULT_DISCH 4
/*
* PD_EVENT_VIDEO_CODEC payload is "struct mcdp_info".
*/
-struct mcdp_version {
+struct __ec_align4 mcdp_version {
uint8_t major;
uint8_t minor;
uint16_t build;
-} __ec_align4;
+};
-struct mcdp_info {
+struct __ec_align4 mcdp_info {
uint8_t family[2];
uint8_t chipid[2];
struct mcdp_version irom;
struct mcdp_version fw;
-} __ec_align4;
+};
/* struct mcdp_info field decoding */
#define MCDP_CHIPID(chipid) ((chipid[0] << 8) | chipid[1])
@@ -6511,20 +4276,16 @@ struct mcdp_info {
/* Get/Set USB-PD Alternate mode info */
#define EC_CMD_USB_PD_GET_AMODE 0x0116
-struct ec_params_usb_pd_get_mode_request {
+struct __ec_align_size1 ec_params_usb_pd_get_mode_request {
uint16_t svid_idx; /* SVID index to get */
- uint8_t port; /* port */
-} __ec_align_size1;
-
-#define VDO_MAX_SIZE 7
-/* Max number of VDM data objects without VDM header */
-#define VDO_MAX_OBJECTS (VDO_MAX_SIZE - 1)
+ uint8_t port; /* port */
+};
-struct ec_params_usb_pd_get_mode_response {
- uint16_t svid; /* SVID */
- uint16_t opos; /* Object Position */
- uint32_t vdo[VDO_MAX_OBJECTS]; /* Mode VDOs */
-} __ec_align4;
+struct __ec_align4 ec_params_usb_pd_get_mode_response {
+ uint16_t svid; /* SVID */
+ uint16_t opos; /* Object Position */
+ uint32_t vdo[6]; /* Mode VDOs */
+};
#define EC_CMD_USB_PD_SET_AMODE 0x0117
@@ -6535,1881 +4296,147 @@ enum pd_mode_cmd {
PD_MODE_CMD_COUNT,
};
-struct ec_params_usb_pd_set_mode_request {
- uint32_t cmd; /* enum pd_mode_cmd */
+struct __ec_align4 ec_params_usb_pd_set_mode_request {
+ uint32_t cmd; /* enum pd_mode_cmd */
uint16_t svid; /* SVID to set */
- uint8_t opos; /* Object Position */
- uint8_t port; /* port */
-} __ec_align4;
+ uint8_t opos; /* Object Position */
+ uint8_t port; /* port */
+};
/* Ask the PD MCU to record a log of a requested type */
#define EC_CMD_PD_WRITE_LOG_ENTRY 0x0118
-struct ec_params_pd_write_log_entry {
+struct __ec_align1 ec_params_pd_write_log_entry {
uint8_t type; /* event type : see PD_EVENT_xx above */
uint8_t port; /* port#, or 0 for events unrelated to a given port */
-} __ec_align1;
+};
/* Control USB-PD chip */
#define EC_CMD_PD_CONTROL 0x0119
enum ec_pd_control_cmd {
- PD_SUSPEND = 0, /* Suspend the PD chip (EC: stop talking to PD) */
- PD_RESUME, /* Resume the PD chip (EC: start talking to PD) */
- PD_RESET, /* Force reset the PD chip */
- PD_CONTROL_DISABLE, /* Disable further calls to this command */
- PD_CHIP_ON, /* Power on the PD chip */
+ PD_SUSPEND = 0, /* Suspend the PD chip (EC: stop talking to PD) */
+ PD_RESUME, /* Resume the PD chip (EC: start talking to PD) */
+ PD_RESET, /* Force reset the PD chip */
+ PD_CONTROL_DISABLE /* Disable further calls to this command */
};
-struct ec_params_pd_control {
- uint8_t chip; /* chip id */
+struct __ec_align1 ec_params_pd_control {
+ uint8_t chip; /* chip id (should be 0) */
uint8_t subcmd;
-} __ec_align1;
+};
/* Get info about USB-C SS muxes */
#define EC_CMD_USB_PD_MUX_INFO 0x011A
-struct ec_params_usb_pd_mux_info {
+struct __ec_align1 ec_params_usb_pd_mux_info {
uint8_t port; /* USB-C port number */
-} __ec_align1;
+};
/* Flags representing mux state */
-#define USB_PD_MUX_NONE 0 /* Open switch */
-#define USB_PD_MUX_USB_ENABLED BIT(0) /* USB connected */
-#define USB_PD_MUX_DP_ENABLED BIT(1) /* DP connected */
-#define USB_PD_MUX_POLARITY_INVERTED BIT(2) /* CC line Polarity inverted */
-#define USB_PD_MUX_HPD_IRQ BIT(3) /* HPD IRQ is asserted */
-#define USB_PD_MUX_HPD_IRQ_DEASSERTED 0 /* HPD IRQ is deasserted */
-#define USB_PD_MUX_HPD_LVL BIT(4) /* HPD level is asserted */
-#define USB_PD_MUX_HPD_LVL_DEASSERTED 0 /* HPD level is deasserted */
-#define USB_PD_MUX_SAFE_MODE BIT(5) /* DP is in safe mode */
-#define USB_PD_MUX_TBT_COMPAT_ENABLED BIT(6) /* TBT compat enabled */
-#define USB_PD_MUX_USB4_ENABLED BIT(7) /* USB4 enabled */
-
-/* USB-C Dock connected */
-#define USB_PD_MUX_DOCK (USB_PD_MUX_USB_ENABLED | USB_PD_MUX_DP_ENABLED)
+#define USB_PD_MUX_USB_ENABLED (1 << 0)
+#define USB_PD_MUX_DP_ENABLED (1 << 1)
+#define USB_PD_MUX_POLARITY_INVERTED (1 << 2)
+#define USB_PD_MUX_HPD_IRQ (1 << 3)
-struct ec_response_usb_pd_mux_info {
+struct __ec_align1 ec_response_usb_pd_mux_info {
uint8_t flags; /* USB_PD_MUX_*-encoded USB mux state */
-} __ec_align1;
-
-#define EC_CMD_PD_CHIP_INFO 0x011B
-
-struct ec_params_pd_chip_info {
- uint8_t port; /* USB-C port number */
- /*
- * Fetch the live chip info or hard-coded + cached chip info
- * 0: hardcoded value for VID/PID, cached value for FW version
- * 1: live chip value for VID/PID/FW Version
- */
- uint8_t live;
-} __ec_align1;
-
-struct ec_response_pd_chip_info {
- uint16_t vendor_id;
- uint16_t product_id;
- uint16_t device_id;
- union {
- uint8_t fw_version_string[8];
- uint64_t fw_version_number;
- } __ec_align2;
-} __ec_align2;
-
-struct ec_response_pd_chip_info_v1 {
- uint16_t vendor_id;
- uint16_t product_id;
- uint16_t device_id;
- union {
- uint8_t fw_version_string[8];
- uint64_t fw_version_number;
- } __ec_align2;
- union {
- uint8_t min_req_fw_version_string[8];
- uint64_t min_req_fw_version_number;
- } __ec_align2;
-} __ec_align2;
-
-/** Indicates the chip should NOT receive a firmware update, if set. This is
- * useful when multiple ports are serviced by a single chip, to avoid
- * performing redundant updates. The host command implementation shall ensure
- * only one port out of each physical chip has FW updates active.
- */
-#define USB_PD_CHIP_INFO_FWUP_FLAG_NO_UPDATE BIT(0)
-
-/** Maximum length of a project name embedded in a PDC FW image. This length
- * does NOT include a NUL-terminator.
- */
-#define USB_PD_CHIP_INFO_PROJECT_NAME_LEN 12
+};
-struct ec_response_pd_chip_info_v2 {
- uint16_t vendor_id;
- uint16_t product_id;
- uint16_t device_id;
- union {
- uint8_t fw_version_string[8];
- uint64_t fw_version_number;
- } __ec_align2;
- union {
- uint8_t min_req_fw_version_string[8];
- uint64_t min_req_fw_version_number;
- } __ec_align2;
- /** Flag to control the FW update process for this chip. */
- uint16_t fw_update_flags;
- /** Project name string associated with the chip's FW. Add an extra
- * byte for a NUL-terminator.
- */
- char fw_name_str[USB_PD_CHIP_INFO_PROJECT_NAME_LEN + 1];
-} __ec_align2;
+#define EC_CMD_PD_CHIP_INFO 0x011B
-/** Maximum length of a driver/chip name reported in the pd_chip_info
- * response
- */
-#define USB_PD_CHIP_INFO_DRIVER_NAME_LEN 24
+struct __ec_align1 ec_params_pd_chip_info {
+ uint8_t port; /* USB-C port number */
+ uint8_t renew; /* Force renewal */
+};
-struct ec_response_pd_chip_info_v3 {
+struct __ec_align2 ec_response_pd_chip_info {
uint16_t vendor_id;
uint16_t product_id;
uint16_t device_id;
union {
uint8_t fw_version_string[8];
uint64_t fw_version_number;
- } __ec_align2;
- union {
- uint8_t min_req_fw_version_string[8];
- uint64_t min_req_fw_version_number;
- } __ec_align2;
- /** Flag to control the FW update process for this chip. */
- uint16_t fw_update_flags;
- /** Project name string associated with the chip's FW. Add an extra
- * byte for a NUL-terminator.
- */
- char fw_name_str[USB_PD_CHIP_INFO_PROJECT_NAME_LEN + 1];
- /** Driver/chip string, plus room for a NUL-terminator */
- char driver_name[USB_PD_CHIP_INFO_DRIVER_NAME_LEN + 1];
-} __ec_align2;
+ };
+};
/* Run RW signature verification and get status */
-#define EC_CMD_RWSIG_CHECK_STATUS 0x011C
+#define EC_CMD_RWSIG_CHECK_STATUS 0x011C
-struct ec_response_rwsig_check_status {
+struct __ec_align4 ec_response_rwsig_check_status {
uint32_t status;
-} __ec_align4;
+};
/* For controlling RWSIG task */
-#define EC_CMD_RWSIG_ACTION 0x011D
+#define EC_CMD_RWSIG_ACTION 0x011D
enum rwsig_action {
- RWSIG_ACTION_ABORT = 0, /* Abort RWSIG and prevent jumping */
- RWSIG_ACTION_CONTINUE = 1, /* Jump to RW immediately */
+ RWSIG_ACTION_ABORT = 0, /* Abort RWSIG and prevent jumping */
+ RWSIG_ACTION_CONTINUE = 1, /* Jump to RW immediately */
};
-struct ec_params_rwsig_action {
+struct __ec_align4 ec_params_rwsig_action {
uint32_t action;
-} __ec_align4;
+};
/* Run verification on a slot */
-#define EC_CMD_EFS_VERIFY 0x011E
+#define EC_CMD_EFS_VERIFY 0x011E
-struct ec_params_efs_verify {
- uint8_t region; /* enum ec_flash_region */
-} __ec_align1;
+struct __ec_align1 ec_params_efs_verify {
+ uint8_t region; /* enum ec_flash_region */
+};
/*
* Retrieve info from Cros Board Info store. Response is based on the data
* type. Integers return a uint32. Strings return a string, using the response
* size to determine how big it is.
*/
-#define EC_CMD_GET_CROS_BOARD_INFO 0x011F
+#define EC_CMD_GET_CROS_BOARD_INFO 0x011F
/*
* Write info into Cros Board Info on EEPROM. Write fails if the board has
* hardware write-protect enabled.
*/
-#define EC_CMD_SET_CROS_BOARD_INFO 0x0120
+#define EC_CMD_SET_CROS_BOARD_INFO 0x0120
enum cbi_data_tag {
- CBI_TAG_BOARD_VERSION = 0, /* uint32_t or smaller */
- CBI_TAG_OEM_ID = 1, /* uint32_t or smaller */
- CBI_TAG_SKU_ID = 2, /* uint32_t or smaller */
- CBI_TAG_DRAM_PART_NUM = 3, /* variable length ascii, nul terminated. */
- CBI_TAG_OEM_NAME = 4, /* variable length ascii, nul terminated. */
- CBI_TAG_MODEL_ID = 5, /* uint32_t or smaller */
- CBI_TAG_FW_CONFIG = 6, /* uint32_t bit field */
- CBI_TAG_PCB_SUPPLIER = 7, /* uint32_t or smaller */
- /* Second Source Factory Cache */
- CBI_TAG_SSFC = 8, /* uint32_t bit field */
- CBI_TAG_REWORK_ID = 9, /* uint64_t or smaller */
- CBI_TAG_FACTORY_CALIBRATION_DATA = 10, /* Deprecated */
- CBI_TAG_COMMON_CONTROL = 11, /* Deprecated */
- /* struct board_batt_params */
- CBI_TAG_BATTERY_CONFIG = 12,
- /* CBI_TAG_BATTERY_CONFIG_1 ~ 15 will use 13 ~ 27. */
- CBI_TAG_BATTERY_CONFIG_15 = 27,
-
- /* CBI_TAG_PROVISION_MATRIX_VERSION
- * Version of the current provision matrix
- */
- CBI_TAG_PROVISION_MATRIX_VERSION = 28, /* uint32_t bit field */
-
- /* Unified Firmware and Second-source Config:
- * A fixed-size array of 4 uint32_t values.
- */
- CBI_TAG_UFSC = 29,
-
- /* Last entry */
+ CBI_TAG_BOARD_VERSION = 0, /* uint16_t or uint8_t[] = {minor,major} */
+ CBI_TAG_OEM_ID = 1, /* uint8_t */
+ CBI_TAG_SKU_ID = 2, /* uint8_t */
CBI_TAG_COUNT,
};
-#define CBI_UFSC_DATA_COUNT 4
-
-/* Unified Firmware and Second-source Config (UFSC) data structure */
-struct cbi_ufsc {
- uint32_t data[CBI_UFSC_DATA_COUNT];
-};
-
/*
* Flags to control read operation
*
* RELOAD: Invalidate cache and read data from EEPROM. Useful to verify
* write was successful without reboot.
*/
-#define CBI_GET_RELOAD BIT(0)
+#define CBI_GET_RELOAD (1 << 0)
-struct ec_params_get_cbi {
- uint32_t tag; /* enum cbi_data_tag */
- uint32_t flag; /* CBI_GET_* */
-} __ec_align4;
+struct __ec_align4 ec_params_get_cbi {
+ uint32_t type; /* enum cbi_data_tag */
+ uint32_t flag; /* CBI_GET_* */
+};
/*
* Flags to control write behavior.
*
* NO_SYNC: Makes EC update data in RAM but skip writing to EEPROM. It's
* useful when writing multiple fields in a row.
- * INIT: Need to be set when creating a new CBI from scratch. All fields
+ * INIT: Needs to be set when creating a new CBI from scratch. All fields
* will be initialized to zero first.
*/
-#define CBI_SET_NO_SYNC BIT(0)
-#define CBI_SET_INIT BIT(1)
-
-struct ec_params_set_cbi {
- uint32_t tag; /* enum cbi_data_tag */
- uint32_t flag; /* CBI_SET_* */
- uint32_t size; /* Data size */
- uint8_t data[FLEXIBLE_ARRAY_MEMBER_SIZE]; /* For string and raw data */
-} __ec_align1;
-
-/*
- * Retrieve binary from CrOS Board Info primary memory source.
- */
-#define EC_CMD_CBI_BIN_READ 0x0504
-/*
- * Write binary into CrOS Board Info temporary buffer and then commit it to
- * permanent storage once complete. Write fails if the board has hardware
- * write-protect enabled.
- */
-#define EC_CMD_CBI_BIN_WRITE 0x0505
-
-/*
- * CBI binary read/write flags
- * The default write behavior is to always append any data to the buffer.
- * If 'CLEAR' flag is set, buffer is cleared then data is appended.
- * If 'WRITE' flag is set, data is appended then buffer is written to memory.
- */
-#define EC_CBI_BIN_BUFFER_CLEAR BIT(0)
-#define EC_CBI_BIN_BUFFER_WRITE BIT(1)
-
-struct ec_params_get_cbi_bin {
- uint32_t offset; /* Data offset */
- uint32_t size; /* Data size */
-} __ec_align4;
-
-struct ec_params_set_cbi_bin {
- uint32_t offset; /* Data offset */
- uint32_t size; /* Data size */
- uint8_t flags; /* bit field for EC_CBI_BIN_COMMIT_FLAG_* */
- uint8_t data[FLEXIBLE_ARRAY_MEMBER_SIZE]; /* For string and raw data */
-} __ec_align1;
-
-/*
- * Information about resets of the AP by the EC and the EC's own uptime.
- */
-#define EC_CMD_GET_UPTIME_INFO 0x0121
-
-/* EC reset causes */
-#define EC_RESET_FLAG_OTHER BIT(0) /* Other known reason */
-#define EC_RESET_FLAG_RESET_PIN BIT(1) /* Reset pin asserted */
-#define EC_RESET_FLAG_BROWNOUT BIT(2) /* Brownout */
-#define EC_RESET_FLAG_POWER_ON BIT(3) /* Power-on reset */
-#define EC_RESET_FLAG_WATCHDOG BIT(4) /* Watchdog timer reset */
-#define EC_RESET_FLAG_SOFT BIT(5) /* Soft reset trigger by core */
-#define EC_RESET_FLAG_HIBERNATE BIT(6) /* Wake from hibernate */
-#define EC_RESET_FLAG_RTC_ALARM BIT(7) /* RTC alarm wake */
-#define EC_RESET_FLAG_WAKE_PIN BIT(8) /* Wake pin triggered wake */
-#define EC_RESET_FLAG_LOW_BATTERY BIT(9) /* Low battery triggered wake */
-#define EC_RESET_FLAG_SYSJUMP BIT(10) /* Jumped directly to this image */
-#define EC_RESET_FLAG_HARD BIT(11) /* Hard reset from software */
-#define EC_RESET_FLAG_AP_OFF BIT(12) /* Do not power on AP */
-/* Some reset flags preserved from previous boot */
-#define EC_RESET_FLAG_PRESERVED BIT(13)
-#define EC_RESET_FLAG_USB_RESUME BIT(14) /* USB resume triggered wake */
-#define EC_RESET_FLAG_RDD BIT(15) /* USB Type-C debug cable */
-#define EC_RESET_FLAG_RBOX BIT(16) /* Fixed Reset Functionality */
-#define EC_RESET_FLAG_SECURITY BIT(17) /* Security threat */
-/* AP experienced a watchdog reset */
-#define EC_RESET_FLAG_AP_WATCHDOG BIT(18)
-/* Do not select RW in EFS. This enables PD in RO for Chromebox. */
-#define EC_RESET_FLAG_STAY_IN_RO BIT(19)
-#define EC_RESET_FLAG_EFS BIT(20) /* Jumped to this image by EFS */
-#define EC_RESET_FLAG_AP_IDLE BIT(21) /* Leave alone AP */
-#define EC_RESET_FLAG_INITIAL_PWR BIT(22) /* EC had power, then was reset */
-
-/*
- * Reason codes used by the AP after a shutdown to figure out why it was reset
- * by the EC. These are sent in EC commands. Therefore, to maintain protocol
- * compatibility:
- * - New entries must be inserted prior to the _COUNT field
- * - If an existing entry is no longer in service, it must be replaced with a
- * RESERVED entry instead.
- * - The semantic meaning of an entry should not change.
- * - Do not exceed 2^15 - 1 for reset reasons or 2^16 - 1 for shutdown reasons.
- */
-enum chipset_shutdown_reason {
- /*
- * Beginning of reset reasons.
- */
- CHIPSET_RESET_BEGIN = 0,
- CHIPSET_RESET_UNKNOWN = CHIPSET_RESET_BEGIN,
- /* Custom reason defined by a board.c or baseboard.c file */
- CHIPSET_RESET_BOARD_CUSTOM,
- /* Believe that the AP has hung */
- CHIPSET_RESET_HANG_REBOOT,
- /* Reset by EC console command */
- CHIPSET_RESET_CONSOLE_CMD,
- /* Reset by EC host command */
- CHIPSET_RESET_HOST_CMD,
- /* Keyboard module reset key combination */
- CHIPSET_RESET_KB_SYSRESET,
- /* Keyboard module warm reboot */
- CHIPSET_RESET_KB_WARM_REBOOT,
- /* Debug module warm reboot */
- CHIPSET_RESET_DBG_WARM_REBOOT,
- /* I cannot self-terminate. You must lower me into the steel. */
- CHIPSET_RESET_AP_REQ,
- /* Reset as side-effect of startup sequence */
- CHIPSET_RESET_INIT,
- /* EC detected an AP watchdog event. */
- CHIPSET_RESET_AP_WATCHDOG,
-
- CHIPSET_RESET_COUNT, /* End of reset reasons. */
-
- /*
- * Beginning of shutdown reasons.
- */
- CHIPSET_SHUTDOWN_BEGIN = BIT(15),
- CHIPSET_SHUTDOWN_POWERFAIL = CHIPSET_SHUTDOWN_BEGIN,
- /* Forcing a shutdown as part of EC initialization */
- CHIPSET_SHUTDOWN_INIT,
- /* Custom reason on a per-board basis. */
- CHIPSET_SHUTDOWN_BOARD_CUSTOM,
- /* This is a reason to inhibit startup, not cause shut down. */
- CHIPSET_SHUTDOWN_BATTERY_INHIBIT,
- /* A power_wait_signal is being asserted */
- CHIPSET_SHUTDOWN_WAIT,
- /* Critical battery level. */
- CHIPSET_SHUTDOWN_BATTERY_CRIT,
- /* Because you told me to. */
- CHIPSET_SHUTDOWN_CONSOLE_CMD,
- /* Forcing a shutdown to effect entry to G3. */
- CHIPSET_SHUTDOWN_G3,
- /* Force shutdown due to over-temperature. */
- CHIPSET_SHUTDOWN_THERMAL,
- /* Force a chipset shutdown from the power button through EC */
- CHIPSET_SHUTDOWN_BUTTON,
- /* Force a chipset shutdown, because the AP wants to. */
- CHIPSET_SHUTDOWN_HOST_CMD,
-
- CHIPSET_SHUTDOWN_COUNT, /* End of shutdown reasons. */
-};
-
-struct ec_response_uptime_info {
- /*
- * Number of milliseconds since the last EC boot. Sysjump resets
- * typically do not restart the EC's time_since_boot epoch.
- *
- * WARNING: The EC's sense of time is much less accurate than the AP's
- * sense of time, in both phase and frequency. This timebase is similar
- * to CLOCK_MONOTONIC_RAW, but with 1% or more frequency error.
- */
- uint32_t time_since_ec_boot_ms;
-
- /*
- * Number of times the AP was reset by the EC since the last EC boot.
- * Note that the AP may be held in reset by the EC during the initial
- * boot sequence, such that the very first AP boot may count as more
- * than one here.
- */
- uint32_t ap_resets_since_ec_boot;
-
- /*
- * The set of flags which describe the EC's most recent reset.
- * See EC_RESET_FLAG_* for details.
- */
- uint32_t ec_reset_flags;
-
- /* Empty log entries have both the cause and timestamp set to zero. */
- struct ap_reset_log_entry {
- /* See enum chipset_{reset,shutdown}_reason for details. */
- uint16_t reset_cause;
-
- /* Reserved for protocol growth. */
- uint16_t reserved;
-
- /*
- * The time of the reset's assertion, in milliseconds since the
- * last EC boot, in the same epoch as time_since_ec_boot_ms.
- * Set to zero if the log entry is empty.
- */
- uint32_t reset_time_ms;
- } recent_ap_reset[4];
-} __ec_align4;
-
-/*
- * Add entropy to the device secret (stored in the rollback region).
- *
- * Depending on the chip, the operation may take a long time (e.g. to erase
- * flash), so the commands are asynchronous.
- */
-#define EC_CMD_ADD_ENTROPY 0x0122
-
-enum add_entropy_action {
- /* Add entropy to the current secret. */
- ADD_ENTROPY_ASYNC = 0,
- /*
- * Add entropy, and also make sure that the previous secret is erased.
- * (this can be implemented by adding entropy multiple times until
- * all rolback blocks have been overwritten).
- */
- ADD_ENTROPY_RESET_ASYNC = 1,
- /* Read back result from the previous operation. */
- ADD_ENTROPY_GET_RESULT = 2,
-};
-
-struct ec_params_rollback_add_entropy {
- uint8_t action;
-} __ec_align1;
-
-/*
- * Perform a single read of a given ADC channel.
- */
-#define EC_CMD_ADC_READ 0x0123
-
-struct ec_params_adc_read {
- uint8_t adc_channel;
-} __ec_align1;
-
-struct ec_response_adc_read {
- int32_t adc_value;
-} __ec_align4;
-
-/*
- * Read back rollback info
- */
-#define EC_CMD_ROLLBACK_INFO 0x0124
-
-struct ec_response_rollback_info {
- int32_t id; /* Incrementing number to indicate which region to use. */
- int32_t rollback_min_version;
- int32_t rw_rollback_version;
-} __ec_align4;
-
-struct ec_response_rollback_info_v1 {
- int32_t id; /* Incrementing number to indicate which region to use. */
- int32_t rollback_min_version;
- int32_t rw_rollback_version;
- uint8_t is_secret_inited;
- uint8_t reserved[3];
-} __ec_align4;
-
-/* Issue AP reset */
-#define EC_CMD_AP_RESET 0x0125
-
-/*****************************************************************************/
-/* Locate peripheral chips
- *
- * Return values:
- * EC_RES_UNAVAILABLE: The chip type is supported but not found on system.
- * EC_RES_INVALID_PARAM: The chip type was unrecognized.
- * EC_RES_OVERFLOW: The index number exceeded the number of chip instances.
- */
-#define EC_CMD_LOCATE_CHIP 0x0126
-
-enum ec_chip_type {
- EC_CHIP_TYPE_CBI_EEPROM = 0,
- EC_CHIP_TYPE_TCPC = 1,
- EC_CHIP_TYPE_PDC = 2,
- EC_CHIP_TYPE_COUNT,
- EC_CHIP_TYPE_MAX = 0xFF,
-};
-
-enum ec_bus_type {
- EC_BUS_TYPE_I2C = 0,
- EC_BUS_TYPE_EMBEDDED = 1,
- EC_BUS_TYPE_COUNT,
- EC_BUS_TYPE_MAX = 0xFF,
-};
-
-struct ec_i2c_info {
- uint16_t port; /* Physical port for device */
- uint16_t addr_flags; /* 7-bit (or 10-bit) address */
-};
-
-struct ec_params_locate_chip {
- uint8_t type; /* enum ec_chip_type */
- uint8_t index; /* Specifies one instance of chip type */
- /* Used for type specific parameters in future */
- union {
- uint16_t reserved;
- };
-} __ec_align2;
-
-struct ec_response_locate_chip {
- uint8_t bus_type; /* enum ec_bus_type */
- uint8_t reserved; /* Aligning the following union to 2 bytes */
- union {
- struct ec_i2c_info i2c_info;
- };
-} __ec_align2;
-
-/*
- * Reboot AP on G3
- *
- * This command is used for validation purpose, where the AP needs to be
- * returned back to S0 state from G3 state without using the servo to trigger
- * wake events.
- * - With command version 0:
- * AP reboots immediately from G3
- * command usage: ectool reboot_ap_on_g3 && shutdown -h now
- * - With command version 1:
- * AP reboots after the user specified delay
- * command usage: ectool reboot_ap_on_g3 [<delay>] && shutdown -h now
- */
-#define EC_CMD_REBOOT_AP_ON_G3 0x0127
-
-struct ec_params_reboot_ap_on_g3_v1 {
- /* configurable delay in seconds in G3 state */
- uint32_t reboot_ap_at_g3_delay;
-} __ec_align4;
-
-/*****************************************************************************/
-/* Get PD port capabilities
- *
- * Returns the following static *capabilities* of the given port:
- * 1) Power role: source, sink, or dual. It is not anticipated that
- * future CrOS devices would ever be only a source, so the options are
- * sink or dual.
- * 2) Try-power role: source, sink, or none (practically speaking, I don't
- * believe any CrOS device would support Try.SNK, so this would be source
- * or none).
- * 3) Data role: dfp, ufp, or dual. This will probably only be DFP or dual
- * for CrOS devices.
- */
-#define EC_CMD_GET_PD_PORT_CAPS 0x0128
-
-enum ec_pd_power_role_caps {
- EC_PD_POWER_ROLE_SOURCE = 0,
- EC_PD_POWER_ROLE_SINK = 1,
- EC_PD_POWER_ROLE_DUAL = 2,
-};
-
-enum ec_pd_try_power_role_caps {
- EC_PD_TRY_POWER_ROLE_NONE = 0,
- EC_PD_TRY_POWER_ROLE_SINK = 1,
- EC_PD_TRY_POWER_ROLE_SOURCE = 2,
-};
-
-enum ec_pd_data_role_caps {
- EC_PD_DATA_ROLE_DFP = 0,
- EC_PD_DATA_ROLE_UFP = 1,
- EC_PD_DATA_ROLE_DUAL = 2,
-};
-
-/* From: power_manager/power_supply_properties.proto */
-enum ec_pd_port_location {
- /* The location of the port is unknown, or there's only one port. */
- EC_PD_PORT_LOCATION_UNKNOWN = 0,
-
- /*
- * Various positions on the device. The first word describes the side of
- * the device where the port is located while the second clarifies the
- * position. For example, LEFT_BACK means the farthest-back port on the
- * left side, while BACK_LEFT means the leftmost port on the back of the
- * device.
- */
- EC_PD_PORT_LOCATION_LEFT = 1,
- EC_PD_PORT_LOCATION_RIGHT = 2,
- EC_PD_PORT_LOCATION_BACK = 3,
- EC_PD_PORT_LOCATION_FRONT = 4,
- EC_PD_PORT_LOCATION_LEFT_FRONT = 5,
- EC_PD_PORT_LOCATION_LEFT_BACK = 6,
- EC_PD_PORT_LOCATION_RIGHT_FRONT = 7,
- EC_PD_PORT_LOCATION_RIGHT_BACK = 8,
- EC_PD_PORT_LOCATION_BACK_LEFT = 9,
- EC_PD_PORT_LOCATION_BACK_RIGHT = 10,
-};
-
-struct ec_params_get_pd_port_caps {
- uint8_t port; /* Which port to interrogate */
-} __ec_align1;
-
-struct ec_response_get_pd_port_caps {
- uint8_t pd_power_role_cap; /* enum ec_pd_power_role_caps */
- uint8_t pd_try_power_role_cap; /* enum ec_pd_try_power_role_caps */
- uint8_t pd_data_role_cap; /* enum ec_pd_data_role_caps */
- uint8_t pd_port_location; /* enum ec_pd_port_location */
-} __ec_align1;
-
-/*****************************************************************************/
-/*
- * Button press simulation
- *
- * This command is used to simulate a button press.
- * Supported commands are vup(volume up) vdown(volume down) & rec(recovery)
- * Time duration for which button needs to be pressed is an optional parameter.
- *
- * NOTE: This is only available on unlocked devices for testing purposes only.
- */
-#define EC_CMD_BUTTON 0x0129
-
-struct ec_params_button {
- /* Button mask aligned to enum keyboard_button_type */
- uint32_t btn_mask;
-
- /* Duration in milliseconds button needs to be pressed */
- uint32_t press_ms;
-} __ec_align1;
-
-enum keyboard_button_type {
- KEYBOARD_BUTTON_POWER = 0,
- KEYBOARD_BUTTON_VOLUME_DOWN = 1,
- KEYBOARD_BUTTON_VOLUME_UP = 2,
- KEYBOARD_BUTTON_RECOVERY = 3,
- KEYBOARD_BUTTON_CAPSENSE_1 = 4,
- KEYBOARD_BUTTON_CAPSENSE_2 = 5,
- KEYBOARD_BUTTON_CAPSENSE_3 = 6,
- KEYBOARD_BUTTON_CAPSENSE_4 = 7,
- KEYBOARD_BUTTON_CAPSENSE_5 = 8,
- KEYBOARD_BUTTON_CAPSENSE_6 = 9,
- KEYBOARD_BUTTON_CAPSENSE_7 = 10,
- KEYBOARD_BUTTON_CAPSENSE_8 = 11,
-
- KEYBOARD_BUTTON_COUNT,
-};
-
-/*****************************************************************************/
-/*
- * "Get the Keyboard Config". An EC implementing this command is expected to be
- * vivaldi capable, i.e. can send action codes for the top row keys.
- * Additionally, capability to send function codes for the same keys is
- * optional and acceptable.
- *
- * Note: If the top row can generate both function and action codes by
- * using a dedicated Fn key, it does not matter whether the key sends
- * "function" or "action" codes by default. In both cases, the response
- * for this command will look the same.
- */
-#define EC_CMD_GET_KEYBD_CONFIG 0x012A
-
-/* Possible values for the top row keys */
-enum action_key {
- TK_ABSENT = 0,
- TK_BACK = 1,
- TK_FORWARD = 2,
- TK_REFRESH = 3,
- TK_FULLSCREEN = 4,
- TK_OVERVIEW = 5,
- TK_BRIGHTNESS_DOWN = 6,
- TK_BRIGHTNESS_UP = 7,
- TK_VOL_MUTE = 8,
- TK_VOL_DOWN = 9,
- TK_VOL_UP = 10,
- TK_SNAPSHOT = 11,
- TK_PRIVACY_SCRN_TOGGLE = 12,
- TK_KBD_BKLIGHT_DOWN = 13,
- TK_KBD_BKLIGHT_UP = 14,
- TK_PLAY_PAUSE = 15,
- TK_NEXT_TRACK = 16,
- TK_PREV_TRACK = 17,
- TK_KBD_BKLIGHT_TOGGLE = 18,
- TK_MICMUTE = 19,
- TK_MENU = 20,
- TK_DICTATE = 21,
- TK_ACCESSIBILITY = 22,
- TK_DONOTDISTURB = 23,
- TK_HOME = 24,
-
- TK_COUNT
-};
-
-/*
- * Max & Min number of top row keys, excluding Esc and Screenlock keys.
- * If this needs to change, please create a new version of the command.
- */
-#define MAX_TOP_ROW_KEYS 15
-#define MIN_TOP_ROW_KEYS 10
-
-/*
- * Is the keyboard capable of sending function keys *in addition to*
- * action keys. This is possible for e.g. if the keyboard has a
- * dedicated Fn key.
- */
-#define KEYBD_CAP_FUNCTION_KEYS BIT(0)
-/*
- * Whether the keyboard has a dedicated numeric keyboard.
- */
-#define KEYBD_CAP_NUMERIC_KEYPAD BIT(1)
-/*
- * Whether the keyboard has a screenlock key.
- */
-#define KEYBD_CAP_SCRNLOCK_KEY BIT(2)
-
-/*
- * Whether the keyboard has an assistant key.
- */
-#define KEYBD_CAP_ASSISTANT_KEY BIT(3)
-
-struct ec_response_keybd_config {
- /*
- * Number of top row keys, excluding Esc and Screenlock.
- * If this is 0, all Vivaldi keyboard code is disabled.
- * (i.e. does not expose any tables to the kernel).
- */
- uint8_t num_top_row_keys;
-
- /*
- * The action keys in the top row, in order from left to right.
- * The values are filled from enum action_key. Esc and Screenlock
- * keys are not considered part of top row keys.
- */
- uint8_t action_keys[MAX_TOP_ROW_KEYS];
-
- /* Capability flags */
- uint8_t capabilities;
-
-} __ec_align1;
-
-/*
- * Configure smart discharge
- */
-#define EC_CMD_SMART_DISCHARGE 0x012B
-
-#define EC_SMART_DISCHARGE_FLAGS_SET BIT(0)
-
-/* Discharge rates when the system is in cutoff or hibernation. */
-struct discharge_rate {
- uint16_t cutoff; /* Discharge rate (uA) in cutoff */
- uint16_t hibern; /* Discharge rate (uA) in hibernation */
-};
-
-struct smart_discharge_zone {
- /* When the capacity (mAh) goes below this, EC cuts off the battery. */
- int cutoff;
- /* When the capacity (mAh) is below this, EC stays up. */
- int stayup;
-};
-
-struct ec_params_smart_discharge {
- uint8_t flags; /* EC_SMART_DISCHARGE_FLAGS_* */
- /*
- * Desired hours for the battery to survive before reaching 0%. Set to
- * zero to disable smart discharging. That is, the system hibernates as
- * soon as the G3 idle timer expires.
- */
- uint16_t hours_to_zero;
- /* Set both to zero to keep the current rates. */
- struct discharge_rate drate;
-};
+#define CBI_SET_NO_SYNC (1 << 0)
+#define CBI_SET_INIT (1 << 1)
-struct ec_response_smart_discharge {
- uint16_t hours_to_zero;
- struct discharge_rate drate;
- struct smart_discharge_zone dzone;
+struct __ec_align1 ec_params_set_cbi {
+ uint32_t tag; /* enum cbi_data_tag */
+ uint32_t flag; /* CBI_SET_* */
+ uint32_t size; /* Data size */
+ uint8_t data[]; /* For string and raw data */
};
/*****************************************************************************/
-/* Voltage regulator controls */
-
-/*
- * Get basic info of voltage regulator for given index.
- *
- * Returns the regulator name and supported voltage list in mV.
- */
-#define EC_CMD_REGULATOR_GET_INFO 0x012C
-
-/* Maximum length of regulator name */
-#define EC_REGULATOR_NAME_MAX_LEN 16
-
-/* Maximum length of the supported voltage list. */
-#define EC_REGULATOR_VOLTAGE_MAX_COUNT 16
-
-struct ec_params_regulator_get_info {
- uint32_t index;
-} __ec_align4;
-
-struct ec_response_regulator_get_info {
- char name[EC_REGULATOR_NAME_MAX_LEN];
- uint16_t num_voltages;
- uint16_t voltages_mv[EC_REGULATOR_VOLTAGE_MAX_COUNT];
-} __ec_align2;
-
-/*
- * Configure the regulator as enabled / disabled.
- */
-#define EC_CMD_REGULATOR_ENABLE 0x012D
-
-struct ec_params_regulator_enable {
- uint32_t index;
- uint8_t enable;
-} __ec_align4;
-
-/*
- * Query if the regulator is enabled.
- *
- * Returns 1 if the regulator is enabled, 0 if not.
- */
-#define EC_CMD_REGULATOR_IS_ENABLED 0x012E
-
-struct ec_params_regulator_is_enabled {
- uint32_t index;
-} __ec_align4;
-
-struct ec_response_regulator_is_enabled {
- uint8_t enabled;
-} __ec_align1;
-
-/*
- * Set voltage for the voltage regulator within the range specified.
- *
- * The driver should select the voltage in range closest to min_mv.
- *
- * Also note that this might be called before the regulator is enabled, and the
- * setting should be in effect after the regulator is enabled.
- */
-#define EC_CMD_REGULATOR_SET_VOLTAGE 0x012F
-
-struct ec_params_regulator_set_voltage {
- uint32_t index;
- uint32_t min_mv;
- uint32_t max_mv;
-} __ec_align4;
-
-/*
- * Get the currently configured voltage for the voltage regulator.
- *
- * Note that this might be called before the regulator is enabled, and this
- * should return the configured output voltage if the regulator is enabled.
- */
-#define EC_CMD_REGULATOR_GET_VOLTAGE 0x0130
-
-struct ec_params_regulator_get_voltage {
- uint32_t index;
-} __ec_align4;
-
-struct ec_response_regulator_get_voltage {
- uint32_t voltage_mv;
-} __ec_align4;
-
-/*
- * Gather all discovery information for the given port and partner type.
- *
- * Note that if discovery has not yet completed, only the currently completed
- * responses will be filled in. If the discovery data structures are changed
- * in the process of the command running, BUSY will be returned.
- *
- * VDO field sizes are set to the maximum possible number of VDOs a VDM may
- * contain, while the number of SVIDs here is selected to fit within the PROTO2
- * maximum parameter size.
- */
-#define EC_CMD_TYPEC_DISCOVERY 0x0131
-
-enum typec_partner_type {
- TYPEC_PARTNER_SOP = 0,
- TYPEC_PARTNER_SOP_PRIME = 1,
- TYPEC_PARTNER_SOP_PRIME_PRIME = 2,
-};
-
-struct ec_params_typec_discovery {
- uint8_t port;
- uint8_t partner_type; /* enum typec_partner_type */
-} __ec_align1;
-
-struct svid_mode_info {
- uint16_t svid;
- uint16_t mode_count; /* Number of modes partner sent */
- uint32_t mode_vdo[VDO_MAX_OBJECTS];
-};
-
-struct ec_response_typec_discovery {
- uint8_t identity_count; /* Number of identity VDOs partner sent */
- uint8_t svid_count; /* Number of SVIDs partner sent */
- uint16_t reserved;
- uint32_t discovery_vdo[VDO_MAX_OBJECTS];
- struct svid_mode_info svids[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align1;
-
-/* USB Type-C commands for AP-controlled device policy. */
-#define EC_CMD_TYPEC_CONTROL 0x0132
-
-enum typec_control_command {
- TYPEC_CONTROL_COMMAND_EXIT_MODES,
- TYPEC_CONTROL_COMMAND_CLEAR_EVENTS,
- TYPEC_CONTROL_COMMAND_ENTER_MODE,
- TYPEC_CONTROL_COMMAND_TBT_UFP_REPLY,
- TYPEC_CONTROL_COMMAND_USB_MUX_SET,
- TYPEC_CONTROL_COMMAND_BIST_SHARE_MODE,
- TYPEC_CONTROL_COMMAND_SEND_VDM_REQ,
-};
-
-/* Modes (USB or alternate) that a type-C port may enter. */
-enum typec_mode {
- TYPEC_MODE_DP,
- TYPEC_MODE_TBT,
- TYPEC_MODE_USB4,
-};
-
-/* Replies the AP may specify to the TBT EnterMode command as a UFP */
-enum typec_tbt_ufp_reply {
- TYPEC_TBT_UFP_REPLY_NAK,
- TYPEC_TBT_UFP_REPLY_ACK,
-};
-
-#define TYPEC_USB_MUX_SET_ALL_CHIPS 0xFF
-
-struct typec_usb_mux_set {
- /* Index of the mux to set in the chain */
- uint8_t mux_index;
-
- /* USB_PD_MUX_*-encoded USB mux state to set */
- uint8_t mux_flags;
-} __ec_align1;
-
-struct typec_vdm_req {
- /* VDM data, including VDM header */
- uint32_t vdm_data[VDO_MAX_SIZE];
- /* Number of 32-bit fields filled in */
- uint8_t vdm_data_objects;
- /* Partner to address - see enum typec_partner_type */
- uint8_t partner_type;
-} __ec_align1;
-
-struct ec_params_typec_control {
- uint8_t port;
- uint8_t command; /* enum typec_control_command */
- uint16_t reserved;
-
- /*
- * This section will be interpreted based on |command|. Define a
- * placeholder structure to avoid having to increase the size and bump
- * the command version when adding new sub-commands.
- */
- union {
- /* Used for CLEAR_EVENTS */
- uint32_t clear_events_mask;
- /* Used for ENTER_MODE - enum typec_mode */
- uint8_t mode_to_enter;
- /* Used for TBT_UFP_REPLY - enum typec_tbt_ufp_reply */
- uint8_t tbt_ufp_reply;
- /* Used for USB_MUX_SET */
- struct typec_usb_mux_set mux_params;
- /* Used for BIST_SHARE_MODE */
- uint8_t bist_share_mode;
- /* Used for VMD_REQ */
- struct typec_vdm_req vdm_req_params;
- uint8_t placeholder[128];
- };
-} __ec_align1;
-
-/*
- * Gather all status information for a port.
- *
- * Note: this covers many of the return fields from the deprecated
- * EC_CMD_USB_PD_CONTROL command, except those that are redundant with the
- * discovery data. The "enum pd_cc_states" is defined with the deprecated
- * EC_CMD_USB_PD_CONTROL command.
- *
- * This also combines in the EC_CMD_USB_PD_MUX_INFO flags.
- */
-#define EC_CMD_TYPEC_STATUS 0x0133
-
-/*
- * Power role.
- *
- * Note this is also used for PD header creation, and values align to those in
- * the Power Delivery Specification Revision 3.0 (See
- * 6.2.1.1.4 Port Power Role).
- */
-enum pd_power_role {
- PD_ROLE_SINK = 0,
- PD_ROLE_SOURCE = 1,
-};
-
-/*
- * Data role.
- *
- * Note this is also used for PD header creation, and the first two values
- * align to those in the Power Delivery Specification Revision 3.0 (See
- * 6.2.1.1.6 Port Data Role).
- */
-enum pd_data_role {
- PD_ROLE_UFP = 0,
- PD_ROLE_DFP = 1,
- PD_ROLE_DISCONNECTED = 2,
-};
-
-enum pd_vconn_role {
- PD_ROLE_VCONN_OFF = 0,
- PD_ROLE_VCONN_SRC = 1,
-};
-
-/*
- * Note: BIT(0) may be used to determine whether the polarity is CC1 or CC2,
- * regardless of whether a debug accessory is connected.
- */
-enum tcpc_cc_polarity {
- /*
- * _CCx: is used to indicate the polarity while not connected to
- * a Debug Accessory. Only one CC line will assert a resistor and
- * the other will be open.
- */
- POLARITY_CC1 = 0,
- POLARITY_CC2 = 1,
-
- /*
- * _CCx_DTS is used to indicate the polarity while connected to a
- * SRC Debug Accessory. Assert resistors on both lines.
- */
- POLARITY_CC1_DTS = 2,
- POLARITY_CC2_DTS = 3,
-
- /*
- * The current TCPC code relies on these specific POLARITY values.
- * Adding in a check to verify if the list grows for any reason
- * that this will give a hint that other places need to be
- * adjusted.
- */
- POLARITY_COUNT,
-};
-
-#define MODE_DP_PIN_A BIT(0)
-#define MODE_DP_PIN_B BIT(1)
-#define MODE_DP_PIN_C BIT(2)
-#define MODE_DP_PIN_D BIT(3)
-#define MODE_DP_PIN_E BIT(4)
-#define MODE_DP_PIN_F BIT(5)
-#define MODE_DP_PIN_ALL GENMASK(5, 0)
-
-#define PD_STATUS_EVENT_SOP_DISC_DONE BIT(0)
-#define PD_STATUS_EVENT_SOP_PRIME_DISC_DONE BIT(1)
-#define PD_STATUS_EVENT_HARD_RESET BIT(2)
-#define PD_STATUS_EVENT_DISCONNECTED BIT(3)
-#define PD_STATUS_EVENT_MUX_0_SET_DONE BIT(4)
-#define PD_STATUS_EVENT_MUX_1_SET_DONE BIT(5)
-#define PD_STATUS_EVENT_VDM_REQ_REPLY BIT(6)
-#define PD_STATUS_EVENT_VDM_REQ_FAILED BIT(7)
-#define PD_STATUS_EVENT_VDM_ATTENTION BIT(8)
-#define PD_STATUS_EVENT_COUNT 9
-
-/*
- * Encode and decode for BCD revision response
- *
- * Note: the major revision set is written assuming that the value given is the
- * Specification Revision from the PD header, which currently only maps to PD
- * 1.0-3.0 with the major revision being one greater than the binary value.
- */
-#define PD_STATUS_REV_SET_MAJOR(r) ((r + 1) << 12)
-#define PD_STATUS_REV_GET_MAJOR(r) ((r >> 12) & 0xF)
-#define PD_STATUS_REV_GET_MINOR(r) ((r >> 8) & 0xF)
-
-/*
- * Encode revision from partner RMDO
- *
- * Unlike the specification revision given in the PD header, specification and
- * version information returned in the revision message data object (RMDO) is
- * not offset.
- */
-#define PD_STATUS_RMDO_REV_SET_MAJOR(r) (r << 12)
-#define PD_STATUS_RMDO_REV_SET_MINOR(r) (r << 8)
-#define PD_STATUS_RMDO_VER_SET_MAJOR(r) (r << 4)
-#define PD_STATUS_RMDO_VER_SET_MINOR(r) (r)
-
-/*
- * Decode helpers for Source and Sink Capability PDOs
- *
- * Note: The Power Delivery Specification should be considered the ultimate
- * source of truth on the decoding of these PDOs
- */
-#define PDO_TYPE_FIXED (0 << 30)
-#define PDO_TYPE_BATTERY (1 << 30)
-#define PDO_TYPE_VARIABLE (2 << 30)
-#define PDO_TYPE_AUGMENTED (3 << 30)
-#define PDO_TYPE_MASK (3 << 30)
-
-/*
- * From Table 6-9 and Table 6-14 PD Rev 3.0 Ver 2.0
- *
- * <31:30> : Fixed Supply
- * <29> : Dual-Role Power
- * <28> : SNK/SRC dependent
- * <27> : Unconstrained Power
- * <26> : USB Communications Capable
- * <25> : Dual-Role Data
- * <24:20> : SNK/SRC dependent
- * <19:10> : Voltage in 50mV Units
- * <9:0> : Maximum Current in 10mA units
- */
-#define PDO_FIXED_DUAL_ROLE BIT(29)
-#define PDO_FIXED_UNCONSTRAINED BIT(27)
-#define PDO_FIXED_COMM_CAP BIT(26)
-#define PDO_FIXED_DATA_SWAP BIT(25)
-#define PDO_FIXED_FRS_CURR_MASK GENMASK(24, 23) /* Sink Cap only */
-#define PDO_FIXED_VOLTAGE(p) ((p >> 10 & 0x3FF) * 50)
-#define PDO_FIXED_CURRENT(p) ((p & 0x3FF) * 10)
-
-/*
- * From Table 6-12 and Table 6-16 PD Rev 3.0 Ver 2.0
- *
- * <31:30> : Battery
- * <29:20> : Maximum Voltage in 50mV units
- * <19:10> : Minimum Voltage in 50mV units
- * <9:0> : Maximum Allowable Power in 250mW units
- */
-#define PDO_BATT_MAX_VOLTAGE(p) ((p >> 20 & 0x3FF) * 50)
-#define PDO_BATT_MIN_VOLTAGE(p) ((p >> 10 & 0x3FF) * 50)
-#define PDO_BATT_MAX_POWER(p) ((p & 0x3FF) * 250)
-
-/*
- * From Table 6-11 and Table 6-15 PD Rev 3.0 Ver 2.0
- *
- * <31:30> : Variable Supply (non-Battery)
- * <29:20> : Maximum Voltage in 50mV units
- * <19:10> : Minimum Voltage in 50mV units
- * <9:0> : Operational Current in 10mA units
- */
-#define PDO_VAR_MAX_VOLTAGE(p) ((p >> 20 & 0x3FF) * 50)
-#define PDO_VAR_MIN_VOLTAGE(p) ((p >> 10 & 0x3FF) * 50)
-#define PDO_VAR_MAX_CURRENT(p) ((p & 0x3FF) * 10)
-
-/*
- * From Table 6-13 and Table 6-17 PD Rev 3.0 Ver 2.0
- *
- * Note this type is reserved in PD 2.0, and only one type of APDO is
- * supported as of the cited version.
- *
- * <31:30> : Augmented Power Data Object
- * <29:28> : Programmable Power Supply
- * <27> : PPS Power Limited
- * <26:25> : Reserved
- * <24:17> : Maximum Voltage in 100mV increments
- * <16> : Reserved
- * <15:8> : Minimum Voltage in 100mV increments
- * <7> : Reserved
- * <6:0> : Maximum Current in 50mA increments
- */
-#define PDO_AUG_MAX_VOLTAGE(p) ((p >> 17 & 0xFF) * 100)
-#define PDO_AUG_MIN_VOLTAGE(p) ((p >> 8 & 0xFF) * 100)
-#define PDO_AUG_MAX_CURRENT(p) ((p & 0x7F) * 50)
-
-struct ec_params_typec_status {
- uint8_t port;
-} __ec_align1;
-
-/*
- * ec_response_typec_status is deprecated. Use ec_response_typec_status_v1.
- * If you need to support old ECs who speak only v0, use
- * ec_response_typec_status_v0 instead. They're binary-compatible.
- */
-struct ec_response_typec_status /* DEPRECATED */ {
- uint8_t pd_enabled; /* PD communication enabled - bool */
- uint8_t dev_connected; /* Device connected - bool */
- uint8_t sop_connected; /* Device is SOP PD capable - bool */
- uint8_t source_cap_count; /* Number of Source Cap PDOs */
-
- uint8_t power_role; /* enum pd_power_role */
- uint8_t data_role; /* enum pd_data_role */
- uint8_t vconn_role; /* enum pd_vconn_role */
- uint8_t sink_cap_count; /* Number of Sink Cap PDOs */
-
- uint8_t polarity; /* enum tcpc_cc_polarity */
- uint8_t cc_state; /* enum pd_cc_states */
- uint8_t dp_pin; /* DP pin mode (MODE_DP_IN_[A-E]) */
- uint8_t mux_state; /* USB_PD_MUX* - encoded mux state */
-
- char tc_state[32]; /* TC state name */
-
- uint32_t events; /* PD_STATUS_EVENT bitmask */
-
- /*
- * BCD PD revisions for partners
- *
- * The format has the PD major revision in the upper nibble, and the PD
- * minor revision in the next nibble. The following two nibbles hold the
- * major and minor specification version. If a partner does not support
- * the Revision message, only the major revision will be given.
- * ex. PD Revision 3.2 Version 1.9 would map to 0x3219
- *
- * PD revision/version will be 0 if no PD device is connected.
- */
- uint16_t sop_revision;
- uint16_t sop_prime_revision;
-
- uint32_t source_cap_pdos[7]; /* Max 7 PDOs can be present */
-
- uint32_t sink_cap_pdos[7]; /* Max 7 PDOs can be present */
-} __ec_align1;
-
-struct cros_ec_typec_status {
- uint8_t pd_enabled; /* PD communication enabled - bool */
- uint8_t dev_connected; /* Device connected - bool */
- uint8_t sop_connected; /* Device is SOP PD capable - bool */
- uint8_t source_cap_count; /* Number of Source Cap PDOs */
-
- uint8_t power_role; /* enum pd_power_role */
- uint8_t data_role; /* enum pd_data_role */
- uint8_t vconn_role; /* enum pd_vconn_role */
- uint8_t sink_cap_count; /* Number of Sink Cap PDOs */
-
- uint8_t polarity; /* enum tcpc_cc_polarity */
- uint8_t cc_state; /* enum pd_cc_states */
- uint8_t dp_pin; /* DP pin mode (MODE_DP_IN_[A-E]) */
- uint8_t mux_state; /* USB_PD_MUX* - encoded mux state */
-
- char tc_state[32]; /* TC state name */
-
- uint32_t events; /* PD_STATUS_EVENT bitmask */
-
- /*
- * BCD PD revisions for partners
- *
- * The format has the PD major revision in the upper nibble, and the PD
- * minor revision in the next nibble. The following two nibbles hold the
- * major and minor specification version. If a partner does not support
- * the Revision message, only the major revision will be given.
- * ex. PD Revision 3.2 Version 1.9 would map to 0x3219
- *
- * PD revision/version will be 0 if no PD device is connected.
- */
- uint16_t sop_revision;
- uint16_t sop_prime_revision;
-} __ec_align1;
-
-struct ec_response_typec_status_v0 {
- struct cros_ec_typec_status typec_status;
- uint32_t source_cap_pdos[7]; /* Max 7 PDOs can be present */
- uint32_t sink_cap_pdos[7]; /* Max 7 PDOs can be present */
-} __ec_align1;
-
-struct ec_response_typec_status_v1 {
- struct cros_ec_typec_status typec_status;
- uint32_t source_cap_pdos[11]; /* Max 11 PDOs can be present */
- uint32_t sink_cap_pdos[11]; /* Max 11 PDOs can be present */
-} __ec_align1;
-
-/**
- * Get the number of peripheral charge ports
- */
-#define EC_CMD_PCHG_COUNT 0x0134
-
-#define EC_PCHG_MAX_PORTS 8
-
-struct ec_response_pchg_count {
- uint8_t port_count;
-} __ec_align1;
-
-/**
- * Get the status of a peripheral charge port
- */
-#define EC_CMD_PCHG 0x0135
-
-/* For v1 and v2 */
-struct ec_params_pchg {
- uint8_t port;
-} __ec_align1;
-
-struct ec_params_pchg_v3 {
- uint8_t port;
- /* Below are new in v3. */
- uint8_t reserved1;
- uint8_t reserved2;
- uint8_t reserved3;
- /* Errors acked by the host (thus to be cleared) */
- uint32_t error;
-} __ec_align1;
-
-/* For v1 */
-struct ec_response_pchg {
- uint32_t error; /* enum pchg_error */
- uint8_t state; /* enum pchg_state state */
- uint8_t battery_percentage;
- uint8_t unused0;
- uint8_t unused1;
- /* Fields added in version 1 */
- uint32_t fw_version;
- uint32_t dropped_event_count;
-} __ec_align4;
-
-/* For v2 and v3 */
-struct ec_response_pchg_v2 {
- uint32_t error; /* enum pchg_error */
- uint8_t state; /* enum pchg_state state */
- uint8_t battery_percentage;
- uint8_t unused0;
- uint8_t unused1;
- /* Fields added in version 1 */
- uint32_t fw_version;
- uint32_t dropped_event_count;
- /* Fields added in version 2 */
- uint32_t dropped_host_event_count;
-} __ec_align4;
-
-enum pchg_state {
- /* Charger is reset and not initialized. */
- PCHG_STATE_RESET = 0,
- /* Charger is initialized or disabled. */
- PCHG_STATE_INITIALIZED,
- /* Charger is enabled and ready to detect a device. */
- PCHG_STATE_ENABLED,
- /* Device is in proximity. */
- PCHG_STATE_DETECTED,
- /* Device is being charged. */
- PCHG_STATE_CHARGING,
- /* Device is fully charged. It implies DETECTED (& not charging). */
- PCHG_STATE_FULL,
- /* In download (a.k.a. firmware update) mode */
- PCHG_STATE_DOWNLOAD,
- /* In download mode. Ready for receiving data. */
- PCHG_STATE_DOWNLOADING,
- /* Device is ready for data communication. */
- PCHG_STATE_CONNECTED,
- /* Charger is in Built-In Self Test mode. */
- PCHG_STATE_BIST,
- /* Put no more entry below */
- PCHG_STATE_COUNT,
-};
-
-/* clang-format off */
-#define EC_PCHG_STATE_TEXT \
- { \
- [PCHG_STATE_RESET] = "RESET", \
- [PCHG_STATE_INITIALIZED] = "INITIALIZED", \
- [PCHG_STATE_ENABLED] = "ENABLED", \
- [PCHG_STATE_DETECTED] = "DETECTED", \
- [PCHG_STATE_CHARGING] = "CHARGING", \
- [PCHG_STATE_FULL] = "FULL", \
- [PCHG_STATE_DOWNLOAD] = "DOWNLOAD", \
- [PCHG_STATE_DOWNLOADING] = "DOWNLOADING", \
- [PCHG_STATE_CONNECTED] = "CONNECTED", \
- [PCHG_STATE_BIST] = "BIST", \
- }
-/* clang-format on */
-
-/**
- * Update firmware of peripheral chip
- */
-#define EC_CMD_PCHG_UPDATE 0x0136
-
-/* Port number is encoded in bit[28:31]. */
-#define EC_MKBP_PCHG_PORT_SHIFT 28
-/* Utility macros for converting MKBP event <-> port number. */
-#define EC_MKBP_PCHG_EVENT_TO_PORT(e) (((e) >> EC_MKBP_PCHG_PORT_SHIFT) & 0xf)
-#define EC_MKBP_PCHG_PORT_TO_EVENT(p) ((p) << EC_MKBP_PCHG_PORT_SHIFT)
-/* Utility macro for extracting event bits. */
-#define EC_MKBP_PCHG_EVENT_MASK(e) \
- ((e) & GENMASK(EC_MKBP_PCHG_PORT_SHIFT - 1, 0))
-
-#define EC_MKBP_PCHG_UPDATE_OPENED BIT(0)
-#define EC_MKBP_PCHG_WRITE_COMPLETE BIT(1)
-#define EC_MKBP_PCHG_UPDATE_CLOSED BIT(2)
-#define EC_MKBP_PCHG_UPDATE_ERROR BIT(3)
-#define EC_MKBP_PCHG_DEVICE_EVENT BIT(4)
-
-enum ec_pchg_update_cmd {
- /* Reset chip to normal mode. */
- EC_PCHG_UPDATE_CMD_RESET_TO_NORMAL = 0,
- /* Reset and put a chip in update (a.k.a. download) mode. */
- EC_PCHG_UPDATE_CMD_OPEN,
- /* Write a block of data containing FW image. */
- EC_PCHG_UPDATE_CMD_WRITE,
- /* Close update session. */
- EC_PCHG_UPDATE_CMD_CLOSE,
- /* Reset chip (without mode change). */
- EC_PCHG_UPDATE_CMD_RESET,
- /* Enable pass-through mode. */
- EC_PCHG_UPDATE_CMD_ENABLE_PASSTHRU,
- /* End of commands */
- EC_PCHG_UPDATE_CMD_COUNT,
-};
-
-struct ec_params_pchg_update {
- /* PCHG port number */
- uint8_t port;
- /* enum ec_pchg_update_cmd */
- uint8_t cmd;
- /* Padding */
- uint8_t reserved0;
- uint8_t reserved1;
- /* Version of new firmware */
- uint32_t version;
- /* CRC32 of new firmware */
- uint32_t crc32;
- /* Address in chip memory where <data> is written to */
- uint32_t addr;
- /* Size of <data> */
- uint32_t size;
- /* Partial data of new firmware */
- uint8_t data[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
-
-BUILD_ASSERT(EC_PCHG_UPDATE_CMD_COUNT <
- BIT(sizeof(((struct ec_params_pchg_update *)0)->cmd) * 8));
-
-struct ec_response_pchg_update {
- /* Block size */
- uint32_t block_size;
-} __ec_align4;
-
-#define EC_CMD_DISPLAY_SOC 0x0137
-
-struct ec_response_display_soc {
- /* Display charge in 10ths of a % (1000=100.0%) */
- int16_t display_soc;
- /* Full factor in 10ths of a % (1000=100.0%) */
- int16_t full_factor;
- /* Shutdown SoC in 10ths of a % (1000=100.0%) */
- int16_t shutdown_soc;
-} __ec_align2;
-
-#define EC_CMD_SET_BASE_STATE 0x0138
-
-struct ec_params_set_base_state {
- uint8_t cmd; /* enum ec_set_base_state_cmd */
-} __ec_align1;
-
-enum ec_set_base_state_cmd {
- EC_SET_BASE_STATE_DETACH = 0,
- EC_SET_BASE_STATE_ATTACH,
- EC_SET_BASE_STATE_RESET,
-};
-
-#define EC_CMD_I2C_CONTROL 0x0139
-
-/* Subcommands for I2C control */
-
-enum ec_i2c_control_command {
- EC_I2C_CONTROL_GET_SPEED,
- EC_I2C_CONTROL_SET_SPEED,
-};
-
-#define EC_I2C_CONTROL_SPEED_UNKNOWN 0
-
-struct ec_params_i2c_control {
- uint8_t port; /* I2C port number */
- uint8_t cmd; /* enum ec_i2c_control_command */
- union {
- uint16_t speed_khz;
- } cmd_params;
-} __ec_align_size1;
-
-struct ec_response_i2c_control {
- union {
- uint16_t speed_khz;
- } cmd_response;
-} __ec_align_size1;
-
-#define EC_CMD_RGBKBD_SET_COLOR 0x013A
-#define EC_CMD_RGBKBD 0x013B
-
-#define EC_RGBKBD_MAX_KEY_COUNT 128
-#define EC_RGBKBD_MAX_RGB_COLOR 0xFFFFFF
-#define EC_RGBKBD_MAX_SCALE 0xFF
-
-enum rgbkbd_state {
- /* RGB keyboard is reset and not initialized. */
- RGBKBD_STATE_RESET = 0,
- /* RGB keyboard is initialized but not enabled. */
- RGBKBD_STATE_INITIALIZED,
- /* RGB keyboard is disabled. */
- RGBKBD_STATE_DISABLED,
- /* RGB keyboard is enabled and ready to receive a command. */
- RGBKBD_STATE_ENABLED,
-
- /* Put no more entry below */
- RGBKBD_STATE_COUNT,
-};
-
-enum ec_rgbkbd_subcmd {
- EC_RGBKBD_SUBCMD_CLEAR = 1,
- EC_RGBKBD_SUBCMD_DEMO = 2,
- EC_RGBKBD_SUBCMD_SET_SCALE = 3,
- EC_RGBKBD_SUBCMD_GET_CONFIG = 4,
- EC_RGBKBD_SUBCMD_COUNT
-};
-
-enum ec_rgbkbd_demo {
- EC_RGBKBD_DEMO_OFF = 0,
- EC_RGBKBD_DEMO_FLOW = 1,
- EC_RGBKBD_DEMO_DOT = 2,
- EC_RGBKBD_DEMO_COUNT,
-};
-
-BUILD_ASSERT(EC_RGBKBD_DEMO_COUNT <= 255);
-
-enum ec_rgbkbd_type {
- EC_RGBKBD_TYPE_UNKNOWN = 0,
- EC_RGBKBD_TYPE_PER_KEY = 1, /* e.g. Vell */
- EC_RGBKBD_TYPE_FOUR_ZONES_40_LEDS = 2, /* e.g. Taniks */
- EC_RGBKBD_TYPE_FOUR_ZONES_12_LEDS = 3, /* e.g. Osiris */
- EC_RGBKBD_TYPE_FOUR_ZONES_4_LEDS = 4, /* e.g. Mithrax */
- EC_RGBKBD_TYPE_COUNT,
-};
-
-struct ec_rgbkbd_set_scale {
- uint8_t key;
- struct rgb_s scale;
-};
-
-struct ec_params_rgbkbd {
- uint8_t subcmd; /* Sub-command (enum ec_rgbkbd_subcmd) */
- union {
- struct rgb_s color; /* EC_RGBKBD_SUBCMD_CLEAR */
- uint8_t demo; /* EC_RGBKBD_SUBCMD_DEMO */
- struct ec_rgbkbd_set_scale set_scale;
- };
-} __ec_align1;
-
-struct ec_response_rgbkbd {
- /*
- * RGBKBD type supported by the device.
- */
-
- uint8_t rgbkbd_type; /* enum ec_rgbkbd_type */
-} __ec_align1;
-
-struct ec_params_rgbkbd_set_color {
- /* Specifies the starting key ID whose color is being changed. */
- uint8_t start_key;
- /* Specifies # of elements in <color>. */
- uint8_t length;
- /* RGB color data array of length up to MAX_KEY_COUNT. */
- struct rgb_s color[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align1;
-
-/*
- * Gather the response to the most recent VDM REQ from the AP, as well
- * as popping the oldest VDM:Attention from the DPM queue
- */
-#define EC_CMD_TYPEC_VDM_RESPONSE 0x013C
-
-struct ec_params_typec_vdm_response {
- uint8_t port;
-} __ec_align1;
-
-struct ec_response_typec_vdm_response {
- /* Number of 32-bit fields filled in */
- uint8_t vdm_data_objects;
- /* Partner to address - see enum typec_partner_type */
- uint8_t partner_type;
- /* enum ec_status describing VDM response */
- uint16_t vdm_response_err;
- /* VDM data, including VDM header */
- uint32_t vdm_response[VDO_MAX_SIZE];
- /* Number of 32-bit Attention fields filled in */
- uint8_t vdm_attention_objects;
- /* Number of remaining messages to consume */
- uint8_t vdm_attention_left;
- /* Reserved */
- uint16_t reserved1;
- /* VDM:Attention contents */
- uint32_t vdm_attention[2];
-} __ec_align1;
-
-/*
- * Get an active battery config from the EC.
- */
-#define EC_CMD_BATTERY_CONFIG 0x013D
-
-/* Version of struct batt_conf_header and its internals. */
-#define EC_BATTERY_CONFIG_STRUCT_VERSION 0x00
-
-/* Number of writes needed to invoke battery cutoff command */
-#define SHIP_MODE_WRITES 2
-
-struct ship_mode_info {
- uint8_t reg_addr;
- uint8_t reserved;
- uint16_t reg_data[SHIP_MODE_WRITES];
-} __packed __aligned(2);
-
-struct sleep_mode_info {
- uint8_t reg_addr;
- uint8_t reserved;
- uint16_t reg_data;
-} __packed __aligned(2);
-
-struct fet_info {
- uint8_t reg_addr;
- uint8_t reserved;
- uint16_t reg_mask;
- uint16_t disconnect_val;
- uint16_t cfet_mask; /* CHG FET status mask */
- uint16_t cfet_off_val;
-} __packed __aligned(2);
-
-enum fuel_gauge_flags {
- /*
- * Write Block Support. If enabled, we use a i2c write block command
- * instead of a 16-bit write. The effective difference is the i2c
- * transaction will prefix the length (2).
- */
- FUEL_GAUGE_FLAG_WRITE_BLOCK = BIT(0),
- /* Sleep command support. fuel_gauge_info.sleep_mode must be defined. */
- FUEL_GAUGE_FLAG_SLEEP_MODE = BIT(1),
- /*
- * Manufacturer access command support. If enabled, FET status is read
- * from the OperationStatus (0x54) register using the
- * ManufacturerBlockAccess (0x44).
- */
- FUEL_GAUGE_FLAG_MFGACC = BIT(2),
- /*
- * SMB block protocol support in manufacturer access command. If
- * enabled, FET status is read from the OperationStatus (0x54) register
- * using the ManufacturerBlockAccess (0x44).
- */
- FUEL_GAUGE_FLAG_MFGACC_SMB_BLOCK = BIT(3),
-};
-
-struct fuel_gauge_info {
- uint32_t flags;
- uint32_t board_flags;
- struct ship_mode_info ship_mode;
- struct sleep_mode_info sleep_mode;
- struct fet_info fet;
-} __packed __aligned(4);
-
-/* Battery constants */
-struct battery_info {
- /* Operation voltage in mV */
- uint16_t voltage_max;
- uint16_t voltage_normal;
- uint16_t voltage_min;
- /* (TODO(chromium:756700): add desired_charging_current */
- /**
- * Pre-charge to fast charge threshold in mV,
- * default to voltage_min if not specified.
- * This option is only available on isl923x and rt946x.
- */
- uint16_t precharge_voltage;
- /* Pre-charge current in mA */
- uint16_t precharge_current;
- /* Working temperature ranges in degrees C */
- int8_t start_charging_min_c;
- int8_t start_charging_max_c;
- int8_t charging_min_c;
- int8_t charging_max_c;
- int8_t discharging_min_c;
- int8_t discharging_max_c;
- /* Used only if CONFIG_BATTERY_VENDOR_PARAM is defined. */
- uint8_t vendor_param_start;
- uint8_t reserved;
-} __packed __aligned(2);
-
-/*
- * The 'config' of a battery.
- */
-struct board_batt_params {
- struct fuel_gauge_info fuel_gauge;
- struct battery_info batt_info;
-} __packed __aligned(4);
-
-/*
- * The SBS defines a string object as a block of chars, 32 byte maximum, where
- * the first byte indicates the number of chars in the block (excluding the
- * first byte).
- *
- * Thus, the actual string length (i.e. the value strlen returns) is limited to
- * 31 (=SBS_MAX_STR_SIZE).
- *
- * SBS_MAX_STR_OBJ_SIZE can be used as the size of a buffer for an SBS string
- * object but also as a buffer for a c-lang string because the null terminating
- * char also takes one byte.
- */
-#define SBS_MAX_STR_SIZE 31
-#define SBS_MAX_STR_OBJ_SIZE (SBS_MAX_STR_SIZE + 1)
-
-/*
- * Header describing a battery config stored in CBI. Only struct_version has
- * size and position independent of struct_version. The rest varies as
- * struct_version changes.
- *
- * Version 0
- * Layout:
- * +-------------+
- * | header |
- * +-------------+
- * | | ^
- * | manuf_name | | manuf_name_size
- * | | v
- * +-------------+
- * | device_name | ^
- * | | | device_name_size
- * | | v
- * +-------------+
- * | config | ^
- * | | |
- * | | | cbi data size
- * | | | - (header_size+manuf_name_size+device_name_size)
- * | | |
- * | | v
- * +-------------+
- * Note:
- * - manuf_name and device_name are not null-terminated.
- * - The config isn't aligned. It should be copied to struct board_batt_params
- * before its contents are accessed.
- */
-struct batt_conf_header {
- /* Version independent field. It's always here as a uint8_t. */
- uint8_t struct_version;
- /* Version 0 members */
- uint8_t manuf_name_size;
- uint8_t device_name_size;
- uint8_t reserved;
- /* manuf_name, device_name, board_batt_params follow after this. */
-} __packed;
-
-#define BATT_CONF_MAX_SIZE \
- (sizeof(struct batt_conf_header) + SBS_MAX_STR_OBJ_SIZE * 2 + \
- sizeof(struct board_batt_params))
-
-/*
- * Record the current AP firmware state. This is used to help testing, such as
- * with FAFT (Fully-Automated Firmware Test), which likes to know which firmware
- * screen is currently displayed.
- */
-
-#define EC_CMD_AP_FW_STATE 0x013E
-
-struct ec_params_ap_fw_state {
- /*
- * Value which indicates the state. This is not decoded by the EC, so
- * its meaning is entirely outside this code base.
- */
- uint32_t state;
-} __ec_align1;
-
-/*
- * UCSI OPM-PPM commands
- *
- * These commands are used for communication between OPM and PPM.
- * Only UCSI3.0 is tested.
- */
-
-#define EC_CMD_UCSI_PPM_SET 0x0140
-
-/* The data size is stored in the host command protocol header. */
-struct ec_params_ucsi_ppm_set {
- uint16_t offset;
- uint8_t data[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align2;
-
-#define EC_CMD_UCSI_PPM_GET 0x0141
-
-/* For 'GET' sub-commands, data will be returned as a raw payload. */
-struct ec_params_ucsi_ppm_get {
- uint16_t offset;
- uint8_t size;
-} __ec_align2;
-
-#define EC_CMD_SET_ALARM_SLP_S0_DBG 0x0142
-
-/* RTC params and response structures */
-struct ec_params_set_alarm_slp_s0_dbg {
- uint32_t time;
-} __ec_align2;
-
-/*
- * Control PDC tracing.
- * EC_PDC_TRACE_MSG_PORT_NONE disable tracing
- * EC_PDC_TRACE_MSG_PORT_ALL enable tracing on all ports
- * else, enable tracing on a specific port.
- */
-
-#define EC_CMD_PDC_TRACE_MSG_ENABLE 0x0143
-
-#define EC_PDC_TRACE_MSG_PORT_NONE 0xff
-#define EC_PDC_TRACE_MSG_PORT_ALL 0xfe
-
-struct ec_params_pdc_trace_msg_enable {
- uint8_t port;
-};
-
-struct ec_response_pdc_trace_msg_enable {
- /* Previous port value. */
- uint8_t port;
- uint8_t reserved;
- /* Number of free bytes in FIFO. */
- uint16_t fifo_free;
- /* Running total of dropped messages (may wrap). */
- uint32_t dropped_count;
-} __ec_align4;
-
-/*
- * Fetch multiple PDC trace entries.
- *
- * If no entries are available, pl_size is 0.
- * At most MAX_HC_PDC_TRACE_MSG_GET_PAYLOAD bytes worth of entries
- * are returned. Only whole entries are returned.
- */
-
-#define EC_CMD_PDC_TRACE_MSG_GET_ENTRIES 0x0144
-#define MAX_HC_PDC_TRACE_MSG_GET_PAYLOAD 240
-
-struct ec_response_pdc_trace_msg_get_entries {
- /* Total bytes of payload. */
- uint16_t pl_size;
- /* Packed array of pdc_trace_msg_entry structs. */
- uint8_t payload[FLEXIBLE_ARRAY_MEMBER_SIZE];
-};
-
-enum pdc_trace_msg_direction {
- PDC_TRACE_MSG_DIR_IN = 0,
- PDC_TRACE_MSG_DIR_OUT = 1,
-};
-
-struct pdc_trace_msg_entry {
- /*
- * Timestamp - least significant 32 bits of EC epoch time
- * (microseconds, will wrap around).
- */
- uint32_t time32_us;
- /* Entry sequence number (wraps around). */
- uint16_t seq_num;
- /* Port number associated with this entry. */
- uint8_t port_num;
- /* Direction of message (enum pdc_trace_msg_direction) */
- uint8_t direction;
- /* Format of pdc_data (PDC chip identifier). */
- uint8_t msg_type;
- /* Bytes in pdc_data. */
- uint8_t pdc_data_size;
- /* Captured PDC message. */
- uint8_t pdc_data[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align1;
-
-/* Enable/disable Ethernet POE power */
-#define EC_CMD_SWITCH_ENABLE_POE 0x0145
-
-struct ec_params_switch_enable_poe {
- uint8_t enabled;
-} __ec_align1;
-
-/*****************************************************************************/
/* The command range 0x200-0x2FF is reserved for Rotor. */
/*****************************************************************************/
@@ -8422,166 +4449,61 @@ struct ec_params_switch_enable_poe {
/*****************************************************************************/
/* Fingerprint MCU commands: range 0x0400-0x040x */
-/*
- * Fingerprint SPI sensor passthru command
- *
- * This command was used for prototyping and it's now deprecated.
- */
+/* Fingerprint SPI sensor passthru command: prototyping ONLY */
#define EC_CMD_FP_PASSTHRU 0x0400
#define EC_FP_FLAG_NOT_COMPLETE 0x1
-struct ec_params_fp_passthru {
- uint16_t len; /* Number of bytes to write then read */
- uint16_t flags; /* EC_FP_FLAG_xxx */
- uint8_t data[FLEXIBLE_ARRAY_MEMBER_SIZE]; /* Data to send */
-} __ec_align2;
+struct __ec_align2 ec_params_fp_passthru {
+ uint16_t len; /* Number of bytes to write then read */
+ uint16_t flags; /* EC_FP_FLAG_xxx */
+ uint8_t data[]; /* Data to send */
+};
+
+/* Fingerprint sensor configuration command: prototyping ONLY */
+#define EC_CMD_FP_SENSOR_CONFIG 0x0401
+
+#define EC_FP_SENSOR_CONFIG_MAX_REGS 16
+
+struct __ec_align2 ec_params_fp_sensor_config {
+ uint8_t count; /* Number of setup registers */
+ /*
+ * the value to send to each of the 'count' setup registers
+ * is stored in the 'data' array for 'len' bytes just after
+ * the previous one.
+ */
+ uint8_t len[EC_FP_SENSOR_CONFIG_MAX_REGS];
+ uint8_t data[];
+};
/* Configure the Fingerprint MCU behavior */
#define EC_CMD_FP_MODE 0x0402
/* Put the sensor in its lowest power mode */
-#define FP_MODE_DEEPSLEEP BIT(0)
+#define FP_MODE_DEEPSLEEP (1<<0)
/* Wait to see a finger on the sensor */
-#define FP_MODE_FINGER_DOWN BIT(1)
+#define FP_MODE_FINGER_DOWN (1<<1)
/* Poll until the finger has left the sensor */
-#define FP_MODE_FINGER_UP BIT(2)
+#define FP_MODE_FINGER_UP (1<<2)
/* Capture the current finger image */
-#define FP_MODE_CAPTURE BIT(3)
-/* Finger enrollment session on-going */
-#define FP_MODE_ENROLL_SESSION BIT(4)
-/* Enroll the current finger image */
-#define FP_MODE_ENROLL_IMAGE BIT(5)
-/* Try to match the current finger image */
-#define FP_MODE_MATCH BIT(6)
-/* Reset and re-initialize the sensor. */
-#define FP_MODE_RESET_SENSOR BIT(7)
-/* Sensor maintenance for dead pixels. */
-#define FP_MODE_SENSOR_MAINTENANCE BIT(8)
-/* Encrypt template. */
-#define FP_MODE_ENCRYPT_TEMPLATE BIT(9)
-/* Decrypt template. */
-#define FP_MODE_DECRYPT_TEMPLATE BIT(10)
-/* Disable template update. */
-#define FP_MODE_MATCH_NO_TEMPLATE_UPDATE BIT(11)
+#define FP_MODE_CAPTURE (1<<3)
/* special value: don't change anything just read back current mode */
-#define FP_MODE_DONT_CHANGE BIT(31)
-
-#define FP_VALID_MODES \
- (FP_MODE_DEEPSLEEP | FP_MODE_FINGER_DOWN | FP_MODE_FINGER_UP | \
- FP_MODE_CAPTURE | FP_MODE_ENROLL_SESSION | FP_MODE_ENROLL_IMAGE | \
- FP_MODE_MATCH | FP_MODE_RESET_SENSOR | FP_MODE_SENSOR_MAINTENANCE | \
- FP_MODE_ENCRYPT_TEMPLATE | FP_MODE_DECRYPT_TEMPLATE | \
- FP_MODE_MATCH_NO_TEMPLATE_UPDATE | FP_MODE_DONT_CHANGE)
-
-#define FP_MODES_WITH_AUTHENTICATION (FP_MODE_ENROLL_SESSION | FP_MODE_MATCH)
-#define FP_MODES_CRYPTO_IN_PROGRESS \
- (FP_MODE_ENCRYPT_TEMPLATE | FP_MODE_DECRYPT_TEMPLATE)
-#define FP_MODES_TEMPLATE_OPERATION \
- (FP_MODE_ENROLL_SESSION | FP_MODE_ENROLL_IMAGE | FP_MODE_MATCH | \
- FP_MODE_RESET_SENSOR | FP_MODE_ENCRYPT_TEMPLATE | \
- FP_MODE_DECRYPT_TEMPLATE)
-
-/* Capture types defined in bits [30..26] */
-#define FP_MODE_CAPTURE_TYPE_SHIFT 26
-#define FP_MODE_CAPTURE_TYPE_MASK (0x1F << FP_MODE_CAPTURE_TYPE_SHIFT)
-/**
- * enum fp_capture_type - Specifies the "mode" when capturing images.
- *
- * @FP_CAPTURE_TYPE_INVALID: an invalid capture type
- * @FP_CAPTURE_VENDOR_FORMAT: Capture 1-3 images and choose the best quality
- * image (produces 'frame_size' bytes)
- * @FP_CAPTURE_SIMPLE_IMAGE: Simple raw image capture (produces width x height x
- * bpp bits)
- * @FP_CAPTURE_DEFECT_PXL_TEST: Capture for check defect pixel test
- * @FP_CAPTURE_ABNORMAL_TEST: Capture for check abnormal pixel test
- * @FP_CAPTURE_NOISE_TEST: Capture for check noise test
- * @FP_CAPTURE_PATTERN0: Self test pattern (e.g. checkerboard)
- * @FP_CAPTURE_PATTERN1: Self test pattern (e.g. inverted checkerboard)
- * @FP_CAPTURE_QUALITY_TEST: Capture for Quality test with fixed contrast
- * @FP_CAPTURE_RESET_TEST: Capture for pixel reset value test
- * @FP_CAPTURE_TYPE_MAX: End of enum
- *
- * @note This enum must remain ordered, if you add new values you must ensure
- * that FP_CAPTURE_TYPE_MAX is still the last one.
- */
-/* LINT.IfChange */
-enum fp_capture_type {
- FP_CAPTURE_TYPE_INVALID = -1,
- FP_CAPTURE_VENDOR_FORMAT = 0,
- FP_CAPTURE_DEFECT_PXL_TEST = 1,
- FP_CAPTURE_ABNORMAL_TEST = 2,
- FP_CAPTURE_NOISE_TEST = 3,
- FP_CAPTURE_SIMPLE_IMAGE = 4,
- FP_CAPTURE_PATTERN0 = 8,
- FP_CAPTURE_PATTERN1 = 12,
- FP_CAPTURE_QUALITY_TEST = 16,
- FP_CAPTURE_RESET_TEST = 20,
- FP_CAPTURE_TYPE_MAX,
-};
-/* LINT.ThenChange(/test/fpsensor_utils.cc,
- * /zephyr/test/fingerprint/task/src/fpsensor_debug.cc)
- */
-
-/* The maximum number of capture types in enum fp_capture_type */
-#define FP_MAX_CAPTURE_TYPES 9
+#define FP_MODE_DONT_CHANGE (1<<31)
-/* Extracts the capture type from the sensor 'mode' word */
-#define FP_CAPTURE_TYPE(mode) \
- (enum fp_capture_type)(((mode) & FP_MODE_CAPTURE_TYPE_MASK) >> \
- FP_MODE_CAPTURE_TYPE_SHIFT)
-
-#define FP_MAC_LENGTH 32
-
-struct ec_params_fp_mode {
+struct __ec_align4 ec_params_fp_mode {
uint32_t mode; /* as defined by FP_MODE_ constants */
-} __ec_align4;
-
-struct ec_params_fp_mode_v1 {
- uint32_t mode; /* as defined by FP_MODE_ constants */
- uint8_t mac[FP_MAC_LENGTH];
-} __ec_align4;
+ /* TBD */
+};
-struct ec_response_fp_mode {
+struct __ec_align4 ec_response_fp_mode {
uint32_t mode; /* as defined by FP_MODE_ constants */
-} __ec_align4;
+ /* TBD */
+};
/* Retrieve Fingerprint sensor information */
#define EC_CMD_FP_INFO 0x0403
-/* Mask for dead pixels */
-#define FP_ERROR_DEAD_PIXELS_MASK 0x3FF
-/* Maximum number of dead pixels */
-#define FP_ERROR_DEAD_PIXELS_MAX (FP_ERROR_DEAD_PIXELS_MASK - 1)
-/* Number of dead pixels detected on the last maintenance */
-#define FP_ERROR_DEAD_PIXELS(errors) ((errors) & FP_ERROR_DEAD_PIXELS_MASK)
-/* Unknown number of dead pixels detected on the last maintenance */
-#define FP_ERROR_DEAD_PIXELS_UNKNOWN (FP_ERROR_DEAD_PIXELS_MASK)
-/* No interrupt from the sensor */
-#define FP_ERROR_NO_IRQ BIT(12)
-/* SPI communication error */
-#define FP_ERROR_SPI_COMM BIT(13)
-/* Invalid sensor Hardware ID */
-#define FP_ERROR_BAD_HWID BIT(14)
-/* Sensor initialization failed */
-#define FP_ERROR_INIT_FAIL BIT(15)
-
-struct ec_response_fp_info_v0 {
- /* Sensor identification */
- uint32_t vendor_id;
- uint32_t product_id;
- uint32_t model_id;
- uint32_t version;
- /* Image frame characteristics */
- uint32_t frame_size;
- uint32_t pixel_format; /* using V4L2_PIX_FMT_ */
- uint16_t width;
- uint16_t height;
- uint16_t bpp;
- uint16_t errors; /* see FP_ERROR_ flags above */
-} __ec_align4;
-
-struct ec_response_fp_info {
+struct __ec_align2 ec_response_fp_info {
/* Sensor identification */
uint32_t vendor_id;
uint32_t product_id;
@@ -8593,434 +4515,16 @@ struct ec_response_fp_info {
uint16_t width;
uint16_t height;
uint16_t bpp;
- uint16_t errors; /* see FP_ERROR_ flags above */
- /* Template/finger current information */
- uint32_t template_size; /* max template size in bytes */
- uint16_t template_max; /* maximum number of fingers/templates */
- uint16_t template_valid; /* number of valid fingers/templates */
- uint32_t template_dirty; /* bitmap of templates with MCU side changes */
- uint32_t template_version; /* version of the template format */
-} __ec_align4;
-
-struct fp_sensor_info {
- /* Sensor identification */
- uint32_t vendor_id;
- uint32_t product_id;
- uint32_t model_id;
- uint32_t version;
- uint16_t num_capture_types; /* number of image capture types */
- uint16_t errors; /* see FP_ERROR_ flags above */
-} __ec_align4;
-BUILD_ASSERT(sizeof(struct fp_sensor_info) == 20);
-
-struct fp_template_info {
- /* Template/finger current information */
- uint32_t template_size; /* max template size in bytes */
- uint16_t template_max; /* maximum number of fingers/templates */
- uint16_t template_valid; /* number of valid fingers/templates */
- uint32_t template_dirty; /* bitmap of templates with MCU side changes */
- uint32_t template_version; /* version of the template format */
-} __ec_align4;
-BUILD_ASSERT(sizeof(struct fp_template_info) == 16);
-
-struct fp_image_frame_params {
- /* Image frame characteristics */
- uint32_t frame_size;
- uint32_t pixel_format; /* using V4L2_PIX_FMT_ */
- uint16_t width;
- uint16_t height;
- uint16_t bpp;
- /** Type of image capture from enum fp_capture_type. */
- uint8_t fp_capture_type;
- uint8_t reserved; /**< padding for alignment */
-} __ec_align4;
-BUILD_ASSERT(sizeof(struct fp_image_frame_params) == 16);
-
-struct ec_response_fp_info_v2 {
- /* Sensor identification */
- struct fp_sensor_info sensor_info;
- /* Template/finger current information */
- struct fp_template_info template_info;
- /* fingerprint image frame parameters */
- struct fp_image_frame_params
- image_frame_params[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
-BUILD_ASSERT(sizeof(struct ec_response_fp_info_v2) == 36);
-
-struct fp_image_frame_params_v2 {
- /* Image frame characteristics */
- uint32_t frame_size;
- uint32_t image_data_offset_bytes; /**< Byte offset of image buffer */
- uint32_t pixel_format; /* using V4L2_PIX_FMT_ */
- uint16_t width;
- uint16_t height;
- uint16_t bpp;
- /** Type of image capture from enum fp_capture_type. */
- uint8_t fp_capture_type;
- uint8_t reserved; /**< padding for alignment */
-} __ec_align4;
-BUILD_ASSERT(sizeof(struct fp_image_frame_params_v2) == 20);
-
-struct ec_response_fp_info_v3 {
- /* Sensor identification */
- struct fp_sensor_info sensor_info;
- /* Template/finger current information */
- struct fp_template_info template_info;
- /* fingerprint image frame parameters */
- struct fp_image_frame_params_v2
- image_frame_params[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
-BUILD_ASSERT(sizeof(struct ec_response_fp_info_v3) == 36);
-
-/* Get the last captured finger frame or a template content */
-#define EC_CMD_FP_FRAME 0x0404
-
-/* constants defining the 'offset' field which also contains the frame index */
-#define FP_FRAME_INDEX_SHIFT 28
-/* Frame buffer where the captured image is stored */
-#define FP_FRAME_INDEX_RAW_IMAGE 0
-/* First frame buffer holding a template */
-#define FP_FRAME_INDEX_TEMPLATE 1
-#define FP_FRAME_GET_BUFFER_INDEX(offset) ((offset) >> FP_FRAME_INDEX_SHIFT)
-#define FP_FRAME_OFFSET_MASK 0x0FFFFFFF
-
-/* Version of the format of the encrypted templates. */
-#define FP_TEMPLATE_FORMAT_VERSION 4
-
-/* Constants for encryption parameters */
-#define FP_CONTEXT_NONCE_BYTES 12
-#define FP_CONTEXT_USERID_BYTES 32
-#define FP_CONTEXT_USERID_WORDS (FP_CONTEXT_USERID_BYTES / sizeof(uint32_t))
-#define FP_CONTEXT_TAG_BYTES 16
-#define FP_CONTEXT_ENCRYPTION_SALT_BYTES 16
-#define FP_CONTEXT_TPM_BYTES 32
-
-/* Constants for positive match parameters. */
-#define FP_POSITIVE_MATCH_SALT_BYTES 16
-
-struct ec_fp_template_encryption_metadata {
- /*
- * Version of the structure format (N=3).
- */
- uint16_t struct_version;
- /* Reserved bytes, set to 0. */
- uint16_t reserved;
- /*
- * The salt is *only* ever used for key derivation. The nonce is unique,
- * a different one is used for every message.
- */
- uint8_t nonce[FP_CONTEXT_NONCE_BYTES];
- uint8_t encryption_salt[FP_CONTEXT_ENCRYPTION_SALT_BYTES];
- uint8_t tag[FP_CONTEXT_TAG_BYTES];
};
-struct ec_params_fp_frame {
- /*
- * The offset contains the template index or FP_FRAME_INDEX_RAW_IMAGE
- * in the high nibble, and the real offset within the frame in
- * FP_FRAME_OFFSET_MASK.
- */
- uint32_t offset;
- uint32_t size;
-} __ec_align4;
-
-/*
- * FP_FRAME commands:
- *
- * - FP_FRAME_GET_RAW_IMAGE command can be used to get raw image from sensor.
- * This command works only when the system is not locked. The template index
- * is ignored.
- * - FP_FRAME_ENCRYPT_TEMPLATE command is used to request encryption of the
- * template with provided template index. Offset and size are ignored.
- * The encryption process is considered as started only after EC_SUCCESS
- * was returned.
- * - FP_FRAME_GET_ENCRYPTED_TEMPLATE command is used to obtain the encrypted
- * template.
- */
-enum fp_frame_cmd {
- FP_FRAME_GET_RAW_IMAGE = 0,
- FP_FRAME_ENCRYPT_TEMPLATE = 1,
- FP_FRAME_GET_ENCRYPTED_TEMPLATE = 2,
-};
-
-struct ec_params_fp_frame_v1 {
- uint8_t cmd;
- uint8_t reserved;
- uint16_t index;
- uint32_t offset;
- uint32_t size;
-} __ec_align4;
-
-/* Load a template into the MCU */
-#define EC_CMD_FP_TEMPLATE 0x0405
-
-/* Flag in the 'size' field indicating that the full template has been sent */
-#define FP_TEMPLATE_COMMIT 0x80000000
+/* Get the last captured finger frame: TODO: will be AES-encrypted */
+#define EC_CMD_FP_FRAME 0x0404
-struct ec_params_fp_template {
+struct __ec_align4 ec_params_fp_frame {
uint32_t offset;
uint32_t size;
- uint8_t data[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
-
-/*
- * FP_TEMPLATE commands:
- *
- * - FP_TEMPLATE_LOAD command is used to copy part of the template to FPMCU
- * buffer.
- * - FP_TEMPLATE_DECRYPT command starts template decryption.
- * - FP_TEMPLATE_GET_RESULT command is used to check decryption result.
- */
-enum fp_template_cmd {
- FP_TEMPLATE_LOAD = 0,
- FP_TEMPLATE_DECRYPT = 1,
- FP_TEMPLATE_GET_RESULT = 2,
};
-struct ec_params_fp_template_v1 {
- uint32_t offset;
- uint32_t size;
- uint8_t cmd;
- uint8_t data[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
-
-/* Clear the current fingerprint user context and set a new one */
-#define EC_CMD_FP_CONTEXT 0x0406
-
-struct ec_params_fp_context {
- uint32_t userid[FP_CONTEXT_USERID_WORDS];
-} __ec_align4;
-
-enum fp_context_action {
- FP_CONTEXT_ASYNC = 0,
- FP_CONTEXT_GET_RESULT = 1,
-};
-
-/* Version 1 of the command is "asynchronous". */
-struct ec_params_fp_context_v1 {
- uint8_t action; /**< enum fp_context_action */
- uint8_t reserved[3]; /**< padding for alignment */
- uint32_t userid[FP_CONTEXT_USERID_WORDS];
-} __ec_align4;
-
-#define EC_CMD_FP_STATS 0x0407
-
-#define FPSTATS_CAPTURE_INV BIT(0)
-#define FPSTATS_MATCHING_INV BIT(1)
-
-struct ec_response_fp_stats {
- uint32_t capture_time_us;
- uint32_t matching_time_us;
- uint32_t overall_time_us;
- struct {
- uint32_t lo;
- uint32_t hi;
- } overall_t0;
- uint8_t timestamps_invalid;
- int8_t template_matched;
-} __ec_align2;
-
-#define EC_CMD_FP_SEED 0x0408
-struct ec_params_fp_seed {
- /*
- * Version of the structure format (N=3).
- */
- uint16_t struct_version;
- /* Reserved bytes, set to 0. */
- uint16_t reserved;
- /* Seed from the TPM. */
- uint8_t seed[FP_CONTEXT_TPM_BYTES];
-} __ec_align4;
-
-#define EC_CMD_FP_ENC_STATUS 0x0409
-
-/* FP TPM seed has been set or not */
-#define FP_ENC_STATUS_SEED_SET BIT(0)
-/* Session was established or not */
-#define FP_CONTEXT_STATUS_SESSION_ESTABLISHED BIT(1)
-/* FP session_nonce had been set or not*/
-#define FP_CONTEXT_SESSION_NONCE_SET BIT(2)
-/* FP user_id had been set or not*/
-#define FP_CONTEXT_USER_ID_SET BIT(3)
-/* The operation authentication challenge was generated */
-#define FP_AUTH_CHALLENGE_SET BIT(4)
-/* Encrypted template is available */
-#define FP_ENCRYPTED_TEMPLATE_READY BIT(5)
-
-struct ec_response_fp_encryption_status {
- /* Used bits in encryption engine status */
- uint32_t valid_flags;
- /* Encryption engine status */
- uint32_t status;
-} __ec_align4;
-
-#define EC_CMD_FP_READ_MATCH_SECRET 0x040A
-struct ec_params_fp_read_match_secret {
- uint16_t fgr;
-} __ec_align4;
-
-/*
- * Fingerprint vendor defined command.
- *
- * A custom per fingerprint vendor host command. It can be used to fetch some
- * custom data during testing, manufacturing etc.
- *
- * This command should be handled only if the system is unlocked.
- */
-#define EC_CMD_FP_VENDOR 0x040B
-struct ec_params_fp_vendor {
- /* Parameter to be used by FP vendors. */
- uint32_t param1;
-} __ec_align4;
-
-/* The positive match secret has the length of the SHA256 digest. */
-#define FP_POSITIVE_MATCH_SECRET_BYTES 32
-struct ec_response_fp_read_match_secret {
- uint8_t positive_match_secret[FP_POSITIVE_MATCH_SECRET_BYTES];
-} __ec_align4;
-
-#define FP_ELLIPTIC_CURVE_PUBLIC_KEY_POINT_LEN 32
-
-struct fp_elliptic_curve_public_key {
- uint8_t x[FP_ELLIPTIC_CURVE_PUBLIC_KEY_POINT_LEN];
- uint8_t y[FP_ELLIPTIC_CURVE_PUBLIC_KEY_POINT_LEN];
-} __ec_align4;
-
-#define FP_AES_KEY_ENC_METADATA_VERSION 1
-#define FP_AES_KEY_NONCE_BYTES 12
-#define FP_AES_KEY_ENCRYPTION_SALT_BYTES 16
-#define FP_AES_KEY_TAG_BYTES 16
-
-struct fp_auth_command_encryption_metadata {
- /* Version of the structure format */
- uint16_t struct_version;
- /* Reserved bytes, set to 0. */
- uint16_t reserved;
- /*
- * The salt is *only* ever used for key derivation. The nonce is unique,
- * a different one is used for every message.
- */
- uint8_t nonce[FP_AES_KEY_NONCE_BYTES];
- uint8_t encryption_salt[FP_AES_KEY_ENCRYPTION_SALT_BYTES];
- uint8_t tag[FP_AES_KEY_TAG_BYTES];
-} __ec_align4;
-
-#define FP_ELLIPTIC_CURVE_PRIVATE_KEY_LEN 32
-#define FP_ELLIPTIC_CURVE_PUBLIC_KEY_IV_LEN 16
-
-struct fp_encrypted_private_key {
- struct fp_auth_command_encryption_metadata info;
- uint8_t data[FP_ELLIPTIC_CURVE_PRIVATE_KEY_LEN];
-} __ec_align4;
-
-#define EC_CMD_FP_ESTABLISH_PAIRING_KEY_KEYGEN 0x0410
-
-struct ec_response_fp_establish_pairing_key_keygen {
- struct fp_elliptic_curve_public_key pubkey;
-} __ec_align4;
-
-#define FP_PAIRING_KEY_LEN 32
-
-struct ec_fp_encrypted_pairing_key {
- struct fp_auth_command_encryption_metadata info;
- uint8_t data[FP_PAIRING_KEY_LEN];
-} __ec_align4;
-
-#define EC_CMD_FP_ESTABLISH_PAIRING_KEY_WRAP 0x0411
-
-struct ec_params_fp_establish_pairing_key_wrap {
- struct fp_elliptic_curve_public_key peers_pubkey;
-} __ec_align4;
-
-struct ec_response_fp_establish_pairing_key_wrap {
- struct ec_fp_encrypted_pairing_key encrypted_pairing_key;
-} __ec_align4;
-
-#define EC_CMD_FP_LOAD_PAIRING_KEY 0x0412
-
-typedef struct ec_response_fp_establish_pairing_key_wrap
- ec_params_fp_load_pairing_key;
-
-#define FP_CK_SESSION_NONCE_LEN 32
-
-#define EC_CMD_FP_GENERATE_NONCE 0x0413
-struct ec_response_fp_generate_nonce {
- uint8_t nonce[FP_CK_SESSION_NONCE_LEN];
-} __ec_align4;
-
-#define EC_CMD_FP_ESTABLISH_SESSION 0x0414
-struct ec_params_fp_establish_session {
- uint8_t peer_nonce[FP_CK_SESSION_NONCE_LEN];
- uint8_t enc_tpm_seed[FP_CONTEXT_TPM_BYTES];
- uint8_t nonce[FP_AES_KEY_NONCE_BYTES];
- uint8_t tag[FP_AES_KEY_TAG_BYTES];
-} __ec_align4;
-
-#define FP_CHALLENGE_SIZE 32
-
-#define EC_CMD_FP_GENERATE_CHALLENGE 0x0415
-struct ec_response_fp_generate_challenge {
- uint8_t challenge[FP_CHALLENGE_SIZE];
-} __ec_align4;
-
-#define EC_CMD_FP_CONFIRM_TEMPLATE 0x0416
-struct ec_params_fp_confirm_template {
- uint8_t mac[FP_MAC_LENGTH];
-} __ec_align4;
-
-#define EC_CMD_FP_SIGN_MATCH 0x0417
-struct ec_params_fp_sign_match {
- uint8_t challenge[FP_CHALLENGE_SIZE];
-} __ec_align4;
-
-struct ec_response_fp_sign_match {
- uint8_t signature[FP_MAC_LENGTH];
-} __ec_align4;
-
-/*
- * Fingerprint ASCP claim command.
- *
- */
-#define EC_CMD_FP_ASCP_CLAIM 0x0420
-
-/*
- * ECC public key with no point compression as defined in
- * ANSI X9.62 section 4.3.6 (0x04||x||y), P256v1 curve.
- */
-#define FP_ASCP_KEY_SIZE 65
-/* ECC signature, P256v1 curve, P1363 encoding (r||s) */
-#define FP_ASCP_SIGNATURE_SIZE 64
-/* SHA256 */
-#define FP_ASCP_HASH_SIZE 32
-
-struct ec_response_fp_ascp_claim {
- /* Model public key. */
- uint8_t pk_m[FP_ASCP_KEY_SIZE];
- /* Model public key signature. */
- uint8_t s_goog[FP_ASCP_SIGNATURE_SIZE];
- /* Device public key. */
- uint8_t pk_d[FP_ASCP_KEY_SIZE];
- /* Device public key signature (signed using model key). */
- uint8_t s_m[FP_ASCP_SIGNATURE_SIZE];
- /* Ephemeral public key used in ECDH procedure. */
- uint8_t pk_f[FP_ASCP_KEY_SIZE];
- /* SHA256 hash of the firmware. */
- uint8_t h_f[FP_ASCP_HASH_SIZE];
- /* Signature of the SHA256( 0xC001 || h_f || pk_f) using device key. */
- uint8_t s_d[FP_ASCP_SIGNATURE_SIZE];
-} __ec_align4;
-
-/*
- * Fingerprint ASCP establish command.
- *
- */
-#define EC_CMD_FP_ASCP_ESTABLISH 0x0421
-
-struct ec_params_fp_ascp_establish {
- /* TA's ephemeral public key. */
- uint8_t pk_g[FP_ASCP_KEY_SIZE];
-} __ec_align4;
-
/*****************************************************************************/
/* Touchpad MCU commands: range 0x0500-0x05FF */
@@ -9030,10 +4534,10 @@ struct ec_params_fp_ascp_establish {
/* Get number of frame types, and the size of each type */
#define EC_CMD_TP_FRAME_INFO 0x0501
-struct ec_response_tp_frame_info {
+struct __ec_align4 ec_response_tp_frame_info {
uint32_t n_frames;
- uint32_t frame_sizes[FLEXIBLE_ARRAY_MEMBER_SIZE];
-} __ec_align4;
+ uint32_t frame_sizes[0];
+};
/* Create a snapshot of current frame readings */
#define EC_CMD_TP_FRAME_SNAPSHOT 0x0502
@@ -9041,246 +4545,12 @@ struct ec_response_tp_frame_info {
/* Read the frame */
#define EC_CMD_TP_FRAME_GET 0x0503
-struct ec_params_tp_frame_get {
+struct __ec_align4 ec_params_tp_frame_get {
uint32_t frame_index;
uint32_t offset;
uint32_t size;
-} __ec_align4;
-
-/*****************************************************************************/
-/* EC-EC communication commands: range 0x0600-0x06FF */
-
-#define EC_COMM_TEXT_MAX 8
-
-/*
- * Get battery static information, i.e. information that never changes, or
- * very infrequently.
- */
-#define EC_CMD_BATTERY_GET_STATIC 0x0600
-
-/**
- * struct ec_params_battery_static_info - Battery static info parameters
- * @index: Battery index.
- */
-struct ec_params_battery_static_info {
- uint8_t index;
-} __ec_align_size1;
-
-/**
- * struct ec_response_battery_static_info - Battery static info response
- * @design_capacity: Battery Design Capacity (mAh)
- * @design_voltage: Battery Design Voltage (mV)
- * @manufacturer: Battery Manufacturer String
- * @model: Battery Model Number String
- * @serial: Battery Serial Number String
- * @type: Battery Type String
- * @cycle_count: Battery Cycle Count
- */
-struct ec_response_battery_static_info {
- uint16_t design_capacity;
- uint16_t design_voltage;
- char manufacturer[EC_COMM_TEXT_MAX];
- char model[EC_COMM_TEXT_MAX];
- char serial[EC_COMM_TEXT_MAX];
- char type[EC_COMM_TEXT_MAX];
- /* TODO(crbug.com/795991): Consider moving to dynamic structure. */
- uint32_t cycle_count;
-} __ec_align4;
-
-/**
- * struct ec_response_battery_static_info_v1 - hostcmd v1 battery static info
- * Equivalent to struct ec_response_battery_static_info, but with longer
- * strings.
- * @design_capacity: battery design capacity (in mAh)
- * @design_voltage: battery design voltage (in mV)
- * @cycle_count: battery cycle count
- * @manufacturer_ext: battery manufacturer string
- * @model_ext: battery model string
- * @serial_ext: battery serial number string
- * @type_ext: battery type string
- */
-struct ec_response_battery_static_info_v1 {
- uint16_t design_capacity;
- uint16_t design_voltage;
- uint32_t cycle_count;
- char manufacturer_ext[12];
- char model_ext[12];
- char serial_ext[12];
- char type_ext[12];
-} __ec_align4;
-
-/**
- * struct ec_response_battery_static_info_v2 - hostcmd v2 battery static info
- *
- * Equivalent to struct ec_response_battery_static_info, but with strings
- * further lengthened (relative to v1) to accommodate the maximum string length
- * permitted by the Smart Battery Data Specification revision 1.1 and fields
- * renamed to better match that specification.
- *
- * @design_capacity: battery design capacity (in mAh)
- * @design_voltage: battery design voltage (in mV)
- * @cycle_count: battery cycle count
- * @manufacturer: battery manufacturer string
- * @device_name: battery model string
- * @serial: battery serial number string
- * @chemistry: battery type string
- */
-struct ec_response_battery_static_info_v2 {
- uint16_t design_capacity;
- uint16_t design_voltage;
- uint32_t cycle_count;
- char manufacturer[SBS_MAX_STR_OBJ_SIZE];
- char device_name[SBS_MAX_STR_OBJ_SIZE];
- char serial[SBS_MAX_STR_OBJ_SIZE];
- char chemistry[SBS_MAX_STR_OBJ_SIZE];
-} __ec_align4;
-
-/**
- * struct ec_response_battery_static_info_v3 - hostcmd v3 battery static info
- *
- * Extends struct ec_response_battery_static_info_v2 with
- * manuf_info.
- *
- * @design_capacity: battery design capacity (in mAh)
- * @design_voltage: battery design voltage (in mV)
- * @cycle_count: battery cycle count
- * @manufacturer: battery manufacturer string
- * @device_name: battery model string
- * @serial: battery serial number string
- * @chemistry: battery type string
- * @manuf_info: battery manufacture info string (vendor specific)
- * @manuf_year: battery manufacture year
- * @manuf_month: battery manufacture month
- * @manuf_day: battery manufacture day
- */
-struct ec_response_battery_static_info_v3 {
- uint16_t design_capacity;
- uint16_t design_voltage;
- uint32_t cycle_count;
- char manufacturer[SBS_MAX_STR_OBJ_SIZE];
- char device_name[SBS_MAX_STR_OBJ_SIZE];
- char serial[SBS_MAX_STR_OBJ_SIZE];
- char chemistry[SBS_MAX_STR_OBJ_SIZE];
- char manuf_info[SBS_MAX_STR_OBJ_SIZE];
- uint16_t manuf_year;
- uint8_t manuf_month;
- uint8_t manuf_day;
-} __ec_align4;
-
-/*
- * Get battery dynamic information, i.e. information that is likely to change
- * every time it is read.
- */
-#define EC_CMD_BATTERY_GET_DYNAMIC 0x0601
-
-/**
- * struct ec_params_battery_dynamic_info - Battery dynamic info parameters
- * @index: Battery index.
- */
-struct ec_params_battery_dynamic_info {
- uint8_t index;
-} __ec_align_size1;
-
-/**
- * struct ec_response_battery_dynamic_info - Battery dynamic info response
- * @actual_voltage: Battery voltage (mV)
- * @actual_current: Battery current (mA); negative=discharging
- * @remaining_capacity: Remaining capacity (mAh)
- * @full_capacity: Capacity (mAh, might change occasionally)
- * @flags: Flags, see EC_BATT_FLAG_*
- * @desired_voltage: Charging voltage desired by battery (mV)
- * @desired_current: Charging current desired by battery (mA)
- */
-struct ec_response_battery_dynamic_info {
- int16_t actual_voltage;
- int16_t actual_current;
- int16_t remaining_capacity;
- int16_t full_capacity;
- int16_t flags;
- int16_t desired_voltage;
- int16_t desired_current;
-} __ec_align2;
-
-/**
- * struct ec_response_battery_dynamic_info_v1 - Battery dynamic info response
- * (v1)
- * @actual_voltage: Battery voltage (mV)
- * @actual_current: Battery current (mA); negative=discharging
- * @remaining_capacity: Remaining capacity (mAh)
- * @full_capacity: Capacity (mAh, might change occasionally)
- * @flags: Flags, see EC_BATT_FLAG_*
- * @desired_voltage: Charging voltage desired by battery (mV)
- * @desired_current: Charging current desired by battery (mA)
- * @temperature: Battery temperature (dK)
- */
-struct ec_response_battery_dynamic_info_v1 {
- int16_t actual_voltage;
- int16_t actual_current;
- int16_t remaining_capacity;
- int16_t full_capacity;
- int16_t flags;
- int16_t desired_voltage;
- int16_t desired_current;
- uint16_t temperature;
-} __ec_align2;
-
-/*
- * Control charger chip. Used to control charger chip on the peripheral.
- */
-#define EC_CMD_CHARGER_CONTROL 0x0602
-
-/**
- * struct ec_params_charger_control - Charger control parameters
- * @max_current: Charger current (mA). Positive to allow base to draw up to
- * max_current and (possibly) charge battery, negative to request current
- * from base (OTG).
- * @otg_voltage: Voltage (mV) to use in OTG mode, ignored if max_current is
- * >= 0.
- * @allow_charging: Allow base battery charging (only makes sense if
- * max_current > 0).
- */
-struct ec_params_charger_control {
- int16_t max_current;
- uint16_t otg_voltage;
- uint8_t allow_charging;
-} __ec_align_size1;
-
-/* Get ACK from the USB-C SS muxes */
-#define EC_CMD_USB_PD_MUX_ACK 0x0603
-
-struct ec_params_usb_pd_mux_ack {
- uint8_t port; /* USB-C port number */
-} __ec_align1;
-
-/* Get boot time */
-#define EC_CMD_GET_BOOT_TIME 0x0604
-
-enum boot_time_param {
- ARAIL = 0,
- RSMRST,
- ESPIRST,
- PLTRST_LOW,
- PLTRST_HIGH,
- EC_CUR_TIME,
- RESET_CNT,
};
-struct ec_response_get_boot_time {
- uint64_t timestamp[RESET_CNT];
- uint16_t cnt;
-} __ec_align4;
-
-/* Issue AP shutdown */
-#define EC_CMD_AP_SHUTDOWN 0x0605
-
-/**
- * Issue AP shutdown using heartbeat wake.
- * The AP calls this to enter the low-power G3 state for off-mode charging.
- * The EC then monitors battery SoC and wakes the AP when discharged by a
- * configured threshold.
- */
-#define EC_CMD_ENABLE_OFFMODE_HEARTBEAT 0x0606
-
/*****************************************************************************/
/*
* Reserve a range of host commands for board-specific, experimental, or
@@ -9351,14 +4621,10 @@ struct ec_response_get_boot_time {
* switch to the new names soon, as the old names may not be carried forward
* forever.
*/
-#define EC_HOST_PARAM_SIZE EC_PROTO2_MAX_PARAM_SIZE
-#define EC_LPC_ADDR_OLD_PARAM EC_HOST_CMD_REGION1
-#define EC_OLD_PARAM_SIZE EC_HOST_CMD_REGION_SIZE
-
-#endif /* !__ACPI__ */
+#define EC_HOST_PARAM_SIZE EC_PROTO2_MAX_PARAM_SIZE
+#define EC_LPC_ADDR_OLD_PARAM EC_HOST_CMD_REGION1
+#define EC_OLD_PARAM_SIZE EC_HOST_CMD_REGION_SIZE
-#ifdef __cplusplus
-}
-#endif
+#endif /* !__ACPI__ && !__KERNEL__ */
-#endif /* __CROS_EC_EC_COMMANDS_H */
+#endif /* __CROS_EC_COMMANDS_H */
diff --git a/include/env/adi/adi_boot.env b/include/env/adi/adi_boot.env
index 3c83826cf9a..db4148b1af9 100644
--- a/include/env/adi/adi_boot.env
+++ b/include/env/adi/adi_boot.env
@@ -1,3 +1,13 @@
+/*
+ * A target board needs to set these variables for the commands below to work:
+ *
+ * - adi_stage2_offset, the location of stage2-boot.ldr on the SPI flash
+ * - adi_image_offset, location of the fitImage on the SPI flash
+ * - adi_rfs_offset, location of the RFS on the SPI flash
+ * - loadaddr, where you want to load things
+ * - jffs2file, name of the jffs2 file for update, ex adsp-sc5xx-tiny-adsp-sc573.jffs2
+ */
+
#ifdef CONFIG_SC59X_64
#define EARLY_PRINTK earlycon=adi_uart,0x31003000
#else
@@ -5,71 +15,106 @@
#endif
/* Config options */
+imagefile=fitImage
ethaddr=02:80:ad:20:31:e8
eth1addr=02:80:ad:20:31:e9
-httpdstp=8000
uart_console=CONFIG_UART_CONSOLE
#ifdef CONFIG_SC59X_64
initrd_high=0xffffffffffffffff
#else
initrd_high=0xffffffff
#endif
-#if defined(CONFIG_SC59X) || defined(CONFIG_SC59X_64)
-adi_image_offset=0x100000
-#else
-adi_image_offset=0xd0000
-#endif
+
+/* Helper routines */
+init_ethernet=mii info;
+ dhcp;
+ setenv serverip ${tftpserverip}
/* Args for each boot mode */
adi_bootargs=EARLY_PRINTK console=ttySC0,CONFIG_BAUDRATE vmalloc=512M
ramargs=setenv bootargs ${adi_bootargs}
addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:off
-rootpath=/romfs
/* Boot modes are selectable and should be defined in the board env before including */
#if defined(USE_NFS)
+// rootpath is set by CONFIG_ROOTPATH
nfsargs=setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath},tcp,nfsvers=3 ${adi_bootargs}
-nfsboot=run nfsargs;
+nfsboot=run init_ethernet;
+ tftp ${loadaddr} ${tftp_dir_prefix}${imagefile};
+ run nfsargs;
run addip;
- wget ${loadaddr} ${serverip}:/fitImage;
- bootm
+ bootm ${loadaddr}
#endif
#if defined(USE_MMC)
-mmcargs=setenv bootargs root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait ${adi_bootargs}
+mmcargs=setenv bootargs root=/dev/mmcblk0p1 rw rootfstype=ext4 rootwait ${adi_bootargs}
mmcboot=mmc rescan;
- ext4load mmc 0:1 ${loadaddr} /fitImage;
+ ext4load mmc 0:1 ${loadaddr} /boot/${imagefile};
run mmcargs;
- bootm
+ bootm ${loadaddr}
#endif
-#if defined(USE_SPI)
-spiargs=setenv bootargs rootfstype=ubifs root=ubi0:rootfs ubi.mtd=3 rw ${adi_bootargs}; setenv sfdev CONFIG_SC_BOOT_SPI_BUS:CONFIG_SC_BOOT_SPI_SSEL
+#if defined(USE_SPI) || defined(USE_OSPI)
+spiargs=setenv bootargs root=/dev/mtdblock4 rw rootfstype=jffs2 ${adi_bootargs}
spiboot=run spiargs;
sf probe ${sfdev};
- sf read ${loadaddr} ${adi_image_offset} 0xf00000;
+ sf read ${loadaddr} ${adi_image_offset} ${imagesize};
bootm ${loadaddr}
#endif
#if defined(USE_OSPI)
-ospiargs=setenv bootargs rootfstype=ubifs root=ubi0:rootfs ubi.mtd=3 rw ${adi_bootargs}; setenv sfdev CONFIG_SC_BOOT_OSPI_BUS:CONFIG_SC_BOOT_OSPI_SSEL
-ospiboot=run ospiargs;
- sf probe ${sfdev};
- sf read ${loadaddr} ${adi_image_offset} 0xf00000;
- bootm ${loadaddr}
+ospiboot=run spiboot
#endif
#if defined(USE_RAM)
-ramboot=wget ${loadaddr} ${serverip}:/fitImage;
+ramboot=run init_ethernet;
+ tftp ${loadaddr} ${tfpt_dir_prefix}${imagefile};
run ramargs;
- bootm
+ bootm ${loadaddr}
#endif
-#if defined(USE_USB)
-usbargs=setenv bootargs root=/dev/sda2 rw rootfstype=ext4 rootwait ${adi_bootargs}
-usbboot=usb start;
- run usbargs;
- ext4load usb 0:1 ${loadaddr} /fitImage;
- bootm ${loadaddr}
+/* Update commands */
+stage1file=stage1-boot.ldr
+stage2file=stage2-boot.ldr
+
+#if defined(USE_SPI) || defined(USE_OSPI)
+update_spi_uboot_stage1=tftp ${loadaddr} ${tftp_dir_prefix}${stage1file};
+ sf probe ${sfdev};
+ sf update ${loadaddr} 0x0 ${filesize}
+update_spi_uboot_stage2=tftp ${loadaddr} ${tftp_dir_prefix}${stage2file};
+ sf probe ${sfdev};
+ sf update ${loadaddr} ${adi_stage2_offset} ${filesize}
+update_spi_uboot=run update_spi_uboot_stage1;
+ run update_spi_uboot_stage2;
+update_spi_fit=tftp ${loadaddr} ${tftp_dir_prefix}${imagefile};
+ sf probe ${sfdev};
+ sf update ${loadaddr} ${adi_image_offset} ${filesize};
+ setenv imagesize ${filesize}
+update_spi_rfs=tftp ${loadaddr} ${tftp_dir_prefix}${jffs2file};
+ sf probe ${sfdev};
+ sf update ${loadaddr} ${adi_rfs_offset} ${filesize}
+
+start_update_spi=run init_ethernet;
+ run update_spi_uboot;
+ run update_spi_fit;
+ run update_spi_rfs;
+start_update_spi_uboot_only=run init_ethernet;
+ run update_spi_uboot;
+#endif
+
+#if defined(USE_SPI)
+update_spi=setenv sfdev CONFIG_SC_BOOT_SPI_BUS:CONFIG_SC_BOOT_SPI_SSEL;
+ setenv bootcmd run spiboot;
+ setenv argscmd spiargs;
+ run start_update_spi;
+ saveenv
+#endif
+
+#if defined(USE_OSPI)
+update_ospi=setenv sfdev CONFIG_SC_BOOT_OSPI_BUS:CONFIG_SC_BOOT_OSPI_SSEL;
+ setenv bootcmd run ospiboot;
+ setenv argscmd spiargs;
+ run start_update_spi;
+ saveenv
#endif
diff --git a/include/env/nxp/mx6sabre_common.env b/include/env/nxp/mx6sabre_common.env
deleted file mode 100644
index 5346cd4e953..00000000000
--- a/include/env/nxp/mx6sabre_common.env
+++ /dev/null
@@ -1,114 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
-
-script=boot.scr
-image=zImage
-fdtfile=undefined
-fdt_addr=0x18000000
-boot_fdt=try
-ip_dyn=yes
-dfuspi=dfu 0 sf 0:0:10000000:0
-dfu_alt_info_spl=spl raw 0x400
-dfu_alt_info_img=u-boot raw 0x10000
-dfu_alt_info=spl raw 0x400
-initrd_high=0xffffffff
-splashimage=CONFIG_SYS_LOAD_ADDR
-mmcdev=CONFIG_ENV_MMC_DEVICE_INDEX
-mmcpart=1
-finduuid=part uuid mmc ${mmcdev}:2 uuid
-update_sd_firmware=if test ${ip_dyn} = yes; then
- setenv get_cmd dhcp;
- else
- setenv get_cmd tftp;
- fi;
- if mmc dev ${mmcdev}; then
- if ${get_cmd} ${update_sd_firmware_filename}; then
- setexpr fw_sz ${filesize} / 0x200;
- setexpr fw_sz ${fw_sz} + 1;
- mmc write ${loadaddr} 0x2 ${fw_sz};
- fi;
- fi
-#ifdef CONFIG_SUPPORT_EMMC_BOOT
-emmcdev=2
-update_emmc_firmware=if test ${ip_dyn} = yes; then
- setenv get_cmd dhcp;
- else
- setenv get_cmd tftp;
- fi;
- if ${get_cmd} ${update_sd_firmware_filename}; then
- if mmc dev ${emmcdev} 1; then
- setexpr fw_sz ${filesize} / 0x200;
- setexpr fw_sz ${fw_sz} + 1;
- mmc write ${loadaddr} 0x2 ${fw_sz};
- fi;
- fi
-#endif
-mmcargs=setenv bootargs console=${console},${baudrate} root=PARTUUID=${uuid} rootwait rw
-loadbootscript=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script} ||
- load mmc ${mmcdev}:${mmcpart} ${loadaddr} boot/${script};
-bootscript=echo Running bootscript from mmc ...; source
-loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} ||
- load mmc ${mmcdev}:${mmcpart} ${loadaddr} boot/${image}
-loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdtfile} ||
- load mmc ${mmcdev}:${mmcpart} ${fdt_addr} boot/${fdtfile}
-mmcboot=echo Booting from mmc ...;
- run finduuid;
- run mmcargs;
- if test ${boot_fdt} = yes || test ${boot_fdt} = try; then
- if run loadfdt; then
- bootz ${loadaddr} - ${fdt_addr};
- else
- if test ${boot_fdt} = try; then
- bootz;
- else
- echo WARN: Cannot load the DT;
- fi;
- fi;
- else
- bootz;
- fi;
-netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs
- ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
-netboot=echo Booting from net ...;
- run netargs;
- if test ${ip_dyn} = yes; then
- setenv get_cmd dhcp;
- else
- setenv get_cmd tftp;
- fi;
- ${get_cmd} ${image};
- if test ${boot_fdt} = yes || test ${boot_fdt} = try; then
- if ${get_cmd} ${fdt_addr} ${fdtfile}; then
- bootz ${loadaddr} - ${fdt_addr};
- else
- if test ${boot_fdt} = try; then
- bootz;
- else
- echo WARN: Cannot load the DT;
- fi;
- fi;
- else
- bootz;
- fi;
-findfdt=if test $fdtfile = undefined; then
- if test $board_name = SABREAUTO && test $board_rev = MX6QP; then
- setenv fdtfile imx6qp-sabreauto.dtb;
- fi;
- if test $board_name = SABREAUTO && test $board_rev = MX6Q; then
- setenv fdtfile imx6q-sabreauto.dtb;
- fi;
- if test $board_name = SABREAUTO && test $board_rev = MX6DL; then
- setenv fdtfile imx6dl-sabreauto.dtb;
- fi;
- if test $board_name = SABRESD && test $board_rev = MX6QP; then
- setenv fdtfile imx6qp-sabresd.dtb;
- fi;
- if test $board_name = SABRESD && test $board_rev = MX6Q; then
- setenv fdtfile imx6q-sabresd.dtb;
- fi;
- if test $board_name = SABRESD && test $board_rev = MX6DL; then
- setenv fdtfile imx6dl-sabresd.dtb;
- fi;
- if test $fdtfile = undefined; then
- echo WARNING: Could not determine dtb to use;
- fi;
- fi;
diff --git a/include/env/phytec/k3_mmc.env b/include/env/phytec/k3_mmc.env
index 8129b35ea5e..95d0204b6da 100644
--- a/include/env/phytec/k3_mmc.env
+++ b/include/env/phytec/k3_mmc.env
@@ -7,13 +7,15 @@
/* Logic for TI K3 based SoCs to boot from a MMC device. */
#include <env/phytec/overlays.env>
+#include <env/phytec/rauc.env>
mmcargs=setenv bootargs console=${console} earlycon=${earlycon}
- root=/dev/mmcblk${mmcdev}p${mmcroot} rootwait rw
+ root=/dev/mmcblk${mmcdev}p${mmcroot} ${raucargs} rootwait rw
${optargs}
mmcloadimage=load mmc ${mmcdev}:${mmcpart} ${kernel_addr_r} Image
mmcloadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile}
mmcboot=echo DEPRECATION WARNING: mmcboot will be removed in future versions. Use standard boot instead.;
+ if test ${doraucboot} = 1; then run raucinit; fi;
run mmcargs;
mmc dev ${mmcdev};
mmc rescan;
diff --git a/include/env/phytec/rauc.env b/include/env/phytec/rauc.env
new file mode 100644
index 00000000000..89e17ff70ec
--- /dev/null
+++ b/include/env/phytec/rauc.env
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+
+/* Logic to select a boot partition based on environment variables and switch
+ * to the other if the boot fails. */
+
+doraucboot=0
+
+raucbootpart0=1
+raucrootpart0=5
+raucbootpart1=2
+raucrootpart1=6
+
+raucinit=
+ echo Booting RAUC A/B system;
+ test -n "${BOOT_ORDER}" || env set BOOT_ORDER "system0 system1";
+ test -n "${BOOT_system0_LEFT}" || env set BOOT_system0_LEFT 3;
+ test -n "${BOOT_system1_LEFT}" || env set BOOT_system1_LEFT 3;
+ env set raucstatus;
+ for BOOT_SLOT in "${BOOT_ORDER}"; do
+ if test "x${raucstatus}" != "x"; then
+ echo Skipping remaing slots!;
+ elif test "x${BOOT_SLOT}" = "xsystem0"; then
+ if test ${BOOT_system0_LEFT} -gt 0; then
+ echo Found valid slot A, ${BOOT_system0_LEFT} attempts remaining;
+ setexpr BOOT_system0_LEFT ${BOOT_system0_LEFT} - 1;
+ env set mmcpart ${raucbootpart0};
+ env set mmcroot ${raucrootpart0};
+ env set raucargs rauc.slot=system0;
+ env set raucstatus success;
+ fi;
+ elif test "x${BOOT_SLOT}" = "xsystem1"; then
+ if test ${BOOT_system1_LEFT} -gt 0; then
+ echo Found valid slot B, ${BOOT_system1_LEFT} attempts remaining;
+ setexpr BOOT_system1_LEFT ${BOOT_system1_LEFT} - 1;
+ env set mmcpart ${raucbootpart1};
+ env set mmcroot ${raucrootpart1};
+ env set raucargs rauc.slot=system1;
+ env set raucstatus success;
+ fi;
+ fi;
+ done;
+ if test -n "${raucstatus}"; then
+ env delete raucstatus;
+ env save;
+ else
+ echo WARN: No valid slot found;
+ env set BOOT_system0_LEFT 3;
+ env set BOOT_system1_LEFT 3;
+ env delete raucstatus;
+ env save;
+ reset;
+ fi;
diff --git a/include/env/ti/k3_dfu.env b/include/env/ti/k3_dfu.env
index 1ae9ae6ae15..b42cf21d986 100644
--- a/include/env/ti/k3_dfu.env
+++ b/include/env/ti/k3_dfu.env
@@ -25,9 +25,6 @@ dfu_alt_info_ospi=
rootfs raw 0x800000 0x3800000
dfu_alt_info_ram=
-#if CONFIG_ARM64
- u-boot.img ram CONFIG_SPL_LOAD_FIT_ADDRESS 0x400000
-#else
- tispl.bin ram CONFIG_SPL_LOAD_FIT_ADDRESS 0x200000
-#endif
+ tispl.bin ram 0x80080000 0x200000;
+ u-boot.img ram 0x81000000 0x400000
diff --git a/include/env/ti/ti_common.env b/include/env/ti/ti_common.env
index e6ceaa17adc..62b93eb25c4 100644
--- a/include/env/ti/ti_common.env
+++ b/include/env/ti/ti_common.env
@@ -24,7 +24,7 @@ get_fit_config=setexpr name_fit_config gsub / _ conf-${fdtfile}
run_fit=run get_fit_config; bootm ${addr_fit}#${name_fit_config}${overlaystring}
bootcmd_ti_mmc=
run init_${boot};
- if test -n "${board_init}"; then
+ if test -n ${board_init}; then
echo Running board_init ...;
run board_init;
fi;
diff --git a/include/env_flags.h b/include/env_flags.h
index 245dfdbd564..123fdbcb0ba 100644
--- a/include/env_flags.h
+++ b/include/env_flags.h
@@ -37,6 +37,10 @@ enum env_flags_varaccess {
#define ENV_FLAGS_VARTYPE_LOC 0
#define ENV_FLAGS_VARACCESS_LOC 1
+#ifndef CFG_ENV_FLAGS_LIST_STATIC
+#define CFG_ENV_FLAGS_LIST_STATIC ""
+#endif
+
#if CONFIG_IS_ENABLED(NET)
#ifdef CONFIG_REGEX
#define ETHADDR_WILDCARD "\\d*"
@@ -85,7 +89,7 @@ enum env_flags_varaccess {
NET_FLAGS \
NET6_FLAGS \
SERIAL_FLAGS \
- CONFIG_ENV_FLAGS_LIST_STATIC
+ CFG_ENV_FLAGS_LIST_STATIC
#ifdef CONFIG_CMD_ENV_FLAGS
/*
diff --git a/include/event.h b/include/event.h
index 450281f666a..3ce5f992b04 100644
--- a/include/event.h
+++ b/include/event.h
@@ -308,13 +308,44 @@ static inline const char *event_spy_id(struct evspy_info *spy)
#endif
}
+/*
+ * It seems that LTO will drop list entries if it decides they are not used,
+ * although the conditions that cause this are unclear.
+ *
+ * The example found is the following:
+ *
+ * static int sandbox_misc_init_f(void *ctx, struct event *event)
+ * {
+ * return sandbox_early_getopt_check();
+ * }
+ * EVENT_SPY_FULL(EVT_MISC_INIT_F, sandbox_misc_init_f);
+ *
+ * where EVENT_SPY_FULL uses ll_entry_declare()
+ *
+ * In this case, LTO decides to drop the sandbox_misc_init_f() function
+ * (which is fine) but then drops the linker-list entry too. This means
+ * that the code no longer works, in this case sandbox no-longer checks its
+ * command-line arguments properly.
+ *
+ * Without LTO, the KEEP() command in the .lds file is enough to keep the
+ * entry around. But with LTO it seems that the entry has already been
+ * dropped before the link script is considered.
+ *
+ * The only solution I can think of is to mark linker-list entries as 'used'
+ * using an attribute. This should be safe, since we don't actually want to drop
+ * any of these. However this does slightly limit LTO's optimisation choices.
+ *
+ * Another issue has come up, only with clang: using 'static' makes it throw
+ * away the linker-list entry sometimes, e.g. with the EVT_FT_FIXUP entry in
+ * vbe_simple.c - so for now, make it global.
+ */
#define EVENT_SPY_FULL(_type, _func) \
- ll_entry_declare(struct evspy_info, _type ## _3_ ## _func, \
+ __used ll_entry_declare(struct evspy_info, _type ## _3_ ## _func, \
evspy_info) = _ESPY_REC(_type, _func)
/* Simple spy with no function arguments */
#define EVENT_SPY_SIMPLE(_type, _func) \
- ll_entry_declare(struct evspy_info_simple, \
+ __used ll_entry_declare(struct evspy_info_simple, \
_type ## _3_ ## _func, \
evspy_info) = _ESPY_REC_SIMPLE(_type, _func)
diff --git a/include/fdtdec.h b/include/fdtdec.h
index 51d9f14a9f2..46eaa0da63c 100644
--- a/include/fdtdec.h
+++ b/include/fdtdec.h
@@ -57,7 +57,6 @@ struct fdt_memory {
};
struct bd_info;
-struct global_data;
/**
* enum fdt_source_t - indicates where the devicetree came from
@@ -975,7 +974,7 @@ int fdtdec_setup_mem_size_base(void);
int fdtdec_setup_mem_size_base_lowest(void);
/**
- * fdtdec_setup_memory_banksize() - decode and populate gd->dram
+ * fdtdec_setup_memory_banksize() - decode and populate gd->bd->bi_dram
*
* Decode the /memory 'reg' property to determine the address and size of the
* memory banks. Use this data to populate the global data board info with the
@@ -1257,12 +1256,12 @@ int board_fdt_blob_setup(void **fdtp);
* @param basep Returns base address of first memory bank (NULL to
* ignore)
* @param sizep Returns total memory size (NULL to ignore)
- * @param gd_ptr Updated with the memory bank information (NULL to skip)
+ * @param bd Updated with the memory bank information (NULL to skip)
* Return: 0 if OK, -ve on error
*/
int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id,
phys_addr_t *basep, phys_size_t *sizep,
- struct global_data *gd_ptr);
+ struct bd_info *bd);
/**
* fdtdec_get_srcname() - Get the name of where the devicetree comes from
diff --git a/include/hexdump.h b/include/hexdump.h
index 5cb48d79efe..f2ca4793d69 100644
--- a/include/hexdump.h
+++ b/include/hexdump.h
@@ -7,11 +7,7 @@
#ifndef HEXDUMP_H
#define HEXDUMP_H
-#ifdef USE_HOSTCC
-#include <ctype.h>
-#else
#include <linux/ctype.h>
-#endif
#include <linux/types.h>
enum dump_prefix_t {
@@ -24,7 +20,7 @@ extern const char hex_asc[];
#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
-static inline char *hex_byte_pack(char *buf, uint8_t byte)
+static inline char *hex_byte_pack(char *buf, u8 byte)
{
*buf++ = hex_asc_hi(byte);
*buf++ = hex_asc_lo(byte);
@@ -56,7 +52,7 @@ static inline int hex_to_bin(char ch)
*
* Return 0 on success, -1 in case of bad input.
*/
-static inline int hex2bin(uint8_t *dst, const char *src, size_t count)
+static inline int hex2bin(u8 *dst, const char *src, size_t count)
{
while (count--) {
int hi = hex_to_bin(*src++);
diff --git a/include/image.h b/include/image.h
index 9c8a746d576..34efac6056d 100644
--- a/include/image.h
+++ b/include/image.h
@@ -396,19 +396,7 @@ struct bootm_headers {
ulong cmdline_start;
ulong cmdline_end;
struct bd_info *kbd;
-
-#if CONFIG_IS_ENABLED(FIT_VERITY)
- /*
- * dm-verity kernel command-line fragments, populated during FIT
- * parsing by fit_verity_build_cmdline(). Bootmeths can check
- * fit_verity_active() between bootm states, and
- * fit_verity_apply_bootargs() appends these to the "bootargs"
- * env var during BOOTM_STATE_OS_PREP.
- */
- char *dm_mod_create;
- char *dm_mod_waitfor;
-#endif /* FIT_VERITY */
-#endif /* !USE_HOSTCC */
+#endif
int verify; /* env_get("verify")[0] != 'n' */
@@ -768,72 +756,6 @@ int fit_image_load(struct bootm_headers *images, ulong addr,
int arch, int image_ph_type, int bootstage_id,
enum fit_load_op load_op, ulong *datap, ulong *lenp);
-#if !defined(USE_HOSTCC) && CONFIG_IS_ENABLED(FIT_VERITY)
-/**
- * fit_verity_build_cmdline() - build dm-verity cmdline from FIT metadata
- * @fit: pointer to the FIT blob
- * @conf_noffset: configuration node offset in @fit
- * @images: bootm headers; dm_mod_create / dm_mod_waitfor are
- * populated on success
- *
- * Called automatically from boot_get_loadable() during FIT parsing.
- * For each IH_TYPE_FILESYSTEM loadable with a dm-verity subnode,
- * builds the corresponding dm target specification.
- *
- * Return: 0 on success, -ve errno on error
- */
-int fit_verity_build_cmdline(const void *fit, int conf_noffset,
- struct bootm_headers *images);
-
-/**
- * fit_verity_apply_bootargs() - append dm-verity params to bootargs env
- * @images: bootm headers with dm-verity cmdline fragments
- *
- * Called from BOOTM_STATE_OS_PREP before bootm_process_cmdline_env().
- *
- * Return: 0 on success, -ve errno on error
- */
-int fit_verity_apply_bootargs(const struct bootm_headers *images);
-
-/**
- * fit_verity_active() - check whether dm-verity targets were found
- * @images: bootm headers
- *
- * Return: true if at least one dm-verity target was built
- */
-static inline bool fit_verity_active(const struct bootm_headers *images)
-{
- return !!images->dm_mod_create;
-}
-
-/**
- * fit_verity_free() - free dm-verity cmdline allocations
- * @images: bootm headers
- */
-void fit_verity_free(struct bootm_headers *images);
-
-#else /* !FIT_VERITY */
-
-static inline int fit_verity_build_cmdline(const void *fit, int conf_noffset,
- struct bootm_headers *images)
-{
- return 0;
-}
-
-static inline int fit_verity_apply_bootargs(const struct bootm_headers *images)
-{
- return 0;
-}
-
-static inline bool fit_verity_active(const struct bootm_headers *images)
-{
- return false;
-}
-
-static inline void fit_verity_free(struct bootm_headers *images) {}
-
-#endif /* FIT_VERITY */
-
/**
* image_locate_script() - Locate the raw script in an image
*
@@ -905,7 +827,7 @@ int boot_get_fdt(void *buf, const char *select, uint arch,
struct bootm_headers *images, char **of_flat_tree,
ulong *of_size);
-void boot_fdt_add_mem_rsv_regions(const void *fdt_blob);
+void boot_fdt_add_mem_rsv_regions(void *fdt_blob);
int boot_relocate_fdt(char **of_flat_tree, ulong *of_size);
int boot_ramdisk_high(ulong rd_data, ulong rd_len, ulong *initrd_start,
@@ -1157,23 +1079,6 @@ int booti_setup(ulong image, ulong *relocated_addr, ulong *size,
#define FIT_CIPHER_NODENAME "cipher"
#define FIT_ALGO_PROP "algo"
-/* dm-verity node */
-#define FIT_VERITY_NODENAME "dm-verity"
-#define FIT_VERITY_ALGO_PROP "algo"
-#define FIT_VERITY_DBS_PROP "data-block-size"
-#define FIT_VERITY_HBS_PROP "hash-block-size"
-#define FIT_VERITY_NBLK_PROP "num-data-blocks"
-#define FIT_VERITY_HBLK_PROP "hash-start-block"
-#define FIT_VERITY_DIGEST_PROP "digest"
-#define FIT_VERITY_SALT_PROP "salt"
-
-/* dm-verity error-handling modes (optional boolean property names) */
-#define FIT_VERITY_OPT_RESTART "restart-on-corruption"
-#define FIT_VERITY_OPT_PANIC "panic-on-corruption"
-#define FIT_VERITY_OPT_RERR "restart-on-error"
-#define FIT_VERITY_OPT_PERR "panic-on-error"
-#define FIT_VERITY_OPT_ONCE "check-at-most-once"
-
/* image node */
#define FIT_DATA_PROP "data"
#define FIT_DATA_POSITION_PROP "data-position"
@@ -1427,24 +1332,6 @@ int fit_add_verification_data(const char *keydir, const char *keyfile,
const char *cmdname, const char *algo_name,
struct image_summary *summary);
-#ifdef USE_HOSTCC
-/**
- * fit_verity_get_expanded() - look up the cached dm-verity expanded buffer
- *
- * After mkimage has run veritysetup on a FILESYSTEM image, the original
- * data concatenated with the Merkle hash tree is cached in memory keyed
- * by image name. fit_extract_data() retrieves it to write the external
- * data section without having to re-read a temporary file from disk.
- *
- * @name: image unit name (FDT node name under /images)
- * @data: output -- pointer to cached buffer (do NOT free; lifetime
- * ends when mkimage exits)
- * @size: output -- size of @data in bytes
- * Return: 0 if a cache entry exists for @name, -ENOENT otherwise
- */
-int fit_verity_get_expanded(const char *name, const void **data, size_t *size);
-#endif /* USE_HOSTCC */
-
/**
* fit_image_verify_with_data() - Verify an image with given data
*
diff --git a/include/init.h b/include/init.h
index 23466d3f153..c31ebd83b85 100644
--- a/include/init.h
+++ b/include/init.h
@@ -80,7 +80,7 @@ int dram_init(void);
* dram_init_banksize() - Set up DRAM bank sizes
*
* This can be implemented by boards to set up the DRAM bank information in
- * gd->dram[] It is called just before relocation, after dram_init()
+ * gd->bd->bi_dram(). It is called just before relocation, after dram_init()
* is called.
*
* If this is not provided, a default implementation will try to set up a
diff --git a/include/linker_lists.h b/include/linker_lists.h
index a8b7e2c9f2b..4425fcb6785 100644
--- a/include/linker_lists.h
+++ b/include/linker_lists.h
@@ -69,6 +69,7 @@
*/
#define ll_entry_declare(_type, _name, _list) \
_type _u_boot_list_2_##_list##_2_##_name __aligned(4) \
+ __attribute__((unused)) \
__section("__u_boot_list_2_"#_list"_2_"#_name)
/**
@@ -91,6 +92,7 @@
*/
#define ll_entry_declare_list(_type, _name, _list) \
_type _u_boot_list_2_##_list##_2_##_name[] __aligned(4) \
+ __attribute__((unused)) \
__section("__u_boot_list_2_"#_list"_2_"#_name)
/*
@@ -123,6 +125,7 @@
#define ll_entry_start(_type, _list) \
({ \
static char start[0] __aligned(CONFIG_LINKER_LIST_ALIGN) \
+ __attribute__((unused)) \
__section("__u_boot_list_2_"#_list"_1"); \
_type * tmp = (_type *)&start; \
asm("":"+r"(tmp)); \
@@ -164,7 +167,7 @@
*/
#define ll_entry_end(_type, _list) \
({ \
- static char end[0] __aligned(1) \
+ static char end[0] __aligned(1) __attribute__((unused)) \
__section("__u_boot_list_2_"#_list"_3"); \
_type * tmp = (_type *)&end; \
asm("":"+r"(tmp)); \
@@ -248,7 +251,7 @@
*/
#define ll_start_decl(_sym, _type, _list) \
static _type _sym[0] __aligned(CONFIG_LINKER_LIST_ALIGN) \
- __section("__u_boot_list_2_" #_list "_1")
+ __maybe_unused __section("__u_boot_list_2_" #_list "_1")
/*
* ll_end_decl uses __aligned(1) to avoid padding before the end marker.
@@ -256,7 +259,7 @@
*/
#define ll_end_decl(_sym, _type, _list) \
static _type _sym[0] __aligned(1) \
- __section("__u_boot_list_2_" #_list "_3")
+ __maybe_unused __section("__u_boot_list_2_" #_list "_3")
/**
* ll_entry_get() - Retrieve entry from linker-generated array by name
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 366f2d968a3..2d754fa4287 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -246,11 +246,6 @@ struct clk *clk_register_fixed_factor(struct udevice *dev, const char *name,
const char *parent_name, unsigned long flags,
unsigned int mult, unsigned int div);
-struct clk *clk_register_divider_table(struct udevice *dev, const char *name,
- const char *parent_name, unsigned long flags,
- void __iomem *reg, u8 shift, u8 width,
- u8 clk_divider_flags, const struct clk_div_table *table);
-
struct clk *clk_register_divider(struct udevice *dev, const char *name,
const char *parent_name, unsigned long flags,
void __iomem *reg, u8 shift, u8 width,
diff --git a/include/linux/string.h b/include/linux/string.h
index 850356d7c3f..a8a6cf4af50 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -101,12 +101,12 @@ size_t strcspn(const char *s, const char *reject);
# define strndup sandbox_strndup
#endif
+#ifndef __HAVE_ARCH_STRDUP
extern char * strdup(const char *);
extern char * strndup(const char *, size_t);
-
extern const char *strdup_const(const char *s);
extern void kfree_const(const void *x);
-
+#endif
#ifndef __HAVE_ARCH_STRSWAB
extern char * strswab(const char *);
#endif
@@ -144,20 +144,7 @@ void *memchr_inv(const void *, int, size_t);
* memory is available
*
*/
-void *memdup(const void *src, size_t len);
-
-/**
- * memdup_nul() - allocate a buffer and copy in the contents, appending a nul byte
- *
- * Note that this returns a valid pointer even if @len is 0
- *
- * @src: data to copy in
- * @len: number of bytes to copy
- * Return: allocated buffer with the copied contents and an extra nul byte,
- * or NULL if not enough memory is available
- *
- */
-void *memdup_nul(const void *src, size_t len);
+char *memdup(const void *src, size_t len);
unsigned long ustrtoul(const char *cp, char **endp, unsigned int base);
unsigned long long ustrtoull(const char *cp, char **endp, unsigned int base);
diff --git a/include/net-common.h b/include/net-common.h
index 0c260873c2c..69b6316c1ec 100644
--- a/include/net-common.h
+++ b/include/net-common.h
@@ -20,9 +20,7 @@
* alignment in memory.
*
*/
-#if CONFIG_IS_ENABLED(NET)
#define PKTBUFSRX CONFIG_SYS_RX_ETH_BUFFER
-#endif
#define PKTALIGN ARCH_DMA_MINALIGN
/* IPv4 addresses are always 32 bits in size */
@@ -134,9 +132,7 @@ static inline void net_set_state(enum net_loop_state state)
}
extern int net_restart_wrap; /* Tried all network devices */
-#if CONFIG_IS_ENABLED(NET)
extern uchar *net_rx_packets[PKTBUFSRX]; /* Receive packets */
-#endif
extern const u8 net_bcast_ethaddr[ARP_HLEN]; /* Ethernet broadcast address */
extern struct in_addr net_ip; /* Our IP addr (0 = unknown) */
/* Indicates whether the pxe path prefix / config file was specified in dhcp option */
diff --git a/include/net-lwip.h b/include/net-lwip.h
index 20cb0992cce..5d0627eb271 100644
--- a/include/net-lwip.h
+++ b/include/net-lwip.h
@@ -35,6 +35,7 @@ int eth_init_state_only(void); /* Set active state */
int net_lwip_dns_init(void);
int net_lwip_eth_start(void);
+void net_lwip_eth_stop(void);
struct netif *net_lwip_new_netif(struct udevice *udev);
struct netif *net_lwip_new_netif_noip(struct udevice *udev);
void net_lwip_remove_netif(struct netif *netif);
diff --git a/include/reset-uclass.h b/include/reset-uclass.h
index 7af090b60b5..9a0696dd1e3 100644
--- a/include/reset-uclass.h
+++ b/include/reset-uclass.h
@@ -77,25 +77,6 @@ struct reset_ops {
*/
int (*rst_deassert)(struct reset_ctl *reset_ctl);
/**
- * rst_reset - Reset a HW module.
- *
- * This optional function triggers a reset pulse on the reset line.
- * If not implemented, reset_reset() falls back to rst_assert(),
- * udelay(@delay_us), then rst_deassert(); that delay is therefore
- * observed only on the fallback path.
- *
- * When rst_reset is provided, @delay_us is controller-specific: the
- * implementation should honour it if the hardware needs a minimum
- * assertion time before release. It may ignore @delay_us when the
- * pulse shape is fixed elsewhere (for example a firmware pulse).
- *
- * @reset_ctl: The reset signal to pulse.
- * @delay_us: Minimum delay in microseconds between assert and
- * deassert where applicable; see above.
- * @return 0 if OK, or a negative error code.
- */
- int (*rst_reset)(struct reset_ctl *reset_ctl, ulong delay_us);
- /**
* rst_status - Check reset signal status.
*
* @reset_ctl: The reset signal to check.
diff --git a/include/reset.h b/include/reset.h
index 58574b983f6..036a786d2ac 100644
--- a/include/reset.h
+++ b/include/reset.h
@@ -321,45 +321,6 @@ int reset_deassert(struct reset_ctl *reset_ctl);
int reset_deassert_bulk(struct reset_ctl_bulk *bulk);
/**
- * reset_reset - Reset a HW module by asserting and deasserting a reset signal.
- *
- * This function will assert and then deassert the specified reset signal,
- * thus resetting the affected HW module. This is a convenience function
- * that combines reset_assert() and reset_deassert().
- *
- * If the controller implements struct reset_ops.rst_reset, that callback
- * is used and @delay_us is interpreted as documented there. Otherwise the
- * core performs reset_assert(), udelay(@delay_us), then reset_deassert().
- *
- * @reset_ctl: A reset control struct that was previously successfully
- * requested by reset_get_by_*().
- * @delay_us: Delay in microseconds between assert and deassert on the
- * fallback path; meaning is driver-specific when rst_reset is used.
- * Use 0 for no delay on the fallback path.
- * Return: 0 if OK, or a negative error code.
- */
-int reset_reset(struct reset_ctl *reset_ctl, ulong delay_us);
-
-/**
- * reset_reset_bulk - Reset all HW modules in a reset control bulk struct.
- *
- * This calls reset_reset() on each entry in order. Each line therefore
- * completes its own assert/delay/deassert (or controller rst_reset) before
- * the next entry starts. That matches Linux reset_control_bulk_reset().
- *
- * When several lines must stay asserted together for @delay_us (typical
- * multi-reset controllers), use reset_assert_bulk(), udelay(@delay_us),
- * and reset_deassert_bulk() instead.
- *
- * @bulk: A reset control bulk struct that was previously successfully
- * requested by reset_get_bulk().
- * @delay_us: Delay in microseconds passed to each reset_reset(); see
- * reset_reset() and struct reset_ops.rst_reset.
- * Return: 0 if OK, or a negative error code.
- */
-int reset_reset_bulk(struct reset_ctl_bulk *bulk, ulong delay_us);
-
-/**
* rst_status - Check reset signal status.
*
* @reset_ctl: The reset signal to check.
@@ -482,16 +443,6 @@ static inline int reset_deassert_bulk(struct reset_ctl_bulk *bulk)
return 0;
}
-static inline int reset_reset(struct reset_ctl *reset_ctl, ulong delay_us)
-{
- return -ENOSYS;
-}
-
-static inline int reset_reset_bulk(struct reset_ctl_bulk *bulk, ulong delay_us)
-{
- return -ENOSYS;
-}
-
static inline int reset_status(struct reset_ctl *reset_ctl)
{
return -ENOTSUPP;
diff --git a/include/stdio_dev.h b/include/stdio_dev.h
index d93604331ff..f7f9c10199e 100644
--- a/include/stdio_dev.h
+++ b/include/stdio_dev.h
@@ -96,6 +96,7 @@ int stdio_add_devices(void);
int stdio_deregister_dev(struct stdio_dev *dev, int force);
struct list_head *stdio_get_list(void);
struct stdio_dev *stdio_get_by_name(const char *name);
+struct stdio_dev *stdio_clone(struct stdio_dev *dev);
int drv_lcd_init(void);
int drv_video_init(void);
diff --git a/include/sysinfo.h b/include/sysinfo.h
index 7ca396b2ee4..54eb64a204a 100644
--- a/include/sysinfo.h
+++ b/include/sysinfo.h
@@ -374,18 +374,6 @@ int sysinfo_get_data_by_index(struct udevice *dev, int id, int index,
int sysinfo_get(struct udevice **devp);
/**
- * sysinfo_get_and_detect() - Get the sysinfo device and detect it.
- *
- * @devp: Pointer to structure to receive the sysinfo device.
- *
- * This is a convenience wrapper around sysinfo_get() followed by
- * sysinfo_detect()
- *
- * Return: 0 if OK, -ve on error.
- */
-int sysinfo_get_and_detect(struct udevice **devp);
-
-/**
* sysinfo_get_fit_loadable - Get the name of an image to load from FIT
* This function can be used to provide the image names based on runtime
* detection. A classic use-case would when DTBOs are used to describe
@@ -450,11 +438,6 @@ static inline int sysinfo_get(struct udevice **devp)
return -ENOSYS;
}
-static inline int sysinfo_get_and_detect(struct udevice **devp)
-{
- return -ENOSYS;
-}
-
static inline int sysinfo_get_fit_loadable(struct udevice *dev, int index,
const char *type, const char **strp)
{
diff --git a/include/sysinfo/tq_eeprom.h b/include/sysinfo/tq_eeprom.h
deleted file mode 100644
index 6b1bddd7ce0..00000000000
--- a/include/sysinfo/tq_eeprom.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (c) 2023-2026 TQ-Systems GmbH <[email protected]>,
- * D-82229 Seefeld, Germany.
- * Author: Nora Schiffer
- */
-
-#ifndef __SYSINFO_TQ_EEPROM_H__
-#define __SYSINFO_TQ_EEPROM_H__
-
-#include <sysinfo.h>
-
-enum {
- /* Model string of TQ-Systems SOM. This is different from BOARD_MODEL,
- * which usually combines SOM and baseboard names for TQ hardware
- */
- SYSID_TQ_MODEL = SYSID_USER,
- /* SOM serial number */
- SYSID_TQ_SERIAL,
- /* MAC address */
- SYSID_TQ_MAC_ADDR,
-};
-
-#endif /* __SYSINFO_TQ_EEPROM_H__ */
diff --git a/include/sysreset.h b/include/sysreset.h
index d1cc9ebc542..ff20abdeed3 100644
--- a/include/sysreset.h
+++ b/include/sysreset.h
@@ -43,24 +43,6 @@ struct sysreset_ops {
* (in which case this method will not actually return)
*/
int (*request)(struct udevice *dev, enum sysreset_t type);
-
- /**
- * @request_arg: Reset handler implementations that might need to process
- * arguments given to the 'reset' command.
- *
- * Note that this function may return before the reset takes effect.
- *
- * @dev: Device to be used for system reset
- * @argc: No. of items in @argv
- * @argv: Arguments given to 'reset' command
- * Return:
- * -EINPROGRESS if the reset has started and will complete soon
- * -EPROTONOSUPPORT if not supported by this device
- * 0 if the reset has already happened
- * (in which case this method will not actually return)
- */
- int (*request_arg)(struct udevice *dev, int argc, char * const argv[]);
-
/**
* @get_status: get printable reset status information
*
diff --git a/include/tsec.h b/include/tsec.h
index f5ced38f3fc..153337837a9 100644
--- a/include/tsec.h
+++ b/include/tsec.h
@@ -350,6 +350,23 @@ struct tsec_data {
u32 mdio_regs_off;
};
+struct tsec_private {
+ struct txbd8 __iomem txbd[TX_BUF_CNT];
+ struct rxbd8 __iomem rxbd[PKTBUFSRX];
+ struct tsec __iomem *regs;
+ struct tsec_mii_mng __iomem *phyregs_sgmii;
+ struct phy_device *phydev;
+ phy_interface_t interface;
+ struct mii_dev *bus;
+ uint phyaddr;
+ uint tbiaddr;
+ char mii_devname[16];
+ u32 flags;
+ uint rx_idx; /* index of the current RX buffer */
+ uint tx_idx; /* index of the current TX buffer */
+ struct udevice *dev;
+};
+
struct tsec_info_struct {
struct tsec __iomem *regs;
struct tsec_mii_mng __iomem *miiregs_sgmii;
diff --git a/include/usbdevice.h b/include/usbdevice.h
index 76fda5ff90b..d173c1c4e37 100644
--- a/include/usbdevice.h
+++ b/include/usbdevice.h
@@ -22,19 +22,19 @@
#define MAX_URBS_QUEUED 5
#if 1
-#define usberr(fmt, args...) serial_printf("ERROR: %s(), %d: " fmt "\n", __func__, __LINE__, ##args)
+#define usberr(fmt,args...) serial_printf("ERROR: %s(), %d: "fmt"\n",__FUNCTION__,__LINE__,##args)
#else
#define usberr(fmt,args...) do{}while(0)
#endif
#if 0
-#define usbdbg(fmt, args...) serial_printf("debug: %s(), %d: " fmt "\n", __func__, __LINE__, ##args)
+#define usbdbg(fmt,args...) serial_printf("debug: %s(), %d: "fmt"\n",__FUNCTION__,__LINE__,##args)
#else
#define usbdbg(fmt,args...) do{}while(0)
#endif
#if 0
-#define usbinfo(fmt, args...) serial_printf("info: %s(), %d: " fmt "\n", __func__, __LINE__, ##args)
+#define usbinfo(fmt,args...) serial_printf("info: %s(), %d: "fmt"\n",__FUNCTION__,__LINE__,##args)
#else
#define usbinfo(fmt,args...) do{}while(0)
#endif
diff --git a/include/video_font.h b/include/video_font.h
index 4bfb00eb80f..05d3f989a77 100644
--- a/include/video_font.h
+++ b/include/video_font.h
@@ -12,9 +12,6 @@
#if defined(CONFIG_VIDEO_FONT_4X6)
#include <video_font_4x6.h>
#endif
-#if defined(CONFIG_VIDEO_FONT_6X8)
-#include <video_font_6x8.h>
-#endif
#if defined(CONFIG_VIDEO_FONT_8X16)
#include <video_font_8x16.h>
#endif
@@ -32,9 +29,6 @@ static struct video_fontdata __maybe_unused fonts[] = {
#if defined(CONFIG_VIDEO_FONT_4X6)
FONT_ENTRY(4, 6, 4x6),
#endif
-#if defined(CONFIG_VIDEO_FONT_6X8)
- FONT_ENTRY(6, 8, 6x8),
-#endif
#if defined(CONFIG_VIDEO_FONT_SUN12X22)
FONT_ENTRY(12, 22, 12x22),
#endif
diff --git a/include/video_font_6x8.h b/include/video_font_6x8.h
deleted file mode 100644
index db5ec4cbe5e..00000000000
--- a/include/video_font_6x8.h
+++ /dev/null
@@ -1,2578 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * 6x8 bitmap font from the Linux kernel adapted for U-boot video console
- *
- * Original Linux file at lib/fonts/font_6x8.c retrieved at Linux commit
- * db65872b38dc ("lib/fonts: Remove internal symbols and macros from public
- * header file")
- */
-
-#ifndef _VIDEO_FONT_6X8_
-#define _VIDEO_FONT_6X8_
-
-#include <video_font_data.h>
-
-static unsigned char video_fontdata_6x8[VIDEO_FONT_SIZE(256, 6, 8)] = {
- /* 0 0x00 '^@' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 1 0x01 '^A' */
- 0x78, /* 011110 */
- 0x84, /* 100001 */
- 0xCC, /* 110011 */
- 0x84, /* 100001 */
- 0xCC, /* 110011 */
- 0xB4, /* 101101 */
- 0x78, /* 011110 */
- 0x00, /* 000000 */
-
- /* 2 0x02 '^B' */
- 0x78, /* 011110 */
- 0xFC, /* 111111 */
- 0xB4, /* 101101 */
- 0xFC, /* 111111 */
- 0xB4, /* 101101 */
- 0xCC, /* 110011 */
- 0x78, /* 011110 */
- 0x00, /* 000000 */
-
- /* 3 0x03 '^C' */
- 0x00, /* 000000 */
- 0x28, /* 001010 */
- 0x7C, /* 011111 */
- 0x7C, /* 011111 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 4 0x04 '^D' */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x7C, /* 011111 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 5 0x05 '^E' */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x38, /* 001110 */
- 0x6C, /* 011011 */
- 0x6C, /* 011011 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 6 0x06 '^F' */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x7C, /* 011111 */
- 0x7C, /* 011111 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 7 0x07 '^G' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x78, /* 011110 */
- 0x30, /* 001100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 8 0x08 '^H' */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xCC, /* 110011 */
- 0x84, /* 100001 */
- 0xCC, /* 110011 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
-
- /* 9 0x09 '^I' */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x48, /* 010010 */
- 0x84, /* 100001 */
- 0x48, /* 010010 */
- 0x30, /* 001100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 10 0x0A '^J' */
- 0xFC, /* 111111 */
- 0xCC, /* 110011 */
- 0xB4, /* 101101 */
- 0x78, /* 011110 */
- 0xB4, /* 101101 */
- 0xCC, /* 110011 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
-
- /* 11 0x0B '^K' */
- 0x3C, /* 001111 */
- 0x14, /* 000101 */
- 0x20, /* 001000 */
- 0x78, /* 011110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 12 0x0C '^L' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 13 0x0D '^M' */
- 0x18, /* 000110 */
- 0x14, /* 000101 */
- 0x14, /* 000101 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x70, /* 011100 */
- 0x60, /* 011000 */
- 0x00, /* 000000 */
-
- /* 14 0x0E '^N' */
- 0x3C, /* 001111 */
- 0x24, /* 001001 */
- 0x3C, /* 001111 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x6C, /* 011011 */
- 0x6C, /* 011011 */
- 0x00, /* 000000 */
-
- /* 15 0x0F '^O' */
- 0x10, /* 000100 */
- 0x54, /* 010101 */
- 0x38, /* 001110 */
- 0x6C, /* 011011 */
- 0x38, /* 001110 */
- 0x54, /* 010101 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 16 0x10 '^P' */
- 0x40, /* 010000 */
- 0x60, /* 011000 */
- 0x70, /* 011100 */
- 0x78, /* 011110 */
- 0x70, /* 011100 */
- 0x60, /* 011000 */
- 0x40, /* 010000 */
- 0x00, /* 000000 */
-
- /* 17 0x11 '^Q' */
- 0x04, /* 000001 */
- 0x0C, /* 000011 */
- 0x1C, /* 000111 */
- 0x3C, /* 001111 */
- 0x1C, /* 000111 */
- 0x0C, /* 000011 */
- 0x04, /* 000001 */
- 0x00, /* 000000 */
-
- /* 18 0x12 '^R' */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x54, /* 010101 */
- 0x10, /* 000100 */
- 0x54, /* 010101 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 19 0x13 '^S' */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x00, /* 000000 */
- 0x48, /* 010010 */
- 0x00, /* 000000 */
-
- /* 20 0x14 '^T' */
- 0x3C, /* 001111 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x3C, /* 001111 */
- 0x14, /* 000101 */
- 0x14, /* 000101 */
- 0x14, /* 000101 */
- 0x00, /* 000000 */
-
- /* 21 0x15 '^U' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x30, /* 001100 */
- 0x28, /* 001010 */
- 0x14, /* 000101 */
- 0x0C, /* 000011 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
-
- /* 22 0x16 '^V' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xF8, /* 111110 */
- 0xF8, /* 111110 */
- 0xF8, /* 111110 */
- 0x00, /* 000000 */
-
- /* 23 0x17 '^W' */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x54, /* 010101 */
- 0x10, /* 000100 */
- 0x54, /* 010101 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x7C, /* 011111 */
-
- /* 24 0x18 '^X' */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x54, /* 010101 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 25 0x19 '^Y' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x54, /* 010101 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 26 0x1A '^Z' */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x7C, /* 011111 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 27 0x1B '^[' */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x7C, /* 011111 */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 28 0x1C '^\' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x78, /* 011110 */
- 0x00, /* 000000 */
-
- /* 29 0x1D '^]' */
- 0x00, /* 000000 */
- 0x48, /* 010010 */
- 0x84, /* 100001 */
- 0xFC, /* 111111 */
- 0x84, /* 100001 */
- 0x48, /* 010010 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 30 0x1E '^^' */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x38, /* 001110 */
- 0x7C, /* 011111 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 31 0x1F '^_' */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x7C, /* 011111 */
- 0x38, /* 001110 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 32 0x20 ' ' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 33 0x21 '!' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 34 0x22 '"' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 35 0x23 '#' */
- 0x00, /* 000000 */
- 0x28, /* 001010 */
- 0x7C, /* 011111 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x7C, /* 011111 */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
-
- /* 36 0x24 '$' */
- 0x10, /* 000000 */
- 0x38, /* 001000 */
- 0x40, /* 010000 */
- 0x30, /* 001000 */
- 0x08, /* 000000 */
- 0x70, /* 011000 */
- 0x20, /* 001000 */
- 0x00, /* 000000 */
-
- /* 37 0x25 '%' */
- 0x64, /* 011001 */
- 0x64, /* 011001 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x4C, /* 010011 */
- 0x4C, /* 010011 */
- 0x00, /* 000000 */
-
- /* 38 0x26 '&' */
- 0x30, /* 001100 */
- 0x48, /* 010010 */
- 0x50, /* 010100 */
- 0x20, /* 001000 */
- 0x54, /* 010101 */
- 0x48, /* 010010 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 39 0x27 ''' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 40 0x28 '(' */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x20, /* 001000 */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x00, /* 000000 */
-
- /* 41 0x29 ')' */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x08, /* 000010 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x00, /* 000000 */
-
- /* 42 0x2A '*' */
- 0x10, /* 000100 */
- 0x54, /* 010101 */
- 0x38, /* 001110 */
- 0x54, /* 010101 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 43 0x2B '+' */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x7C, /* 011111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 44 0x2C ',' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x30, /* 001100 */
- 0x20, /* 001000 */
-
- /* 45 0x2D '-' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 46 0x2E '.' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x18, /* 000110 */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
-
- /* 47 0x2F '/' */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x20, /* 001000 */
- 0x40, /* 010000 */
-
- /* 48 0x30 '0' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x54, /* 010101 */
- 0x64, /* 011001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 49 0x31 '1' */
- 0x10, /* 000100 */
- 0x30, /* 001100 */
- 0x50, /* 010100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 50 0x32 '2' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 51 0x33 '3' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x04, /* 000001 */
- 0x18, /* 000110 */
- 0x04, /* 000001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 52 0x34 '4' */
- 0x08, /* 000010 */
- 0x18, /* 000110 */
- 0x28, /* 001010 */
- 0x48, /* 010010 */
- 0x7C, /* 011111 */
- 0x08, /* 000010 */
- 0x08, /* 000010 */
- 0x00, /* 000000 */
-
- /* 53 0x35 '5' */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x78, /* 011110 */
- 0x04, /* 000001 */
- 0x04, /* 000001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 54 0x36 '6' */
- 0x18, /* 000110 */
- 0x20, /* 001000 */
- 0x40, /* 010000 */
- 0x78, /* 011110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 55 0x37 '7' */
- 0x7C, /* 011111 */
- 0x04, /* 000001 */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 56 0x38 '8' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 57 0x39 '9' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x30, /* 001100 */
- 0x00, /* 000000 */
-
- /* 58 0x3A ':' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x18, /* 000110 */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x18, /* 000110 */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
-
- /* 59 0x3B ';' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x30, /* 001100 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x30, /* 001100 */
- 0x20, /* 001000 */
-
- /* 60 0x3C '<' */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x04, /* 000001 */
- 0x00, /* 000000 */
-
- /* 61 0x3D '=' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 62 0x3E '>' */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x00, /* 000000 */
-
- /* 63 0x3F '?' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 64 0x40 '@' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x5C, /* 010111 */
- 0x54, /* 010101 */
- 0x5C, /* 010111 */
- 0x40, /* 010000 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 65 0x41 'A' */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 66 0x42 'B' */
- 0x78, /* 011110 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x38, /* 001110 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x78, /* 011110 */
- 0x00, /* 000000 */
-
- /* 67 0x43 'C' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 68 0x44 'D' */
- 0x78, /* 011110 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x78, /* 011110 */
- 0x00, /* 000000 */
-
- /* 69 0x45 'E' */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x78, /* 011110 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 70 0x46 'F' */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x78, /* 011110 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x00, /* 000000 */
-
- /* 71 0x47 'G' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x40, /* 010000 */
- 0x5C, /* 010111 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 72 0x48 'H' */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 73 0x49 'I' */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 74 0x4A 'J' */
- 0x1C, /* 000111 */
- 0x08, /* 000010 */
- 0x08, /* 000010 */
- 0x08, /* 000010 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x30, /* 001100 */
- 0x00, /* 000000 */
-
- /* 75 0x4B 'K' */
- 0x44, /* 010001 */
- 0x48, /* 010010 */
- 0x50, /* 010100 */
- 0x60, /* 011000 */
- 0x50, /* 010100 */
- 0x48, /* 010010 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 76 0x4C 'L' */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 77 0x4D 'M' */
- 0x44, /* 010001 */
- 0x6C, /* 011011 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 78 0x4E 'N' */
- 0x44, /* 010001 */
- 0x64, /* 011001 */
- 0x54, /* 010101 */
- 0x4C, /* 010011 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 79 0x4F 'O' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 80 0x50 'P' */
- 0x78, /* 011110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x78, /* 011110 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x00, /* 000000 */
-
- /* 81 0x51 'Q' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x54, /* 010101 */
- 0x48, /* 010010 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 82 0x52 'R' */
- 0x78, /* 011110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x78, /* 011110 */
- 0x50, /* 010100 */
- 0x48, /* 010010 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 83 0x53 'S' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x40, /* 010000 */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 84 0x54 'T' */
- 0x7C, /* 011111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 85 0x55 'U' */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 86 0x56 'V' */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x28, /* 001010 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 87 0x57 'W' */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x6C, /* 011011 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 88 0x58 'X' */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x28, /* 001010 */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 89 0x59 'Y' */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x28, /* 001010 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 90 0x5A 'Z' */
- 0x7C, /* 011111 */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x40, /* 010000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 91 0x5B '[' */
- 0x18, /* 000110 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
-
- /* 92 0x5C '\' */
- 0x40, /* 010000 */
- 0x20, /* 001000 */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x08, /* 000010 */
- 0x04, /* 000001 */
-
- /* 93 0x5D ']' */
- 0x30, /* 001100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x30, /* 001100 */
- 0x00, /* 000000 */
-
- /* 94 0x5E '^' */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 95 0x5F '_' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
-
- /* 96 0x60 '`' */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 97 0x61 'a' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x3C, /* 001111 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 98 0x62 'b' */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x58, /* 010110 */
- 0x64, /* 011001 */
- 0x44, /* 010001 */
- 0x64, /* 011001 */
- 0x58, /* 010110 */
- 0x00, /* 000000 */
-
- /* 99 0x63 'c' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x40, /* 010000 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 100 0x64 'd' */
- 0x04, /* 000001 */
- 0x04, /* 000001 */
- 0x34, /* 001101 */
- 0x4C, /* 010011 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 101 0x65 'e' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 102 0x66 'f' */
- 0x0C, /* 000011 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 103 0x67 'g' */
- 0x00, /* 000000 */
- 0x34, /* 001101 */
- 0x4C, /* 010011 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x34, /* 001101 */
- 0x04, /* 000001 */
- 0x38, /* 001110 */
-
- /* 104 0x68 'h' */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x78, /* 011110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 105 0x69 'i' */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 106 0x6A 'j' */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x60, /* 011000 */
-
- /* 107 0x6B 'k' */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x48, /* 010010 */
- 0x50, /* 010100 */
- 0x70, /* 011100 */
- 0x48, /* 010010 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 108 0x6C 'l' */
- 0x30, /* 001100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 109 0x6D 'm' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x68, /* 011010 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x00, /* 000000 */
-
- /* 110 0x6E 'n' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x58, /* 010110 */
- 0x64, /* 011001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 111 0x6F 'o' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 112 0x70 'p' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x78, /* 011110 */
- 0x44, /* 010001 */
- 0x64, /* 011001 */
- 0x58, /* 010110 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
-
- /* 113 0x71 'q' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x3C, /* 001111 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x34, /* 001101 */
- 0x04, /* 000001 */
- 0x04, /* 000001 */
-
- /* 114 0x72 'r' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x58, /* 010110 */
- 0x64, /* 011001 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x00, /* 000000 */
-
- /* 115 0x73 's' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x3C, /* 001111 */
- 0x40, /* 010000 */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x78, /* 011110 */
- 0x00, /* 000000 */
-
- /* 116 0x74 't' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x0C, /* 000011 */
- 0x00, /* 000000 */
-
- /* 117 0x75 'u' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 118 0x76 'v' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x28, /* 001010 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 119 0x77 'w' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
-
- /* 120 0x78 'x' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x28, /* 001010 */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 121 0x79 'y' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x04, /* 000001 */
- 0x38, /* 001110 */
-
- /* 122 0x7A 'z' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 123 0x7B '{' */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x00, /* 000000 */
-
- /* 124 0x7C '|' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 125 0x7D '}' */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x00, /* 000000 */
-
- /* 126 0x7E '~' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x20, /* 001000 */
- 0x54, /* 010101 */
- 0x08, /* 000010 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 127 0x7F 'DEL' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 128 0x80 '\200' */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x40, /* 010000 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
-
- /* 129 0x81 '\201' */
- 0x00, /* 000000 */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 130 0x82 '\202' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 131 0x83 '\203' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x3C, /* 001111 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 132 0x84 '\204' */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x3C, /* 001111 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 133 0x85 '\205' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x3C, /* 001111 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 134 0x86 '\206' */
- 0x3C, /* 001111 */
- 0x18, /* 000110 */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x3C, /* 001111 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 135 0x87 '\207' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x40, /* 010000 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
-
- /* 136 0x88 '\210' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 137 0x89 '\211' */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 138 0x8A '\212' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 139 0x8B '\213' */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 140 0x8C '\214' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 141 0x8D '\215' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 142 0x8E '\216' */
- 0x44, /* 010001 */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 143 0x8F '\217' */
- 0x30, /* 001100 */
- 0x48, /* 010010 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 144 0x90 '\220' */
- 0x10, /* 000100 */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x78, /* 011110 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 145 0x91 '\221' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x78, /* 011110 */
- 0x14, /* 000101 */
- 0x7C, /* 011111 */
- 0x50, /* 010100 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 146 0x92 '\222' */
- 0x3C, /* 001111 */
- 0x50, /* 010100 */
- 0x50, /* 010100 */
- 0x78, /* 011110 */
- 0x50, /* 010100 */
- 0x50, /* 010100 */
- 0x5C, /* 010111 */
- 0x00, /* 000000 */
-
- /* 147 0x93 '\223' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 148 0x94 '\224' */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 149 0x95 '\225' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 150 0x96 '\226' */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 151 0x97 '\227' */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 152 0x98 '\230' */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x04, /* 000001 */
- 0x38, /* 001110 */
-
- /* 153 0x99 '\231' */
- 0x84, /* 100001 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 154 0x9A '\232' */
- 0x88, /* 100010 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 155 0x9B '\233' */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x54, /* 010101 */
- 0x50, /* 010100 */
- 0x54, /* 010101 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 156 0x9C '\234' */
- 0x30, /* 001100 */
- 0x48, /* 010010 */
- 0x40, /* 010000 */
- 0x70, /* 011100 */
- 0x40, /* 010000 */
- 0x44, /* 010001 */
- 0x78, /* 011110 */
- 0x00, /* 000000 */
-
- /* 157 0x9D '\235' */
- 0x44, /* 010001 */
- 0x28, /* 001010 */
- 0x7C, /* 011111 */
- 0x10, /* 000100 */
- 0x7C, /* 011111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 158 0x9E '\236' */
- 0x70, /* 011100 */
- 0x48, /* 010010 */
- 0x70, /* 011100 */
- 0x48, /* 010010 */
- 0x5C, /* 010111 */
- 0x48, /* 010010 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 159 0x9F '\237' */
- 0x0C, /* 000011 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x60, /* 011000 */
- 0x00, /* 000000 */
-
- /* 160 0xA0 '\240' */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x3C, /* 001111 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 161 0xA1 '\241' */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x30, /* 001100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 162 0xA2 '\242' */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 163 0xA3 '\243' */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x4C, /* 010011 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 164 0xA4 '\244' */
- 0x34, /* 001101 */
- 0x58, /* 010110 */
- 0x00, /* 000000 */
- 0x58, /* 010110 */
- 0x64, /* 011001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 165 0xA5 '\245' */
- 0x58, /* 010110 */
- 0x44, /* 010001 */
- 0x64, /* 011001 */
- 0x54, /* 010101 */
- 0x4C, /* 010011 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 166 0xA6 '\246' */
- 0x38, /* 001110 */
- 0x04, /* 000001 */
- 0x3C, /* 001111 */
- 0x44, /* 010001 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 167 0xA7 '\247' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 168 0xA8 '\250' */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x40, /* 010000 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 169 0xA9 '\251' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 170 0xAA '\252' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x04, /* 000001 */
- 0x04, /* 000001 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 171 0xAB '\253' */
- 0x20, /* 001000 */
- 0x24, /* 001001 */
- 0x28, /* 001010 */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x44, /* 010001 */
- 0x08, /* 000010 */
- 0x1C, /* 000111 */
-
- /* 172 0xAC '\254' */
- 0x20, /* 001000 */
- 0x24, /* 001001 */
- 0x28, /* 001010 */
- 0x10, /* 000100 */
- 0x28, /* 001010 */
- 0x58, /* 010110 */
- 0x3C, /* 001111 */
- 0x08, /* 000010 */
-
- /* 173 0xAD '\255' */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
-
- /* 174 0xAE '\256' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x24, /* 001001 */
- 0x48, /* 010010 */
- 0x90, /* 100100 */
- 0x48, /* 010010 */
- 0x24, /* 001001 */
- 0x00, /* 000000 */
-
- /* 175 0xAF '\257' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x90, /* 100100 */
- 0x48, /* 010010 */
- 0x24, /* 001001 */
- 0x48, /* 010010 */
- 0x90, /* 100100 */
- 0x00, /* 000000 */
-
- /* 176 0xB0 '\260' */
- 0x10, /* 000100 */
- 0x44, /* 010001 */
- 0x10, /* 000100 */
- 0x44, /* 010001 */
- 0x10, /* 000100 */
- 0x44, /* 010001 */
- 0x10, /* 000100 */
- 0x44, /* 010001 */
-
- /* 177 0xB1 '\261' */
- 0xA8, /* 101010 */
- 0x54, /* 010101 */
- 0xA8, /* 101010 */
- 0x54, /* 010101 */
- 0xA8, /* 101010 */
- 0x54, /* 010101 */
- 0xA8, /* 101010 */
- 0x54, /* 010101 */
-
- /* 178 0xB2 '\262' */
- 0xDC, /* 110111 */
- 0x74, /* 011101 */
- 0xDC, /* 110111 */
- 0x74, /* 011101 */
- 0xDC, /* 110111 */
- 0x74, /* 011101 */
- 0xDC, /* 110111 */
- 0x74, /* 011101 */
-
- /* 179 0xB3 '\263' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 180 0xB4 '\264' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0xF0, /* 111100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 181 0xB5 '\265' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0xF0, /* 111100 */
- 0x10, /* 000100 */
- 0xF0, /* 111100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 182 0xB6 '\266' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0xE8, /* 111010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 183 0xB7 '\267' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xF8, /* 111110 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 184 0xB8 '\270' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xF0, /* 111100 */
- 0x10, /* 000100 */
- 0xF0, /* 111100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 185 0xB9 '\271' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0xE8, /* 111010 */
- 0x08, /* 000010 */
- 0xE8, /* 111010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 186 0xBA '\272' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 187 0xBB '\273' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xF8, /* 111110 */
- 0x08, /* 000010 */
- 0xE8, /* 111010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 188 0xBC '\274' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0xE8, /* 111010 */
- 0x08, /* 000010 */
- 0xF8, /* 111110 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 189 0xBD '\275' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0xF8, /* 111110 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 190 0xBE '\276' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0xF0, /* 111100 */
- 0x10, /* 000100 */
- 0xF0, /* 111100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 191 0xBF '\277' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xF0, /* 111100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 192 0xC0 '\300' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x1C, /* 000111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 193 0xC1 '\301' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 194 0xC2 '\302' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 195 0xC3 '\303' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x1C, /* 000111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 196 0xC4 '\304' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 197 0xC5 '\305' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0xFC, /* 111111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 198 0xC6 '\306' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x1C, /* 000111 */
- 0x10, /* 000100 */
- 0x1C, /* 000111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 199 0xC7 '\307' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x2C, /* 001011 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 200 0xC8 '\310' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x2C, /* 001011 */
- 0x20, /* 001000 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 201 0xC9 '\311' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x3C, /* 001111 */
- 0x20, /* 001000 */
- 0x2C, /* 001011 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 202 0xCA '\312' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0xEC, /* 111011 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 203 0xCB '\313' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0xEC, /* 111011 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 204 0xCC '\314' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x2C, /* 001011 */
- 0x20, /* 001000 */
- 0x2C, /* 001011 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 205 0xCD '\315' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 206 0xCE '\316' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0xEC, /* 111011 */
- 0x00, /* 000000 */
- 0xEC, /* 111011 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 207 0xCF '\317' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 208 0xD0 '\320' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 209 0xD1 '\321' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 210 0xD2 '\322' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 211 0xD3 '\323' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 212 0xD4 '\324' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x1C, /* 000111 */
- 0x10, /* 000100 */
- 0x1C, /* 000111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 213 0xD5 '\325' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x1C, /* 000111 */
- 0x10, /* 000100 */
- 0x1C, /* 000111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 214 0xD6 '\326' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x3C, /* 001111 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 215 0xD7 '\327' */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0xFC, /* 111111 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
-
- /* 216 0xD8 '\330' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0xFC, /* 111111 */
- 0x10, /* 000100 */
- 0xFC, /* 111111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 217 0xD9 '\331' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0xF0, /* 111100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 218 0xDA '\332' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x1C, /* 000111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 219 0xDB '\333' */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
-
- /* 220 0xDC '\334' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
-
- /* 221 0xDD '\335' */
- 0xE0, /* 111000 */
- 0xE0, /* 111000 */
- 0xE0, /* 111000 */
- 0xE0, /* 111000 */
- 0xE0, /* 111000 */
- 0xE0, /* 111000 */
- 0xE0, /* 111000 */
- 0xE0, /* 111000 */
-
- /* 222 0xDE '\336' */
- 0x1C, /* 000111 */
- 0x1C, /* 000111 */
- 0x1C, /* 000111 */
- 0x1C, /* 000111 */
- 0x1C, /* 000111 */
- 0x1C, /* 000111 */
- 0x1C, /* 000111 */
- 0x1C, /* 000111 */
-
- /* 223 0xDF '\337' */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 224 0xE0 '\340' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x34, /* 001101 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x34, /* 001101 */
- 0x00, /* 000000 */
-
- /* 225 0xE1 '\341' */
- 0x24, /* 001001 */
- 0x44, /* 010001 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x58, /* 010110 */
- 0x40, /* 010000 */
-
- /* 226 0xE2 '\342' */
- 0x7C, /* 011111 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x00, /* 000000 */
-
- /* 227 0xE3 '\343' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x28, /* 001010 */
- 0x00, /* 000000 */
-
- /* 228 0xE4 '\344' */
- 0x7C, /* 011111 */
- 0x24, /* 001001 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x24, /* 001001 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 229 0xE5 '\345' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x3C, /* 001111 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x30, /* 001100 */
- 0x00, /* 000000 */
-
- /* 230 0xE6 '\346' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x74, /* 011101 */
- 0x40, /* 010000 */
-
- /* 231 0xE7 '\347' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x0C, /* 000011 */
- 0x00, /* 000000 */
-
- /* 232 0xE8 '\350' */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 233 0xE9 '\351' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x7C, /* 011111 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 234 0xEA '\352' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x28, /* 001010 */
- 0x6C, /* 011011 */
- 0x00, /* 000000 */
-
- /* 235 0xEB '\353' */
- 0x18, /* 000110 */
- 0x20, /* 001000 */
- 0x18, /* 000110 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x24, /* 001001 */
- 0x18, /* 000110 */
- 0x00, /* 000000 */
-
- /* 236 0xEC '\354' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 237 0xED '\355' */
- 0x00, /* 000000 */
- 0x04, /* 000001 */
- 0x38, /* 001110 */
- 0x54, /* 010101 */
- 0x54, /* 010101 */
- 0x38, /* 001110 */
- 0x40, /* 010000 */
- 0x00, /* 000000 */
-
- /* 238 0xEE '\356' */
- 0x3C, /* 001111 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x38, /* 001110 */
- 0x40, /* 010000 */
- 0x40, /* 010000 */
- 0x3C, /* 001111 */
- 0x00, /* 000000 */
-
- /* 239 0xEF '\357' */
- 0x38, /* 001110 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x44, /* 010001 */
- 0x00, /* 000000 */
-
- /* 240 0xF0 '\360' */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0xFC, /* 111111 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 241 0xF1 '\361' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x7C, /* 011111 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
-
- /* 242 0xF2 '\362' */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 243 0xF3 '\363' */
- 0x08, /* 000010 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x10, /* 000100 */
- 0x08, /* 000010 */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 244 0xF4 '\364' */
- 0x0C, /* 000011 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
-
- /* 245 0xF5 '\365' */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x10, /* 000100 */
- 0x60, /* 011000 */
-
- /* 246 0xF6 '\366' */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x7C, /* 011111 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 247 0xF7 '\367' */
- 0x00, /* 000000 */
- 0x20, /* 001000 */
- 0x54, /* 010101 */
- 0x08, /* 000010 */
- 0x20, /* 001000 */
- 0x54, /* 010101 */
- 0x08, /* 000010 */
- 0x00, /* 000000 */
-
- /* 248 0xF8 '\370' */
- 0x30, /* 001100 */
- 0x48, /* 010010 */
- 0x48, /* 010010 */
- 0x30, /* 001100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 249 0xF9 '\371' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x38, /* 001110 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 250 0xFA '\372' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x10, /* 000100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 251 0xFB '\373' */
- 0x04, /* 000001 */
- 0x08, /* 000010 */
- 0x08, /* 000010 */
- 0x50, /* 010100 */
- 0x50, /* 010100 */
- 0x20, /* 001000 */
- 0x20, /* 001000 */
- 0x00, /* 000000 */
-
- /* 252 0xFC '\374' */
- 0x60, /* 011000 */
- 0x50, /* 010100 */
- 0x50, /* 010100 */
- 0x50, /* 010100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 253 0xFD '\375' */
- 0x60, /* 011000 */
- 0x10, /* 000100 */
- 0x20, /* 001000 */
- 0x70, /* 011100 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-
- /* 254 0xFE '\376' */
- 0x00, /* 000000 */
- 0x38, /* 001110 */
- 0x38, /* 001110 */
- 0x38, /* 001110 */
- 0x38, /* 001110 */
- 0x38, /* 001110 */
- 0x38, /* 001110 */
- 0x00, /* 000000 */
-
- /* 255 0xFF '\377' */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
- 0x00, /* 000000 */
-};
-
-#endif /* _VIDEO_FONT_6X8_ */
-
diff --git a/include/virtio.h b/include/virtio.h
index 3edf023463d..17f894a79e3 100644
--- a/include/virtio.h
+++ b/include/virtio.h
@@ -25,9 +25,6 @@
#include <linux/bitops.h>
#include <linux/bug.h>
#include <linux/typecheck.h>
-
-#define VIRTIO_VENDOR_QEMU 0x554d4551
-
#define VIRTIO_ID_NET 1 /* virtio net */
#define VIRTIO_ID_BLOCK 2 /* virtio block */
#define VIRTIO_ID_RNG 4 /* virtio rng */
diff --git a/include/virtio_mmio.h b/include/virtio_mmio.h
deleted file mode 100644
index 8c072826db5..00000000000
--- a/include/virtio_mmio.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-
-#ifndef __VIRTIO_MMIO_H__
-#define __VIRTIO_MMIO_H__
-
-#include <linux/types.h>
-
-struct virtio_mmio_plat {
- phys_addr_t base;
-};
-
-#endif /* __VIRTIO_MMIO_H__ */
diff --git a/include/zynqmp_firmware.h b/include/zynqmp_firmware.h
index 0e545e3db1b..f5e72625e53 100644
--- a/include/zynqmp_firmware.h
+++ b/include/zynqmp_firmware.h
@@ -470,7 +470,6 @@ int zynqmp_pm_ufs_sram_csr_read(u32 *value);
int zynqmp_pm_ufs_sram_csr_write(u32 *value);
int zynqmp_pm_ufs_cal_reg(u32 *value);
u32 zynqmp_pm_get_pmc_multi_boot_reg(void);
-u32 zynqmp_pm_get_pmc_global_pggs_reg(u32 reg_addr);
/* Type of Config Object */
#define PM_CONFIG_OBJECT_TYPE_BASE 0x1U
@@ -535,7 +534,4 @@ extern smc_call_handler_t __data smc_call_handler;
#define PM_DEV_OSPI (0x1822402aU)
-#define PM_REG_PGGS3 0x30004003
-#define PMC_GLOBAL_PGGS3_REG_NODE 0x1824C005
-
#endif /* _ZYNQMP_FIRMWARE_H_ */