diff options
255 files changed, 2424 insertions, 1879 deletions
diff --git a/baseboard/dragonegg/baseboard.c b/baseboard/dragonegg/baseboard.c index 84a225c33a..e14013c756 100644 --- a/baseboard/dragonegg/baseboard.c +++ b/baseboard/dragonegg/baseboard.c @@ -158,7 +158,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_USBC1C2, - .addr = TUSB422_I2C_ADDR, + .addr__7bf = TUSB422_I2C_ADDR__7bf, }, .drv = &tusb422_tcpm_drv, /* Alert is active-low, push-pull */ @@ -171,19 +171,19 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { struct ppc_config_t ppc_chips[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_ITE_0] = { .i2c_port = I2C_PORT_USBC0, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, [USB_PD_PORT_ITE_1] = { .i2c_port = I2C_PORT_USBC1C2, - .i2c_addr = SYV682X_ADDR0, + .i2c_addr__7bf = SYV682X_ADDR0__7bf, .drv = &syv682x_drv }, [USB_PD_PORT_TUSB422_2] = { .i2c_port = I2C_PORT_USBC1C2, - .i2c_addr = NX20P3481_ADDR2, + .i2c_addr__7bf = NX20P3481_ADDR2__7bf, .drv = &nx20p348x_drv, }, }; diff --git a/baseboard/dragonegg/baseboard.h b/baseboard/dragonegg/baseboard.h index d51c5c3e62..4d02166703 100644 --- a/baseboard/dragonegg/baseboard.h +++ b/baseboard/dragonegg/baseboard.h @@ -131,9 +131,9 @@ #define I2C_PORT_CHARGER IT83XX_I2C_CH_F /* Shared bus */ #define I2C_PORT_SENSOR IT83XX_I2C_CH_B #define I2C_PORT_USBC0 IT83XX_I2C_CH_E -#define I2C_PORT_USBC1C2 IT83XX_I2C_CH_C +#define I2C_PORT_USBC1C2 IT83XX_I2C_CH_C #define I2C_PORT_EEPROM IT83XX_I2C_CH_A -#define I2C_ADDR_EEPROM 0xA0 +#define I2C_ADDR_EEPROM__7bf 0x50 #ifndef __ASSEMBLER__ diff --git a/baseboard/grunt/baseboard.c b/baseboard/grunt/baseboard.c index 2ebdbc6591..592c821ca7 100644 --- a/baseboard/grunt/baseboard.c +++ b/baseboard/grunt/baseboard.c @@ -82,7 +82,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, }, .drv = &anx74xx_tcpm_drv, /* Alert is active-low, open-drain */ @@ -92,7 +92,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, /* Alert is active-low, push-pull */ @@ -133,12 +133,12 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { struct ppc_config_t ppc_chips[] = { { .i2c_port = I2C_PORT_TCPC0, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, { .i2c_port = I2C_PORT_TCPC1, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, }; @@ -380,7 +380,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_SENSOR, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = (const mat33_fp_t *)&lid_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = KX022_ACCEL_MIN_FREQ, @@ -408,7 +408,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 2, /* g, enough for laptop */ .rot_standard_ref = (const mat33_fp_t *)&grunt_base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -436,7 +436,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = (const mat33_fp_t *)&grunt_base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, diff --git a/baseboard/hatch/baseboard.c b/baseboard/hatch/baseboard.c index d76227e562..b2aa3810ed 100644 --- a/baseboard/hatch/baseboard.c +++ b/baseboard/hatch/baseboard.c @@ -119,13 +119,13 @@ DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, baseboard_chipset_shutdown, struct ppc_config_t ppc_chips[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_TCPC_0] = { .i2c_port = I2C_PORT_PPC0, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, [USB_PD_PORT_TCPC_1] = { .i2c_port = I2C_PORT_TCPC1, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, }; diff --git a/baseboard/hatch/baseboard.h b/baseboard/hatch/baseboard.h index 5c096863c1..4ad634df45 100644 --- a/baseboard/hatch/baseboard.h +++ b/baseboard/hatch/baseboard.h @@ -155,7 +155,7 @@ #define I2C_PORT_TCPC0 NPCX_I2C_PORT3_0 #define I2C_PORT_POWER NPCX_I2C_PORT5_0 #define I2C_PORT_EEPROM NPCX_I2C_PORT7_0 -#define I2C_ADDR_EEPROM 0xA0 +#define I2C_ADDR_EEPROM__7bf 0x50 #define I2C_PORT_BATTERY I2C_PORT_POWER #define I2C_PORT_CHARGER I2C_PORT_POWER diff --git a/baseboard/kalista/baseboard.c b/baseboard/kalista/baseboard.c index f3d552c96b..20520e3f50 100644 --- a/baseboard/kalista/baseboard.c +++ b/baseboard/kalista/baseboard.c @@ -144,7 +144,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = I2C_ADDR_TCPC0, + .addr__7bf = I2C_ADDR_TCPC0__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -193,7 +193,7 @@ void board_tcpc_init(void) * TCPM_INIT will fail due to not able to access PS8751. * Note PS8751 A3 will wake on any I2C access. */ - i2c_read8(I2C_PORT_TCPC0, I2C_ADDR_TCPC0, 0xA0, ®); + i2c_read8__7bf(I2C_PORT_TCPC0, I2C_ADDR_TCPC0__7bf, 0xA0, ®); /* Enable TCPC interrupts */ gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL); @@ -249,10 +249,10 @@ BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT); /* Initialize PMIC */ #define I2C_PMIC_READ(reg, data) \ - i2c_read8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1, (reg), (data)) + i2c_read8__7bf(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1__7bf, (reg), (data)) #define I2C_PMIC_WRITE(reg, data) \ - i2c_write8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1, (reg), (data)) + i2c_write8__7bf(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1__7bf, (reg), (data)) static void board_pmic_init(void) { diff --git a/baseboard/kalista/baseboard.h b/baseboard/kalista/baseboard.h index b94df35a1c..2cb8a06481 100644 --- a/baseboard/kalista/baseboard.h +++ b/baseboard/kalista/baseboard.h @@ -120,8 +120,8 @@ #define I2C_PORT_THERMAL NPCX_I2C_PORT3 /* I2C addresses */ -#define I2C_ADDR_TCPC0 0x16 -#define I2C_ADDR_EEPROM 0xa0 +#define I2C_ADDR_TCPC0__7bf 0x0b +#define I2C_ADDR_EEPROM__7bf 0x50 /* Verify and jump to RW image on boot */ #define CONFIG_VBOOT_EFS diff --git a/baseboard/octopus/baseboard.h b/baseboard/octopus/baseboard.h index a062b021ce..05494819ff 100644 --- a/baseboard/octopus/baseboard.h +++ b/baseboard/octopus/baseboard.h @@ -47,7 +47,7 @@ #define I2C_PORT_EEPROM NPCX_I2C_PORT3_0 #define I2C_PORT_CHARGER NPCX_I2C_PORT4_1 #define I2C_PORT_SENSOR NPCX_I2C_PORT7_0 - #define I2C_ADDR_EEPROM 0xA0 + #define I2C_ADDR_EEPROM__7bf 0x50 /* Enable PSL hibernate mode. */ #define CONFIG_HIBERNATE_PSL @@ -69,7 +69,7 @@ #define I2C_PORT_USBC1 IT83XX_I2C_CH_E #define I2C_PORT_USB_MUX I2C_PORT_USBC0 /* For MUX driver */ #define I2C_PORT_EEPROM IT83XX_I2C_CH_F - #define I2C_ADDR_EEPROM 0xA0 + #define I2C_ADDR_EEPROM__7bf 0x50 /* EC variant determines USB-C variant */ #define VARIANT_OCTOPUS_USBC_ITE_EC_TCPCS diff --git a/baseboard/octopus/variant_usbc_ec_tcpcs.c b/baseboard/octopus/variant_usbc_ec_tcpcs.c index afea880075..071c6388d3 100644 --- a/baseboard/octopus/variant_usbc_ec_tcpcs.c +++ b/baseboard/octopus/variant_usbc_ec_tcpcs.c @@ -68,14 +68,14 @@ static void board_it83xx_hpd_status(int port, int hpd_lvl, int hpd_irq) struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_ITE_0] = { /* Driver uses I2C_PORT_USB_MUX as I2C port */ - .port_addr = IT5205_I2C_ADDR1, + .port_addr = IT5205_I2C_ADDR1__7bf, .driver = &it5205_usb_mux_driver, .hpd_update = &board_it83xx_hpd_status, }, [USB_PD_PORT_ITE_1] = { /* Use PS8751 as mux only */ .port_addr = MUX_PORT_AND_ADDR( - I2C_PORT_USBC1, PS8751_I2C_ADDR1), + I2C_PORT_USBC1, PS8751_I2C_ADDR1__7bf), .flags = USB_MUX_FLAG_NOT_TCPC, .driver = &ps8xxx_usb_mux_driver, .hpd_update = &ps8xxx_tcpc_update_hpd_status, @@ -87,12 +87,12 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { struct ppc_config_t ppc_chips[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_ITE_0] = { .i2c_port = I2C_PORT_USBC0, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, [USB_PD_PORT_ITE_1] = { .i2c_port = I2C_PORT_USBC1, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, }; diff --git a/baseboard/octopus/variant_usbc_standalone_tcpcs.c b/baseboard/octopus/variant_usbc_standalone_tcpcs.c index cc47633586..c9921b8a4b 100644 --- a/baseboard/octopus/variant_usbc_standalone_tcpcs.c +++ b/baseboard/octopus/variant_usbc_standalone_tcpcs.c @@ -35,14 +35,14 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, #else .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = AN7447_TCPC0_I2C_ADDR, + .addr__7bf = AN7447_TCPC0_I2C_ADDR__7bf, }, .drv = &anx7447_tcpm_drv, #endif @@ -51,7 +51,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -91,12 +91,12 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { struct ppc_config_t ppc_chips[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_TCPC_0] = { .i2c_port = I2C_PORT_TCPC0, - .i2c_addr = NX20P3483_ADDR2, + .i2c_addr__7bf = NX20P3483_ADDR2__7bf, .drv = &nx20p348x_drv, }, [USB_PD_PORT_TCPC_1] = { .i2c_port = I2C_PORT_TCPC1, - .i2c_addr = NX20P3483_ADDR2, + .i2c_addr__7bf = NX20P3483_ADDR2__7bf, .drv = &nx20p348x_drv, }, }; diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c index eca652210f..1014b1dec5 100644 --- a/baseboard/zork/baseboard.c +++ b/baseboard/zork/baseboard.c @@ -89,7 +89,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, }, .drv = &anx74xx_tcpm_drv, /* Alert is active-low, open-drain */ @@ -99,7 +99,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, /* Alert is active-low, push-pull */ @@ -140,12 +140,12 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { struct ppc_config_t ppc_chips[] = { { .i2c_port = I2C_PORT_TCPC0, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, { .i2c_port = I2C_PORT_TCPC1, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, }; @@ -387,7 +387,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_SENSOR, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = (const mat33_fp_t *)&lid_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = KX022_ACCEL_MIN_FREQ, @@ -415,7 +415,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 2, /* g, enough for laptop */ .rot_standard_ref = (const mat33_fp_t *)&zork_base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -443,7 +443,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = (const mat33_fp_t *)&zork_base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, diff --git a/board/ampton/board.c b/board/ampton/board.c index 9a9ed5c3c7..15b3af652a 100644 --- a/board/ampton/board.c +++ b/board/ampton/board.c @@ -72,7 +72,7 @@ struct usb_mux ampton_usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_ITE_0] = { /* Use PS8751 as mux only */ .port_addr = MUX_PORT_AND_ADDR( - I2C_PORT_USBC0, PS8751_I2C_ADDR1), + I2C_PORT_USBC0, PS8751_I2C_ADDR1__7bf), .flags = USB_MUX_FLAG_NOT_TCPC, .driver = &ps8xxx_usb_mux_driver, .hpd_update = &ps8xxx_tcpc_update_hpd_status, @@ -81,7 +81,7 @@ struct usb_mux ampton_usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_ITE_1] = { /* Use PS8751 as mux only */ .port_addr = MUX_PORT_AND_ADDR( - I2C_PORT_USBC1, PS8751_I2C_ADDR1), + I2C_PORT_USBC1, PS8751_I2C_ADDR1__7bf), .flags = USB_MUX_FLAG_NOT_TCPC, .driver = &ps8xxx_usb_mux_driver, .hpd_update = &ps8xxx_tcpc_update_hpd_status, @@ -188,7 +188,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_SENSOR, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 4, /* g */ .config = { @@ -212,7 +212,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 4, /* g */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -240,7 +240,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &gyro_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, diff --git a/board/arcada_ish/board.c b/board/arcada_ish/board.c index 911dc6a290..f18a530568 100644 --- a/board/arcada_ish/board.c +++ b/board/arcada_ish/board.c @@ -63,7 +63,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_ACCEL_GYRO_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR1, + .i2c_spi_addr__7bf = LSM6DSM_ADDR1__7bf, .rot_standard_ref = &lid_rot_ref, .default_range = 4, /* g */ .min_frequency = LSM6DSM_ODR_MIN_VAL, @@ -93,7 +93,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_ACCEL_GYRO_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR1, + .i2c_spi_addr__7bf = LSM6DSM_ADDR1__7bf, .default_range = 1000 | ROUND_UP_FLAG, /* dps */ .rot_standard_ref = &lid_rot_ref, .min_frequency = LSM6DSM_ODR_MIN_VAL, @@ -110,7 +110,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_lis2dh_data, .port = I2C_PORT_SENSOR, - .addr = LNG2DM_ADDR0, + .i2c_spi_addr__7bf = LNG2DM_ADDR0__7bf, .rot_standard_ref = NULL, /* Identity matrix */ /* We only use 2g because its resolution is only 8-bits */ .default_range = 2, /* g */ @@ -138,7 +138,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mag_mutex, .drv_data = LIS2MDL_ST_DATA(lis2mdl_a_data), .port = I2C_PORT_SENSOR, - .addr = LIS2MDL_ADDR, + .i2c_spi_addr__7bf = LIS2MDL_ADDR__7bf, .default_range = 1 << 11, /* 16LSB / uT, fixed */ .rot_standard_ref = &lid_rot_ref, .min_frequency = LIS2MDL_ODR_MIN_VAL, diff --git a/board/atlas/board.c b/board/atlas/board.c index c72ba963bb..3d6e52ed89 100644 --- a/board/atlas/board.c +++ b/board/atlas/board.c @@ -159,7 +159,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = I2C_ADDR_TCPC, + .addr__7bf = I2C_ADDR_TCPC__7bf, }, .drv = &ps8xxx_tcpm_drv, /* Alert is active-low, push-pull */ @@ -170,7 +170,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = I2C_ADDR_TCPC, + .addr__7bf = I2C_ADDR_TCPC__7bf, }, .drv = &ps8xxx_tcpm_drv, /* Alert is active-low, push-pull */ @@ -262,7 +262,7 @@ static void board_report_pmic_fault(const char *str) uint32_t info; /* RESETIRQ1 -- Bit 4: VRFAULT */ - if (i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + if (i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_RESETIRQ1, &vrfault) != EC_SUCCESS) return; @@ -272,11 +272,11 @@ static void board_report_pmic_fault(const char *str) /* VRFAULT has occurred, print VRFAULT status bits. */ /* PWRSTAT1 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_PWRSTAT1, &pwrstat1); /* PWRSTAT2 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_PWRSTAT2, &pwrstat2); CPRINTS("PMIC VRFAULT: %s", str); @@ -284,11 +284,11 @@ static void board_report_pmic_fault(const char *str) pwrstat2); /* Clear all faults -- Write 1 to clear. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_RESETIRQ1, BIT(4)); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_PWRSTAT1, pwrstat1); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_PWRSTAT2, pwrstat2); /* @@ -308,7 +308,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_VCCIOCNT, 0x3a); /* @@ -318,7 +318,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_V18ACNT, 0x2a); /* @@ -328,7 +328,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_V085ACNT, 0x2a); } @@ -341,7 +341,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_VCCIOCNT, 0x7a); /* @@ -351,7 +351,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_V18ACNT, 0x6a); /* @@ -361,7 +361,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_V085ACNT, 0x6a); } @@ -378,25 +378,25 @@ static void board_pmic_init(void) board_report_pmic_fault("SYSJUMP"); /* Clear power source events */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_PWRSRCINT, 0xff); /* Disable power button shutdown timer */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_PBCONFIG, 0x00); if (system_jumped_to_this_image()) return; /* DISCHGCNT1 - enable 100 ohm discharge on VCCIO */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_DISCHGCNT1, 0x01); /* * DISCHGCNT2 - enable 100 ohm discharge on * V5.0A, V3.3DSW, V3.3A and V1.8A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_DISCHGCNT2, 0x55); /* @@ -405,19 +405,19 @@ static void board_pmic_init(void) * DISCHGCNT3 - enable 100 ohm discharge on * V12U, V1.00A, V0.85A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_DISCHGCNT3, 0xd5); /* DISCHGCNT4 - enable 100 ohm discharge on V33S, V18S, V100S */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_DISCHGCNT4, 0x15); /* VRMODECTRL - disable low-power mode for all rails */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_VRMODECTRL, 0x1f); /* V5ADS3CNT - boost V5A_DS3 by 2% */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_V5ADS3CNT, 0x1a); board_pmic_disable_slp_s0_vr_decay(); @@ -440,7 +440,7 @@ void board_hibernate(void) system_enter_psl_mode(); /* Cut off DSW power via the ROP PMIC. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, BD99992GW_REG_SDWNCTRL, BD99992GW_SDWNCTRL_SWDN); /* Wait for power to be cut. */ @@ -593,7 +593,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &opt3001_drv, .drv_data = &g_opt3001_data, .port = I2C_PORT_SENSOR, - .addr = OPT3001_I2C_ADDR, + .i2c_spi_addr__7bf = OPT3001_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x2b11a1, /* from nocturne */ .min_frequency = OPT3001_LIGHT_MIN_FREQ, diff --git a/board/atlas/board.h b/board/atlas/board.h index b9d9ca5eae..2d27e89314 100644 --- a/board/atlas/board.h +++ b/board/atlas/board.h @@ -113,7 +113,7 @@ #define CONFIG_ALS #define CONFIG_ALS_OPT3001 #define ALS_COUNT 1 -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf #define CONFIG_ACCEL_FIFO 1024 #define CONFIG_ACCEL_FIFO_THRES (CONFIG_ACCEL_FIFO / 3) #define CONFIG_ACCEL_INTERRUPTS @@ -166,9 +166,9 @@ #define I2C_PORT_THERMAL I2C_PORT_POWER /* I2C addresses */ -#define I2C_ADDR_TCPC 0x16 -#define I2C_ADDR_MP2949 0x40 -#define I2C_ADDR_BD99992 0x60 +#define I2C_ADDR_TCPC__7bf 0x0B +#define I2C_ADDR_MP2949__7bf 0x20 +#define I2C_ADDR_BD99992__7bf 0x30 #ifndef __ASSEMBLER__ diff --git a/board/bloog/board.c b/board/bloog/board.c index 6bf29ed642..f14989ad73 100644 --- a/board/bloog/board.c +++ b/board/bloog/board.c @@ -138,7 +138,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &kx022_data, .port = I2C_PORT_SENSOR, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = &lid_standrd_ref, .default_range = 2, /* g */ .config = { @@ -166,7 +166,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g */ .min_frequency = LSM6DSM_ODR_MIN_VAL, @@ -198,7 +198,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .default_range = 1000 | ROUND_UP_FLAG, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = LSM6DSM_ODR_MIN_VAL, diff --git a/board/bobba/board.c b/board/bobba/board.c index 32b79e886e..251c545290 100644 --- a/board/bobba/board.c +++ b/board/bobba/board.c @@ -168,7 +168,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_SENSOR, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 4, /* g */ .config = { @@ -192,7 +192,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 4, /* g */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -220,7 +220,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, diff --git a/board/casta/board.c b/board/casta/board.c index 64c2d86003..ae3f61e0c1 100644 --- a/board/casta/board.c +++ b/board/casta/board.c @@ -95,9 +95,10 @@ BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT); #define BATTERY_FREE_MIN_DELTA_US (5 * MSEC) static timestamp_t battery_last_i2c_time; -static int is_battery_i2c(int port, int slave_addr) +static int is_battery_i2c__7bf(const int port, const uint16_t slave_addr__7bf) { - return (port == I2C_PORT_BATTERY) && (slave_addr == BATTERY_ADDR); + return (port == I2C_PORT_BATTERY) + && (slave_addr__7bf == BATTERY_ADDR__7bf); } static int is_battery_port(int port) @@ -105,11 +106,11 @@ static int is_battery_port(int port) return (port == I2C_PORT_BATTERY); } -void i2c_start_xfer_notify(int port, int slave_addr) +void i2c_start_xfer_notify__7bf(const int port, const uint16_t slave_addr__7bf) { unsigned int time_delta_us; - if (!is_battery_i2c(port, slave_addr)) + if (!is_battery_i2c__7bf(port, slave_addr__7bf)) return; time_delta_us = time_since32(battery_last_i2c_time); @@ -119,7 +120,7 @@ void i2c_start_xfer_notify(int port, int slave_addr) usleep(BATTERY_FREE_MIN_DELTA_US - time_delta_us); } -void i2c_end_xfer_notify(int port, int slave_addr) +void i2c_end_xfer_notify__7bf(const int port, const uint16_t slave_addr__7bf) { /* * The bus free time needs to be maintained from last transaction diff --git a/board/chell/board.c b/board/chell/board.c index 6311dc6c9c..7ecad3f1c1 100644 --- a/board/chell/board.c +++ b/board/chell/board.c @@ -42,7 +42,7 @@ #define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) #define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args) -#define I2C_ADDR_BD99992 0x60 +#define I2C_ADDR_BD99992__7bf 0x30 /* Exchange status with PD MCU. */ static void pd_mcu_interrupt(enum gpio_signal signal) @@ -111,7 +111,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = CONFIG_TCPC_I2C_BASE_ADDR, + .addr__7bf = CONFIG_TCPC_I2C_BASE_ADDR__7BF, }, .drv = &tcpci_tcpm_drv, }, @@ -119,7 +119,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = CONFIG_TCPC_I2C_BASE_ADDR + 2, + .addr__7bf = CONFIG_TCPC_I2C_BASE_ADDR__7BF + 1, }, .drv = &tcpci_tcpm_drv, @@ -183,12 +183,12 @@ static int ps874x_tune_mux(int port) struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { { - .port_addr = 0x34, + .port_addr = 0x1A, .driver = &ps874x_usb_mux_driver, .board_init = &ps874x_tune_mux, }, { - .port_addr = 0x20, + .port_addr = 0x10, .driver = &ps874x_usb_mux_driver, .board_init = &ps874x_tune_mux, } @@ -230,7 +230,7 @@ BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT); static void board_pmic_init(void) { /* DISCHGCNT3 - enable 100 ohm discharge on V1.00A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3e, 0x04); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3e, 0x04); /* * No need to re-init below settings since they are present on all MP @@ -240,23 +240,23 @@ static void board_pmic_init(void) return; /* Set CSDECAYEN / VCCIO decays to 0V at assertion of SLP_S0# */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x4a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x4a); /* * Set V100ACNT / V1.00A Control Register: * Nominal output = 1.0V. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x1a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x1a); /* * Set V085ACNT / V0.85A Control Register: * Lower power mode = 0.7V. * Nominal output = 1.0V. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x7a); /* VRMODECTRL - enable low-power mode for VCCIO and V0.85A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3b, 0x18); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3b, 0x18); } DECLARE_HOOK(HOOK_INIT, board_pmic_init, HOOK_PRIO_DEFAULT); @@ -394,7 +394,7 @@ void board_hibernate(void) uart_flush_output(); /* Trigger PMIC shutdown. */ - if (i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x49, 0x01)) { + if (i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x49, 0x01)) { /* * If we can't tell the PMIC to shutdown, instead reset * and don't start the AP. Hopefully we'll be able to @@ -466,7 +466,8 @@ void chipset_set_pmic_slp_sus_l(int level) if (!level) msleep(25); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x43, val); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, + 0x43, val); previous_level = level; } } diff --git a/board/cheza/board.c b/board/cheza/board.c index d13f06e61f..8f11d0150b 100644 --- a/board/cheza/board.c +++ b/board/cheza/board.c @@ -242,7 +242,7 @@ const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); struct ppc_config_t ppc_chips[] = { { .i2c_port = I2C_PORT_TCPC0, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, /* @@ -261,7 +261,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = 0x50, + .addr__7bf = 0x28, }, .drv = &anx74xx_tcpm_drv, .flags = TCPC_FLAGS_ALERT_OD, @@ -270,7 +270,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = 0x16, + .addr__7bf = 0x0B, }, .drv = &ps8xxx_tcpm_drv, }, @@ -649,7 +649,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 4, /* g */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -670,7 +670,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -685,7 +685,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &opt3001_drv, .drv_data = &g_opt3001_data, .port = I2C_PORT_SENSOR, - .addr = OPT3001_I2C_ADDR, + .i2c_spi_addr__7bf = OPT3001_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x10000, /* scale = 1; uscale = 0 */ .min_frequency = OPT3001_LIGHT_MIN_FREQ, diff --git a/board/cheza/board.h b/board/cheza/board.h index 983316e062..e35502fa57 100644 --- a/board/cheza/board.h +++ b/board/cheza/board.h @@ -138,7 +138,7 @@ #define CONFIG_ALS #define CONFIG_ALS_OPT3001 #define ALS_COUNT 1 -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf /* PD */ #define PD_POWER_SUPPLY_TURN_ON_DELAY 30000 /* us */ diff --git a/board/coral/board.c b/board/coral/board.c index 6b0c613567..936817db76 100644 --- a/board/coral/board.c +++ b/board/coral/board.c @@ -174,7 +174,7 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_TCPC { .port = NPCX_I2C_PORT0_0, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, .i2c_test = &anx74xx_i2c_stress_test_dev, }, #endif @@ -183,7 +183,7 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_TCPC { .port = NPCX_I2C_PORT0_1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, .i2c_test = &ps8xxx_i2c_stress_test_dev, }, #endif @@ -192,7 +192,7 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_ACCEL { .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .addr__7bf = BMI160_ADDR0__7bf, .i2c_test = &bmi160_i2c_stress_test_dev, }, #endif @@ -201,7 +201,7 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_ACCEL { .port = I2C_PORT_LID_ACCEL, - .addr = KX022_ADDR1, + .addr__7bf = KX022_ADDR1__7bf, .i2c_test = &kionix_i2c_stress_test_dev, }, #endif @@ -226,7 +226,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_0, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, }, .drv = &anx74xx_tcpm_drv, }, @@ -234,7 +234,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -373,7 +373,7 @@ static void board_tcpc_init(void) * * NOTE: PS8751 A3 will wake on any I2C access. */ - i2c_read8(NPCX_I2C_PORT0_1, 0x10, 0xA0, ®); + i2c_read8__7bf(NPCX_I2C_PORT0_1, 0x08, 0xA0, ®); /* Enable TCPC0 interrupt */ gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL); @@ -723,7 +723,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_LID_ACCEL, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 2, /* g, enough for laptop. */ .config = { @@ -748,7 +748,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g, enough for laptop. */ .config = { @@ -775,7 +775,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, }, diff --git a/board/elm/board.c b/board/elm/board.c index cdd0a0f998..3568564621 100644 --- a/board/elm/board.c +++ b/board/elm/board.c @@ -92,13 +92,14 @@ const struct adc_t adc_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); -int anx7688_passthru_allowed(const struct i2c_port_t *port, uint16_t address) +int anx7688_passthru_allowed__7bf(const struct i2c_port_t *port, + const uint16_t addr__7bf) { /* Allow access to 0x2c (TCPC) */ - if (address == 0x2c) + if (I2C_GET_ADDR__7b(addr__7bf) == 0x2c) return 1; - CPRINTF("Passthru rejected on %x", address); + CPRINTF("Passthru rejected on %x", I2C_GET_ADDR__7b(addr__7bf)); return 0; } @@ -107,7 +108,7 @@ int anx7688_passthru_allowed(const struct i2c_port_t *port, uint16_t address) const struct i2c_port_t i2c_ports[] = { {"battery", I2C_PORT_BATTERY, 100, GPIO_I2C0_SCL, GPIO_I2C0_SDA}, {"pd", I2C_PORT_PD_MCU, 1000, GPIO_I2C1_SCL, GPIO_I2C1_SDA, - anx7688_passthru_allowed} + anx7688_passthru_allowed__7bf} }; const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); @@ -125,7 +126,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = CONFIG_TCPC_I2C_BASE_ADDR, + .addr__7bf = CONFIG_TCPC_I2C_BASE_ADDR__7BF, }, .drv = &anx7688_tcpm_drv, }, @@ -466,7 +467,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &kionix_accel_drv, .mutex = &g_kx022_mutex[0], .drv_data = &g_kx022_data[0], - .addr = 1, /* SPI, device ID 0 */ + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(0), .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = KX022_ACCEL_MIN_FREQ, @@ -489,7 +490,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &kionix_accel_drv, .mutex = &g_kx022_mutex[1], .drv_data = &g_kx022_data[1], - .addr = 3, /* SPI, device ID 1 */ + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(1), .rot_standard_ref = &lid_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = KX022_ACCEL_MIN_FREQ, diff --git a/board/elm/board.h b/board/elm/board.h index ffd54aacc6..d9e336f720 100644 --- a/board/elm/board.h +++ b/board/elm/board.h @@ -99,8 +99,8 @@ #define CONFIG_USB_PD_TCPM_TCPCI #define CONFIG_USB_PD_TRY_SRC #define CONFIG_USB_PD_VBUS_DETECT_TCPC -#undef CONFIG_TCPC_I2C_BASE_ADDR -#define CONFIG_TCPC_I2C_BASE_ADDR 0x58 +#undef CONFIG_TCPC_I2C_BASE_ADDR__7BF +#define CONFIG_TCPC_I2C_BASE_ADDR__7BF 0x2C #define CONFIG_USB_PD_ANX7688 /* UART DMA */ diff --git a/board/eve/board.c b/board/eve/board.c index fbca0c09e3..72877fd100 100644 --- a/board/eve/board.c +++ b/board/eve/board.c @@ -207,7 +207,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, }, .drv = &anx74xx_tcpm_drv, }, @@ -215,7 +215,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, }, .drv = &anx74xx_tcpm_drv, }, @@ -363,7 +363,7 @@ static void board_report_pmic_fault(const char *str) uint32_t info; /* RESETIRQ1 -- Bit 4: VRFAULT */ - if (i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, &vrfault) + if (i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, &vrfault) != EC_SUCCESS) return; @@ -373,19 +373,19 @@ static void board_report_pmic_fault(const char *str) /* VRFAULT has occurred, print VRFAULT status bits. */ /* PWRSTAT1 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, &pwrstat1); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, &pwrstat1); /* PWRSTAT2 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, &pwrstat2); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, &pwrstat2); CPRINTS("PMIC VRFAULT: %s", str); CPRINTS("PMIC VRFAULT: PWRSTAT1=0x%02x PWRSTAT2=0x%02x", pwrstat1, pwrstat2); /* Clear all faults -- Write 1 to clear. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, BIT(4)); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, pwrstat1); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, pwrstat2); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, BIT(4)); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, pwrstat1); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, pwrstat2); /* * Status of the fault registers can be checked in the OS by looking at @@ -403,32 +403,32 @@ static void board_pmic_init(void) return; /* DISCHGCNT2 - enable 100 ohm discharge on V3.3A and V1.8A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3d, 0x05); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3d, 0x05); /* DISCHGCNT3 - enable 100 ohm discharge on V1.00A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3e, 0x04); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3e, 0x04); /* Set CSDECAYEN / VCCIO decays to 0V at assertion of SLP_S0# */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x7a); /* * Set V100ACNT / V1.00A Control Register: * Nominal output = 1.0V. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x1a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x1a); /* * Set V085ACNT / V0.85A Control Register: * Lower power mode = 0.7V. * Nominal output = 1.0V. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x7a); /* VRMODECTRL - disable low-power mode for all rails */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3b, 0x1f); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3b, 0x1f); /* Clear power source events */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x04, 0xff); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x04, 0xff); } DECLARE_HOOK(HOOK_INIT, board_pmic_init, HOOK_PRIO_DEFAULT); @@ -722,7 +722,7 @@ void board_hibernate(void) /* Shut down PMIC */ CPRINTS("Triggering PMIC shutdown"); uart_flush_output(); - if (i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x49, 0x01)) { + if (i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x49, 0x01)) { /* * If we can't tell the PMIC to shutdown, instead reset * and don't start the AP. Hopefully we'll be able to @@ -815,7 +815,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kxcj9_data, .port = I2C_PORT_LID_ACCEL, - .addr = KXCJ9_ADDR0, + .i2c_spi_addr__7bf = KXCJ9_ADDR0__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = KXCJ9_ACCEL_MIN_FREQ, @@ -842,7 +842,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = NULL, .default_range = 2, /* g, enough for laptop. */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -876,7 +876,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = NULL, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -893,7 +893,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = BIT(11), /* 16LSB / uT, fixed */ .rot_standard_ref = &mag_standard_ref, .min_frequency = BMM150_MAG_MIN_FREQ, @@ -910,7 +910,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_si114x_data, .port = I2C_PORT_ALS, - .addr = SI114X_ADDR, + .i2c_spi_addr__7bf = SI114X_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 3088, /* 30.88%: int = 0 - frac = 3088/10000 */ .min_frequency = SI114X_LIGHT_MIN_FREQ, diff --git a/board/eve/board.h b/board/eve/board.h index 84a4dc2cef..88938e9719 100644 --- a/board/eve/board.h +++ b/board/eve/board.h @@ -128,7 +128,7 @@ #define CONFIG_ACCEL_INTERRUPTS #define CONFIG_ACCELGYRO_BMI160_INT_EVENT \ TASK_EVENT_MOTION_SENSOR_INTERRUPT(BASE_ACCEL) -#define CONFIG_ACCELGYRO_SEC_ADDR BMM150_ADDR0 /* 8-bit address */ +#define CONFIG_ACCELGYRO_SEC_ADDR__7BF BMM150_ADDR0__7bf #define CONFIG_ACCELGYRO_BMI160_INT2_OUTPUT /* Unused */ #define CONFIG_MAG_CALIBRATE #define CONFIG_LID_ANGLE @@ -195,8 +195,8 @@ #define I2C_PORT_MP2949 NPCX_I2C_PORT3 /* I2C addresses */ -#define I2C_ADDR_BD99992 0x60 -#define I2C_ADDR_MP2949 0x40 +#define I2C_ADDR_BD99992__7bf 0x30 +#define I2C_ADDR_MP2949__7bf 0x20 #ifndef __ASSEMBLER__ diff --git a/board/fizz/board.c b/board/fizz/board.c index 70ee2a70c7..405d34cbb4 100644 --- a/board/fizz/board.c +++ b/board/fizz/board.c @@ -179,7 +179,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_0, - .addr = I2C_ADDR_TCPC0, + .addr__7bf = I2C_ADDR_TCPC0__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -229,7 +229,7 @@ void board_tcpc_init(void) * TCPM_INIT will fail due to not able to access PS8751. * Note PS8751 A3 will wake on any I2C access. */ - i2c_read8(I2C_PORT_TCPC0, I2C_ADDR_TCPC0, 0xA0, ®); + i2c_read8__7bf(I2C_PORT_TCPC0, I2C_ADDR_TCPC0__7bf, 0xA0, ®); /* Enable TCPC interrupts */ gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL); @@ -289,10 +289,10 @@ BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT); /* Initialize PMIC */ #define I2C_PMIC_READ(reg, data) \ - i2c_read8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1, (reg), (data)) + i2c_read8__7bf(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1__7bf, (reg), (data)) #define I2C_PMIC_WRITE(reg, data) \ - i2c_write8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1, (reg), (data)) + i2c_write8__7bf(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1__7bf, (reg), (data)) static void board_pmic_init(void) { diff --git a/board/fizz/board.h b/board/fizz/board.h index 92d2ae05f1..40aa840d59 100644 --- a/board/fizz/board.h +++ b/board/fizz/board.h @@ -139,8 +139,8 @@ #define I2C_PORT_THERMAL NPCX_I2C_PORT3 /* I2C addresses */ -#define I2C_ADDR_TCPC0 0x16 -#define I2C_ADDR_EEPROM 0xa0 +#define I2C_ADDR_TCPC0__7bf 0x0b +#define I2C_ADDR_EEPROM__7bf 0x50 /* Verify and jump to RW image on boot */ #define CONFIG_VBOOT_EFS diff --git a/board/flapjack/battery.c b/board/flapjack/battery.c index 3c3825d5cf..5bb6b07a9f 100644 --- a/board/flapjack/battery.c +++ b/board/flapjack/battery.c @@ -398,10 +398,10 @@ int charger_profile_override(struct charge_state_data *curr) * Pull down WPC VBUS. Need to use raw i2c APIs because RO * doesn't have p9221 driver. If WPC is off, this is a no-op. */ - if (i2c_read_offset16(I2C_PORT_WPC, P9221_R7_ADDR, + if (i2c_read_offset16__7bf(I2C_PORT_WPC, P9221_R7_ADDR__7bf, P9221R7_VOUT_SET_REG, &val, 1) == EC_SUCCESS && val * 100 != wpc_mv) - i2c_write_offset16(I2C_PORT_WPC, P9221_R7_ADDR, + i2c_write_offset16__7bf(I2C_PORT_WPC, P9221_R7_ADDR__7bf, P9221R7_VOUT_SET_REG, wpc_mv / 100, 1); if ((curr->batt.flags & BATT_FLAG_BAD_TEMPERATURE) || diff --git a/board/flapjack/board.c b/board/flapjack/board.c index 5549e7b97e..fcbf71938c 100644 --- a/board/flapjack/board.c +++ b/board/flapjack/board.c @@ -138,12 +138,12 @@ static void board_setup_panel(void) dim = sku & SKU_ID_PANEL_SIZE_MASK ? 0xc4 : 0xc8; } - rv |= i2c_write8(I2C_PORT_CHARGER, RT946X_ADDR, MT6370_BACKLIGHT_BLEN, - channel); - rv |= i2c_write8(I2C_PORT_CHARGER, RT946X_ADDR, MT6370_BACKLIGHT_BLDIM, - dim); - rv |= i2c_write8(I2C_PORT_CHARGER, RT946X_ADDR, MT6370_BACKLIGHT_BLPWM, - 0xac); + rv |= i2c_write8__7bf(I2C_PORT_CHARGER, RT946X_ADDR__7bf, + MT6370_BACKLIGHT_BLEN, channel); + rv |= i2c_write8__7bf(I2C_PORT_CHARGER, RT946X_ADDR__7bf, + MT6370_BACKLIGHT_BLDIM, dim); + rv |= i2c_write8__7bf(I2C_PORT_CHARGER, RT946X_ADDR__7bf, + MT6370_BACKLIGHT_BLPWM, 0xac); if (rv) CPRINTS("Board setup panel failed"); } @@ -288,7 +288,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = MT6370_TCPC_I2C_ADDR, + .addr__7bf = MT6370_TCPC_I2C_ADDR__7bf, }, .drv = &mt6370_tcpm_drv}, }; @@ -500,7 +500,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 4, /* g */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -523,7 +523,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &lid_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -538,7 +538,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &tcs3400_drv, .drv_data = &g_tcs3400_data, .port = I2C_PORT_ALS, - .addr = TCS3400_I2C_ADDR, + .i2c_spi_addr__7bf = TCS3400_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x10000, /* scale = 1x, uscale = 0 */ .min_frequency = TCS3400_LIGHT_MIN_FREQ, diff --git a/board/flapjack/board.h b/board/flapjack/board.h index 693a1bb8a9..13a010f416 100644 --- a/board/flapjack/board.h +++ b/board/flapjack/board.h @@ -225,10 +225,10 @@ #define I2C_PORT_EEPROM 1 /* I2C addresses */ -#define I2C_ADDR_EEPROM 0xA0 +#define I2C_ADDR_EEPROM__7bf 0x50 /* Route sbs host requests to virtual battery driver */ -#define VIRTUAL_BATTERY_ADDR 0x16 +#define VIRTUAL_BATTERY_ADDR__7bf 0x0B /* Enable Accel over SPI */ #define CONFIG_SPI_ACCEL_PORT 0 /* The first SPI master port (SPI2) */ diff --git a/board/fleex/board.c b/board/fleex/board.c index 386d8ad61b..444d585308 100644 --- a/board/fleex/board.c +++ b/board/fleex/board.c @@ -133,7 +133,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_lis2dh_data, .port = I2C_PORT_SENSOR, - .addr = LIS2DH_ADDR1, + .i2c_spi_addr__7bf = LIS2DH_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 2, /* g */ /* We only use 2g because its resolution is only 8-bits */ @@ -164,7 +164,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 4, /* g */ .min_frequency = LSM6DSM_ODR_MIN_VAL, @@ -196,7 +196,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .default_range = 1000 | ROUND_UP_FLAG, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = LSM6DSM_ODR_MIN_VAL, diff --git a/board/fluffy/board.c b/board/fluffy/board.c index a409bc4a89..4631b4a851 100644 --- a/board/fluffy/board.c +++ b/board/fluffy/board.c @@ -113,7 +113,7 @@ DECLARE_CONSOLE_COMMAND(ccflip, command_cc_flip, /* * Support tca6416 I2C ioexpander. */ -#define GPIOX_I2C_ADDR 0x40 +#define GPIOX_I2C_ADDR__7bf 0x20 #define GPIOX_IN_PORT_A 0x0 #define GPIOX_IN_PORT_B 0x1 #define GPIOX_OUT_PORT_A 0x2 @@ -129,8 +129,10 @@ static void i2c_expander_init(void) /* * Setup P00, P02, P04, P10, and P12 on the I/O expander as an output. */ - i2c_write8(I2C_PORT_MASTER, GPIOX_I2C_ADDR, GPIOX_DIR_PORT_A, 0xea); - i2c_write8(I2C_PORT_MASTER, GPIOX_I2C_ADDR, GPIOX_DIR_PORT_B, 0xfa); + i2c_write8__7bf(I2C_PORT_MASTER, GPIOX_I2C_ADDR__7bf, + GPIOX_DIR_PORT_A, 0xea); + i2c_write8__7bf(I2C_PORT_MASTER, GPIOX_I2C_ADDR__7bf, + GPIOX_DIR_PORT_B, 0xfa); } DECLARE_HOOK(HOOK_INIT, i2c_expander_init, HOOK_PRIO_INIT_I2C+1); @@ -140,15 +142,15 @@ static void write_ioexpander(int bank, int gpio, int reg, int val) int tmp; /* Read output port register */ - i2c_read8(I2C_PORT_MASTER, GPIOX_I2C_ADDR, reg + bank, - &tmp); + i2c_read8__7bf(I2C_PORT_MASTER, GPIOX_I2C_ADDR__7bf, + reg + bank, &tmp); if (val) tmp |= BIT(gpio); else tmp &= ~BIT(gpio); /* Write back modified output port register */ - i2c_write8(I2C_PORT_MASTER, GPIOX_I2C_ADDR, reg + bank, - tmp); + i2c_write8__7bf(I2C_PORT_MASTER, GPIOX_I2C_ADDR__7bf, + reg + bank, tmp); } enum led_ch { diff --git a/board/garg/board.c b/board/garg/board.c index 5947e23f8e..b0ec0ef955 100644 --- a/board/garg/board.c +++ b/board/garg/board.c @@ -154,7 +154,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_SENSOR, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 4, /* g */ .config = { @@ -178,7 +178,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 4, /* g */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -206,7 +206,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_SENSOR, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, diff --git a/board/glados/battery.c b/board/glados/battery.c index 016d225950..d6c702127e 100644 --- a/board/glados/battery.c +++ b/board/glados/battery.c @@ -47,10 +47,10 @@ int board_cut_off_battery(void) buf[2] = PARAM_CUT_OFF_HIGH; i2c_lock(I2C_PORT_BATTERY, 1); - rv = i2c_xfer_unlocked(I2C_PORT_BATTERY, BATTERY_ADDR, buf, 3, NULL, 0, - I2C_XFER_SINGLE); - rv |= i2c_xfer_unlocked(I2C_PORT_BATTERY, BATTERY_ADDR, buf, 3, NULL, 0, - I2C_XFER_SINGLE); + rv = i2c_xfer_unlocked__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + buf, 3, NULL, 0, I2C_XFER_SINGLE); + rv |= i2c_xfer_unlocked__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + buf, 3, NULL, 0, I2C_XFER_SINGLE); i2c_lock(I2C_PORT_BATTERY, 0); return rv; diff --git a/board/glados/board.c b/board/glados/board.c index 1521800439..c3a05289ad 100644 --- a/board/glados/board.c +++ b/board/glados/board.c @@ -48,7 +48,7 @@ #define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) #define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args) -#define I2C_ADDR_BD99992 0x60 +#define I2C_ADDR_BD99992__7bf 0x30 /* Exchange status with PD MCU. */ static void pd_mcu_interrupt(enum gpio_signal signal) @@ -123,7 +123,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = CONFIG_TCPC_I2C_BASE_ADDR, + .addr__7bf = CONFIG_TCPC_I2C_BASE_ADDR__7BF, }, .drv = &tcpci_tcpm_drv, }, @@ -131,7 +131,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = CONFIG_TCPC_I2C_BASE_ADDR + 2, + .addr__7bf = CONFIG_TCPC_I2C_BASE_ADDR__7BF + 1, }, .drv = &tcpci_tcpm_drv, }, @@ -166,11 +166,11 @@ BUILD_ASSERT(ARRAY_SIZE(pi3usb9281_chips) == struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { { - .port_addr = 0xa8, + .port_addr = 0x54, .driver = &pi3usb30532_usb_mux_driver, }, { - .port_addr = 0x20, + .port_addr = 0x10, .driver = &ps874x_usb_mux_driver, } }; @@ -213,23 +213,23 @@ static void board_pmic_init(void) return; /* Set CSDECAYEN / VCCIO decays to 0V at assertion of SLP_S0# */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x4a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x4a); /* * Set V100ACNT / V1.00A Control Register: * Nominal output = 1.0V. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x1a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x1a); /* * Set V085ACNT / V0.85A Control Register: * Lower power mode = 0.7V. * Nominal output = 1.0V. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x7a); /* VRMODECTRL - enable low-power mode for VCCIO and V0.85A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3b, 0x18); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3b, 0x18); } DECLARE_HOOK(HOOK_INIT, board_pmic_init, HOOK_PRIO_DEFAULT); diff --git a/board/glados/board.h b/board/glados/board.h index 2fa9662b0b..93c5bbd500 100644 --- a/board/glados/board.h +++ b/board/glados/board.h @@ -134,7 +134,7 @@ #define I2C_PORT_THERMAL I2C_PORT_PMIC /* Ambient Light Sensor address */ -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf /* Modules we want to exclude */ #undef CONFIG_CMD_HASH diff --git a/board/glados_pd/board.h b/board/glados_pd/board.h index 9310ee8715..0d513b6e67 100644 --- a/board/glados_pd/board.h +++ b/board/glados_pd/board.h @@ -97,7 +97,7 @@ /* slave address for host commands */ #ifdef HAS_TASK_HOSTCMD -#define CONFIG_HOSTCMD_I2C_SLAVE_ADDR CONFIG_USB_PD_I2C_SLAVE_ADDR +#define CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF CONFIG_USB_PD_I2C_SLAVE_ADDR__7BF #endif #ifndef __ASSEMBLER__ diff --git a/board/glkrvp/battery.c b/board/glkrvp/battery.c index bb49336ecf..36dec46702 100644 --- a/board/glkrvp/battery.c +++ b/board/glkrvp/battery.c @@ -14,10 +14,10 @@ #define CPRINTS(format, args...) cprints(CC_CHARGER, format, ## args) #define I2C_PORT_PCA555_BATT_PRESENT_GPIO NPCX_I2C_PORT0_0 -#define I2C_ADDR_PCA555_BATT_PRESENT_GPIO 0x42 +#define I2C_ADDR_PCA555_BATT_PRESENT_GPIO__7bf 0x21 #define PCA555_BATT_PRESENT_GPIO_READ(reg, data) \ - pca9555_read(I2C_PORT_PCA555_BATT_PRESENT_GPIO, \ - I2C_ADDR_PCA555_BATT_PRESENT_GPIO, (reg), (data)) + pca9555_read__7bf(I2C_PORT_PCA555_BATT_PRESENT_GPIO, \ + I2C_ADDR_PCA555_BATT_PRESENT_GPIO__7bf, (reg), (data)) /* Shutdown mode parameter to write to manufacturer access register */ #define SB_SHUTDOWN_DATA 0x0010 diff --git a/board/glkrvp/board.c b/board/glkrvp/board.c index c7445d19a3..e748373ad0 100644 --- a/board/glkrvp/board.c +++ b/board/glkrvp/board.c @@ -29,19 +29,19 @@ #include "gpio_list.h" #define I2C_PORT_PCA555_PMIC_GPIO NPCX_I2C_PORT0_0 -#define I2C_ADDR_PCA555_PMIC_GPIO 0x42 +#define I2C_ADDR_PCA555_PMIC_GPIO__7bf 0x21 #define PCA555_PMIC_GPIO_WRITE(reg, data) \ - pca9555_write(I2C_PORT_PCA555_PMIC_GPIO, \ - I2C_ADDR_PCA555_PMIC_GPIO, (reg), (data)) + pca9555_write__7bf(I2C_PORT_PCA555_PMIC_GPIO, \ + I2C_ADDR_PCA555_PMIC_GPIO__7bf, (reg), (data)) #define PCA555_PMIC_GPIO_READ(reg, data) \ - pca9555_read(I2C_PORT_PCA555_PMIC_GPIO, \ - I2C_ADDR_PCA555_PMIC_GPIO, (reg), (data)) + pca9555_read__7bf(I2C_PORT_PCA555_PMIC_GPIO, \ + I2C_ADDR_PCA555_PMIC_GPIO__7bf, (reg), (data)) #define I2C_PORT_PCA555_BOARD_ID_GPIO NPCX_I2C_PORT0_0 -#define I2C_ADDR_PCA555_BOARD_ID_GPIO 0x40 +#define I2C_ADDR_PCA555_BOARD_ID_GPIO__7bf 0x20 #define PCA555_BOARD_ID_GPIO_READ(reg, data) \ - pca9555_read(I2C_PORT_PCA555_BOARD_ID_GPIO, \ - I2C_ADDR_PCA555_BOARD_ID_GPIO, (reg), (data)) + pca9555_read__7bf(I2C_PORT_PCA555_BOARD_ID_GPIO, \ + I2C_ADDR_PCA555_BOARD_ID_GPIO__7bf, (reg), (data)) /* I2C ports */ const struct i2c_port_t i2c_ports[] = { diff --git a/board/glkrvp/chg_usb_pd.c b/board/glkrvp/chg_usb_pd.c index bba185202f..fd4b1fd0e2 100644 --- a/board/glkrvp/chg_usb_pd.c +++ b/board/glkrvp/chg_usb_pd.c @@ -35,7 +35,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT7_0, - .addr = 0xa0, + .addr__7bf = 0x50, }, .drv = &tcpci_tcpm_drv, }, @@ -43,7 +43,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT7_0, - .addr = 0xa4, + .addr__7bf = 0x52, }, .drv = &tcpci_tcpm_drv, }, @@ -52,11 +52,11 @@ BUILD_ASSERT(ARRAY_SIZE(tcpc_config) == CONFIG_USB_PD_PORT_COUNT); struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { { - .port_addr = 0x20, + .port_addr = 0x10, .driver = &ps874x_usb_mux_driver, }, { - .port_addr = 0x22, + .port_addr = 0x11, .driver = &ps874x_usb_mux_driver, }, }; diff --git a/board/glkrvp_ite/battery.c b/board/glkrvp_ite/battery.c index d9d4bf9bf3..5665b1f557 100644 --- a/board/glkrvp_ite/battery.c +++ b/board/glkrvp_ite/battery.c @@ -199,8 +199,8 @@ enum battery_present battery_hw_present(void) int data; int rv; - rv = pca9555_read(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, + rv = pca9555_read__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, PCA9555_CMD_INPUT_PORT_0, &data); /* GPIO is low when the battery is physically present */ diff --git a/board/glkrvp_ite/board.c b/board/glkrvp_ite/board.c index 4127a29634..9721549b14 100644 --- a/board/glkrvp_ite/board.c +++ b/board/glkrvp_ite/board.c @@ -31,7 +31,7 @@ #include "gpio_list.h" #define I2C_PORT_PCA555_BOARD_ID_GPIO IT83XX_I2C_CH_C -#define I2C_ADDR_PCA555_BOARD_ID_GPIO 0x40 +#define I2C_ADDR_PCA555_BOARD_ID_GPIO__7bf 0x20 /* I2C ports */ const struct i2c_port_t i2c_ports[] = { @@ -55,8 +55,8 @@ void chipset_pre_init_callback(void) { int data; - if (pca9555_read(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, + if (pca9555_read__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, PCA9555_CMD_OUTPUT_PORT_0, &data)) return; @@ -70,16 +70,17 @@ void chipset_pre_init_callback(void) /* Enable SOC_3P3_EN_L: Set the Output port O0.1 to low level */ data &= ~PCA9555_IO_1; - pca9555_write(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, + pca9555_write__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, PCA9555_CMD_OUTPUT_PORT_0, data); /* TODO: Find out from the spec */ msleep(10); /* Enable PMIC_EN: Set the Output port O0.0 to high level */ - pca9555_write(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, PCA9555_CMD_OUTPUT_PORT_0, + pca9555_write__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, + PCA9555_CMD_OUTPUT_PORT_0, data | PCA9555_IO_0); } @@ -105,23 +106,24 @@ void chipset_do_shutdown(void) { int data; - if (pca9555_read(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, + if (pca9555_read__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, PCA9555_CMD_OUTPUT_PORT_0, &data)) return; /* Disable SOC_3P3_EN_L: Set the Output port O0.1 to high level */ data |= PCA9555_IO_1; - pca9555_write(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, + pca9555_write__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, PCA9555_CMD_OUTPUT_PORT_0, data); /* TODO: Find out from the spec */ msleep(10); /* Disable PMIC_EN: Set the Output port O0.0 to low level */ - pca9555_write(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, PCA9555_CMD_OUTPUT_PORT_0, + pca9555_write__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, + PCA9555_CMD_OUTPUT_PORT_0, data & ~PCA9555_IO_0); } @@ -145,8 +147,9 @@ int board_get_version(void) { int data; - if (pca9555_read(I2C_PORT_PCA555_BOARD_ID_GPIO, - I2C_ADDR_PCA555_BOARD_ID_GPIO, PCA9555_CMD_INPUT_PORT_1, &data)) + if (pca9555_read__7bf(I2C_PORT_PCA555_BOARD_ID_GPIO, + I2C_ADDR_PCA555_BOARD_ID_GPIO__7bf, + PCA9555_CMD_INPUT_PORT_1, &data)) return -1; return data & 0x0f; @@ -163,8 +166,8 @@ static void pmic_init(void) * Configure Port O0.0 as Output port - PMIC_EN * Configure Port O0.1 as Output port - SOC_3P3_EN_L */ - pca9555_write(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, + pca9555_write__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, PCA9555_CMD_CONFIGURATION_PORT_0, 0xfc); /* @@ -174,8 +177,8 @@ static void pmic_init(void) * POR of PCA9555 port is input with high impedance hence explicitly * configure the SOC_3P3_EN_L to high level. */ - pca9555_write(I2C_PORT_PCA555_PMIC_BATT_GPIO, - I2C_ADDR_PCA555_PMIC_BATT_GPIO, + pca9555_write__7bf(I2C_PORT_PCA555_PMIC_BATT_GPIO, + I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf, PCA9555_CMD_OUTPUT_PORT_0, 0xfe); } DECLARE_HOOK(HOOK_INIT, pmic_init, HOOK_PRIO_INIT_I2C + 1); diff --git a/board/glkrvp_ite/board.h b/board/glkrvp_ite/board.h index d1d3b7be7d..7c7834353c 100644 --- a/board/glkrvp_ite/board.h +++ b/board/glkrvp_ite/board.h @@ -115,7 +115,7 @@ #define I2C_PORT_USB_MUX IT83XX_I2C_CH_B #define I2C_PORT_PCA555_PMIC_BATT_GPIO IT83XX_I2C_CH_C -#define I2C_ADDR_PCA555_PMIC_BATT_GPIO 0x42 +#define I2C_ADDR_PCA555_PMIC_BATT_GPIO__7bf 0x21 /* EC exclude modules */ #undef CONFIG_ADC diff --git a/board/glkrvp_ite/chg_usb_pd.c b/board/glkrvp_ite/chg_usb_pd.c index 01c8f43f1e..7f3d049b29 100644 --- a/board/glkrvp_ite/chg_usb_pd.c +++ b/board/glkrvp_ite/chg_usb_pd.c @@ -35,7 +35,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = IT83XX_I2C_CH_B, - .addr = 0xa0, + .addr__7bf = 0x50, }, .drv = &tcpci_tcpm_drv, }, @@ -43,7 +43,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = IT83XX_I2C_CH_B, - .addr = 0xa4, + .addr__7bf = 0x52, }, .drv = &tcpci_tcpm_drv, }, @@ -52,11 +52,11 @@ BUILD_ASSERT(ARRAY_SIZE(tcpc_config) == CONFIG_USB_PD_PORT_COUNT); struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { { - .port_addr = 0x20, + .port_addr = 0x10, .driver = &ps874x_usb_mux_driver, }, { - .port_addr = 0x22, + .port_addr = 0x11, .driver = &ps874x_usb_mux_driver, }, }; diff --git a/board/hammer/board.h b/board/hammer/board.h index 7811ab7973..0e43ac877c 100644 --- a/board/hammer/board.h +++ b/board/hammer/board.h @@ -275,7 +275,7 @@ #define CONFIG_TOUCHPAD #define CONFIG_TOUCHPAD_ELAN #define CONFIG_TOUCHPAD_I2C_PORT I2C_PORT_MASTER -#define CONFIG_TOUCHPAD_I2C_ADDR (0x15 << 1) +#define CONFIG_TOUCHPAD_I2C_ADDR__7BF 0x15 #endif /* BOARD_WHISKERS */ #define CONFIG_CURVE25519 diff --git a/board/hatch/board.c b/board/hatch/board.c index da1349208a..364c9e3d31 100644 --- a/board/hatch/board.c +++ b/board/hatch/board.c @@ -130,7 +130,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = AN7447_TCPC0_I2C_ADDR, + .addr__7bf = AN7447_TCPC0_I2C_ADDR__7bf, }, .drv = &anx7447_tcpm_drv, .flags = TCPC_FLAGS_RESET_ACTIVE_HIGH, @@ -139,7 +139,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -159,12 +159,12 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { const struct pi3usb2901_config_t pi3usb2901_bc12_chips[] = { [USB_PD_PORT_TCPC_0] = { .i2c_port = I2C_PORT_PPC0, - .i2c_addr = PI3USB9201_I2C_ADDR_3, + .i2c_addr__7bf = PI3USB9201_I2C_ADDR_3__7bf, }, [USB_PD_PORT_TCPC_1] = { .i2c_port = I2C_PORT_TCPC1, - .i2c_addr = PI3USB9201_I2C_ADDR_3, + .i2c_addr__7bf = PI3USB9201_I2C_ADDR_3__7bf, }, }; @@ -233,7 +233,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bma255_data, .port = I2C_PORT_ACCEL, - .addr = BMA2x2_I2C_ADDR1, + .i2c_spi_addr__7bf = BMA2x2_I2C_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .min_frequency = BMA255_ACCEL_MIN_FREQ, .max_frequency = BMA255_ACCEL_MAX_FREQ, @@ -260,7 +260,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, .max_frequency = BMI160_ACCEL_MAX_FREQ, @@ -286,7 +286,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -302,7 +302,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &tcs3400_drv, .drv_data = &g_tcs3400_data, .port = I2C_PORT_ALS, - .addr = TCS3400_I2C_ADDR, + .i2c_spi_addr__7bf = TCS3400_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x10000, /* scale = 1x, uscale = 0 */ .min_frequency = TCS3400_LIGHT_MIN_FREQ, diff --git a/board/helios/board.c b/board/helios/board.c index e40833f2a9..6a47979565 100644 --- a/board/helios/board.c +++ b/board/helios/board.c @@ -119,7 +119,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -127,7 +127,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -147,12 +147,12 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { const struct pi3usb2901_config_t pi3usb2901_bc12_chips[] = { [USB_PD_PORT_TCPC_0] = { .i2c_port = I2C_PORT_PPC0, - .i2c_addr = PI3USB9201_I2C_ADDR_3, + .i2c_addr__7bf = PI3USB9201_I2C_ADDR_3__7bf, }, [USB_PD_PORT_TCPC_1] = { .i2c_port = I2C_PORT_TCPC1, - .i2c_addr = PI3USB9201_I2C_ADDR_3, + .i2c_addr__7bf = PI3USB9201_I2C_ADDR_3__7bf, }, }; @@ -198,7 +198,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bma255_data, .port = I2C_PORT_ACCEL, - .addr = BMA2x2_I2C_ADDR1, + .i2c_spi_addr__7bf = BMA2x2_I2C_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .min_frequency = BMA255_ACCEL_MIN_FREQ, .max_frequency = BMA255_ACCEL_MAX_FREQ, @@ -225,7 +225,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, .max_frequency = BMI160_ACCEL_MAX_FREQ, @@ -251,7 +251,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -267,7 +267,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &opt3001_drv, .drv_data = &g_opt3001_data, .port = I2C_PORT_ACCEL, - .addr = OPT3001_I2C_ADDR, + .i2c_spi_addr__7bf = OPT3001_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x2b11a1, .min_frequency = OPT3001_LIGHT_MIN_FREQ, diff --git a/board/helios/board.h b/board/helios/board.h index ac4e0432dd..b85299e19d 100644 --- a/board/helios/board.h +++ b/board/helios/board.h @@ -48,7 +48,7 @@ #define CONFIG_ALS #define ALS_COUNT 1 #define CONFIG_ALS_OPT3001 -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf /* USB Type C and USB PD defines */ #define CONFIG_USB_PD_TCPM_PS8751 diff --git a/board/host/battery.c b/board/host/battery.c index d1d2cdc3e0..6ec74c61b4 100644 --- a/board/host/battery.c +++ b/board/host/battery.c @@ -14,13 +14,14 @@ static uint16_t mock_smart_battery[SB_MANUFACTURER_DATA + 1]; -int sb_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int sb_i2c_xfer__7bf(int port, uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { if (out_size == 0) return EC_SUCCESS; - if (port != I2C_PORT_BATTERY || slave_addr != BATTERY_ADDR) + if (port != I2C_PORT_BATTERY || slave_addr__7bf != BATTERY_ADDR__7bf) return EC_ERROR_INVAL; if (out[0] >= ARRAY_SIZE(mock_smart_battery)) return EC_ERROR_UNIMPLEMENTED; @@ -41,7 +42,7 @@ int sb_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, } return EC_SUCCESS; } -DECLARE_TEST_I2C_XFER(sb_i2c_xfer); +DECLARE_TEST_I2C_XFER(sb_i2c_xfer__7bf); int battery_time_at_rate(int rate, int *minutes) { diff --git a/board/kindred/board.c b/board/kindred/board.c index 3bbfe47529..66862f706a 100644 --- a/board/kindred/board.c +++ b/board/kindred/board.c @@ -130,7 +130,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = AN7447_TCPC0_I2C_ADDR, + .addr__7bf = AN7447_TCPC0_I2C_ADDR__7bf, }, .drv = &anx7447_tcpm_drv, .flags = TCPC_FLAGS_RESET_ACTIVE_HIGH, @@ -139,7 +139,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, .flags = 0, @@ -160,12 +160,12 @@ struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { const struct pi3usb2901_config_t pi3usb2901_bc12_chips[] = { [USB_PD_PORT_TCPC_0] = { .i2c_port = I2C_PORT_PPC0, - .i2c_addr = PI3USB9201_I2C_ADDR_3, + .i2c_addr__7bf = PI3USB9201_I2C_ADDR_3__7bf, }, [USB_PD_PORT_TCPC_1] = { .i2c_port = I2C_PORT_TCPC1, - .i2c_addr = PI3USB9201_I2C_ADDR_3, + .i2c_addr__7bf = PI3USB9201_I2C_ADDR_3__7bf, }, }; @@ -216,7 +216,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bma255_data, .port = I2C_PORT_ACCEL, - .addr = BMA2x2_I2C_ADDR1, + .i2c_spi_addr__7bf = BMA2x2_I2C_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .min_frequency = BMA255_ACCEL_MIN_FREQ, .max_frequency = BMA255_ACCEL_MAX_FREQ, @@ -243,7 +243,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, .max_frequency = BMI160_ACCEL_MAX_FREQ, @@ -269,7 +269,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -285,7 +285,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &opt3001_drv, .drv_data = &g_opt3001_data, .port = I2C_PORT_ACCEL, - .addr = OPT3001_I2C_ADDR, + .i2c_spi_addr__7bf = OPT3001_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x2b11a1, .min_frequency = OPT3001_LIGHT_MIN_FREQ, diff --git a/board/kindred/board.h b/board/kindred/board.h index 057270ff28..1d327abbcf 100644 --- a/board/kindred/board.h +++ b/board/kindred/board.h @@ -47,7 +47,7 @@ #define CONFIG_ALS #define ALS_COUNT 1 #define CONFIG_ALS_OPT3001 -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf /* USB Type C and USB PD defines */ #define CONFIG_USB_PD_TCPM_ANX7447 diff --git a/board/kohaku/board.c b/board/kohaku/board.c index 10b33691f3..0fa7b42ac7 100644 --- a/board/kohaku/board.c +++ b/board/kohaku/board.c @@ -117,7 +117,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -125,7 +125,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -224,7 +224,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bma255_data, .port = I2C_PORT_ACCEL, - .addr = BMA2x2_I2C_ADDR1, + .i2c_spi_addr__7bf = BMA2x2_I2C_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .min_frequency = BMA255_ACCEL_MIN_FREQ, .max_frequency = BMA255_ACCEL_MAX_FREQ, @@ -251,7 +251,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, .max_frequency = BMI160_ACCEL_MAX_FREQ, @@ -277,7 +277,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -293,7 +293,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &bh1730_drv, .drv_data = &g_bh1730_data, .port = I2C_PORT_ACCEL, - .addr = BH1730_I2C_ADDR, + .i2c_spi_addr__7bf = BH1730_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 65535, .min_frequency = 10, @@ -327,7 +327,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &tcs3400_drv, .drv_data = &g_tcs3400_data, .port = I2C_PORT_ALS, - .addr = TCS3400_I2C_ADDR, + .i2c_spi_addr__7bf = TCS3400_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x10000, /* scale = 1x, uscale = 0 */ .min_frequency = TCS3400_LIGHT_MIN_FREQ, diff --git a/board/kukui/board.c b/board/kukui/board.c index 5b44578362..95f177bf6b 100644 --- a/board/kukui/board.c +++ b/board/kukui/board.c @@ -80,7 +80,7 @@ const struct i2c_port_t i2c_ports[] = { }; const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); -#define BC12_I2C_ADDR PI3USB9201_I2C_ADDR_3 +#define BC12_I2C_ADDR__7bf PI3USB9201_I2C_ADDR_3__7bf /* power signal list. Must match order of enum power_signal. */ const struct power_signal_info power_signal_list[] = { @@ -101,7 +101,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = MT6370_TCPC_I2C_ADDR, + .addr__7bf = MT6370_TCPC_I2C_ADDR__7bf, }, .drv = &mt6370_tcpm_drv, }, @@ -303,7 +303,7 @@ static void board_rev_init(void) if (board_get_version() == 2) { /* configure PI3USB9201 to USB Path ON Mode */ - i2c_write8(I2C_PORT_BC12, BC12_I2C_ADDR, + i2c_write8__7bf(I2C_PORT_BC12, BC12_I2C_ADDR__7bf, PI3USB9201_REG_CTRL_1, (PI3USB9201_USB_PATH_ON << PI3USB9201_REG_CTRL_1_MODE_SHIFT)); @@ -470,7 +470,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 4, /* g */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -493,7 +493,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &lid_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -510,7 +510,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = BIT(11), /* 16LSB / uT, fixed */ .rot_standard_ref = &mag_standard_ref, .min_frequency = BMM150_MAG_MIN_FREQ, @@ -526,7 +526,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &tcs3400_drv, .drv_data = &g_tcs3400_data, .port = I2C_PORT_ALS, - .addr = TCS3400_I2C_ADDR, + .i2c_spi_addr__7bf = TCS3400_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x10000, /* scale = 1x, uscale = 0 */ .min_frequency = TCS3400_LIGHT_MIN_FREQ, diff --git a/board/kukui/board.h b/board/kukui/board.h index e6862f6c78..95378757bc 100644 --- a/board/kukui/board.h +++ b/board/kukui/board.h @@ -91,7 +91,7 @@ #ifdef SECTION_IS_RW #ifndef BOARD_KRANE #define CONFIG_MAG_BMI160_BMM150 -#define CONFIG_ACCELGYRO_SEC_ADDR BMM150_ADDR0 /* 8-bit address */ +#define CONFIG_ACCELGYRO_SEC_ADDR__7BF BMM150_ADDR0__7bf #define CONFIG_MAG_CALIBRATE #endif /* !BOARD_KRANE */ #define CONFIG_ACCELGYRO_BMI160 @@ -221,7 +221,7 @@ #define I2C_PORT_ALS 1 /* Route sbs host requests to virtual battery driver */ -#define VIRTUAL_BATTERY_ADDR 0x16 +#define VIRTUAL_BATTERY_ADDR__7bf 0x0B /* Enable Accel over SPI */ #define CONFIG_SPI_ACCEL_PORT 0 /* The first SPI master port (SPI2) */ diff --git a/board/mchpevb1/battery.c b/board/mchpevb1/battery.c index 016d225950..d6c702127e 100644 --- a/board/mchpevb1/battery.c +++ b/board/mchpevb1/battery.c @@ -47,10 +47,10 @@ int board_cut_off_battery(void) buf[2] = PARAM_CUT_OFF_HIGH; i2c_lock(I2C_PORT_BATTERY, 1); - rv = i2c_xfer_unlocked(I2C_PORT_BATTERY, BATTERY_ADDR, buf, 3, NULL, 0, - I2C_XFER_SINGLE); - rv |= i2c_xfer_unlocked(I2C_PORT_BATTERY, BATTERY_ADDR, buf, 3, NULL, 0, - I2C_XFER_SINGLE); + rv = i2c_xfer_unlocked__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + buf, 3, NULL, 0, I2C_XFER_SINGLE); + rv |= i2c_xfer_unlocked__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + buf, 3, NULL, 0, I2C_XFER_SINGLE); i2c_lock(I2C_PORT_BATTERY, 0); return rv; diff --git a/board/mchpevb1/board.c b/board/mchpevb1/board.c index 7f4bb26c46..f11e65302b 100644 --- a/board/mchpevb1/board.c +++ b/board/mchpevb1/board.c @@ -66,14 +66,14 @@ /* NOTE: MEC17xx EVB + SKL RVP3 does not use BD99992 PMIC. * RVP3 PMIC controlled by RVP3 logic. */ -#define I2C_ADDR_BD99992 0x60 +#define I2C_ADDR_BD99992__7bf 0x30 /* * Maxim DS1624 I2C temperature sensor used for testing I2C. * DS1624 contains one internal temperature sensor * and EEPROM. It has no external temperature inputs. */ -#define DS1624_I2C_ADDR 0x90 /* 7-bit address is 0x48 */ +#define DS1624_I2C_ADDR__7bf (0x48 | I2C_FLAG_BIG_ENDIAN) #define DS1624_IDX_LOCAL 0 #define DS1624_READ_TEMP16 0xAA /* read 16-bit temperature */ #define DS1624_ACCESS_CFG 0xAC /* read/write 8-bit config */ @@ -264,8 +264,13 @@ int board_i2c_p2c(int port) #ifdef CONFIG_USB_POWER_DELIVERY const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { - {I2C_PORT_TCPC, CONFIG_TCPC_I2C_BASE_ADDR, &tcpci_tcpm_drv}, - {I2C_PORT_TCPC, CONFIG_TCPC_I2C_BASE_ADDR + 2, &tcpci_tcpm_drv}, + {I2C_PORT_TCPC, + CONFIG_TCPC_I2C_BASE_ADDR__7BF, + &tcpci_tcpm_drv}, + + {I2C_PORT_TCPC, + CONFIG_TCPC_I2C_BASE_ADDR__7BF + 1, + &tcpci_tcpm_drv}, }; #endif @@ -384,11 +389,11 @@ BUILD_ASSERT(ARRAY_SIZE(pi3usb9281_chips) == struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { { - .port_addr = 0xa8, + .port_addr = 0x54, .driver = &pi3usb30532_usb_mux_driver, }, { - .port_addr = 0x20, + .port_addr = 0x10, .driver = &ps874x_usb_mux_driver, } }; @@ -505,14 +510,14 @@ static void board_pmic_init(void) /* Config DS1624 temperature sensor for continuous conversion */ cfg = 0x66; - rv = i2c_read8(I2C_PORT_THERMAL, DS1624_I2C_ADDR, + rv = i2c_read8__7bf(I2C_PORT_THERMAL, DS1624_I2C_ADDR__7bf, DS1624_ACCESS_CFG, &cfg); trace2(0, BRD, 0, "Read DS1624 Config rv = %d cfg = 0x%02X", rv, cfg); if ((rv == EC_SUCCESS) && (cfg & (1u << 0))) { /* one-shot mode switch to continuous */ - rv = i2c_write8(I2C_PORT_THERMAL, DS1624_I2C_ADDR, + rv = i2c_write8__7bf(I2C_PORT_THERMAL, DS1624_I2C_ADDR__7bf, DS1624_ACCESS_CFG, 0); trace1(0, BRD, 0, "Write DS1624 Config to 0, rv = %d", rv); /* writes to config require 10ms until next I2C command */ @@ -521,7 +526,7 @@ static void board_pmic_init(void) } /* Send start command */ - rv = i2c_write8(I2C_PORT_THERMAL, DS1624_I2C_ADDR, + rv = i2c_write8__7bf(I2C_PORT_THERMAL, DS1624_I2C_ADDR__7bf, DS1624_CMD_START, 1); trace1(0, BRD, 0, "Send Start command to DS1624 rv = %d", rv); @@ -864,8 +869,7 @@ static void ds1624_update(void) int temp; int rv __attribute__((unused)); - rv = i2c_read16(I2C_PORT_THERMAL, - (DS1624_I2C_ADDR | I2C_FLAG_BIG_ENDIAN), + rv = i2c_read16__7bf(I2C_PORT_THERMAL, DS1624_I2C_ADDR__7bf, DS1624_READ_TEMP16, &temp); d = (temp & 0x7FFF) >> 8; @@ -928,7 +932,8 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = CONFIG_SPI_ACCEL_PORT, - .addr = BMI160_SET_SPI_ADDRESS(CONFIG_SPI_ACCEL_PORT), + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf( + CONFIG_SPI_ACCEL_PORT), .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 2, /* g, enough for laptop. */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -952,7 +957,8 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = CONFIG_SPI_ACCEL_PORT, - .addr = BMI160_SET_SPI_ADDRESS(CONFIG_SPI_ACCEL_PORT), + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf( + CONFIG_SPI_ACCEL_PORT), .default_range = 1000, /* dps */ .rot_standard_ref = NULL, /* Identity Matrix. */ .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -969,7 +975,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_ACCEL, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 2, /* g, enough for laptop. */ .min_frequency = KX022_ACCEL_MIN_FREQ, diff --git a/board/mchpevb1/board.h b/board/mchpevb1/board.h index 0dbfe2bb3c..8fcaadc4bf 100644 --- a/board/mchpevb1/board.h +++ b/board/mchpevb1/board.h @@ -400,7 +400,7 @@ #endif /* Ambient Light Sensor address */ -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf /* Modules we want to exclude */ #undef CONFIG_CMD_HASH diff --git a/board/meep/board.c b/board/meep/board.c index 8c44bda737..a5e37b69ed 100644 --- a/board/meep/board.c +++ b/board/meep/board.c @@ -138,7 +138,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &kx022_data, .port = I2C_PORT_SENSOR, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = &lid_standrd_ref, .default_range = 2, /* g */ .config = { @@ -166,7 +166,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g */ .min_frequency = LSM6DSM_ODR_MIN_VAL, @@ -198,7 +198,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .default_range = 1000 | ROUND_UP_FLAG, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = LSM6DSM_ODR_MIN_VAL, diff --git a/board/nami/board.c b/board/nami/board.c index ac66f10307..ba9bb571aa 100644 --- a/board/nami/board.c +++ b/board/nami/board.c @@ -233,7 +233,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_0, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, /* Alert is active-low, push-pull */ @@ -243,7 +243,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_1, - .addr = AN7447_TCPC3_I2C_ADDR, + .addr__7bf = AN7447_TCPC3_I2C_ADDR__7bf, }, .drv = &anx7447_tcpm_drv, /* Alert is active-low, push-pull */ @@ -487,9 +487,11 @@ const static struct ec_thermal_config thermal_d2 = { }; #define I2C_PMIC_READ(reg, data) \ - i2c_read8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1, (reg), (data)) + i2c_read8__7bf(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1__7bf,\ + (reg), (data)) #define I2C_PMIC_WRITE(reg, data) \ - i2c_write8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1, (reg), (data)) + i2c_write8__7bf(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1__7bf,\ + (reg), (data)) static void board_pmic_init(void) { @@ -749,7 +751,7 @@ const struct motion_sensor_t lid_accel_1 = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_ACCEL, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = &rotation_x180_z90, .min_frequency = KX022_ACCEL_MIN_FREQ, .max_frequency = KX022_ACCEL_MAX_FREQ, @@ -777,7 +779,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bma255_data, .port = I2C_PORT_ACCEL, - .addr = BMA2x2_I2C_ADDR1, + .i2c_spi_addr__7bf = BMA2x2_I2C_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .min_frequency = BMA255_ACCEL_MIN_FREQ, .max_frequency = BMA255_ACCEL_MAX_FREQ, @@ -805,7 +807,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, .max_frequency = BMI160_ACCEL_MAX_FREQ, @@ -833,7 +835,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -989,10 +991,10 @@ static void board_init(void) gpio_set_level(GPIO_PCH_ACPRESENT, extpower_is_present()); /* Reduce Buck-boost mode switching frequency to reduce heat */ - if (i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, + if (i2c_read16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, ISL9238_REG_CONTROL3, ®) == EC_SUCCESS) { reg |= ISL9238_C3_BB_SWITCHING_PERIOD; - if (i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, + if (i2c_write16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, ISL9238_REG_CONTROL3, reg)) CPRINTF("Failed to set isl9238\n"); } diff --git a/board/nami/board.h b/board/nami/board.h index 20c9628d9d..04dfef4eff 100644 --- a/board/nami/board.h +++ b/board/nami/board.h @@ -210,8 +210,8 @@ #define I2C_PORT_ALS NPCX_I2C_PORT3 /* I2C addresses */ -#define I2C_ADDR_MP2949 0x40 -#define I2C_ADDR_EEPROM 0xa0 +#define I2C_ADDR_MP2949__7bf 0x20 +#define I2C_ADDR_EEPROM__7bf 0x50 #ifndef __ASSEMBLER__ diff --git a/board/nautilus/board.c b/board/nautilus/board.c index 5dc1df0328..bf89d0edad 100644 --- a/board/nautilus/board.c +++ b/board/nautilus/board.c @@ -151,7 +151,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_0, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -159,7 +159,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -268,7 +268,7 @@ static void board_report_pmic_fault(const char *str) uint32_t info; /* RESETIRQ1 -- Bit 4: VRFAULT */ - if (i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, &vrfault) + if (i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, &vrfault) != EC_SUCCESS) return; @@ -278,19 +278,19 @@ static void board_report_pmic_fault(const char *str) /* VRFAULT has occurred, print VRFAULT status bits. */ /* PWRSTAT1 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, &pwrstat1); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, &pwrstat1); /* PWRSTAT2 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, &pwrstat2); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, &pwrstat2); CPRINTS("PMIC VRFAULT: %s", str); CPRINTS("PMIC VRFAULT: PWRSTAT1=0x%02x PWRSTAT2=0x%02x", pwrstat1, pwrstat2); /* Clear all faults -- Write 1 to clear. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, BIT(4)); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, pwrstat1); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, pwrstat2); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, BIT(4)); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, pwrstat1); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, pwrstat2); /* * Status of the fault registers can be checked in the OS by looking at @@ -309,7 +309,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x3a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x3a); /* * V18ACNT: @@ -318,7 +318,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x34, 0x2a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x34, 0x2a); /* * V100ACNT: @@ -327,7 +327,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x1a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x1a); /* * V085ACNT: @@ -336,7 +336,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x3a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x3a); } static void board_pmic_enable_slp_s0_vr_decay(void) @@ -348,7 +348,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x7a); /* * V18ACNT: @@ -357,7 +357,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x34, 0x6a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x34, 0x6a); /* * V100ACNT: @@ -366,7 +366,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x5a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x5a); /* * V085ACNT: @@ -375,7 +375,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x7a); } void power_board_handle_host_sleep_event(enum host_sleep_event state) @@ -394,12 +394,12 @@ static void board_pmic_init(void) return; /* DISCHGCNT3 - enable 100 ohm discharge on V1.00A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3e, 0x04); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3e, 0x04); board_pmic_disable_slp_s0_vr_decay(); /* VRMODECTRL - disable low-power mode for all rails */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3b, 0x1f); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3b, 0x1f); } DECLARE_DEFERRED(board_pmic_init); @@ -535,7 +535,7 @@ void board_hibernate(void) uart_flush_output(); /* Trigger PMIC shutdown. */ - if (i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x49, 0x01)) { + if (i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x49, 0x01)) { /* * If we can't tell the PMIC to shutdown, instead reset * and don't start the AP. Hopefully we'll be able to @@ -611,7 +611,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bma255_data, .port = I2C_PORT_ACCEL, - .addr = BMA2x2_I2C_ADDR1, + .i2c_spi_addr__7bf = BMA2x2_I2C_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .min_frequency = BMA255_ACCEL_MIN_FREQ, .max_frequency = BMA255_ACCEL_MAX_FREQ, @@ -637,7 +637,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, .max_frequency = BMI160_ACCEL_MAX_FREQ, @@ -664,7 +664,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -747,16 +747,17 @@ int board_has_working_reset_flags(void) #define BATTERY_FREE_MIN_DELTA_US (5 * MSEC) static timestamp_t battery_last_i2c_time; -static int is_battery_i2c(int port, int slave_addr) +static int is_battery_i2c__7bf(const int port, const uint16_t slave_addr__7bf) { - return (port == I2C_PORT_BATTERY) && (slave_addr == BATTERY_ADDR); + return (port == I2C_PORT_BATTERY) + && (slave_addr__7bf == BATTERY_ADDR__7bf); } -void i2c_start_xfer_notify(int port, int slave_addr) +void i2c_start_xfer_notify__7bf(const int port, const uint16_t slave_addr__7bf) { unsigned int time_delta_us; - if (!is_battery_i2c(port, slave_addr)) + if (!is_battery_i2c__7bf(port, slave_addr__7bf)) return; time_delta_us = time_since32(battery_last_i2c_time); @@ -766,9 +767,9 @@ void i2c_start_xfer_notify(int port, int slave_addr) usleep(BATTERY_FREE_MIN_DELTA_US - time_delta_us); } -void i2c_end_xfer_notify(int port, int slave_addr) +void i2c_end_xfer_notify__7bf(const int port, const uint16_t slave_addr__7bf) { - if (!is_battery_i2c(port, slave_addr)) + if (!is_battery_i2c__7bf(port, slave_addr__7bf)) return; battery_last_i2c_time = get_time(); diff --git a/board/nautilus/board.h b/board/nautilus/board.h index 014f821482..ff5a4c586e 100644 --- a/board/nautilus/board.h +++ b/board/nautilus/board.h @@ -181,8 +181,8 @@ #define I2C_PORT_THERMAL I2C_PORT_PMIC /* I2C addresses */ -#define I2C_ADDR_BD99992 0x60 -#define I2C_ADDR_MP2949 0x40 +#define I2C_ADDR_BD99992__7bf 0x30 +#define I2C_ADDR_MP2949__7bf 0x20 #ifndef __ASSEMBLER__ diff --git a/board/nocturne/board.c b/board/nocturne/board.c index 8fe2a58e66..5df9e338ed 100644 --- a/board/nocturne/board.c +++ b/board/nocturne/board.c @@ -190,7 +190,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ALS_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 4, /* g */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -213,7 +213,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ALS_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 1000, /* dps */ .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -229,7 +229,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &opt3001_drv, .drv_data = &g_opt3001_data, .port = I2C_PORT_ALS_GYRO, - .addr = OPT3001_I2C_ADDR, + .i2c_spi_addr__7bf = OPT3001_I2C_ADDR__7bf, .rot_standard_ref = NULL, /* scale = 43.4513 http://b/111528815#comment14 */ .default_range = 0x2b11a1, @@ -287,12 +287,12 @@ DECLARE_HOOK(HOOK_CHIPSET_RESUME, enable_sensor_irqs, HOOK_PRIO_DEFAULT); struct ppc_config_t ppc_chips[] = { { .i2c_port = I2C_PORT_USB_C0, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv }, { .i2c_port = I2C_PORT_USB_C1, - .i2c_addr = SN5S330_ADDR0, + .i2c_addr__7bf = SN5S330_ADDR0__7bf, .drv = &sn5s330_drv, }, }; @@ -303,7 +303,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_USB_C0, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &tcpci_tcpm_drv, }, @@ -311,7 +311,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_USB_C1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &tcpci_tcpm_drv, }, @@ -342,7 +342,8 @@ DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_chipset_startup, HOOK_PRIO_DEFAULT); static void imvp8_tune_deferred(void) { /* For the IMVP8, reduce the steps during decay from 3 to 1. */ - if (i2c_write16(I2C_PORT_POWER, I2C_ADDR_MP2949, 0xFA, 0x0AC5)) + if (i2c_write16__7bf(I2C_PORT_POWER, I2C_ADDR_MP2949__7bf, + 0xFA, 0x0AC5)) CPRINTS("Failed to change step decay!"); } DECLARE_DEFERRED(imvp8_tune_deferred); @@ -400,7 +401,7 @@ void board_hibernate(void) system_enter_psl_mode(); /* Cut off DSW power via the ROP PMIC. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x49, 0x1); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x49, 0x1); /* Wait for power to be cut. */ while (1) @@ -450,7 +451,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x3a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x3a); /* * V18ACNT: @@ -459,7 +460,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x34, 0x2a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x34, 0x2a); /* * V100ACNT: @@ -468,7 +469,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x1a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x1a); /* * V085ACNT: @@ -477,7 +478,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x2a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x2a); } static void board_pmic_enable_slp_s0_vr_decay(void) @@ -489,7 +490,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x7a); /* * V18ACNT: @@ -498,7 +499,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x34, 0x6a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x34, 0x6a); /* * V100ACNT: @@ -507,7 +508,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x5a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x5a); /* * V085ACNT: @@ -516,7 +517,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x6a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x6a); } void power_board_handle_host_sleep_event(enum host_sleep_event state) @@ -532,15 +533,16 @@ static void board_pmic_init(void) int pgmask1; /* Mask V5A_DS3_PG from PMIC PGMASK1. */ - if (i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x18, &pgmask1)) + if (i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, + 0x18, &pgmask1)) return; pgmask1 |= BIT(2); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x18, pgmask1); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x18, pgmask1); board_pmic_disable_slp_s0_vr_decay(); /* Enable active discharge (100 ohms) on V33A_PCH and V1.8A. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3D, 0x5); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3D, 0x5); } DECLARE_HOOK(HOOK_INIT, board_pmic_init, HOOK_PRIO_DEFAULT); @@ -631,7 +633,7 @@ static void board_report_pmic_fault(const char *str) uint32_t info; /* RESETIRQ1 -- Bit 4: VRFAULT */ - if (i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, &vrfault) + if (i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, &vrfault) != EC_SUCCESS) return; @@ -641,19 +643,19 @@ static void board_report_pmic_fault(const char *str) /* VRFAULT has occurred, print VRFAULT status bits. */ /* PWRSTAT1 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, &pwrstat1); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, &pwrstat1); /* PWRSTAT2 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, &pwrstat2); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, &pwrstat2); CPRINTS("PMIC VRFAULT: %s", str); CPRINTS("PMIC VRFAULT: PWRSTAT1=0x%02x PWRSTAT2=0x%02x", pwrstat1, pwrstat2); /* Clear all faults -- Write 1 to clear. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, BIT(4)); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, pwrstat1); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, pwrstat2); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, BIT(4)); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, pwrstat1); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, pwrstat2); /* * Status of the fault registers can be checked in the OS by looking at diff --git a/board/nocturne/board.h b/board/nocturne/board.h index c1eec1d179..d678f70a3e 100644 --- a/board/nocturne/board.h +++ b/board/nocturne/board.h @@ -93,7 +93,7 @@ #define CONFIG_ALS #define ALS_COUNT 1 #define CONFIG_ALS_OPT3001 -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf #define CONFIG_ACCEL_FIFO 512 /* Must be a power of 2 */ /* Depends on how fast the AP boots and typical ODRs */ #define CONFIG_ACCEL_FIFO_THRES (CONFIG_ACCEL_FIFO / 3) @@ -175,8 +175,8 @@ #define GPIO_USB_C1_SCL GPIO_EC_I2C2_USB_C1_SCL #define GPIO_USB_C1_SDA GPIO_EC_I2C2_USB_C1_SDA -#define I2C_ADDR_MP2949 0x40 -#define I2C_ADDR_BD99992 0x60 +#define I2C_ADDR_MP2949__7bf 0x20 +#define I2C_ADDR_BD99992__7bf 0x30 /* * Remapping of schematic GPIO names to common GPIO names expected (hardcoded) diff --git a/board/nucleo-f411re/board.c b/board/nucleo-f411re/board.c index 0f7c57f1e3..d2f587321f 100644 --- a/board/nucleo-f411re/board.c +++ b/board/nucleo-f411re/board.c @@ -75,7 +75,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = NULL, .default_range = 2, /* g, enough for laptop. */ .config = { @@ -102,7 +102,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = NULL, }, diff --git a/board/oak/battery.c b/board/oak/battery.c index a868e20bc0..25d6b6e46d 100644 --- a/board/oak/battery.c +++ b/board/oak/battery.c @@ -57,10 +57,10 @@ static int cutoff(void) buf[2] = PARAM_CUT_OFF_HIGH; i2c_lock(I2C_PORT_BATTERY, 1); - rv = i2c_xfer_unlocked(I2C_PORT_BATTERY, BATTERY_ADDR, buf, 3, NULL, 0, - I2C_XFER_SINGLE); - rv |= i2c_xfer_unlocked(I2C_PORT_BATTERY, BATTERY_ADDR, buf, 3, NULL, 0, - I2C_XFER_SINGLE); + rv = i2c_xfer_unlocked__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + buf, 3, NULL, 0, I2C_XFER_SINGLE); + rv |= i2c_xfer_unlocked__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + buf, 3, NULL, 0, I2C_XFER_SINGLE); i2c_lock(I2C_PORT_BATTERY, 0); return rv; diff --git a/board/oak/board.c b/board/oak/board.c index 4e7d317a4b..2f0046fac6 100644 --- a/board/oak/board.c +++ b/board/oak/board.c @@ -117,7 +117,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = CONFIG_TCPC_I2C_BASE_ADDR, + .addr__7bf = CONFIG_TCPC_I2C_BASE_ADDR__7BF, }, .drv = &tcpci_tcpm_drv, }, @@ -125,7 +125,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = CONFIG_TCPC_I2C_BASE_ADDR + 2, + .addr__7bf = CONFIG_TCPC_I2C_BASE_ADDR__7BF + 1, }, .drv = &tcpci_tcpm_drv, }, @@ -176,17 +176,17 @@ BUILD_ASSERT(ARRAY_SIZE(als) == ALS_COUNT); struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { { - .port_addr = 0x54 << 1, + .port_addr = 0x54, .driver = &pi3usb30532_usb_mux_driver, }, #if (BOARD_REV <= OAK_REV4) { - .port_addr = 0x55 << 1, + .port_addr = 0x55, .driver = &pi3usb30532_usb_mux_driver, }, #else { - .port_addr = 0x20, + .port_addr = 0x10, .driver = &ps874x_usb_mux_driver, }, #endif @@ -647,7 +647,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = 1, + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(0), .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -671,7 +671,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = 1, + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(0), .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -689,7 +689,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_ACCEL, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 2, /* g, enough for laptop. */ .min_frequency = KX022_ACCEL_MIN_FREQ, diff --git a/board/oak/board.h b/board/oak/board.h index b8ebe7c8e6..bc1e71c98f 100644 --- a/board/oak/board.h +++ b/board/oak/board.h @@ -160,7 +160,7 @@ #define CONFIG_SPI_ACCEL_PORT 0 /* First SPI master port (SPI2) */ /* Ambient Light Sensor address */ -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf /* Timer selection */ #define TIM_CLOCK32 2 diff --git a/board/pdeval-stm32f072/board.c b/board/pdeval-stm32f072/board.c index 5a632ced06..e2e6bc63b6 100644 --- a/board/pdeval-stm32f072/board.c +++ b/board/pdeval-stm32f072/board.c @@ -4,8 +4,8 @@ */ /* STM32F072-discovery board based USB PD evaluation configuration */ -#include "anx7447.h" #include "common.h" +#include "anx7447.h" #include "ec_version.h" #include "gpio.h" #include "hooks.h" @@ -62,7 +62,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = AN7447_TCPC3_I2C_ADDR, + .addr__7bf = AN7447_TCPC3_I2C_ADDR__7bf, }, .drv = &anx7447_tcpm_drv, }, diff --git a/board/pdeval-stm32f072/usb_pd_policy.c b/board/pdeval-stm32f072/usb_pd_policy.c index 86062725fe..283483d566 100644 --- a/board/pdeval-stm32f072/usb_pd_policy.c +++ b/board/pdeval-stm32f072/usb_pd_policy.c @@ -3,8 +3,8 @@ * found in the LICENSE file. */ -#include "anx7447.h" #include "common.h" +#include "anx7447.h" #include "console.h" #include "gpio.h" #include "hooks.h" diff --git a/board/phaser/board.c b/board/phaser/board.c index 68d5bbd633..353eeed9e5 100644 --- a/board/phaser/board.c +++ b/board/phaser/board.c @@ -120,7 +120,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_lis2dh_data, .port = I2C_PORT_SENSOR, - .addr = LIS2DH_ADDR1, + .i2c_spi_addr__7bf = LIS2DH_ADDR1__7bf, .rot_standard_ref = &standard_rot_ref, /* We only use 2g because its resolution is only 8-bits */ .default_range = 2, /* g */ @@ -151,7 +151,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .rot_standard_ref = &standard_rot_ref, .default_range = 4, /* g */ .min_frequency = LSM6DSM_ODR_MIN_VAL, @@ -183,7 +183,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .default_range = 1000 | ROUND_UP_FLAG, /* dps */ .rot_standard_ref = &standard_rot_ref, .min_frequency = LSM6DSM_ODR_MIN_VAL, diff --git a/board/plankton/board.c b/board/plankton/board.c index 925a036c7f..886e8776ef 100644 --- a/board/plankton/board.c +++ b/board/plankton/board.c @@ -467,7 +467,7 @@ const struct i2c_port_t i2c_ports[] = { const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); /* 8-bit address */ -#define SN75DP130_I2C_ADDR 0x5c +#define SN75DP130_I2C_ADDR__7bf 0x2e /* * Pin number for active-high reset from PCA9534 to CMOS pull-down to * SN75DP130's RSTN (active-low) @@ -476,7 +476,8 @@ const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); static int sn75dp130_i2c_write(uint8_t index, uint8_t value) { - return i2c_write8(I2C_PORT_MASTER, SN75DP130_I2C_ADDR, index, value); + return i2c_write8__7bf(I2C_PORT_MASTER, SN75DP130_I2C_ADDR__7bf, + index, value); } /** @@ -489,15 +490,17 @@ static int sn75dp130_reset(void) { int rv; - rv = pca9534_config_pin(I2C_PORT_MASTER, 0x40, REDRIVER_RST_PIN, - PCA9534_OUTPUT); + rv = pca9534_config_pin__7bf(I2C_PORT_MASTER, 0x20, + REDRIVER_RST_PIN, PCA9534_OUTPUT); /* Assert (its active high) */ - rv |= pca9534_set_level(I2C_PORT_MASTER, 0x40, REDRIVER_RST_PIN, 1); + rv |= pca9534_set_level__7bf(I2C_PORT_MASTER, 0x20, + REDRIVER_RST_PIN, 1); /* datasheet recommends > 100usec */ usleep(200); /* De-assert */ - rv |= pca9534_set_level(I2C_PORT_MASTER, 0x40, REDRIVER_RST_PIN, 0); + rv |= pca9534_set_level__7bf(I2C_PORT_MASTER, 0x20, + REDRIVER_RST_PIN, 0); /* datasheet recommends > 400msec */ usleep(450 * MSEC); return rv; @@ -593,10 +596,12 @@ int board_in_hub_mode(void) int ret; int level; - ret = pca9534_config_pin(I2C_PORT_MASTER, 0x40, 6, PCA9534_INPUT); + ret = pca9534_config_pin__7bf(I2C_PORT_MASTER, 0x20, + 6, PCA9534_INPUT); if (ret) return -1; - ret = pca9534_get_level(I2C_PORT_MASTER, 0x40, 6, &level); + ret = pca9534_get_level__7bf(I2C_PORT_MASTER, 0x20, + 6, &level); if (ret) return -1; return level; @@ -606,14 +611,17 @@ static int board_usb_hub_reset(void) { int ret; - ret = pca9534_config_pin(I2C_PORT_MASTER, 0x40, 7, PCA9534_OUTPUT); + ret = pca9534_config_pin__7bf(I2C_PORT_MASTER, 0x20, + 7, PCA9534_OUTPUT); if (ret) return ret; - ret = pca9534_set_level(I2C_PORT_MASTER, 0x40, 7, 0); + ret = pca9534_set_level__7bf(I2C_PORT_MASTER, 0x20, + 7, 0); if (ret) return ret; usleep(100 * MSEC); - return pca9534_set_level(I2C_PORT_MASTER, 0x40, 7, 1); + return pca9534_set_level__7bf(I2C_PORT_MASTER, 0x20, + 7, 1); } void board_maybe_reset_usb_hub(void) diff --git a/board/poppy/board.c b/board/poppy/board.c index cc26a6206d..90e56b6fa8 100644 --- a/board/poppy/board.c +++ b/board/poppy/board.c @@ -193,7 +193,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_0, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, }, .drv = &anx74xx_tcpm_drv, }, @@ -201,7 +201,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_0, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -291,7 +291,7 @@ void board_tcpc_init(void) * * NOTE: PS8751 A3 will wake on any I2C access. */ - i2c_read8(NPCX_I2C_PORT0_1, 0x10, 0xA0, ®); + i2c_read8__7bf(NPCX_I2C_PORT0_1, 0x08, 0xA0, ®); /* Enable TCPC interrupts */ gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL); @@ -358,7 +358,7 @@ static void board_report_pmic_fault(const char *str) uint32_t info; /* RESETIRQ1 -- Bit 4: VRFAULT */ - if (i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, &vrfault) + if (i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, &vrfault) != EC_SUCCESS) return; @@ -368,19 +368,19 @@ static void board_report_pmic_fault(const char *str) /* VRFAULT has occurred, print VRFAULT status bits. */ /* PWRSTAT1 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, &pwrstat1); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, &pwrstat1); /* PWRSTAT2 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, &pwrstat2); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, &pwrstat2); CPRINTS("PMIC VRFAULT: %s", str); CPRINTS("PMIC VRFAULT: PWRSTAT1=0x%02x PWRSTAT2=0x%02x", pwrstat1, pwrstat2); /* Clear all faults -- Write 1 to clear. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, BIT(4)); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, pwrstat1); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, pwrstat2); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, BIT(4)); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, pwrstat1); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, pwrstat2); /* * Status of the fault registers can be checked in the OS by looking at @@ -399,7 +399,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x3a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x3a); /* * V18ACNT: @@ -408,7 +408,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x34, 0x2a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x34, 0x2a); /* * V100ACNT: @@ -417,7 +417,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x1a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x1a); /* * V085ACNT: @@ -426,7 +426,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x3a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x3a); } static void board_pmic_enable_slp_s0_vr_decay(void) @@ -438,7 +438,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x7a); /* * V18ACNT: @@ -447,7 +447,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x34, 0x6a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x34, 0x6a); /* * V100ACNT: @@ -456,7 +456,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x37, 0x5a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x37, 0x5a); /* * V085ACNT: @@ -465,7 +465,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x7a); } void power_board_handle_host_sleep_event(enum host_sleep_event state) @@ -484,15 +484,15 @@ static void board_pmic_init(void) return; /* DISCHGCNT3 - enable 100 ohm discharge on V1.00A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3e, 0x04); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3e, 0x04); board_pmic_disable_slp_s0_vr_decay(); /* VRMODECTRL - disable low-power mode for all rails */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3b, 0x1f); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3b, 0x1f); /* Disable power button shutdown timer. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x14, 0x00); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x14, 0x00); } DECLARE_DEFERRED(board_pmic_init); @@ -652,23 +652,24 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, void board_hibernate(void) { - CPRINTS("Triggering PMIC shutdown."); - uart_flush_output(); - - /* Trigger PMIC shutdown. */ - if (i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x49, 0x01)) { - /* - * If we can't tell the PMIC to shutdown, instead reset - * and don't start the AP. Hopefully we'll be able to - * communicate with the PMIC next time. - */ - CPRINTS("PMIC i2c failed."); - system_reset(SYSTEM_RESET_LEAVE_AP_OFF); - } - - /* Await shutdown. */ - while (1) - ; + CPRINTS("Triggering PMIC shutdown."); + uart_flush_output(); + + /* Trigger PMIC shutdown. */ + if (i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, + 0x49, 0x01)) { + /* + * If we can't tell the PMIC to shutdown, instead reset + * and don't start the AP. Hopefully we'll be able to + * communicate with the PMIC next time. + */ + CPRINTS("PMIC i2c failed."); + system_reset(SYSTEM_RESET_LEAVE_AP_OFF); + } + + /* Await shutdown. */ + while (1) + ; } int board_get_version(void) @@ -750,7 +751,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -774,7 +775,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &lid_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -791,7 +792,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = BIT(11), /* 16LSB / uT, fixed */ .rot_standard_ref = &mag_standard_ref, .min_frequency = BMM150_MAG_MIN_FREQ, @@ -806,7 +807,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &opt3001_drv, .drv_data = &g_opt3001_data, .port = I2C_PORT_ALS, - .addr = OPT3001_I2C_ADDR, + .i2c_spi_addr__7bf = OPT3001_I2C_ADDR__7bf, .rot_standard_ref = NULL, .default_range = 0x10000, /* scale = 1; uscale = 0 */ .min_frequency = OPT3001_LIGHT_MIN_FREQ, diff --git a/board/poppy/board.h b/board/poppy/board.h index 39e0f1796f..fc8a7c255c 100644 --- a/board/poppy/board.h +++ b/board/poppy/board.h @@ -115,7 +115,7 @@ #define CONFIG_ALS #define CONFIG_ALS_OPT3001 #define ALS_COUNT 1 -#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1 +#define OPT3001_I2C_ADDR__7bf OPT3001_I2C_ADDR1__7bf #define CONFIG_TEMP_SENSOR #define CONFIG_TEMP_SENSOR_BD99992GW #define CONFIG_THERMISTOR_NCP15WB @@ -128,7 +128,7 @@ #define CONFIG_ACCEL_INTERRUPTS #define CONFIG_ACCELGYRO_BMI160_INT_EVENT \ TASK_EVENT_MOTION_SENSOR_INTERRUPT(LID_ACCEL) -#define CONFIG_ACCELGYRO_SEC_ADDR BMM150_ADDR0 /* 8-bit address */ +#define CONFIG_ACCELGYRO_SEC_ADDR__7BF BMM150_ADDR0__7bf #define CONFIG_MAG_CALIBRATE /* Lower maximal ODR to 100Hz */ #define CONFIG_EC_MAX_SENSOR_FREQ_MILLIHZ 100000 @@ -192,8 +192,8 @@ #define I2C_PORT_THERMAL I2C_PORT_PMIC /* I2C addresses */ -#define I2C_ADDR_BD99992 0x60 -#define I2C_ADDR_MP2949 0x40 +#define I2C_ADDR_BD99992__7bf 0x30 +#define I2C_ADDR_MP2949__7bf 0x20 #ifndef __ASSEMBLER__ diff --git a/board/rainier/board.c b/board/rainier/board.c index 890aa8be80..8173414bf7 100644 --- a/board/rainier/board.c +++ b/board/rainier/board.c @@ -131,7 +131,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = FUSB302_I2C_SLAVE_ADDR, + .addr__7bf = FUSB302_I2C_SLAVE_ADDR__7bf, }, .drv = &fusb302_tcpm_drv, }, @@ -377,7 +377,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = CONFIG_SPI_ACCEL_PORT, - .addr = BMI160_SET_SPI_ADDRESS(CONFIG_SPI_ACCEL_PORT), + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(CONFIG_SPI_ACCEL_PORT), .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -400,7 +400,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = CONFIG_SPI_ACCEL_PORT, - .addr = BMI160_SET_SPI_ADDRESS(CONFIG_SPI_ACCEL_PORT), + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(CONFIG_SPI_ACCEL_PORT), .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -422,7 +422,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &bmp280_drv, .drv_data = &bmp280_drv_data, .port = CONFIG_SPI_ACCEL_PORT, - .addr = BMI160_SET_SPI_ADDRESS(CONFIG_SPI_ACCEL_PORT), + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(CONFIG_SPI_ACCEL_PORT), .default_range = BIT(18), /* 1bit = 4 Pa, 16bit ~= 2600 hPa */ .min_frequency = BMP280_BARO_MIN_FREQ, .max_frequency = BMP280_BARO_MAX_FREQ, diff --git a/board/rammus/board.c b/board/rammus/board.c index 1596407718..82af7a2667 100644 --- a/board/rammus/board.c +++ b/board/rammus/board.c @@ -151,7 +151,7 @@ struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -159,7 +159,8 @@ struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = AN7447_TCPC3_I2C_ADDR, /* Verified on v1.1 */ + /* Verified on v1.1 */ + .addr__7bf = AN7447_TCPC3_I2C_ADDR__7bf, }, .drv = &anx7447_tcpm_drv, }, @@ -297,7 +298,7 @@ static void board_report_pmic_fault(const char *str) uint32_t info; /* RESETIRQ1 -- Bit 4: VRFAULT */ - if (i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, &vrfault) + if (i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, &vrfault) != EC_SUCCESS) return; @@ -307,19 +308,19 @@ static void board_report_pmic_fault(const char *str) /* VRFAULT has occurred, print VRFAULT status bits. */ /* PWRSTAT1 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, &pwrstat1); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, &pwrstat1); /* PWRSTAT2 */ - i2c_read8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, &pwrstat2); + i2c_read8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, &pwrstat2); CPRINTS("PMIC VRFAULT: %s", str); CPRINTS("PMIC VRFAULT: PWRSTAT1=0x%02x PWRSTAT2=0x%02x", pwrstat1, pwrstat2); /* Clear all faults -- Write 1 to clear. */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x8, BIT(4)); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x16, pwrstat1); - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x17, pwrstat2); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x8, BIT(4)); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x16, pwrstat1); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x17, pwrstat2); /* * Status of the fault registers can be checked in the OS by looking at @@ -338,7 +339,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x3a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x3a); /* * V18ACNT: @@ -347,7 +348,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x34, 0x2a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x34, 0x2a); /* * V085ACNT: @@ -356,7 +357,7 @@ static void board_pmic_disable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x3a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x3a); } static void board_pmic_enable_slp_s0_vr_decay(void) @@ -368,7 +369,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x30, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x30, 0x7a); /* * V18ACNT: @@ -377,7 +378,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x34, 0x6a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x34, 0x6a); /* * V085ACNT: @@ -386,7 +387,7 @@ static void board_pmic_enable_slp_s0_vr_decay(void) * Bits 3:2 (10) - VR set to AUTO on SLP_S0# de-assertion * Bits 1:0 (10) - VR set to AUTO operating mode */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x38, 0x7a); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x38, 0x7a); } void power_board_handle_host_sleep_event(enum host_sleep_event state) @@ -408,16 +409,16 @@ static void board_pmic_init(void) * DISCHGCNT2 - enable 100 ohm discharge on * V5A_DS3/V33A_DSW/V33A_PCH/V1.8A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3d, 0x55); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3d, 0x55); /* DISCHGCNT3 - enable 100 ohm discharge on V1.8U_25U/V1.00A */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3e, 0x44); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3e, 0x44); /* DISCHGCNT4 - enable 100 ohm discharge on v1.8S */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3f, 0x04); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3f, 0x04); board_pmic_disable_slp_s0_vr_decay(); /* VRMODECTRL - disable low-power mode for all rails */ - i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x3b, 0x1f); + i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x3b, 0x1f); } DECLARE_DEFERRED(board_pmic_init); @@ -543,7 +544,7 @@ void board_hibernate(void) uart_flush_output(); /* Trigger PMIC shutdown. */ - if (i2c_write8(I2C_PORT_PMIC, I2C_ADDR_BD99992, 0x49, 0x01)) { + if (i2c_write8__7bf(I2C_PORT_PMIC, I2C_ADDR_BD99992__7bf, 0x49, 0x01)) { /* * If we can't tell the PMIC to shutdown, instead reset * and don't start the AP. Hopefully we'll be able to @@ -601,7 +602,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_bma255_data, .port = I2C_PORT_ACCEL, - .addr = BMA2x2_I2C_ADDR1, + .i2c_spi_addr__7bf = BMA2x2_I2C_ADDR1__7bf, .rot_standard_ref = &lid_standard_ref, .min_frequency = BMA255_ACCEL_MIN_FREQ, .max_frequency = BMA255_ACCEL_MAX_FREQ, @@ -629,7 +630,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_ACCEL_MIN_FREQ, .max_frequency = BMI160_ACCEL_MAX_FREQ, @@ -657,7 +658,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_ACCEL, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, diff --git a/board/rammus/board.h b/board/rammus/board.h index 8c36ca46b9..5d577be79d 100644 --- a/board/rammus/board.h +++ b/board/rammus/board.h @@ -187,9 +187,9 @@ #define I2C_PORT_THERMAL I2C_PORT_PMIC /* I2C addresses */ -#define I2C_ADDR_BD99992 0x60 -#define I2C_ADDR_MP2949 0x40 -#define I2C_ADDR_EEPROM 0xa0 +#define I2C_ADDR_BD99992__7bf 0x30 +#define I2C_ADDR_MP2949__7bf 0x20 +#define I2C_ADDR_EEPROM__7bf 0x50 /* Rename GPIOs */ #define GPIO_PCH_SLP_S0_L GPIO_SLP_S0_L diff --git a/board/reef/board.c b/board/reef/board.c index 2189146e34..ea9e8e9e43 100644 --- a/board/reef/board.c +++ b/board/reef/board.c @@ -167,7 +167,7 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_TCPC { .port = NPCX_I2C_PORT0_0, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, .i2c_test = &anx74xx_i2c_stress_test_dev, }, #endif @@ -176,7 +176,7 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_TCPC { .port = NPCX_I2C_PORT0_1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, .i2c_test = &ps8xxx_i2c_stress_test_dev, }, #endif @@ -185,7 +185,7 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_ACCEL { .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .addr__7bf = BMI160_ADDR0__7bf, .i2c_test = &bmi160_i2c_stress_test_dev, }, #endif @@ -194,19 +194,19 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_ACCEL { .port = I2C_PORT_BARO, - .addr = BMP280_I2C_ADDRESS1, + .addr__7bf = BMP280_I2C_ADDRESS1__7bf, .i2c_test = &bmp280_i2c_stress_test_dev, }, { .port = I2C_PORT_LID_ACCEL, - .addr = KX022_ADDR1, + .addr__7bf = KX022_ADDR1__7bf, .i2c_test = &kionix_i2c_stress_test_dev, }, #endif #ifdef CONFIG_CMD_I2C_STRESS_TEST_ALS { .port = I2C_PORT_ALS, - .addr = OPT3001_I2C_ADDR1, + .addr__7bf = OPT3001_I2C_ADDR1__7bf, .i2c_test = &opt3001_i2c_stress_test_dev, }, #endif @@ -231,7 +231,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_0, - .addr = ANX74XX_I2C_ADDR1, + .addr__7bf = ANX74XX_I2C_ADDR1__7bf, }, .drv = &anx74xx_tcpm_drv, }, @@ -239,7 +239,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = NPCX_I2C_PORT0_1, - .addr = PS8751_I2C_ADDR1, + .addr__7bf = PS8751_I2C_ADDR1__7bf, }, .drv = &ps8xxx_tcpm_drv, }, @@ -367,7 +367,7 @@ void board_tcpc_init(void) * * NOTE: PS8751 A3 will wake on any I2C access. */ - i2c_read8(NPCX_I2C_PORT0_1, 0x10, 0xA0, ®); + i2c_read8__7bf(NPCX_I2C_PORT0_1, 0x08, 0xA0, ®); /* Enable TCPC0 interrupt */ gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL); @@ -715,7 +715,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_LID_ACCEL, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 2, /* g, enough for laptop. */ .min_frequency = KX022_ACCEL_MIN_FREQ, @@ -742,7 +742,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -771,7 +771,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -787,7 +787,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = BIT(11), /* 16LSB / uT, fixed */ .rot_standard_ref = &mag_standard_ref, .min_frequency = BMM150_MAG_MIN_FREQ, @@ -802,7 +802,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &bmp280_drv, .drv_data = &bmp280_drv_data, .port = I2C_PORT_BARO, - .addr = BMP280_I2C_ADDRESS1, + .i2c_spi_addr__7bf = BMP280_I2C_ADDRESS1__7bf, .default_range = BIT(18), /* 1bit = 4 Pa, 16bit ~= 2600 hPa */ .min_frequency = BMP280_BARO_MIN_FREQ, .max_frequency = BMP280_BARO_MAX_FREQ, @@ -816,7 +816,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &opt3001_drv, .drv_data = &g_opt3001_data, .port = I2C_PORT_ALS, - .addr = OPT3001_I2C_ADDR1, + .i2c_spi_addr__7bf = OPT3001_I2C_ADDR1__7bf, .rot_standard_ref = NULL, .default_range = 0x10000, /* scale = 1; uscale = 0 */ .min_frequency = OPT3001_LIGHT_MIN_FREQ, diff --git a/board/reef/board.h b/board/reef/board.h index 5dd0a3bf06..245ccaf7e4 100644 --- a/board/reef/board.h +++ b/board/reef/board.h @@ -196,7 +196,7 @@ #define CONFIG_ACCELGYRO_BMI160_INT_EVENT \ TASK_EVENT_MOTION_SENSOR_INTERRUPT(BASE_ACCEL) #define CONFIG_MAG_BMI160_BMM150 -#define CONFIG_ACCELGYRO_SEC_ADDR BMM150_ADDR0 /* 8-bit address */ +#define CONFIG_ACCELGYRO_SEC_ADDR__7BF BMM150_ADDR0__7bf #define CONFIG_MAG_CALIBRATE #define CONFIG_ACCEL_KX022 #define CONFIG_ALS_OPT3001 diff --git a/board/reef_it8320/board.c b/board/reef_it8320/board.c index 6174e7e24b..82c094095c 100644 --- a/board/reef_it8320/board.c +++ b/board/reef_it8320/board.c @@ -161,12 +161,12 @@ static void it83xx_tcpc_update_hpd_status(int port, int hpd_lvl, int hpd_irq) struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { { - .port_addr = 0xa8, + .port_addr = 0x54, .driver = &pi3usb30532_usb_mux_driver, .hpd_update = &it83xx_tcpc_update_hpd_status, }, { - .port_addr = 0x20, + .port_addr = 0x10, .driver = &ps874x_usb_mux_driver, .hpd_update = &it83xx_tcpc_update_hpd_status, }, diff --git a/board/reef_mchp/board.c b/board/reef_mchp/board.c index b66b5eaa27..206d6dd1d0 100644 --- a/board/reef_mchp/board.c +++ b/board/reef_mchp/board.c @@ -283,7 +283,7 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_TCPC { .port = MCHP_I2C_PORT0, - .addr = 0x50, + .addr__7bf = 0x28, .i2c_test = &anx74xx_i2c_stress_test_dev, }, #endif @@ -291,33 +291,33 @@ struct i2c_stress_test i2c_stress_tests[] = { #ifdef CONFIG_CMD_I2C_STRESS_TEST_TCPC { .port = MCHP_I2C_PORT2, - .addr = 0x16, + .addr__7bf = 0x0B, .i2c_test = &ps8xxx_i2c_stress_test_dev, }, #endif #ifdef CONFIG_CMD_I2C_STRESS_TEST_ACCEL { .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .addr__7bf = BMI160_ADDR0__7bf, .i2c_test = &bmi160_i2c_stress_test_dev, }, #endif #ifdef CONFIG_CMD_I2C_STRESS_TEST_ACCEL { .port = I2C_PORT_BARO, - .addr = BMP280_I2C_ADDRESS1, + .addr__7bf = BMP280_I2C_ADDRESS1__7bf, .i2c_test = &bmp280_i2c_stress_test_dev, }, { .port = I2C_PORT_LID_ACCEL, - .addr = KX022_ADDR1, + .addr__7bf = KX022_ADDR1__7bf, .i2c_test = &kionix_i2c_stress_test_dev, }, #endif #ifdef CONFIG_CMD_I2C_STRESS_TEST_ALS { .port = I2C_PORT_ALS, - .addr = OPT3001_I2C_ADDR1, + .addr__7bf = OPT3001_I2C_ADDR1__7bf, .i2c_test = &opt3001_i2c_stress_test_dev, }, #endif @@ -342,7 +342,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = MCHP_I2C_PORT0, - .addr = 0x50, + .addr__7bf = 0x28, }, .drv = &anx74xx_tcpm_drv, }, @@ -350,7 +350,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = MCHP_I2C_PORT2, - .addr = 0x16, + .addr__7bf = 0x0B, }, .drv = &ps8xxx_tcpm_drv, }, @@ -513,7 +513,7 @@ void board_tcpc_init(void) * address 0x10. Is this another attempt at waking PS8751 * from DRP low power idle mode? */ - i2c_read8(MCHP_I2C_PORT2, 0x10, 0xA0, ®); + i2c_read8__7bf(MCHP_I2C_PORT2, 0x08, 0xA0, ®); /* Enable TCPC0 interrupt */ gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL); @@ -961,7 +961,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_LID_ACCEL, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 2, /* g, enough for laptop. */ .min_frequency = KX022_ACCEL_MIN_FREQ, @@ -988,7 +988,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -1017,7 +1017,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, @@ -1033,7 +1033,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = I2C_PORT_GYRO, - .addr = BMI160_ADDR0, + .i2c_spi_addr__7bf = BMI160_ADDR0__7bf, .default_range = BIT(11), /* 16LSB / uT, fixed */ .rot_standard_ref = &mag_standard_ref, .min_frequency = BMM150_MAG_MIN_FREQ, @@ -1048,7 +1048,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &bmp280_drv, .drv_data = &bmp280_drv_data, .port = I2C_PORT_BARO, - .addr = BMP280_I2C_ADDRESS1, + .i2c_spi_addr__7bf = BMP280_I2C_ADDRESS1__7bf, .default_range = BIT(18), /* 1bit = 4 Pa, 16bit ~= 2600 hPa */ .min_frequency = BMP280_BARO_MIN_FREQ, .max_frequency = BMP280_BARO_MAX_FREQ, @@ -1062,7 +1062,7 @@ struct motion_sensor_t motion_sensors[] = { .drv = &opt3001_drv, .drv_data = &g_opt3001_data, .port = I2C_PORT_ALS, - .addr = OPT3001_I2C_ADDR1, + .i2c_spi_addr__7bf = OPT3001_I2C_ADDR1__7bf, .rot_standard_ref = NULL, .default_range = 0x10000, /* scale = 1; uscale = 0 */ .min_frequency = OPT3001_LIGHT_MIN_FREQ, diff --git a/board/reef_mchp/board.h b/board/reef_mchp/board.h index dabdabb587..7c4189e4b5 100644 --- a/board/reef_mchp/board.h +++ b/board/reef_mchp/board.h @@ -203,7 +203,7 @@ #define CONFIG_ACCELGYRO_BMI160_INT_EVENT \ TASK_EVENT_MOTION_SENSOR_INTERRUPT(BASE_ACCEL) #define CONFIG_MAG_BMI160_BMM150 -#define CONFIG_ACCELGYRO_SEC_ADDR BMM150_ADDR0 /* 8-bit address */ +#define CONFIG_ACCELGYRO_SEC_ADDR__7BF BMM150_ADDR0__7bf #define CONFIG_MAG_CALIBRATE #define CONFIG_ACCEL_KX022 #define CONFIG_ALS_OPT3001 diff --git a/board/samus/battery.c b/board/samus/battery.c index dcbd4f0964..e21f51e3b5 100644 --- a/board/samus/battery.c +++ b/board/samus/battery.c @@ -290,10 +290,10 @@ int board_cut_off_battery(void) buf[2] = PARAM_CUT_OFF_HIGH; i2c_lock(I2C_PORT_BATTERY, 1); - rv = i2c_xfer_unlocked(I2C_PORT_BATTERY, BATTERY_ADDR, buf, 3, NULL, 0, - I2C_XFER_SINGLE); - rv |= i2c_xfer_unlocked(I2C_PORT_BATTERY, BATTERY_ADDR, buf, 3, NULL, 0, - I2C_XFER_SINGLE); + rv = i2c_xfer_unlocked__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + buf, 3, NULL, 0, I2C_XFER_SINGLE); + rv |= i2c_xfer_unlocked__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + buf, 3, NULL, 0, I2C_XFER_SINGLE); i2c_lock(I2C_PORT_BATTERY, 0); return rv; diff --git a/board/samus/board.c b/board/samus/board.c index 2804799994..323789a7a3 100644 --- a/board/samus/board.c +++ b/board/samus/board.c @@ -132,29 +132,35 @@ const struct i2c_port_t i2c_ports[] = { }; const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); -#define TEMP_U40_REG_ADDR ((0x40 << 1) | I2C_FLAG_BIG_ENDIAN) -#define TEMP_U41_REG_ADDR ((0x44 << 1) | I2C_FLAG_BIG_ENDIAN) -#define TEMP_U42_REG_ADDR ((0x41 << 1) | I2C_FLAG_BIG_ENDIAN) -#define TEMP_U43_REG_ADDR ((0x45 << 1) | I2C_FLAG_BIG_ENDIAN) -#define TEMP_U115_REG_ADDR ((0x42 << 1) | I2C_FLAG_BIG_ENDIAN) -#define TEMP_U116_REG_ADDR ((0x43 << 1) | I2C_FLAG_BIG_ENDIAN) - -#define TEMP_U40_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U40_REG_ADDR) -#define TEMP_U41_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U41_REG_ADDR) -#define TEMP_U42_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U42_REG_ADDR) -#define TEMP_U43_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U43_REG_ADDR) -#define TEMP_U115_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U115_REG_ADDR) -#define TEMP_U116_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U116_REG_ADDR) - -const struct tmp006_t tmp006_sensors[TMP006_COUNT] = { - {"Charger", TEMP_U40_ADDR}, - {"CPU", TEMP_U41_ADDR}, - {"Left C", TEMP_U42_ADDR}, - {"Right C", TEMP_U43_ADDR}, - {"Right D", TEMP_U115_ADDR}, - {"Left D", TEMP_U116_ADDR}, +#define TEMP_U40_REG_ADDR__7bf (0x40 | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U41_REG_ADDR__7bf (0x44 | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U42_REG_ADDR__7bf (0x41 | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U43_REG_ADDR__7bf (0x45 | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U115_REG_ADDR__7bf (0x42 | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U116_REG_ADDR__7bf (0x43 | I2C_FLAG_BIG_ENDIAN) + +#define TEMP_U40_ADDR__7bf TMP006_ADDR__7bf(I2C_PORT_THERMAL,\ + TEMP_U40_REG_ADDR__7bf) +#define TEMP_U41_ADDR__7bf TMP006_ADDR__7bf(I2C_PORT_THERMAL,\ + TEMP_U41_REG_ADDR__7bf) +#define TEMP_U42_ADDR__7bf TMP006_ADDR__7bf(I2C_PORT_THERMAL,\ + TEMP_U42_REG_ADDR__7bf) +#define TEMP_U43_ADDR__7bf TMP006_ADDR__7bf(I2C_PORT_THERMAL,\ + TEMP_U43_REG_ADDR__7bf) +#define TEMP_U115_ADDR__7bf TMP006_ADDR__7bf(I2C_PORT_THERMAL,\ + TEMP_U115_REG_ADDR__7bf) +#define TEMP_U116_ADDR__7bf TMP006_ADDR__7bf(I2C_PORT_THERMAL,\ + TEMP_U116_REG_ADDR__7bf) + +const struct tmp006_t tmp006_sensors__7bf[TMP006_COUNT] = { + {"Charger", TEMP_U40_ADDR__7bf}, + {"CPU", TEMP_U41_ADDR__7bf}, + {"Left C", TEMP_U42_ADDR__7bf}, + {"Right C", TEMP_U43_ADDR__7bf}, + {"Right D", TEMP_U115_ADDR__7bf}, + {"Left D", TEMP_U116_ADDR__7bf}, }; -BUILD_ASSERT(ARRAY_SIZE(tmp006_sensors) == TMP006_COUNT); +BUILD_ASSERT(ARRAY_SIZE(tmp006_sensors__7bf) == TMP006_COUNT); /* Temperature sensors data; must be in same order as enum temp_sensor_id. */ const struct temp_sensor_t temp_sensors[] = { @@ -326,7 +332,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_saved_data[0], .port = I2C_PORT_ACCEL, - .addr = LSM6DS0_ADDR1, + .i2c_spi_addr__7bf = LSM6DS0_ADDR1__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = LSM6DS0_ACCEL_MIN_FREQ, @@ -358,7 +364,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kxcj9_data, .port = I2C_PORT_ACCEL, - .addr = KXCJ9_ADDR0, + .i2c_spi_addr__7bf = KXCJ9_ADDR0__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = KXCJ9_ACCEL_MIN_FREQ, @@ -381,7 +387,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_saved_data[1], .port = I2C_PORT_ACCEL, - .addr = LSM6DS0_ADDR1, + .i2c_spi_addr__7bf = LSM6DS0_ADDR1__7bf, .rot_standard_ref = NULL, .default_range = 2000, /* g, enough for laptop. */ .min_frequency = LSM6DS0_GYRO_MIN_FREQ, diff --git a/board/samus/extpower.c b/board/samus/extpower.c index 9307463cbf..cddb4a76e1 100644 --- a/board/samus/extpower.c +++ b/board/samus/extpower.c @@ -159,7 +159,7 @@ static void allow_max_request(void) int prochot_status; if (charge_circuit_state == CHARGE_CIRCUIT_WEDGED) { /* Read PROCHOT status register to clear it */ - i2c_read8(I2C_PORT_CHARGER, BQ24773_ADDR, + i2c_read8__7bf(I2C_PORT_CHARGER, BQ24773_ADDR__7bf, BQ24773_PROCHOT_STATUS, &prochot_status); charge_circuit_state = CHARGE_CIRCUIT_OK; } @@ -301,7 +301,7 @@ static void check_charge_wedged(void) if (charge_circuit_state == CHARGE_CIRCUIT_OK) { /* Check PROCHOT warning */ - rv = i2c_read8(I2C_PORT_CHARGER, BQ24773_ADDR, + rv = i2c_read8__7bf(I2C_PORT_CHARGER, BQ24773_ADDR__7bf, BQ24773_PROCHOT_STATUS, &prochot_status); if (rv) prochot_status = 0; diff --git a/board/samus/panel.c b/board/samus/panel.c index ccb43f1fcb..0c60b2a492 100644 --- a/board/samus/panel.c +++ b/board/samus/panel.c @@ -15,7 +15,7 @@ #define CPRINTS(format, args...) cprints(CC_I2C, format, ## args) -#define I2C_ADDR_BACKLIGHT ((0x2C << 1) | I2C_FLAG_BIG_ENDIAN) +#define I2C_ADDR_BACKLIGHT__7bf (0x2C | I2C_FLAG_BIG_ENDIAN) #define I2C_RETRIES 3 #define I2C_RETRY_DELAY (5*MSEC) @@ -61,7 +61,8 @@ static int lp8555_read_with_retry(int reg, int *data) int i, rv; for (i = 0; i < I2C_RETRIES; i++) { - rv = i2c_read8(I2C_PORT_BACKLIGHT, I2C_ADDR_BACKLIGHT, + rv = i2c_read8__7bf(I2C_PORT_BACKLIGHT, + I2C_ADDR_BACKLIGHT__7bf, reg, data); if (rv == EC_SUCCESS) return EC_SUCCESS; @@ -78,8 +79,9 @@ static int lp8555_write_with_retry(int reg, int data) int i, rv; for (i = 0; i < I2C_RETRIES; i++) { - rv = i2c_write8(I2C_PORT_BACKLIGHT, I2C_ADDR_BACKLIGHT, - reg, data); + rv = i2c_write8__7bf(I2C_PORT_BACKLIGHT, + I2C_ADDR_BACKLIGHT__7bf, + reg, data); if (rv == EC_SUCCESS) return EC_SUCCESS; usleep(I2C_RETRY_DELAY); diff --git a/board/samus_pd/board.h b/board/samus_pd/board.h index 649feb3fd3..032e0bf0f2 100644 --- a/board/samus_pd/board.h +++ b/board/samus_pd/board.h @@ -89,7 +89,7 @@ /* slave address for host commands */ #ifdef HAS_TASK_HOSTCMD -#define CONFIG_HOSTCMD_I2C_SLAVE_ADDR CONFIG_USB_PD_I2C_SLAVE_ADDR +#define CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF CONFIG_USB_PD_I2C_SLAVE_ADDR__7BF #endif #ifndef __ASSEMBLER__ diff --git a/board/scarlet/board.c b/board/scarlet/board.c index 4e100b3ed7..061e2d62dc 100644 --- a/board/scarlet/board.c +++ b/board/scarlet/board.c @@ -127,7 +127,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC0, - .addr = FUSB302_I2C_SLAVE_ADDR, + .addr__7bf = FUSB302_I2C_SLAVE_ADDR__7bf, }, .drv = &fusb302_tcpm_drv, }, @@ -401,7 +401,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = CONFIG_SPI_ACCEL_PORT, - .addr = BMI160_SET_SPI_ADDRESS(CONFIG_SPI_ACCEL_PORT), + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(CONFIG_SPI_ACCEL_PORT), .rot_standard_ref = &base_standard_ref, .default_range = 4, /* g */ .min_frequency = BMI160_ACCEL_MIN_FREQ, @@ -424,7 +424,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_base_mutex, .drv_data = &g_bmi160_data, .port = CONFIG_SPI_ACCEL_PORT, - .addr = BMI160_SET_SPI_ADDRESS(CONFIG_SPI_ACCEL_PORT), + .i2c_spi_addr__7bf = SLAVE_MK_SPI_ADDR__7bf(CONFIG_SPI_ACCEL_PORT), .default_range = 1000, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = BMI160_GYRO_MIN_FREQ, diff --git a/board/scarlet/board.h b/board/scarlet/board.h index 5cd82e573c..a9bc49fdc9 100644 --- a/board/scarlet/board.h +++ b/board/scarlet/board.h @@ -174,7 +174,7 @@ #define I2C_PORT_TCPC0 1 /* Route sbs host requests to virtual battery driver */ -#define VIRTUAL_BATTERY_ADDR 0x16 +#define VIRTUAL_BATTERY_ADDR__7bf 0x0B /* Enable Accel over SPI */ #define CONFIG_SPI_ACCEL_PORT 0 /* The first SPI master port (SPI2) */ diff --git a/board/servo_micro/board.c b/board/servo_micro/board.c index e717d6207b..b5384ba8ca 100644 --- a/board/servo_micro/board.c +++ b/board/servo_micro/board.c @@ -248,8 +248,8 @@ DECLARE_CONSOLE_COMMAND(baud, command_uart_baud, * enable_ite_dfu stops working, or does not work on a new ITE EC chip revision. */ -#define ITE_DFU_I2C_CMD_ADDR 0xB4 /* 7 bit form is 0x5A */ -#define ITE_DFU_I2C_DATA_ADDR 0x6A /* 7 bit form is 0x35 */ +#define ITE_DFU_I2C_CMD_ADDR__7bf 0x5A +#define ITE_DFU_I2C_DATA_ADDR__7bf 0x35 #define SMCLK_WAVEFORM_PERIOD_HZ (100 * KHz) #define SMDAT_WAVEFORM_PERIOD_HZ (200 * KHz) @@ -287,14 +287,17 @@ static int ite_i2c_read_register(uint8_t register_offset, uint8_t *output) */ int ret; /* Tell the ITE EC which register we want to read. */ - ret = i2c_xfer_unlocked(I2C_PORT_MASTER, ITE_DFU_I2C_CMD_ADDR, - ®ister_offset, sizeof(register_offset), - NULL, 0, I2C_XFER_SINGLE); + ret = i2c_xfer_unlocked__7bf(I2C_PORT_MASTER, + ITE_DFU_I2C_CMD_ADDR__7bf, + ®ister_offset, sizeof(register_offset), + NULL, 0, I2C_XFER_SINGLE); if (ret != EC_SUCCESS) return ret; /* Read in the 1 byte register value. */ - ret = i2c_xfer_unlocked(I2C_PORT_MASTER, ITE_DFU_I2C_DATA_ADDR, NULL, 0, - output, sizeof(*output), I2C_XFER_SINGLE); + ret = i2c_xfer_unlocked__7bf(I2C_PORT_MASTER, + ITE_DFU_I2C_DATA_ADDR__7bf, + NULL, 0, + output, sizeof(*output), I2C_XFER_SINGLE); return ret; } diff --git a/board/servo_v4/board.c b/board/servo_v4/board.c index 405c90c7aa..b26d86abf6 100644 --- a/board/servo_v4/board.c +++ b/board/servo_v4/board.c @@ -211,7 +211,7 @@ int usb_i2c_board_is_enabled(void) { return 1; } /* * Support tca6416 I2C ioexpander. */ -#define GPIOX_I2C_ADDR 0x40 +#define GPIOX_I2C_ADDR__7bf 0x20 #define GPIOX_IN_PORT_A 0x0 #define GPIOX_IN_PORT_B 0x1 #define GPIOX_OUT_PORT_A 0x2 @@ -226,13 +226,13 @@ static void write_ioexpander(int bank, int gpio, int val) int tmp; /* Read output port register */ - i2c_read8(1, GPIOX_I2C_ADDR, GPIOX_OUT_PORT_A + bank, &tmp); + i2c_read8__7bf(1, GPIOX_I2C_ADDR__7bf, GPIOX_OUT_PORT_A + bank, &tmp); if (val) tmp |= BIT(gpio); else tmp &= ~BIT(gpio); /* Write back modified output port register */ - i2c_write8(1, GPIOX_I2C_ADDR, GPIOX_OUT_PORT_A + bank, tmp); + i2c_write8__7bf(1, GPIOX_I2C_ADDR__7bf, GPIOX_OUT_PORT_A + bank, tmp); } /* Read a single GPIO input on the tca6416 I2C ioexpander. */ @@ -242,7 +242,7 @@ static int read_ioexpander_bit(int bank, int bit) int mask = 1 << bit; /* Read input port register */ - i2c_read8(1, GPIOX_I2C_ADDR, GPIOX_IN_PORT_A + bank, &tmp); + i2c_read8__7bf(1, GPIOX_I2C_ADDR__7bf, GPIOX_IN_PORT_A + bank, &tmp); return (tmp & mask) >> bit; } @@ -271,15 +271,15 @@ static void init_usb3_port(void) static void init_ioexpander(void) { /* Write all GPIO to output 0 */ - i2c_write8(1, GPIOX_I2C_ADDR, GPIOX_OUT_PORT_A, 0x0); - i2c_write8(1, GPIOX_I2C_ADDR, GPIOX_OUT_PORT_B, 0x0); + i2c_write8__7bf(1, GPIOX_I2C_ADDR__7bf, GPIOX_OUT_PORT_A, 0x0); + i2c_write8__7bf(1, GPIOX_I2C_ADDR__7bf, GPIOX_OUT_PORT_B, 0x0); /* * Write GPIO direction: strap resistors to input, * all others to output. */ - i2c_write8(1, GPIOX_I2C_ADDR, GPIOX_DIR_PORT_A, 0x0); - i2c_write8(1, GPIOX_I2C_ADDR, GPIOX_DIR_PORT_B, 0x18); + i2c_write8__7bf(1, GPIOX_I2C_ADDR__7bf, GPIOX_DIR_PORT_A, 0x0); + i2c_write8__7bf(1, GPIOX_I2C_ADDR__7bf, GPIOX_DIR_PORT_B, 0x18); } /* @@ -429,7 +429,7 @@ static void board_init(void) * Write USB3 Mode to PS8742 USB/DP Mux. * 0x0:disable 0x20:enable. */ - i2c_write8(1, 0x20, 0x0, 0x0); + i2c_write8__7bf(1, 0x10, 0x0, 0x0); /* Enable uservo USB by default. */ init_ioexpander(); diff --git a/board/strago/board.c b/board/strago/board.c index 45761a5a8a..8764c4a84b 100644 --- a/board/strago/board.c +++ b/board/strago/board.c @@ -110,7 +110,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { .port = I2C_PORT_TCPC, - .addr = CONFIG_TCPC_I2C_BASE_ADDR, + .addr__7bf = CONFIG_TCPC_I2C_BASE_ADDR__7BF, }, .drv = &tcpci_tcpm_drv, }, @@ -141,7 +141,7 @@ BUILD_ASSERT(ARRAY_SIZE(pi3usb9281_chips) == struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { { - .port_addr = 0xaa, + .port_addr = 0x55, .driver = &pi3usb30532_usb_mux_driver, }, }; @@ -213,7 +213,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_kxcj9_mutex[0], .drv_data = &g_kxcj9_data[0], .port = I2C_PORT_ACCEL, - .addr = KXCJ9_ADDR1, + .i2c_spi_addr__7bf = KXCJ9_ADDR1__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = KXCJ9_ACCEL_MIN_FREQ, @@ -236,7 +236,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_kxcj9_mutex[1], .drv_data = &g_kxcj9_data[1], .port = I2C_PORT_ACCEL, - .addr = KXCJ9_ADDR0, + .i2c_spi_addr__7bf = KXCJ9_ADDR0__7bf, .rot_standard_ref = &lid_standard_ref, .default_range = 2, /* g, enough for laptop. */ .min_frequency = KXCJ9_ACCEL_MIN_FREQ, diff --git a/board/sweetberry/board.c b/board/sweetberry/board.c index 66b21a81b9..943cb1c1ae 100644 --- a/board/sweetberry/board.c +++ b/board/sweetberry/board.c @@ -121,6 +121,6 @@ static void board_init(void) uint8_t tmp; /* i2c 0 has a tendancy to get wedged. TODO(nsanders): why? */ - i2c_xfer(0, 0, NULL, 0, &tmp, 1); + i2c_xfer__7bf(0, 0, NULL, 0, &tmp, 1); } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); diff --git a/board/yorp/board.c b/board/yorp/board.c index 65653ac168..409914c898 100644 --- a/board/yorp/board.c +++ b/board/yorp/board.c @@ -119,7 +119,7 @@ struct motion_sensor_t motion_sensors[] = { .mutex = &g_lid_mutex, .drv_data = &g_kx022_data, .port = I2C_PORT_SENSOR, - .addr = KX022_ADDR1, + .i2c_spi_addr__7bf = KX022_ADDR1__7bf, .rot_standard_ref = NULL, /* Identity matrix. */ .default_range = 4, /* g */ .config = { @@ -147,7 +147,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .rot_standard_ref = &base_standard_ref, .default_range = 4, /* g */ .min_frequency = LSM6DSM_ODR_MIN_VAL, @@ -179,7 +179,7 @@ struct motion_sensor_t motion_sensors[] = { .int_signal = GPIO_BASE_SIXAXIS_INT_L, .flags = MOTIONSENSE_FLAG_INT_SIGNAL, .port = I2C_PORT_SENSOR, - .addr = LSM6DSM_ADDR0, + .i2c_spi_addr__7bf = LSM6DSM_ADDR0__7bf, .default_range = 1000 | ROUND_UP_FLAG, /* dps */ .rot_standard_ref = &base_standard_ref, .min_frequency = LSM6DSM_ODR_MIN_VAL, diff --git a/chip/g/i2cm.c b/chip/g/i2cm.c index b1a3135723..a7b8f9ad7e 100644 --- a/chip/g/i2cm.c +++ b/chip/g/i2cm.c @@ -247,7 +247,7 @@ static int i2cm_poll_for_complete(int port) return EC_ERROR_TIMEOUT; } -static uint32_t i2cm_create_inst(int slave_addr, int is_write, +static uint32_t i2cm_create_inst__7bf(int slave_addr__7bf, int is_write, size_t size, uint32_t flags) { uint32_t inst = 0; @@ -258,12 +258,7 @@ static uint32_t i2cm_create_inst(int slave_addr, int is_write, * to be included. */ inst |= INST_START; - - /* - * Calls to chip_i2c_xfer assume an 8 bit slave address. Need - * to shift right by 1 bit. - */ - inst |= INST_DEVADDRVAL(slave_addr >> 1); + inst |= INST_DEVADDRVAL(I2C_GET_ADDR__7b(slave_addr__7bf)); inst |= INST_RWDEVADDR; } @@ -281,8 +276,9 @@ static uint32_t i2cm_create_inst(int slave_addr, int is_write, return inst; } -static int i2cm_execute_sequence(int port, int slave_addr, const uint8_t *out, - int out_size, uint8_t *in, int in_size, +static int i2cm_execute_sequence__7bf(int port, int slave_addr__7bf, + const uint8_t *out, int out_size, + uint8_t *in, int in_size, int flags) { int rv; @@ -313,7 +309,7 @@ static int i2cm_execute_sequence(int port, int slave_addr, const uint8_t *out, seq_flags &= ~I2C_XFER_STOP; /* Build sequence instruction */ - inst = i2cm_create_inst(slave_addr, is_write, + inst = i2cm_create_inst__7bf(slave_addr__7bf, is_write, batch_size, seq_flags); /* If this is a write - copy data into the FIFO. */ @@ -357,7 +353,8 @@ static int i2cm_execute_sequence(int port, int slave_addr, const uint8_t *out, /* Perform an i2c transaction. */ -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int chip_i2c_xfer__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { int rv; @@ -379,14 +376,14 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, if (out_size) { /* Process write before read. */ - rv = i2cm_execute_sequence(port, slave_addr, out, + rv = i2cm_execute_sequence__7bf(port, slave_addr__7bf, out, out_size, NULL, 0, flags); if (rv != EC_SUCCESS) return rv; } if (in_size) - rv = i2cm_execute_sequence(port, slave_addr, + rv = i2cm_execute_sequence__7bf(port, slave_addr__7bf, NULL, 0, in, in_size, flags); return rv; diff --git a/chip/host/i2c.c b/chip/host/i2c.c index 72960c789d..af80926223 100644 --- a/chip/host/i2c.c +++ b/chip/host/i2c.c @@ -14,7 +14,7 @@ struct i2c_dev { int port; - int slave_addr; + uint16_t slave_addr__7bf; int valid; }; @@ -28,7 +28,7 @@ static void detach_init(void) } DECLARE_HOOK(HOOK_INIT, detach_init, HOOK_PRIO_FIRST); -int test_detach_i2c(int port, int slave_addr) +int test_detach_i2c__7bf(const int port, const uint16_t slave_addr__7bf) { int i; @@ -40,20 +40,20 @@ int test_detach_i2c(int port, int slave_addr) return EC_ERROR_OVERFLOW; detached_devs[i].port = port; - detached_devs[i].slave_addr = slave_addr; + detached_devs[i].slave_addr__7bf = slave_addr__7bf; detached_devs[i].valid = 1; return EC_SUCCESS; } -int test_attach_i2c(int port, int slave_addr) +int test_attach_i2c__7bf(const int port, const uint16_t slave_addr__7bf) { int i; for (i = 0; i < MAX_DETACHED_DEV_COUNT; ++i) if (detached_devs[i].valid && detached_devs[i].port == port && - detached_devs[i].slave_addr == slave_addr) + detached_devs[i].slave_addr__7bf == slave_addr__7bf) break; if (i == MAX_DETACHED_DEV_COUNT) @@ -63,28 +63,31 @@ int test_attach_i2c(int port, int slave_addr) return EC_SUCCESS; } -static int test_check_detached(int port, int slave_addr) +static int test_check_detached__7bf(const int port, + const uint16_t slave_addr__7bf) { int i; for (i = 0; i < MAX_DETACHED_DEV_COUNT; ++i) if (detached_devs[i].valid && detached_devs[i].port == port && - detached_devs[i].slave_addr == slave_addr) + detached_devs[i].slave_addr__7bf == slave_addr__7bf) return 1; return 0; } -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int chip_i2c_xfer__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { const struct test_i2c_xfer *p; int rv; - if (test_check_detached(port, slave_addr)) + if (test_check_detached__7bf(port, slave_addr__7bf)) return EC_ERROR_UNKNOWN; for (p = __test_i2c_xfer; p < __test_i2c_xfer_end; ++p) { - rv = p->routine(port, slave_addr, out, out_size, + rv = p->routine__7bf(port, slave_addr__7bf, + out, out_size, in, in_size, flags); if (rv != EC_ERROR_INVAL) return rv; diff --git a/chip/ish/i2c.c b/chip/ish/i2c.c index 07da8638d2..fa3aca627a 100644 --- a/chip/ish/i2c.c +++ b/chip/ish/i2c.c @@ -150,22 +150,19 @@ static void i2c_intr_switch(uint32_t *base, int mode) } } -static void i2c_init_transaction(struct i2c_context *ctx, - uint8_t slave_addr, uint8_t flags) +static void i2c_init_transaction__7b(struct i2c_context *ctx, + uint16_t slave_addr__7b, uint8_t flags) { uint32_t con_value; uint32_t *base = ctx->base; struct i2c_bus_info *bus_info = &board_config[ctx->bus]; uint32_t clk_in_val = clk_in[bus_freq[ctx->bus]]; - /* Convert 8-bit slave addrees to 7-bit for driver expectation*/ - slave_addr >>= 1; - /* disable interrupts */ i2c_intr_switch(base, DISABLE_INT); i2c_mmio_write(base, IC_ENABLE, IC_ENABLE_DISABLE); - i2c_mmio_write(base, IC_TAR, (slave_addr << IC_TAR_OFFSET) | + i2c_mmio_write(base, IC_TAR, (slave_addr__7b << IC_TAR_OFFSET) | TAR_SPECIAL_VAL | IC_10BITADDR_MASTER_VAL); /* set Clock SCL Count */ @@ -289,7 +286,8 @@ static void i2c_write_read_commands(uint32_t *base, uint8_t len, int more_data, } } -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int chip_i2c_xfer__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { int i; @@ -297,7 +295,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, uint64_t expire_ts; struct i2c_context *ctx; ssize_t curr_index = 0; - + uint16_t addr__7b = I2C_GET_ADDR__7b(slave_addr__7bf); int begin_indx; uint8_t repeat_start = 0; @@ -311,7 +309,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, * Address cannot be any of the reserved address locations: * 0x00 to 0x07 or 0x78 to 0x7f. */ - if (slave_addr <= 0x0F || (slave_addr >= 0xF0 && slave_addr <= 0xFF)) + if (addr__7b <= 0x07 || (addr__7b >= 0x78 && addr__7b <= 0x7F)) return EC_ERROR_INVAL; /* assume that if both out_size and in_size are not zero, @@ -325,7 +323,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, total_len = in_size + out_size; - i2c_init_transaction(ctx, slave_addr, repeat_start); + i2c_init_transaction__7b(ctx, addr__7b, repeat_start); /* Write W data */ if (out_size) diff --git a/chip/it83xx/i2c.c b/chip/it83xx/i2c.c index 48d13d5fdd..6383b773d2 100644 --- a/chip/it83xx/i2c.c +++ b/chip/it83xx/i2c.c @@ -194,7 +194,7 @@ struct i2c_port_data { int widx; /* Index into output data */ int ridx; /* Index into input data */ int err; /* Error code, if any */ - uint8_t addr; /* address of device */ + uint8_t addr__8b; /* address of device */ uint32_t timeout_us; /* Transaction timeout, or 0 to use default */ uint8_t freq; /* Frequency setting */ @@ -274,7 +274,7 @@ static void i2c_w2r_change_direction(int p) } static void i2c_pio_trans_data(int p, enum enhanced_i2c_transfer_direct direct, - uint8_t data, int first_byte) + uint8_t data, int first_byte) { struct i2c_port_data *pd = pdata + p; int p_ch; @@ -319,7 +319,7 @@ static int i2c_tran_write(int p) * bit0, Direction of the host transfer. * bit[1:7}, Address of the targeted slave. */ - IT83XX_SMB_TRASLA(p) = pd->addr; + IT83XX_SMB_TRASLA(p) = pd->addr__8b; /* Send first byte */ IT83XX_SMB_HOBDB(p) = *(pd->out++); pd->widx++; @@ -379,7 +379,7 @@ static int i2c_tran_read(int p) * bit0, Direction of the host transfer. * bit[1:7}, Address of the targeted slave. */ - IT83XX_SMB_TRASLA(p) = pd->addr | 0x01; + IT83XX_SMB_TRASLA(p) = pd->addr__8b | 0x01; /* clear start flag */ pd->flags &= ~I2C_XFER_START; /* @@ -468,7 +468,7 @@ static int enhanced_i2c_tran_write(int p) pd->flags &= ~I2C_XFER_START; enhanced_i2c_start(p); /* Send ID */ - i2c_pio_trans_data(p, TX_DIRECT, pd->addr, 1); + i2c_pio_trans_data(p, TX_DIRECT, pd->addr__8b, 1); } else { /* Host has completed the transmission of a byte */ if (pd->widx < pd->out_size) { @@ -488,7 +488,8 @@ static int enhanced_i2c_tran_write(int p) /* Write to read protocol */ pd->i2ccs = I2C_CH_REPEAT_START; /* Repeat Start */ - i2c_pio_trans_data(p, RX_DIRECT, pd->addr, 1); + i2c_pio_trans_data(p, RX_DIRECT, + pd->addr__8b, 1); } else { if (pd->flags & I2C_XFER_STOP) { IT83XX_I2C_CTR(p_ch) = E_FINISH; @@ -520,7 +521,7 @@ static int enhanced_i2c_tran_read(int p) /* Direct read */ pd->i2ccs = I2C_CH_WAIT_READ; /* Send ID */ - i2c_pio_trans_data(p, RX_DIRECT, pd->addr, 1); + i2c_pio_trans_data(p, RX_DIRECT, pd->addr__8b, 1); } else { if (pd->i2ccs) { if (pd->i2ccs == I2C_CH_REPEAT_START) { @@ -537,7 +538,8 @@ static int enhanced_i2c_tran_read(int p) /* Write to read */ pd->i2ccs = I2C_CH_WAIT_READ; /* Send ID */ - i2c_pio_trans_data(p, RX_DIRECT, pd->addr, 1); + i2c_pio_trans_data(p, RX_DIRECT, + pd->addr__8b, 1); task_enable_irq(i2c_ctrl_regs[p].irq); } } else { @@ -639,8 +641,9 @@ int i2c_is_busy(int port) return (IT83XX_I2C_STR(p_ch) & E_HOSTA_BB); } -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, - uint8_t *in, int in_size, int flags) +int chip_i2c_xfer__7bf(int port, uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, + uint8_t *in, int in_size, int flags) { struct i2c_port_data *pd = pdata + port; uint32_t events = 0; @@ -662,7 +665,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, pd->widx = 0; pd->ridx = 0; pd->err = 0; - pd->addr = slave_addr; + pd->addr__8b = I2C_GET_ADDR__7b(slave_addr__7bf) << 1; /* Make sure we're in a good state to start */ if ((flags & I2C_XFER_START) && (i2c_is_busy(port) diff --git a/chip/lm4/i2c.c b/chip/lm4/i2c.c index 6e88d9ee5b..f831997e68 100644 --- a/chip/lm4/i2c.c +++ b/chip/lm4/i2c.c @@ -165,7 +165,8 @@ int i2c_do_work(int port) return 0; } -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int chip_i2c_xfer__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { struct i2c_port_data *pd = pdata + port; @@ -191,11 +192,11 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, uint32_t tpr = LM4_I2C_MTPR(port); CPRINTS("I2C%d Addr:%02X bad status 0x%02x, SCL=%d, SDA=%d", - port, - slave_addr, - reg_mcs, - i2c_get_line_levels(port) & I2C_LINE_SCL_HIGH, - i2c_get_line_levels(port) & I2C_LINE_SDA_HIGH); + port, + I2C_GET_ADDR__7b(slave_addr__7bf), + reg_mcs, + i2c_get_line_levels(port) & I2C_LINE_SCL_HIGH, + i2c_get_line_levels(port) & I2C_LINE_SDA_HIGH); /* Attempt to unwedge the port. */ i2c_unwedge(port); @@ -218,7 +219,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, } /* Set slave address for transmit */ - LM4_I2C_MSA(port) = slave_addr & 0xff; + LM4_I2C_MSA(port) = (I2C_GET_ADDR__7b(slave_addr__7bf) << 1) & 0xff; /* Enable interrupts */ pd->task_waiting = task_get_current(); diff --git a/chip/mchp/i2c.c b/chip/mchp/i2c.c index 489d374195..96a0914a4b 100644 --- a/chip/mchp/i2c.c +++ b/chip/mchp/i2c.c @@ -132,7 +132,7 @@ static struct { uint32_t i2c_complete; /* ISR write */ uint32_t flags; uint8_t port; - uint8_t slv_addr; + uint8_t slv_addr__8b; uint8_t ctrl; uint8_t hwsts; uint8_t hwsts2; @@ -545,7 +545,7 @@ static int i2c_mtx(int ctrl) cdata[ctrl].flags |= (1ul << 1); if (cdata[ctrl].xflags & I2C_XFER_START) { cdata[ctrl].flags |= (1ul << 2); - MCHP_I2C_DATA(ctrl) = cdata[ctrl].slv_addr; + MCHP_I2C_DATA(ctrl) = cdata[ctrl].slv_addr__8b; /* Clock out the slave address, sending START bit */ MCHP_I2C_CTRL(ctrl) = CTRL_PIN | CTRL_ESO | CTRL_ENI | CTRL_ACK | CTRL_STA; @@ -629,7 +629,7 @@ static int i2c_mrx_start(int ctrl) /* Repeated-START then address */ MCHP_I2C_CTRL(ctrl) = u8; } - MCHP_I2C_DATA(ctrl) = cdata[ctrl].slv_addr | 0x01; + MCHP_I2C_DATA(ctrl) = cdata[ctrl].slv_addr__8b | 0x01; if (cdata[ctrl].transaction_state == I2C_TRANSACTION_STOPPED) { cdata[ctrl].flags |= (1ul << 6); /* address then START */ @@ -716,8 +716,9 @@ static int i2c_mrx_data(int ctrl) /* * Called from common/i2c_master */ -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, - int out_size, uint8_t *in, int in_size, int flags) +int chip_i2c_xfer__7bf(int port, uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, + uint8_t *in, int in_size, int flags) { int ctrl; int ret_done; @@ -739,8 +740,8 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, cdata[ctrl].hwsts2 = 0; cdata[ctrl].hwsts3 = 0; cdata[ctrl].hwsts4 = 0; - cdata[ctrl].port = (uint8_t)(port & 0xff); - cdata[ctrl].slv_addr = (uint8_t)(slave_addr & 0xff); + cdata[ctrl].port = port & 0xff; + cdata[ctrl].slv_addr__8b = I2C_GET_ADDR__7b(slave_addr__7bf) << 1; cdata[ctrl].out_size = out_size; cdata[ctrl].outp = out; cdata[ctrl].in_size = in_size; diff --git a/chip/mec1322/i2c.c b/chip/mec1322/i2c.c index d5c3692b3f..4920070432 100644 --- a/chip/mec1322/i2c.c +++ b/chip/mec1322/i2c.c @@ -236,7 +236,9 @@ static inline void push_in_buf(uint8_t **in, uint8_t val, int skip) } } -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int chip_i2c_xfer__7bf(const int port, + const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { int i; @@ -284,7 +286,9 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, if (out_size) { if (send_start) { - MEC1322_I2C_DATA(controller) = (uint8_t)slave_addr; + MEC1322_I2C_DATA(controller) = + (uint8_t)(I2C_GET_ADDR__7b(slave_addr__7bf) + << 1); /* Clock out the slave address, sending START bit */ MEC1322_I2C_CTRL(controller) = CTRL_PIN | CTRL_ESO | @@ -327,8 +331,10 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, CTRL_ACK | CTRL_ENI; - MEC1322_I2C_DATA(controller) = (uint8_t)slave_addr - | 0x01; + MEC1322_I2C_DATA(controller) = + (uint8_t)(I2C_GET_ADDR__7b(slave_addr__7bf) + << 1) + | 0x01; /* New transaction case, clock out slave address. */ if (cdata[controller].transaction_state == diff --git a/chip/npcx/i2c.c b/chip/npcx/i2c.c index 0b99f24270..23023abf1d 100644 --- a/chip/npcx/i2c.c +++ b/chip/npcx/i2c.c @@ -84,7 +84,7 @@ struct i2c_status { uint16_t sz_txbuf; /* Size of Tx buffer in bytes */ uint16_t sz_rxbuf; /* Size of rx buffer in bytes */ uint16_t idx_buf; /* Current index of Tx/Rx buffer */ - uint8_t slave_addr;/* Target slave address */ + uint8_t slave_addr__7bf;/* Target slave address */ enum smb_oper_state_t oper_state;/* Smbus operation state */ enum smb_error err_code; /* Error code */ int task_waiting; /* Task waiting on controller */ @@ -344,10 +344,10 @@ void i2c_done(int controller) static void i2c_handle_sda_irq(int controller) { volatile struct i2c_status *p_status = i2c_stsobjs + controller; + uint8_t addr__8b = I2C_GET_ADDR__7b(p_status->slave_addr__7bf) << 1; /* 1 Issue Start is successful ie. write address byte */ if (p_status->oper_state == SMB_MASTER_START || p_status->oper_state == SMB_REPEAT_START) { - uint8_t addr = p_status->slave_addr; /* Prepare address byte */ if (p_status->sz_txbuf == 0) {/* Receive mode */ p_status->oper_state = SMB_READ_OPER; @@ -360,12 +360,12 @@ static void i2c_handle_sda_irq(int controller) I2C_STALL(controller); /* Write the address to the bus R bit*/ - I2C_WRITE_BYTE(controller, (addr | 0x1)); + I2C_WRITE_BYTE(controller, (addr__8b | 0x1)); CPRINTS("-ARR-0x%02x", addr); } else {/* Transmit mode */ p_status->oper_state = SMB_WRITE_OPER; /* Write the address to the bus W bit*/ - I2C_WRITE_BYTE(controller, addr); + I2C_WRITE_BYTE(controller, addr__8b); CPRINTS("-ARW-0x%02x", addr); } /* Completed handling START condition */ @@ -380,7 +380,6 @@ static void i2c_handle_sda_irq(int controller) i2c_done(controller); /* need to restart & send slave address immediately */ else { - uint8_t addr_byte = p_status->slave_addr; /* * Prepare address byte * and start to receive bytes @@ -405,7 +404,8 @@ static void i2c_handle_sda_irq(int controller) CPUTS("-GNA"); } /* Write the address to the bus R bit*/ - I2C_WRITE_BYTE(controller, (addr_byte | 0x1)); + I2C_WRITE_BYTE(controller, + (addr__8b | 0x1)); CPUTS("-ARR"); } } @@ -609,7 +609,9 @@ void i2c_set_timeout(int port, uint32_t timeout) timeout ? timeout : I2C_TIMEOUT_DEFAULT_US; } -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int chip_i2c_xfer__7bf(const int port, + const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { volatile struct i2c_status *p_status; @@ -637,13 +639,8 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, p_status->sz_txbuf = out_size; p_status->rx_buf = in; p_status->sz_rxbuf = in_size; -#if I2C_7BITS_ADDR - /* Set slave address from 7-bits to 8-bits */ - p_status->slave_addr = (slave_addr<<1); -#else - /* Set slave address (8-bits) */ - p_status->slave_addr = slave_addr; -#endif + p_status->slave_addr__7bf = slave_addr__7bf; + /* Reset index & error */ p_status->idx_buf = 0; p_status->err_code = SMB_OK; diff --git a/chip/nrf51/i2c.c b/chip/nrf51/i2c.c index 440506511b..7f4903ee1b 100644 --- a/chip/nrf51/i2c.c +++ b/chip/nrf51/i2c.c @@ -141,13 +141,13 @@ static void handle_i2c_error(int port, int rv) i2c_recover(port); } -static int i2c_master_write(int port, int slave_addr, const uint8_t *data, - int size, int stop) +static int i2c_master_write__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *data, int size, int stop) { int bytes_sent; int timeout = I2C_TIMEOUT; - NRF51_TWI_ADDRESS(port) = slave_addr >> 1; + NRF51_TWI_ADDRESS__7b(port) = I2C_GET_ADDR__7b(slave_addr__7bf); /* Clear the sent bit */ NRF51_TWI_TXDSENT(port) = 0; @@ -187,12 +187,13 @@ static int i2c_master_write(int port, int slave_addr, const uint8_t *data, return EC_SUCCESS; } -static int i2c_master_read(int port, int slave_addr, uint8_t *data, int size) +static int i2c_master_read__7bf(const int port, const uint16_t slave__addr__7bf, + uint8_t *data, int size) { int curr_byte; int timeout = I2C_TIMEOUT; - NRF51_TWI_ADDRESS(port) = slave_addr >> 1; + NRF51_TWI_ADDRESS__7b(port) = I2C_GET_ADDR__7b(slave_addr__7bf); if (size == 1) /* Last byte: stop after this one. */ NRF51_PPI_TEP(i2c_ppi_chan[port]) = @@ -252,7 +253,8 @@ static int i2c_master_read(int port, int slave_addr, uint8_t *data, int size) return EC_SUCCESS; } -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, +int chip_i2c_xfer__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *out, int out_bytes, uint8_t *in, int in_bytes, int flags) { int rv = EC_SUCCESS; @@ -261,10 +263,12 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, ASSERT(in || !in_bytes); if (out_bytes) - rv = i2c_master_write(port, slave_addr, out, out_bytes, - in_bytes ? 0 : 1); + rv = i2c_master_write__7bf(port, slave_addr__7bf, + out, out_bytes, + in_bytes ? 0 : 1); if (rv == EC_SUCCESS && in_bytes) - rv = i2c_master_read(port, slave_addr, in, in_bytes); + rv = i2c_master_read__7bf(port, slave_addr__7bf, + in, in_bytes); handle_i2c_error(port, rv); diff --git a/chip/stm32/i2c-stm32f0.c b/chip/stm32/i2c-stm32f0.c index 9a63fbaf5b..e2aa3f8af9 100644 --- a/chip/stm32/i2c-stm32f0.c +++ b/chip/stm32/i2c-stm32f0.c @@ -27,7 +27,7 @@ /* Transmit timeout in microseconds */ #define I2C_TX_TIMEOUT_MASTER (10 * MSEC) -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF #if (I2C_PORT_EC == STM32_I2C1_PORT) #define IRQ_SLAVE STM32_IRQ_I2C1 #else @@ -146,7 +146,7 @@ static void i2c_init_port(const struct i2c_port_t *p) STM32_RCC_APB1ENR |= 1 << (21 + port); if (port == STM32_I2C1_PORT) { -#if defined(CONFIG_HOSTCMD_I2C_SLAVE_ADDR) && \ +#if defined(CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF) && \ defined(CONFIG_LOW_POWER_IDLE) && \ (I2C_PORT_EC == STM32_I2C1_PORT) /* @@ -189,7 +189,7 @@ defined(CONFIG_LOW_POWER_IDLE) && \ } /*****************************************************************************/ -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF /* Host command slave */ /* * Buffer for received host command packets (including prefix byte on request, @@ -426,9 +426,11 @@ DECLARE_IRQ(IRQ_SLAVE, i2c2_event_interrupt, 2); /*****************************************************************************/ /* Interface */ -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, +int chip_i2c_xfer__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *out, int out_bytes, uint8_t *in, int in_bytes, int flags) { + int addr__8b = I2C_GET_ADDR__7b(slave_addr__7bf) << 1; int rv = EC_SUCCESS; int i; int xfer_start = flags & I2C_XFER_START; @@ -436,7 +438,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, #if defined(CONFIG_I2C_SCL_GATE_ADDR) && defined(CONFIG_I2C_SCL_GATE_PORT) if (port == CONFIG_I2C_SCL_GATE_PORT && - slave_addr == CONFIG_I2C_SCL_GATE_ADDR) + slave_addr__7bf == CONFIG_I2C_SCL_GATE_ADDR__7BF) gpio_set_level(CONFIG_I2C_SCL_GATE_GPIO, 1); #endif @@ -457,7 +459,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, * NBYTES again. if we are starting, then set START bit. */ STM32_I2C_CR2(port) = ((out_bytes & 0xFF) << 16) - | slave_addr + | addr__8b | ((in_bytes == 0 && xfer_stop) ? STM32_I2C_CR2_AUTOEND : 0) | ((in_bytes == 0 && !xfer_stop) ? @@ -486,7 +488,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, * set START bit to send (re)start and begin read transaction. */ STM32_I2C_CR2(port) = ((in_bytes & 0xFF) << 16) - | STM32_I2C_CR2_RD_WRN | slave_addr + | STM32_I2C_CR2_RD_WRN | addr__8b | (xfer_stop ? STM32_I2C_CR2_AUTOEND : 0) | (!xfer_stop ? STM32_I2C_CR2_RELOAD : 0) | (out_bytes || xfer_start ? STM32_I2C_CR2_START : 0); @@ -543,7 +545,7 @@ xfer_exit: #ifdef CONFIG_I2C_SCL_GATE_ADDR if (port == CONFIG_I2C_SCL_GATE_PORT && - slave_addr == CONFIG_I2C_SCL_GATE_ADDR) + slave_addr__7bf == CONFIG_I2C_SCL_GATE_ADDR__7BF) gpio_set_level(CONFIG_I2C_SCL_GATE_GPIO, 0); #endif @@ -586,7 +588,7 @@ static void i2c_init(void) for (i = 0; i < i2c_ports_used; i++, p++) i2c_init_port(p); -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF STM32_I2C_CR1(I2C_PORT_EC) |= STM32_I2C_CR1_RXIE | STM32_I2C_CR1_ERRIE | STM32_I2C_CR1_ADDRIE | STM32_I2C_CR1_STOPIE | STM32_I2C_CR1_NACKIE; @@ -598,13 +600,15 @@ static void i2c_init(void) */ STM32_I2C_CR1(I2C_PORT_EC) |= STM32_I2C_CR1_WUPEN; #endif - STM32_I2C_OAR1(I2C_PORT_EC) = 0x8000 | CONFIG_HOSTCMD_I2C_SLAVE_ADDR; + STM32_I2C_OAR1(I2C_PORT_EC) = 0x8000 + | (I2C_GET_ADDR__7b(CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF) << 1); #ifdef TCPCI_I2C_SLAVE /* * Configure TCPC address with OA2[1] masked so that we respond * to CONFIG_TCPC_I2C_BASE_ADDR and CONFIG_TCPC_I2C_BASE_ADDR + 2. */ - STM32_I2C_OAR2(I2C_PORT_EC) = 0x8100 | CONFIG_TCPC_I2C_BASE_ADDR; + STM32_I2C_OAR2(I2C_PORT_EC) = 0x8100 + | (I2C_GET_ADDR__7b(CONFIG_TCPC_I2C_BASE_ADDR__7BF) << 1); #endif task_enable_irq(IRQ_SLAVE); #endif diff --git a/chip/stm32/i2c-stm32f4.c b/chip/stm32/i2c-stm32f4.c index ee6460936c..6b774e829b 100644 --- a/chip/stm32/i2c-stm32f4.c +++ b/chip/stm32/i2c-stm32f4.c @@ -25,7 +25,7 @@ /* Transmit timeout in microseconds */ #define I2C_TX_TIMEOUT_MASTER (10 * MSEC) -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF #if (I2C_PORT_EC == STM32_I2C1_PORT) #define IRQ_SLAVE_EV STM32_IRQ_I2C1_EV #define IRQ_SLAVE_ER STM32_IRQ_I2C1_ER @@ -171,7 +171,7 @@ static int wait_sr1(int port, int mask) * * @return Non-zero if error. */ -static int send_start(int port, int slave_addr) +static int send_start__8b(const int port, const uint16_t slave_addr__8b) { int rv; @@ -182,7 +182,7 @@ static int send_start(int port, int slave_addr) return I2C_ERROR_FAILED_START; /* Write slave address */ - STM32_I2C_DR(port) = slave_addr & 0xff; + STM32_I2C_DR(port) = slave_addr__8b; rv = wait_sr1_poll(port, STM32_I2C_SR1_ADDR, SET, 1); if (rv) return rv; @@ -263,7 +263,8 @@ static int wait_fmpi2c_isr(int port, int mask) * * @return Non-zero if error. */ -static int send_fmpi2c_start(int port, int slave_addr, int size, int is_read) +static int send_fmpi2c_start__8b(const int port, const uint16_t slave_addr__8b, + int size, int is_read) { uint32_t reg; @@ -273,7 +274,7 @@ static int send_fmpi2c_start(int port, int slave_addr, int size, int is_read) FMPI2C_CR2_RELOAD | FMPI2C_CR2_AUTOEND | FMPI2C_CR2_RD_WRN | FMPI2C_CR2_START | FMPI2C_CR2_STOP); reg |= FMPI2C_CR2_START | FMPI2C_CR2_AUTOEND | - FMPI2C_CR2_SADD(slave_addr) | FMPI2C_CR2_SIZE(size) | + slave_addr__8b | FMPI2C_CR2_SIZE(size) | (is_read ? FMPI2C_CR2_RD_WRN : 0); STM32_FMPI2C_CR2(port) = reg; @@ -400,8 +401,9 @@ static void fmpi2c_clear_regs(int port) * * @return EC_SUCCESS on success. */ -static int chip_fmpi2c_xfer(int port, int slave_addr, const uint8_t *out, - int out_bytes, uint8_t *in, int in_bytes, int flags) +static int chip_fmpi2c_xfer__8b(const int port, const uint16_t slave_addr__8b, + const uint8_t *out, int out_bytes, + uint8_t *in, int in_bytes, int flags) { int started = (flags & I2C_XFER_START) ? 0 : 1; int rv = EC_SUCCESS; @@ -420,8 +422,8 @@ static int chip_fmpi2c_xfer(int port, int slave_addr, const uint8_t *out, /* No out bytes and no in bytes means just check for active */ if (out_bytes || !in_bytes) { - rv = send_fmpi2c_start( - port, slave_addr, out_bytes, FMPI2C_WRITE); + rv = send_fmpi2c_start__8b( + port, slave_addr__8b, out_bytes, FMPI2C_WRITE); if (rv) goto xfer_exit; @@ -446,8 +448,8 @@ static int chip_fmpi2c_xfer(int port, int slave_addr, const uint8_t *out, dma_start_rx(dma, in_bytes, in); i2c_dma_enable_tc_interrupt(dma->channel, port); - rv_start = send_fmpi2c_start( - port, slave_addr, in_bytes, FMPI2C_READ); + rv_start = send_fmpi2c_start__8b( + port, slave_addr__8b, in_bytes, FMPI2C_READ); if (rv_start) goto xfer_exit; @@ -551,9 +553,11 @@ static void i2c_clear_regs(int port) */ /* Perform an i2c transaction. */ -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, +int chip_i2c_xfer__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *out, int out_bytes, uint8_t *in, int in_bytes, int flags) { + int addr__8b = I2C_GET_ADDR__7b(slave_addr__7bf) << 1; int started = (flags & I2C_XFER_START) ? 0 : 1; int rv = EC_SUCCESS; int i; @@ -564,15 +568,16 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, ASSERT(!started); if (p->port == STM32F4_FMPI2C_PORT) { - return chip_fmpi2c_xfer(port, slave_addr, out, out_bytes, - in, in_bytes, flags); + return chip_fmpi2c_xfer__8b(port, addr__8b, + out, out_bytes, + in, in_bytes, flags); } i2c_clear_regs(port); /* No out bytes and no in bytes means just check for active */ if (out_bytes || !in_bytes) { - rv = send_start(port, slave_addr); + rv = send_start__8b(port, addr__8b); if (rv) goto xfer_exit; @@ -611,7 +616,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, STM32_I2C_CR2(port) |= STM32_I2C_CR2_LAST; STM32_I2C_CR2(port) |= STM32_I2C_CR2_DMAEN; - rv_start = send_start(port, slave_addr | 0x01); + rv_start = send_start__8b(port, addr__8b | 0x01); if ((in_bytes == 1) && (flags & I2C_XFER_STOP)) STM32_I2C_CR1(port) |= STM32_I2C_CR1_STOP; @@ -755,7 +760,7 @@ DECLARE_HOOK(HOOK_FREQ_CHANGE, i2c_freq_change_hook, HOOK_PRIO_DEFAULT); /*****************************************************************************/ /* Slave */ -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF /* Host command slave */ /* * Buffer for received host command packets (including prefix byte on request, @@ -834,7 +839,7 @@ static void i2c_process_command(void) host_packet_receive(&i2c_packet); } -#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR +#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR__7BF static void i2c_send_board_response(int len) { /* host_buffer data range, beyond this length, will return 0xec */ @@ -858,7 +863,7 @@ static void i2c_event_handler(int port) volatile uint32_t i2c_sr2; volatile uint32_t i2c_sr1; static int rx_pending, buf_idx; - static uint16_t addr; + static uint16_t addr__8b; volatile uint32_t dummy __attribute__((unused)); @@ -883,15 +888,15 @@ static void i2c_event_handler(int port) /* Transfer matched our slave address */ if (i2c_sr1 & STM32_I2C_SR1_ADDR) { - addr = ((i2c_sr2 & STM32_I2C_SR2_DUALF) ? + addr__8b = ((i2c_sr2 & STM32_I2C_SR2_DUALF) ? STM32_I2C_OAR2(port) : STM32_I2C_OAR1(port)) & 0xfe; if (i2c_sr2 & STM32_I2C_SR2_TRA) { /* Transmitter slave */ i2c_sr1 |= STM32_I2C_SR1_TXE; -#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR +#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR__7BF if (!rx_pending && !tx_pending) { tx_pending = 1; - i2c_process_board_command(1, addr, 0); + i2c_process_board_command(1, addr__8b, 0); } #endif } else { @@ -926,9 +931,11 @@ static void i2c_event_handler(int port) host_i2c_resp_port = port; /* Disable buffer interrupt */ STM32_I2C_CR2(port) &= ~STM32_I2C_CR2_ITBUFEN; -#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR - if (addr == CONFIG_BOARD_I2C_SLAVE_ADDR) - i2c_process_board_command(1, addr, +#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR__7BF + if ((addr__8b >> 1) == + I2C_GET_ADDR__7b( + CONFIG_BOARD_I2C_SLAVE_ADDR__7BF)) + i2c_process_board_command(1, addr__8b, buf_idx); else #endif @@ -950,9 +957,11 @@ static void i2c_event_handler(int port) /* Disable buffer interrupt */ STM32_I2C_CR2(port) &= ~STM32_I2C_CR2_ITBUFEN; -#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR - if (rx_pending && addr == CONFIG_BOARD_I2C_SLAVE_ADDR) - i2c_process_board_command(0, addr, buf_idx); +#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR__7BF + if (rx_pending && + (addr__8b >> 1) == + I2C_GET_ADDR__7b(CONFIG_BOARD_I2C_SLAVE_ADDR__7BF)) + i2c_process_board_command(0, addr__8b, buf_idx); #endif rx_pending = 0; tx_pending = 0; @@ -987,7 +996,7 @@ static void i2c_init(void) i2c_init_port(p); -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF /* Enable ACK */ STM32_I2C_CR1(I2C_PORT_EC) |= STM32_I2C_CR1_ACK; /* Enable interrupts */ @@ -995,10 +1004,10 @@ static void i2c_init(void) | STM32_I2C_CR2_ITERREN; /* Setup host command slave */ STM32_I2C_OAR1(I2C_PORT_EC) = STM32_I2C_OAR1_B14 - | CONFIG_HOSTCMD_I2C_SLAVE_ADDR; -#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR + | (I2C_GET_ADDR__7b(CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF) << 1); +#ifdef CONFIG_BOARD_I2C_SLAVE_ADDR__7BF STM32_I2C_OAR2(I2C_PORT_EC) = STM32_I2C_OAR2_ENDUAL - | CONFIG_BOARD_I2C_SLAVE_ADDR; + | (I2C_GET_ADDR__7b(CONFIG_BOARD_I2C_SLAVE_ADDR__7BF) << 1); #endif task_enable_irq(IRQ_SLAVE_EV); task_enable_irq(IRQ_SLAVE_ER); diff --git a/chip/stm32/i2c-stm32l.c b/chip/stm32/i2c-stm32l.c index 42fe3513a9..d56d78d8eb 100644 --- a/chip/stm32/i2c-stm32l.c +++ b/chip/stm32/i2c-stm32l.c @@ -98,7 +98,7 @@ static int wait_sr1(int port, int mask) * * @return Non-zero if error. */ -static int send_start(int port, int slave_addr) +static int send_start__8b(int port, uint16_t slave_addr__8b) { int rv; @@ -110,7 +110,7 @@ static int send_start(int port, int slave_addr) return I2C_ERROR_FAILED_START; /* Write slave address */ - STM32_I2C_DR(port) = slave_addr & 0xff; + STM32_I2C_DR(port) = slave_addr__8b & 0xff; rv = wait_sr1(port, STM32_I2C_SR1_ADDR); if (rv) return rv; @@ -164,9 +164,12 @@ static void i2c_init_port(const struct i2c_port_t *p) /*****************************************************************************/ /* Interface */ -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, +int chip_i2c_xfer__7bf(const int port, + const uint16_t slave_addr__7bf, + const uint8_t *out, int out_bytes, uint8_t *in, int in_bytes, int flags) { + int addr__8b == I2C_GET_ADDR__7b(slave_addr__7bf) << 1; int started = (flags & I2C_XFER_START) ? 0 : 1; int rv = EC_SUCCESS; int i; @@ -193,7 +196,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, /* No out bytes and no in bytes means just check for active */ if (out_bytes || !in_bytes) { if (!started) { - rv = send_start(port, slave_addr); + rv = send_start__8b(port, addr__8b); if (rv) goto xfer_exit; } @@ -225,7 +228,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, STM32_I2C_CR1(port) |= STM32_I2C_CR1_ACK; if (!started) { - rv = send_start(port, slave_addr | 0x01); + rv = send_start__8b(port, addr__8b | 0x01); if (rv) goto xfer_exit; } diff --git a/chip/stm32/i2c-stm32l4.c b/chip/stm32/i2c-stm32l4.c index 06836dd547..e263394880 100644 --- a/chip/stm32/i2c-stm32l4.c +++ b/chip/stm32/i2c-stm32l4.c @@ -26,7 +26,7 @@ /* Transmit timeout in microseconds */ #define I2C_TX_TIMEOUT_MASTER (10 * MSEC) -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF #define I2C_SLAVE_ERROR_CODE 0xec #if (I2C_PORT_EC == STM32_I2C1_PORT) #define IRQ_SLAVE STM32_IRQ_I2C1 @@ -177,7 +177,7 @@ static void i2c_init_port(const struct i2c_port_t *p) /*****************************************************************************/ -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF static void i2c_event_handler(int port) { @@ -303,9 +303,11 @@ DECLARE_IRQ(IRQ_SLAVE, i2c_event_interrupt, 2); /*****************************************************************************/ /* Interface */ -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, +int chip_i2c_xfer__7bf(const int port, const uint16_t slave_addr__7bf, + const uint8_t *out, int out_bytes, uint8_t *in, int in_bytes, int flags) { + int addr__8b = I2C_GET_ADDR__7b(slave_addr__7bf) << 1; int rv = EC_SUCCESS; int i; int xfer_start = flags & I2C_XFER_START; @@ -328,7 +330,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, * NBYTES again. if we are starting, then set START bit. */ STM32_I2C_CR2(port) = ((out_bytes & 0xFF) << 16) - | slave_addr + | addr__8b | ((in_bytes == 0 && xfer_stop) ? STM32_I2C_CR2_AUTOEND : 0) | ((in_bytes == 0 && !xfer_stop) ? @@ -357,7 +359,7 @@ int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_bytes, * set START bit to send (re)start and begin read transaction. */ STM32_I2C_CR2(port) = ((in_bytes & 0xFF) << 16) - | STM32_I2C_CR2_RD_WRN | slave_addr + | STM32_I2C_CR2_RD_WRN | addr__8b | (xfer_stop ? STM32_I2C_CR2_AUTOEND : 0) | (!xfer_stop ? STM32_I2C_CR2_RELOAD : 0) | (out_bytes || xfer_start ? STM32_I2C_CR2_START : 0); @@ -451,11 +453,12 @@ static void i2c_init(void) for (i = 0; i < i2c_ports_used; i++, p++) i2c_init_port(p); -#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#ifdef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF STM32_I2C_CR1(I2C_PORT_EC) |= STM32_I2C_CR1_RXIE | STM32_I2C_CR1_ERRIE | STM32_I2C_CR1_ADDRIE | STM32_I2C_CR1_STOPIE | STM32_I2C_CR1_NACKIE; - STM32_I2C_OAR1(I2C_PORT_EC) = 0x8000 | CONFIG_HOSTCMD_I2C_SLAVE_ADDR; + STM32_I2C_OAR1(I2C_PORT_EC) = 0x8000 + | (I2C_GET_ADDR__7b(CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF) << 1); task_enable_irq(IRQ_SLAVE); #endif } diff --git a/chip/stm32/usb_power.c b/chip/stm32/usb_power.c index 7e4206e83b..4cf8bac99e 100644 --- a/chip/stm32/usb_power.c +++ b/chip/stm32/usb_power.c @@ -249,7 +249,7 @@ static int usb_power_state_addina(struct usb_power_config const *config, ina = state->ina_cfg + state->ina_count; ina->port = cmd->addina.port; - ina->addr = (cmd->addina.addr) << 1; /* 7 to 8 bit addr. */ + ina->addr__7bf = cmd->addina.addr__7bf; ina->rs = cmd->addina.rs; ina->type = cmd->addina.type; @@ -270,7 +270,7 @@ static int usb_power_state_addina(struct usb_power_config const *config, struct usb_power_ina_cfg *tmp = state->ina_cfg + i; if ((tmp->port == ina->port) && - (tmp->addr == ina->addr)) { + (tmp->addr__7bf == ina->addr__7bf)) { ina->shared = 1; tmp->shared = 1; } @@ -406,42 +406,46 @@ int reg_type_mapping(enum usb_power_ina_type ina_type) } } -uint16_t ina2xx_readagain(uint8_t port, uint8_t addr) +uint16_t ina2xx_readagain__7bf(uint8_t port, uint16_t slave_addr__7bf) { int res; uint16_t val; - res = i2c_xfer(port, addr, NULL, 0, (uint8_t *)&val, sizeof(uint16_t)); + res = i2c_xfer__7bf(port, slave_addr__7bf, + NULL, 0, (uint8_t *)&val, sizeof(uint16_t)); if (res) { CPRINTS("INA2XX I2C readagain failed p:%d a:%02x", - (int)port, (int)addr); + (int)port, (int)I2C_GET_ADDR__7b(slave_addr__7bf)); return 0x0bad; } return (val >> 8) | ((val & 0xff) << 8); } -uint16_t ina2xx_read(uint8_t port, uint8_t addr, uint8_t reg) +uint16_t ina2xx_read__7bf(uint8_t port, uint16_t slave_addr__7bf, + uint8_t reg) { int res; int val; - res = i2c_read16(port, addr, reg, &val); + res = i2c_read16__7bf(port, slave_addr__7bf, reg, &val); if (res) { CPRINTS("INA2XX I2C read failed p:%d a:%02x, r:%02x", - (int)port, (int)addr, (int)reg); + (int)port, (int)I2C_GET_ADDR__7b(slave_addr__7bf), + (int)reg); return 0x0bad; } return (val >> 8) | ((val & 0xff) << 8); } -int ina2xx_write(uint8_t port, uint8_t addr, uint8_t reg, uint16_t val) +int ina2xx_write__7bf(uint8_t port, uint16_t slave_addr__7bf, + uint8_t reg, uint16_t val) { int res; uint16_t be_val = (val >> 8) | ((val & 0xff) << 8); - res = i2c_write16(port, addr, reg, be_val); + res = i2c_write16__7bf(port, slave_addr__7bf, reg, be_val); if (res) CPRINTS("INA2XX I2C write failed"); return res; @@ -505,10 +509,13 @@ static int usb_power_init_inas(struct usb_power_config const *config) { int conf, cal; - conf = ina2xx_read(ina->port, ina->addr, INA231_REG_CONF); - cal = ina2xx_read(ina->port, ina->addr, INA231_REG_CAL); + conf = ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_CONF); + cal = ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_CAL); CPRINTS("[CAP] %d (%d,0x%02x): conf:%x, cal:%x", - i, ina->port, ina->addr, conf, cal); + i, ina->port, I2C_GET_ADDR__7b(ina->addr__7bf), + conf, cal); } #endif /* @@ -529,7 +536,8 @@ static int usb_power_init_inas(struct usb_power_config const *config) if (ina->scale == 0) return -1; value = (5120000 * 100) / (ina->scale * ina->rs); - ret = ina2xx_write(ina->port, ina->addr, INA231_REG_CAL, value); + ret = ina2xx_write__7bf(ina->port, ina->addr__7bf, + INA231_REG_CAL, value); if (ret != EC_SUCCESS) { CPRINTS("[CAP] usb_power_init_inas CAL FAIL: %d", ret); return ret; @@ -538,7 +546,8 @@ static int usb_power_init_inas(struct usb_power_config const *config) { int actual; - actual = ina2xx_read(ina->port, ina->addr, INA231_REG_CAL); + actual = ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_CAL); CPRINTS("[CAP] scale: %d uA/div, %d uW/div, cal:%x act:%x", ina->scale / 100, ina->scale*25/100, value, actual); } @@ -548,8 +557,8 @@ static int usb_power_init_inas(struct usb_power_config const *config) INA231_CONF_SHUNT_TIME(shunt_time) | INA231_CONF_BUS_TIME(shunt_time) | INA231_CONF_AVG(avg); - ret = ina2xx_write( - ina->port, ina->addr, INA231_REG_CONF, value); + ret = ina2xx_write__7bf(ina->port, ina->addr__7bf, + INA231_REG_CONF, value); if (ret != EC_SUCCESS) { CPRINTS("[CAP] usb_power_init_inas CONF FAIL: %d", ret); return ret; @@ -558,26 +567,31 @@ static int usb_power_init_inas(struct usb_power_config const *config) { int actual; - actual = ina2xx_read(ina->port, ina->addr, INA231_REG_CONF); + actual = ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_CONF); CPRINTS("[CAP] %d (%d,0x%02x): conf:%x, act:%x", - i, ina->port, ina->addr, value, actual); + i, ina->port, I2C_GET_ADDR__7b(ina->addr__7bf), + value, actual); } #endif #ifdef USB_POWER_VERBOSE { int busv_mv = - (ina2xx_read(ina->port, ina->addr, INA231_REG_BUSV) + (ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_BUSV) * 125) / 100; CPRINTS("[CAP] %d (%d,0x%02x): busv:%dmv", - i, ina->port, ina->addr, busv_mv); + i, ina->port, I2C_GET_ADDR__7b(ina->addr__7bf), + busv_mv); } #endif /* Initialize read from power register. This register address * will be cached and all ina2xx_readagain() calls will read * from the same address. */ - ina2xx_read(ina->port, ina->addr, reg_type_mapping(ina->type)); + ina2xx_read__7bf(ina->port, ina->addr__7bf, + reg_type_mapping(ina->type)); #ifdef USB_POWER_VERBOSE CPRINTS("[CAP] %d (%d,0x%02x): type:%d", (int)(ina->type)); #endif @@ -635,10 +649,11 @@ static int usb_power_get_samples(struct usb_power_config const *config) * transaction. */ if (ina->shared) - regval = ina2xx_read(ina->port, ina->addr, + regval = ina2xx_read__7bf(ina->port, ina->addr__7bf, reg_type_mapping(ina->type)); else - regval = ina2xx_readagain(ina->port, ina->addr); + regval = ina2xx_readagain__7bf(ina->port, + ina->addr__7bf); r->power[i] = regval; #ifdef USB_POWER_VERBOSE { @@ -647,10 +662,14 @@ static int usb_power_get_samples(struct usb_power_config const *config) int voltage; int bvoltage; - voltage = ina2xx_read(ina->port, ina->addr, INA231_REG_RSHV); - bvoltage = ina2xx_read(ina->port, ina->addr, INA231_REG_BUSV); - current = ina2xx_read(ina->port, ina->addr, INA231_REG_CURR); - power = ina2xx_read(ina->port, ina->addr, INA231_REG_PWR); + voltage = ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_RSHV); + bvoltage = ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_BUSV); + current = ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_CURR); + power = ina2xx_read__7bf(ina->port, ina->addr__7bf, + INA231_REG_PWR); { int uV = ((int)voltage * 25) / 10; int mV = ((int)bvoltage * 125) / 100; @@ -659,7 +678,8 @@ static int usb_power_get_samples(struct usb_power_config const *config) int uW = (((int)power * ina->scale*25)/100); CPRINTS("[CAP] %d (%d,0x%02x): %dmV / %dmO = %dmA", - i, ina->port, ina->addr, uV/1000, ina->rs, uA/1000); + i, ina->port, I2C_GET_ADDR__7b(ina->addr__7bf), + uV/1000, ina->rs, uA/1000); CPRINTS("[CAP] %duV %dmV %duA %dCuA " "%duW v:%04x, b:%04x, p:%04x", uV, mV, uA, CuA, uW, voltage, bvoltage, power); diff --git a/chip/stm32/usb_power.h b/chip/stm32/usb_power.h index ff76603e63..f2f1426691 100644 --- a/chip/stm32/usb_power.h +++ b/chip/stm32/usb_power.h @@ -138,7 +138,7 @@ struct usb_power_ina_cfg { /* i2c bus. TODO(nsanders): specify what kind of index. */ int port; /* 7-bit i2c addr */ - int addr; + uint16_t addr__7bf; /* Base voltage. mV */ int mv; @@ -243,7 +243,7 @@ struct __attribute__ ((__packed__)) usb_power_command_addina { uint16_t command; uint8_t port; uint8_t type; - uint8_t addr; + uint16_t addr__7bf; uint8_t extra; uint32_t rs; }; diff --git a/common/cbi.c b/common/cbi.c index d8feee3189..69c3298d42 100644 --- a/common/cbi.c +++ b/common/cbi.c @@ -88,8 +88,8 @@ static struct cbi_header * const head = (struct cbi_header *)cbi; static int read_eeprom(uint8_t offset, uint8_t *in, int in_size) { - return i2c_read_block(I2C_PORT_EEPROM, I2C_ADDR_EEPROM, offset, - in, in_size); + return i2c_read_block__7bf(I2C_PORT_EEPROM, I2C_ADDR_EEPROM__7bf, + offset, in, in_size); } /* @@ -244,8 +244,8 @@ static int write_board_info(void) while (rest > 0) { int size = MIN(EEPROM_PAGE_WRITE_SIZE, rest); int rv; - rv = i2c_write_block(I2C_PORT_EEPROM, I2C_ADDR_EEPROM, - p - cbi, p, size); + rv = i2c_write_block__7bf(I2C_PORT_EEPROM, I2C_ADDR_EEPROM__7bf, + p - cbi, p, size); if (rv) { CPRINTS("Failed to write for %d", rv); return rv; diff --git a/common/host_command_master.c b/common/host_command_master.c index 3786ecc235..57223f2346 100644 --- a/common/host_command_master.c +++ b/common/host_command_master.c @@ -81,9 +81,10 @@ static int pd_host_command_internal(int command, int version, */ i2c_lock(I2C_PORT_PD_MCU, 1); i2c_set_timeout(I2C_PORT_PD_MCU, PD_HOST_COMMAND_TIMEOUT_US); - ret = i2c_xfer_unlocked(I2C_PORT_PD_MCU, CONFIG_USB_PD_I2C_SLAVE_ADDR, - &req_buf[0], outsize + sizeof(rq) + 1, &resp_buf[0], - 2, I2C_XFER_START); + ret = i2c_xfer_unlocked__7bf(I2C_PORT_PD_MCU, + CONFIG_USB_PD_I2C_SLAVE_ADDR__7BF, + &req_buf[0], outsize + sizeof(rq) + 1, + &resp_buf[0], 2, I2C_XFER_START); i2c_set_timeout(I2C_PORT_PD_MCU, 0); if (ret) { i2c_lock(I2C_PORT_PD_MCU, 0); @@ -95,8 +96,9 @@ static int pd_host_command_internal(int command, int version, if (resp_len > (insize + sizeof(rs))) { /* Do a dummy read to generate stop condition */ - i2c_xfer_unlocked(I2C_PORT_PD_MCU, CONFIG_USB_PD_I2C_SLAVE_ADDR, - 0, 0, &resp_buf[2], 1, I2C_XFER_STOP); + i2c_xfer_unlocked__7bf(I2C_PORT_PD_MCU, + CONFIG_USB_PD_I2C_SLAVE_ADDR__7BF, + 0, 0, &resp_buf[2], 1, I2C_XFER_STOP); i2c_lock(I2C_PORT_PD_MCU, 0); CPRINTS("response size is too large %d > %d", resp_len, insize + sizeof(rs)); @@ -104,9 +106,10 @@ static int pd_host_command_internal(int command, int version, } /* Receive remaining data */ - ret = i2c_xfer_unlocked(I2C_PORT_PD_MCU, CONFIG_USB_PD_I2C_SLAVE_ADDR, - 0, 0, - &resp_buf[2], resp_len, I2C_XFER_STOP); + ret = i2c_xfer_unlocked__7bf(I2C_PORT_PD_MCU, + CONFIG_USB_PD_I2C_SLAVE_ADDR__7BF, + 0, 0, + &resp_buf[2], resp_len, I2C_XFER_STOP); i2c_lock(I2C_PORT_PD_MCU, 0); if (ret) { CPRINTS("i2c transaction 2 failed: %d", ret); diff --git a/common/i2c_master.c b/common/i2c_master.c index 2efd6e9450..bfb9e01c3c 100644 --- a/common/i2c_master.c +++ b/common/i2c_master.c @@ -57,7 +57,7 @@ static int i2c_port_is_locked(int port) } -const struct i2c_port_t *get_i2c_port(int port) +const struct i2c_port_t *get_i2c_port(const int port) { int i; @@ -70,26 +70,29 @@ const struct i2c_port_t *get_i2c_port(int port) return NULL; } -static int chip_i2c_xfer_with_notify(int port, int slave_addr, +static int chip_i2c_xfer_with_notify__7bf(const int port, + const uint16_t slave_addr__7bf, const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { int ret; if (IS_ENABLED(CONFIG_I2C_DEBUG)) - i2c_trace_notify(port, slave_addr, 0, out, out_size); + i2c_trace_notify__7bf(port, slave_addr__7bf, + 0, out, out_size); if (IS_ENABLED(CONFIG_I2C_XFER_BOARD_CALLBACK)) - i2c_start_xfer_notify(port, slave_addr); + i2c_start_xfer_notify__7bf(port, slave_addr__7bf); - ret = chip_i2c_xfer(port, slave_addr, out, out_size, in, in_size, - flags); + ret = chip_i2c_xfer__7bf(port, slave_addr__7bf, + out, out_size, in, in_size, flags); if (IS_ENABLED(CONFIG_I2C_XFER_BOARD_CALLBACK)) - i2c_end_xfer_notify(port, slave_addr); + i2c_end_xfer_notify__7bf(port, slave_addr__7bf); if (IS_ENABLED(CONFIG_I2C_DEBUG)) - i2c_trace_notify(port, slave_addr, 1, in, in_size); + i2c_trace_notify__7bf(port, slave_addr__7bf, + 1, in, in_size); return ret; } @@ -99,8 +102,10 @@ static int chip_i2c_xfer_with_notify(int port, int slave_addr, * Internal function that splits reading into multiple chip_i2c_xfer() calls * if in_size exceeds CONFIG_I2C_CHIP_MAX_READ_SIZE. */ -static int i2c_xfer_no_retry(int port, int slave_addr, const uint8_t *out, - int out_size, uint8_t *in, int in_size, int flags) +static int i2c_xfer_no_retry__7bf(const int port, + const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, + uint8_t *in, int in_size, int flags) { int ret; int out_flags = flags & I2C_XFER_START; @@ -108,13 +113,15 @@ static int i2c_xfer_no_retry(int port, int slave_addr, const uint8_t *out, in_size -= in_chunk_size; out_flags |= !in_size ? (flags & I2C_XFER_STOP) : 0; - ret = chip_i2c_xfer_with_notify(port, slave_addr, out, out_size, in, + ret = chip_i2c_xfer_with_notify__7bf(port, slave_addr__7bf, + out, out_size, in, in_chunk_size, out_flags); in += in_chunk_size; while (in_size && ret == EC_SUCCESS) { in_chunk_size = MIN(in_size, CONFIG_I2C_CHIP_MAX_READ_SIZE); in_size -= in_chunk_size; - ret = chip_i2c_xfer_with_notify(port, slave_addr, NULL, 0, in, + ret = chip_i2c_xfer_with_notify__7bf(port, slave_addr__7bf, + NULL, 0, in, in_chunk_size, !in_size ? (flags & I2C_XFER_STOP) : 0); in += in_chunk_size; } @@ -122,7 +129,8 @@ static int i2c_xfer_no_retry(int port, int slave_addr, const uint8_t *out, } #endif /* CONFIG_I2C_XFER_LARGE_READ */ -int i2c_xfer_unlocked(int port, int slave_addr, +int i2c_xfer_unlocked__7bf(const int port, + const uint16_t slave_addr__7bf, const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { @@ -136,11 +144,13 @@ int i2c_xfer_unlocked(int port, int slave_addr, for (i = 0; i <= CONFIG_I2C_NACK_RETRY_COUNT; i++) { #ifdef CONFIG_I2C_XFER_LARGE_READ - ret = i2c_xfer_no_retry(port, slave_addr, out, out_size, in, - in_size, flags); + ret = i2c_xfer_no_retry__7bf(port, slave_addr__7bf, + out, out_size, in, + in_size, flags); #else - ret = chip_i2c_xfer_with_notify(port, slave_addr, out, out_size, - in, in_size, flags); + ret = chip_i2c_xfer_with_notify__7bf(port, slave_addr__7bf, + out, out_size, + in, in_size, flags); #endif /* CONFIG_I2C_XFER_LARGE_READ */ if (ret != EC_ERROR_BUSY) break; @@ -148,14 +158,17 @@ int i2c_xfer_unlocked(int port, int slave_addr, return ret; } -int i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int i2c_xfer__7bf(const int port, + const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size) { int rv; i2c_lock(port, 1); - rv = i2c_xfer_unlocked(port, slave_addr, out, out_size, in, in_size, - I2C_XFER_SINGLE); + rv = i2c_xfer_unlocked__7bf(port, slave_addr__7bf, + out, out_size, in, in_size, + I2C_XFER_SINGLE); i2c_lock(port, 0); return rv; @@ -204,19 +217,22 @@ void i2c_prepare_sysjump(void) mutex_lock(port_mutex + i); } -int i2c_read32(int port, int slave_addr, int offset, int *data) +int i2c_read32__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int *data) { int rv; uint8_t reg, buf[sizeof(uint32_t)]; reg = offset & 0xff; /* I2C read 32-bit word: transmit 8-bit offset, and read 32bits */ - rv = i2c_xfer(port, slave_addr, ®, 1, buf, sizeof(uint32_t)); + rv = i2c_xfer__7bf(port, slave_addr__7bf, + ®, 1, buf, sizeof(uint32_t)); if (rv) return rv; - if (slave_addr & I2C_FLAG_BIG_ENDIAN) + if (I2C_IS_BIG_ENDIAN(slave_addr__7bf)) *data = ((int)buf[0] << 24) | ((int)buf[1] << 16) | ((int)buf[0] << 8) | buf[1]; else @@ -226,13 +242,15 @@ int i2c_read32(int port, int slave_addr, int offset, int *data) return EC_SUCCESS; } -int i2c_write32(int port, int slave_addr, int offset, int data) +int i2c_write32__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int data) { uint8_t buf[1 + sizeof(uint32_t)]; buf[0] = offset & 0xff; - if (slave_addr & I2C_FLAG_BIG_ENDIAN) { + if (I2C_IS_BIG_ENDIAN(slave_addr__7bf)) { buf[1] = (data >> 24) & 0xff; buf[2] = (data >> 16) & 0xff; buf[3] = (data >> 8) & 0xff; @@ -244,23 +262,26 @@ int i2c_write32(int port, int slave_addr, int offset, int data) buf[4] = (data >> 24) & 0xff; } - return i2c_xfer(port, slave_addr, buf, sizeof(uint32_t) + 1, - NULL, 0); + return i2c_xfer__7bf(port, slave_addr__7bf, + buf, sizeof(uint32_t) + 1, NULL, 0); } -int i2c_read16(int port, int slave_addr, int offset, int *data) +int i2c_read16__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int *data) { int rv; uint8_t reg, buf[sizeof(uint16_t)]; reg = offset & 0xff; /* I2C read 16-bit word: transmit 8-bit offset, and read 16bits */ - rv = i2c_xfer(port, slave_addr, ®, 1, buf, sizeof(uint16_t)); + rv = i2c_xfer__7bf(port, slave_addr__7bf, + ®, 1, buf, sizeof(uint16_t)); if (rv) return rv; - if (slave_addr & I2C_FLAG_BIG_ENDIAN) + if (I2C_IS_BIG_ENDIAN(slave_addr__7bf)) *data = ((int)buf[0] << 8) | buf[1]; else *data = ((int)buf[1] << 8) | buf[0]; @@ -268,13 +289,15 @@ int i2c_read16(int port, int slave_addr, int offset, int *data) return EC_SUCCESS; } -int i2c_write16(int port, int slave_addr, int offset, int data) +int i2c_write16__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int data) { uint8_t buf[1 + sizeof(uint16_t)]; buf[0] = offset & 0xff; - if (slave_addr & I2C_FLAG_BIG_ENDIAN) { + if (I2C_IS_BIG_ENDIAN(slave_addr__7bf)) { buf[1] = (data >> 8) & 0xff; buf[2] = data & 0xff; } else { @@ -282,10 +305,13 @@ int i2c_write16(int port, int slave_addr, int offset, int data) buf[2] = (data >> 8) & 0xff; } - return i2c_xfer(port, slave_addr, buf, 1 + sizeof(uint16_t), NULL, 0); + return i2c_xfer__7bf(port, slave_addr__7bf, + buf, 1 + sizeof(uint16_t), NULL, 0); } -int i2c_read8(int port, int slave_addr, int offset, int *data) +int i2c_read8__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int *data) { int rv; uint8_t reg = offset; @@ -293,25 +319,28 @@ int i2c_read8(int port, int slave_addr, int offset, int *data) reg = offset; - rv = i2c_xfer(port, slave_addr, ®, 1, &buf, 1); + rv = i2c_xfer__7bf(port, slave_addr__7bf, ®, 1, &buf, 1); if (!rv) *data = buf; return rv; } -int i2c_write8(int port, int slave_addr, int offset, int data) +int i2c_write8__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int data) { uint8_t buf[2]; buf[0] = offset; buf[1] = data; - return i2c_xfer(port, slave_addr, buf, 2, 0, 0); + return i2c_xfer__7bf(port, slave_addr__7bf, buf, 2, 0, 0); } -int i2c_read_offset16(int port, int slave_addr, uint16_t offset, int *data, - int len) +int i2c_read_offset16__7bf(const int port, + const uint16_t slave_addr__7bf, + uint16_t offset, int *data, int len) { int rv; uint8_t buf[sizeof(uint16_t)], addr[sizeof(uint16_t)]; @@ -323,7 +352,7 @@ int i2c_read_offset16(int port, int slave_addr, uint16_t offset, int *data, addr[1] = offset & 0xff; /* I2C read 16-bit word: transmit 16-bit offset, and read buffer */ - rv = i2c_xfer(port, slave_addr, addr, 2, buf, len); + rv = i2c_xfer__7bf(port, slave_addr__7bf, addr, 2, buf, len); if (rv) return rv; @@ -331,7 +360,7 @@ int i2c_read_offset16(int port, int slave_addr, uint16_t offset, int *data, if (len == 1) { *data = buf[0]; } else { - if (slave_addr & I2C_FLAG_BIG_ENDIAN) + if (I2C_IS_BIG_ENDIAN(slave_addr__7bf)) *data = ((int)buf[0] << 8) | buf[1]; else *data = ((int)buf[1] << 8) | buf[0]; @@ -340,8 +369,9 @@ int i2c_read_offset16(int port, int slave_addr, uint16_t offset, int *data, return EC_SUCCESS; } -int i2c_write_offset16(int port, int slave_addr, uint16_t offset, int data, - int len) +int i2c_write_offset16__7bf(const int port, + const uint16_t slave_addr__7bf, + uint16_t offset, int data, int len) { uint8_t buf[2 + sizeof(uint16_t)]; @@ -354,7 +384,7 @@ int i2c_write_offset16(int port, int slave_addr, uint16_t offset, int data, if (len == 1) { buf[2] = data & 0xff; } else { - if (slave_addr & I2C_FLAG_BIG_ENDIAN) { + if (I2C_IS_BIG_ENDIAN(slave_addr__7bf)) { buf[2] = (data >> 8) & 0xff; buf[3] = data & 0xff; } else { @@ -363,22 +393,24 @@ int i2c_write_offset16(int port, int slave_addr, uint16_t offset, int data, } } - return i2c_xfer(port, slave_addr, buf, 2 + len, NULL, 0); + return i2c_xfer__7bf(port, slave_addr__7bf, buf, 2 + len, NULL, 0); } -int i2c_read_offset16_block(int port, int slave_addr, uint16_t offset, - uint8_t *data, int len) +int i2c_read_offset16_block__7bf(const int port, + const uint16_t slave_addr__7bf, + uint16_t offset, uint8_t *data, int len) { uint8_t addr[sizeof(uint16_t)]; addr[0] = (offset >> 8) & 0xff; addr[1] = offset & 0xff; - return i2c_xfer(port, slave_addr, addr, 2, data, len); + return i2c_xfer__7bf(port, slave_addr__7bf, addr, 2, data, len); } -int i2c_write_offset16_block(int port, int slave_addr, uint16_t offset, - const uint8_t *data, int len) +int i2c_write_offset16_block__7bf(const int port, + const uint16_t slave_addr__7bf, + uint16_t offset, const uint8_t *data, int len) { int rv; uint8_t addr[sizeof(uint16_t)]; @@ -391,18 +423,19 @@ int i2c_write_offset16_block(int port, int slave_addr, uint16_t offset, * appending the destination address with the data array. */ i2c_lock(port, 1); - rv = i2c_xfer_unlocked(port, slave_addr, addr, 2, NULL, 0, + rv = i2c_xfer_unlocked__7bf(port, slave_addr__7bf, addr, 2, NULL, 0, I2C_XFER_START); if (!rv) - rv = i2c_xfer_unlocked(port, slave_addr, data, len, NULL, 0, - I2C_XFER_STOP); + rv = i2c_xfer_unlocked__7bf(port, slave_addr__7bf, + data, len, NULL, 0, I2C_XFER_STOP); i2c_lock(port, 0); return rv; } -int i2c_read_string(int port, int slave_addr, int offset, uint8_t *data, - int len) +int i2c_read_string__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, uint8_t *data, int len) { int rv; uint8_t reg, block_length; @@ -414,16 +447,16 @@ int i2c_read_string(int port, int slave_addr, int offset, uint8_t *data, * Send device reg space offset, and read back block length. Keep this * session open without a stop. */ - rv = i2c_xfer_unlocked(port, slave_addr, ®, 1, &block_length, 1, - I2C_XFER_START); + rv = i2c_xfer_unlocked__7bf(port, slave_addr__7bf, + ®, 1, &block_length, 1, I2C_XFER_START); if (rv) goto exit; if (len && block_length > (len - 1)) block_length = len - 1; - rv = i2c_xfer_unlocked(port, slave_addr, 0, 0, data, block_length, - I2C_XFER_STOP); + rv = i2c_xfer_unlocked__7bf(port, slave_addr__7bf, + 0, 0, data, block_length, I2C_XFER_STOP); data[block_length] = 0; exit: @@ -431,18 +464,20 @@ exit: return rv; } -int i2c_read_block(int port, int slave_addr, int offset, uint8_t *data, - int len) +int i2c_read_block__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, uint8_t *data, int len) { int rv; uint8_t reg_address = offset; - rv = i2c_xfer(port, slave_addr, ®_address, 1, data, len); + rv = i2c_xfer__7bf(port, slave_addr__7bf, ®_address, 1, data, len); return rv; } -int i2c_write_block(int port, int slave_addr, int offset, const uint8_t *data, - int len) +int i2c_write_block__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, const uint8_t *data, int len) { int rv; uint8_t reg_address = offset; @@ -452,11 +487,11 @@ int i2c_write_block(int port, int slave_addr, int offset, const uint8_t *data, * appending the destination address with the data array. */ i2c_lock(port, 1); - rv = i2c_xfer_unlocked(port, slave_addr, ®_address, 1, NULL, 0, - I2C_XFER_START); + rv = i2c_xfer_unlocked__7bf(port, slave_addr__7bf, + ®_address, 1, NULL, 0, I2C_XFER_START); if (!rv) { - rv = i2c_xfer_unlocked(port, slave_addr, data, len, NULL, 0, - I2C_XFER_STOP); + rv = i2c_xfer_unlocked__7bf(port, slave_addr__7bf, + data, len, NULL, 0, I2C_XFER_STOP); } i2c_lock(port, 0); @@ -712,7 +747,7 @@ static int check_i2c_params(const struct host_cmd_handler_args *args) /* Loop and process messages */; for (msgnum = 0, msg = params->msg; msgnum < params->num_msgs; msgnum++, msg++) { - unsigned int addr_flags = msg->addr_flags; + unsigned int addr_flags = msg->addr_flags__7bf; PTHRUPRINTS("port=%d, %s, addr=0x%x(7-bit), len=%d", params->port, @@ -769,10 +804,10 @@ static int i2c_command_passthru(struct host_cmd_handler_args *args) if (ret) return ret; - if (port_protected[params->port] && i2c_port->passthru_allowed) { + if (port_protected[params->port] && i2c_port->passthru_allowed__7bf) { for (i = 0; i < params->num_msgs; i++) { - if (!i2c_port->passthru_allowed(i2c_port, - params->msg[i].addr_flags & EC_I2C_ADDR_MASK)) + if (!i2c_port->passthru_allowed__7bf(i2c_port, + params->msg[i].addr_flags__7bf)) return EC_RES_ACCESS_DENIED; } } @@ -785,13 +820,15 @@ static int i2c_command_passthru(struct host_cmd_handler_args *args) for (resp->num_msgs = 0, msg = params->msg; resp->num_msgs < params->num_msgs; resp->num_msgs++, msg++) { - /* EC uses 8-bit slave address */ - unsigned int addr = (msg->addr_flags & EC_I2C_ADDR_MASK) << 1; int xferflags = I2C_XFER_START; int read_len = 0, write_len = 0; int rv = 1; - if (msg->addr_flags & EC_I2C_FLAG_READ) + /* Have to remove the EC flags from the address flags */ + uint16_t addr__7bf = msg->addr_flags__7bf & EC_I2C_ADDR_MASK; + + + if (msg->addr_flags__7bf & EC_I2C_FLAG_READ) read_len = msg->len; else write_len = msg->len; @@ -800,9 +837,9 @@ static int i2c_command_passthru(struct host_cmd_handler_args *args) if (resp->num_msgs == params->num_msgs - 1) xferflags |= I2C_XFER_STOP; -#if defined(VIRTUAL_BATTERY_ADDR) && defined(I2C_PORT_VIRTUAL_BATTERY) +#if defined(VIRTUAL_BATTERY_ADDR__7bf) && defined(I2C_PORT_VIRTUAL_BATTERY) if (params->port == I2C_PORT_VIRTUAL_BATTERY && - VIRTUAL_BATTERY_ADDR == addr) { + VIRTUAL_BATTERY_ADDR__7bf == addr__7bf) { if (virtual_battery_handler(resp, in_len, &rv, xferflags, read_len, write_len, out)) @@ -811,7 +848,8 @@ static int i2c_command_passthru(struct host_cmd_handler_args *args) #endif /* Transfer next message */ PTHRUPRINTS("xfer port=%x addr=0x%x rlen=%d flags=0x%x", - params->port, addr, read_len, xferflags); + params->port, addr__7bf, + read_len, xferflags); if (write_len) { PTHRUPRINTF(" out:"); for (i = 0; i < write_len; i++) @@ -829,7 +867,8 @@ static int i2c_command_passthru(struct host_cmd_handler_args *args) #endif if (!port_is_locked) i2c_lock(params->port, (port_is_locked = 1)); - rv = i2c_xfer_unlocked(params->port, addr, + rv = i2c_xfer_unlocked__7bf(params->port, + addr__7bf, out, write_len, &resp->data[in_len], read_len, xferflags); @@ -885,7 +924,7 @@ static void i2c_passthru_protect_tcpc_ports(void) for (i = 0; i < CONFIG_USB_PD_PORT_COUNT; i++) { /* TCPC tunnel not configured. No need to protect anything */ - if (!tcpc_config[i].i2c_info.addr) + if (!I2C_GET_ADDR__7b(tcpc_config[i].i2c_info.addr__7bf)) continue; i2c_passthru_protect_port(tcpc_config[i].i2c_info.port); } @@ -976,30 +1015,31 @@ DECLARE_CONSOLE_COMMAND(i2cprotect, command_i2cprotect, #ifdef CONFIG_CMD_I2C_SCAN static void scan_bus(int port, const char *desc) { - int a; + int level; uint8_t tmp; + uint16_t addr__7bf; ccprintf("Scanning %d %s", port, desc); i2c_lock(port, 1); /* Don't scan a busy port, since reads will just fail / time out */ - a = i2c_get_line_levels(port); - if (a != I2C_LINE_IDLE) { + level = i2c_get_line_levels(port); + if (level != I2C_LINE_IDLE) { ccprintf(": port busy (SDA=%d, SCL=%d)", - (a & I2C_LINE_SDA_HIGH) ? 1 : 0, - (a & I2C_LINE_SCL_HIGH) ? 1 : 0); + (level & I2C_LINE_SDA_HIGH) ? 1 : 0, + (level & I2C_LINE_SCL_HIGH) ? 1 : 0); goto scan_bus_exit; } - for (a = 0; a < 0x100; a += 2) { + for (addr__7bf = 0; addr__7bf <= 0xEF; ++addr__7bf) { watchdog_reload(); /* Otherwise a full scan trips watchdog */ ccputs("."); /* Do a single read */ - if (!i2c_xfer_unlocked(port, a, NULL, 0, &tmp, 1, - I2C_XFER_SINGLE)) - ccprintf("\n 0x%02x", a); + if (!i2c_xfer_unlocked__7bf(port, addr__7bf, + NULL, 0, &tmp, 1, I2C_XFER_SINGLE)) + ccprintf("\n 0x%02x", addr__7bf); } scan_bus_exit: @@ -1034,7 +1074,8 @@ DECLARE_CONSOLE_COMMAND(i2cscan, command_scan, #ifdef CONFIG_CMD_I2C_XFER static int command_i2cxfer(int argc, char **argv) { - int port, slave_addr; + int port; + uint16_t addr__7bf; uint16_t offset = 0; uint8_t offset_size = 0; int v = 0; @@ -1049,7 +1090,7 @@ static int command_i2cxfer(int argc, char **argv) if (*e) return EC_ERROR_PARAM2; - slave_addr = strtoi(argv[3], &e, 0); + addr__7bf = strtoi(argv[3], &e, 0); if (*e) return EC_ERROR_PARAM3; @@ -1068,18 +1109,22 @@ static int command_i2cxfer(int argc, char **argv) if (strcasecmp(argv[1], "r") == 0) { /* 8-bit read */ if (offset_size == 2) - rv = i2c_read_offset16(port, slave_addr, offset, &v, 1); + rv = i2c_read_offset16__7bf(port, addr__7bf, + offset, &v, 1); else - rv = i2c_read8(port, slave_addr, offset, &v); + rv = i2c_read8__7bf(port, addr__7bf, + offset, &v); if (!rv) ccprintf("0x%02x [%d]\n", v, v); } else if (strcasecmp(argv[1], "r16") == 0) { /* 16-bit read */ if (offset_size == 2) - rv = i2c_read_offset16(port, slave_addr, offset, &v, 2); + rv = i2c_read_offset16__7bf(port, addr__7bf, + offset, &v, 2); else - rv = i2c_read16(port, slave_addr, offset, &v); + rv = i2c_read16__7bf(port, addr__7bf, + offset, &v); if (!rv) ccprintf("0x%04x [%d]\n", v, v); @@ -1088,7 +1133,8 @@ static int command_i2cxfer(int argc, char **argv) if (argc < 6 || v < 0 || v > sizeof(data)) return EC_ERROR_PARAM5; - rv = i2c_xfer(port, slave_addr, (uint8_t *)&offset, 1, data, v); + rv = i2c_xfer__7bf(port, addr__7bf, + (uint8_t *)&offset, 1, data, v); if (!rv) ccprintf("Data: %.*h\n", v, data); @@ -1098,18 +1144,22 @@ static int command_i2cxfer(int argc, char **argv) if (argc < 6) return EC_ERROR_PARAM5; if (offset_size == 2) - rv = i2c_write_offset16(port, slave_addr, offset, v, 1); + rv = i2c_write_offset16__7bf(port, addr__7bf, + offset, v, 1); else - rv = i2c_write8(port, slave_addr, offset, v); + rv = i2c_write8__7bf(port, addr__7bf, + offset, v); } else if (strcasecmp(argv[1], "w16") == 0) { /* 16-bit write */ if (argc < 6) return EC_ERROR_PARAM5; if (offset_size == 2) - rv = i2c_write_offset16(port, slave_addr, offset, v, 2); + rv = i2c_write_offset16__7bf(port, addr__7bf, + offset, v, 2); else - rv = i2c_write16(port, slave_addr, offset, v); + rv = i2c_write16__7bf(port, addr__7bf, + offset, v); } else { return EC_ERROR_PARAM1; @@ -1149,7 +1199,6 @@ static int command_i2ctest(int argc, char **argv) int i, j, rv; uint32_t rand; int data, data_verify; - int port, addr; int count = 10000; int udelay = 100; int test_dev = i2c_test_dev_used; @@ -1177,6 +1226,9 @@ static int command_i2ctest(int argc, char **argv) } for (i = 0; i < count; i++) { + int port; + uint16_t addr__7bf; + if (!(i % 1000)) ccprintf("running test %d\n", i); @@ -1186,7 +1238,7 @@ static int command_i2ctest(int argc, char **argv) } port = i2c_stress_tests[test_dev].port; - addr = i2c_stress_tests[test_dev].addr; + addr__7bf = i2c_stress_tests[test_dev].addr__7bf; i2c_s_test = i2c_stress_tests[test_dev].i2c_test; reg_s_info = &i2c_s_test->reg_info; test_s_results = &i2c_s_test->test_results; @@ -1194,8 +1246,8 @@ static int command_i2ctest(int argc, char **argv) rand = get_time().val; if (rand & 0x1) { /* read */ - rv = i2c_s_test->i2c_read ? - i2c_s_test->i2c_read(port, addr, + rv = i2c_s_test->i2c_read__7bf ? + i2c_s_test->i2c_read__7bf(port, addr__7bf, reg_s_info->read_reg, &data) : i2c_s_test->i2c_read_dev( reg_s_info->read_reg, &data); @@ -1211,8 +1263,8 @@ static int command_i2ctest(int argc, char **argv) */ /* Read the write register */ - rv = i2c_s_test->i2c_read ? - i2c_s_test->i2c_read(port, addr, + rv = i2c_s_test->i2c_read__7bf ? + i2c_s_test->i2c_read__7bf(port, addr__7bf, reg_s_info->read_reg, &data) : i2c_s_test->i2c_read_dev( reg_s_info->read_reg, &data); @@ -1226,8 +1278,9 @@ static int command_i2ctest(int argc, char **argv) j = I2C_STRESS_TEST_DATA_VERIFY_RETRY_COUNT; do { /* Write same value back */ - rv = i2c_s_test->i2c_write ? - i2c_s_test->i2c_write(port, addr, + rv = i2c_s_test->i2c_write__7bf ? + i2c_s_test->i2c_write__7bf(port, + addr__7bf, reg_s_info->write_reg, data) : i2c_s_test->i2c_write_dev( reg_s_info->write_reg, data); @@ -1240,8 +1293,9 @@ static int command_i2ctest(int argc, char **argv) test_s_results->write_success++; /* Read back to verify the data */ - rv = i2c_s_test->i2c_read ? - i2c_s_test->i2c_read(port, addr, + rv = i2c_s_test->i2c_read__7bf ? + i2c_s_test->i2c_read__7bf(port, + addr__7bf, reg_s_info->read_reg, &data_verify) : i2c_s_test->i2c_read_dev( reg_s_info->read_reg, &data_verify); diff --git a/common/i2c_trace.c b/common/i2c_trace.c index 52603c7244..ff237ed582 100644 --- a/common/i2c_trace.c +++ b/common/i2c_trace.c @@ -23,16 +23,17 @@ struct i2c_trace_range { static struct i2c_trace_range trace_entries[8]; -void i2c_trace_notify(int port, int slave_addr, int direction, - const uint8_t *data, size_t size) +void i2c_trace_notify__7bf(int port, uint16_t slave_addr__7bf, + int direction, const uint8_t *data, size_t size) { size_t i; + uint16_t addr__7b = I2C_GET_ADDR__7b(slave_addr__7bf); for (i = 0; i < ARRAY_SIZE(trace_entries); i++) if (trace_entries[i].enabled && trace_entries[i].port == port - && trace_entries[i].slave_addr_lo <= slave_addr - && trace_entries[i].slave_addr_hi >= slave_addr) + && trace_entries[i].slave_addr_lo <= addr__7b + && trace_entries[i].slave_addr_hi >= addr__7b) goto trace_enabled; return; @@ -40,7 +41,7 @@ trace_enabled: CPRINTF("i2c: %s %d:0x%X ", direction ? "read" : "write", port, - slave_addr); + addr__7b); for (i = 0; i < size; i++) CPRINTF("%02X ", data[i]); CPRINTF("\n"); diff --git a/common/lb_common.c b/common/lb_common.c index 208015482c..1e37245558 100644 --- a/common/lb_common.c +++ b/common/lb_common.c @@ -111,7 +111,7 @@ /* Since there's absolutely nothing we can do about it if an I2C access * isn't working, we're completely ignoring any failures. */ -static const uint8_t i2c_addr[] = { 0x54, 0x56 }; +static const uint16_t i2c_addr__7bf[] = { 0x2A, 0x2B }; static inline void controller_write(int ctrl_num, uint8_t reg, uint8_t val) { @@ -119,9 +119,10 @@ static inline void controller_write(int ctrl_num, uint8_t reg, uint8_t val) buf[0] = reg; buf[1] = val; - ctrl_num = ctrl_num % ARRAY_SIZE(i2c_addr); - i2c_xfer_unlocked(I2C_PORT_LIGHTBAR, i2c_addr[ctrl_num], buf, 2, 0, 0, - I2C_XFER_SINGLE); + ctrl_num = ctrl_num % ARRAY_SIZE(i2c_addr__7bf); + i2c_xfer_unlocked__7bf(I2C_PORT_LIGHTBAR, i2c_addr__7bf[ctrl_num], + buf, 2, 0, 0, + I2C_XFER_SINGLE); } static inline uint8_t controller_read(int ctrl_num, uint8_t reg) @@ -129,8 +130,8 @@ static inline uint8_t controller_read(int ctrl_num, uint8_t reg) uint8_t buf[1]; int rv; - ctrl_num = ctrl_num % ARRAY_SIZE(i2c_addr); - rv = i2c_xfer_unlocked(I2C_PORT_LIGHTBAR, i2c_addr[ctrl_num], + ctrl_num = ctrl_num % ARRAY_SIZE(i2c_addr__7bf); + rv = i2c_xfer_unlocked__7bf(I2C_PORT_LIGHTBAR, i2c_addr__7bf[ctrl_num], ®, 1, buf, 1, I2C_XFER_SINGLE); return rv ? 0 : buf[0]; } diff --git a/common/motion_sense.c b/common/motion_sense.c index 169bc3a6d9..033e490517 100644 --- a/common/motion_sense.c +++ b/common/motion_sense.c @@ -2062,7 +2062,8 @@ static int command_display_accel_info(int argc, char **argv) ccprintf("type: %d\n", motion_sensors[i].type); ccprintf("location: %d\n", motion_sensors[i].location); ccprintf("port: %d\n", motion_sensors[i].port); - ccprintf("addr: %d\n", motion_sensors[i].addr); + ccprintf("addr: %d\n", I2C_GET_ADDR__7b(motion_sensors[i] + .i2c_spi_addr__7bf)); ccprintf("range: %d\n", motion_sensors[i].default_range); ccprintf("min_freq: %d\n", motion_sensors[i].min_frequency); ccprintf("max_freq: %d\n", motion_sensors[i].max_frequency); diff --git a/common/peripheral.c b/common/peripheral.c index 301165e34e..eafd5d6f49 100644 --- a/common/peripheral.c +++ b/common/peripheral.c @@ -22,8 +22,7 @@ static int hc_locate_chip(struct host_cmd_handler_args *args) return EC_RES_OVERFLOW; resp->bus_type = EC_BUS_TYPE_I2C; resp->i2c_info.port = I2C_PORT_EEPROM; - /* Convert from 8-bit address to 7-bit address */ - resp->i2c_info.addr = I2C_ADDR_EEPROM >> 1; + resp->i2c_info.addr__7bf = I2C_ADDR_EEPROM__7bf; #else /* Lookup type is supported, but not present on system. */ return EC_RES_UNAVAILABLE; @@ -37,8 +36,8 @@ static int hc_locate_chip(struct host_cmd_handler_args *args) if (resp->bus_type == EC_BUS_TYPE_I2C) { resp->i2c_info.port = tcpc_config[params->index].i2c_info.port; - resp->i2c_info.addr = - tcpc_config[params->index].i2c_info.addr >> 1; + resp->i2c_info.addr__7bf = + tcpc_config[params->index].i2c_info.addr__7bf; } #ifdef CONFIG_INTEL_VIRTUAL_MUX resp->reserved = tcpc_config[params->index].usb23; diff --git a/common/usb_i2c.c b/common/usb_i2c.c index 50537ce82e..375419dfcc 100644 --- a/common/usb_i2c.c +++ b/common/usb_i2c.c @@ -106,9 +106,7 @@ static void usb_i2c_execute(struct usb_i2c_config const *config) /* Payload is ready to execute. */ uint32_t count = usb_i2c_read_packet(config); int portindex = (config->buffer[0] >> 0) & 0xf; - /* Convert 7-bit slave address to chromium EC 8-bit address. */ - uint8_t slave_addr = (config->buffer[0] >> 7) & 0xfe; - + uint16_t addr__7bf = (config->buffer[0] >> 8) & 0x7f; int write_count = ((config->buffer[0] << 4) & 0xf00) | ((config->buffer[1] >> 0) & 0xff); int read_count = (config->buffer[1] >> 8) & 0xff; @@ -135,7 +133,7 @@ static void usb_i2c_execute(struct usb_i2c_config const *config) config->buffer[0] = USB_I2C_READ_COUNT_INVALID; } else if (portindex >= i2c_ports_used) { config->buffer[0] = USB_I2C_PORT_INVALID; - } else if (slave_addr == USB_I2C_CMD_ADDR) { + } else if (addr__7bf == USB_I2C_CMD_ADDR__7bf) { /* * This is a non-i2c command, invoke the handler if it has * been registered, if not - report the appropriate error. @@ -156,8 +154,7 @@ static void usb_i2c_execute(struct usb_i2c_config const *config) * knows about. It should behave closer to * EC_CMD_I2C_PASSTHRU, which can protect ports and ranges. */ - ret = i2c_xfer(i2c_ports[portindex].port, - slave_addr, + ret = i2c_xfer__7bf(i2c_ports[portindex].port, addr__7bf, (uint8_t *)(config->buffer + 2) + offset, write_count, (uint8_t *)(config->buffer + 2), diff --git a/cts/i2c/dut.c b/cts/i2c/dut.c index e4a87f440e..033aca7ffc 100644 --- a/cts/i2c/dut.c +++ b/cts/i2c/dut.c @@ -13,25 +13,28 @@ #include "uart.h" #include "watchdog.h" -#define TH_ADDR 0x3c +#define TH_ADDR__7bf 0x1e enum cts_rc write8_test(void) { - if (i2c_write8(i2c_ports[0].port, TH_ADDR, WRITE8_OFF, WRITE8_DATA)) + if (i2c_write8__7bf(i2c_ports[0].port, TH_ADDR__7bf, + WRITE8_OFF, WRITE8_DATA)) return CTS_RC_FAILURE; return CTS_RC_SUCCESS; } enum cts_rc write16_test(void) { - if (i2c_write16(i2c_ports[0].port, TH_ADDR, WRITE16_OFF, WRITE16_DATA)) + if (i2c_write16__7bf(i2c_ports[0].port, TH_ADDR__7bf, + WRITE16_OFF, WRITE16_DATA)) return CTS_RC_FAILURE; return CTS_RC_SUCCESS; } enum cts_rc write32_test(void) { - if (i2c_write32(i2c_ports[0].port, TH_ADDR, WRITE32_OFF, WRITE32_DATA)) + if (i2c_write32__7bf(i2c_ports[0].port, TH_ADDR__7bf, + WRITE32_OFF, WRITE32_DATA)) return CTS_RC_FAILURE; return CTS_RC_SUCCESS; } @@ -40,7 +43,8 @@ enum cts_rc read8_test(void) { int data; - if (i2c_read8(i2c_ports[0].port, TH_ADDR, READ8_OFF, &data)) + if (i2c_read8__7bf(i2c_ports[0].port, TH_ADDR__7bf, + READ8_OFF, &data)) return CTS_RC_FAILURE; if (data != READ8_DATA) { CPRINTL("Expecting 0x%x but read 0x%x", READ8_DATA, data); @@ -54,7 +58,8 @@ enum cts_rc read16_test(void) { int data; - if (i2c_read16(i2c_ports[0].port, TH_ADDR, READ16_OFF, &data)) + if (i2c_read16__7bf(i2c_ports[0].port, TH_ADDR__7bf, + READ16_OFF, &data)) return CTS_RC_FAILURE; if (data != READ16_DATA) { CPRINTL("Expecting 0x%x but read 0x%x", READ16_DATA, data); @@ -68,7 +73,8 @@ enum cts_rc read32_test(void) { int data; - if (i2c_read32(i2c_ports[0].port, TH_ADDR, READ32_OFF, &data)) + if (i2c_read32__7bf(i2c_ports[0].port, TH_ADDR__7bf, + READ32_OFF, &data)) return CTS_RC_FAILURE; if (data != READ32_DATA) { CPRINTL("Read 0x%x expecting 0x%x", data, READ32_DATA); diff --git a/driver/accel_bma2x2.c b/driver/accel_bma2x2.c index c1e9eb4d63..5253783623 100644 --- a/driver/accel_bma2x2.c +++ b/driver/accel_bma2x2.c @@ -28,19 +28,19 @@ /** * Read register from accelerometer. */ -static inline int raw_read8(const int port, const int addr, const int reg, - int *data_ptr) +static inline int raw_read8__7bf(const int port, const uint16_t i2c_addr__7bf, + const int reg, int *data_ptr) { - return i2c_read8(port, addr, reg, data_ptr); + return i2c_read8__7bf(port, i2c_addr__7bf, reg, data_ptr); } /** * Write register from accelerometer. */ -static inline int raw_write8(const int port, const int addr, const int reg, - int data) +static inline int raw_write8__7bf(const int port, const uint16_t i2c_addr__7bf, + const int reg, int data) { - return i2c_write8(port, addr, reg, data); + return i2c_write8__7bf(port, i2c_addr__7bf, reg, data); } static int set_range(const struct motion_sensor_t *s, int range, int rnd) @@ -55,14 +55,15 @@ static int set_range(const struct motion_sensor_t *s, int range, int rnd) mutex_lock(s->mutex); /* Determine the new value of control reg and attempt to write it. */ - ret = raw_read8(s->port, s->addr, BMA2x2_RANGE_SELECT_ADDR, - &range_reg_val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_RANGE_SELECT_ADDR, &range_reg_val); if (ret != EC_SUCCESS) { mutex_unlock(s->mutex); return ret; } reg_val = (range_reg_val & ~BMA2x2_RANGE_SELECT_MSK) | range_val; - ret = raw_write8(s->port, s->addr, BMA2x2_RANGE_SELECT_ADDR, reg_val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_RANGE_SELECT_ADDR, reg_val); /* If successfully written, then save the range. */ if (ret == EC_SUCCESS) @@ -97,14 +98,16 @@ static int set_data_rate(const struct motion_sensor_t *s, int rate, int rnd) mutex_lock(s->mutex); /* Determine the new value of control reg and attempt to write it. */ - ret = raw_read8(s->port, s->addr, BMA2x2_BW_SELECT_ADDR, &odr_reg_val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_BW_SELECT_ADDR, &odr_reg_val); if (ret != EC_SUCCESS) { mutex_unlock(s->mutex); return ret; } reg_val = (odr_reg_val & ~BMA2x2_BW_MSK) | odr_val; /* Set output data rate. */ - ret = raw_write8(s->port, s->addr, BMA2x2_BW_SELECT_ADDR, reg_val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_BW_SELECT_ADDR, reg_val); /* If successfully written, then save the new data rate. */ if (ret == EC_SUCCESS) @@ -129,7 +132,7 @@ static int set_offset(const struct motion_sensor_t *s, const int16_t *offset, /* temperature is ignored */ /* Offset from host is in 1/1024g, 1/128g internally. */ for (i = X; i <= Z; i++) { - ret = raw_write8(s->port, s->addr, + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, BMA2x2_OFFSET_X_AXIS_ADDR + i, offset[i] / 8); if (ret) return ret; @@ -143,8 +146,8 @@ static int get_offset(const struct motion_sensor_t *s, int16_t *offset, int i, val, ret; for (i = X; i <= Z; i++) { - ret = raw_read8(s->port, s->addr, BMA2x2_OFFSET_X_AXIS_ADDR + i, - &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_OFFSET_X_AXIS_ADDR + i, &val); if (ret) return ret; offset[i] = (int8_t)val * 8; @@ -160,7 +163,8 @@ static int read(const struct motion_sensor_t *s, intv3_t v) /* Read 6 bytes starting at X_AXIS_LSB. */ mutex_lock(s->mutex); - ret = i2c_read_block(s->port, s->addr, BMA2x2_X_AXIS_LSB_ADDR, acc, 6); + ret = i2c_read_block__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_X_AXIS_LSB_ADDR, acc, 6); mutex_unlock(s->mutex); if (ret != EC_SUCCESS) @@ -189,7 +193,8 @@ static int perform_calib(const struct motion_sensor_t *s) int ret, val, status, rate, range, i; timestamp_t deadline; - ret = raw_read8(s->port, s->addr, BMA2x2_OFFSET_CTRL_ADDR, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_OFFSET_CTRL_ADDR, &val); if (ret) return ret; if (!(val & BMA2x2_OFFSET_CAL_READY)) @@ -213,11 +218,13 @@ static int perform_calib(const struct motion_sensor_t *s) val = ((BMA2x2_OFC_TARGET_0G << BMA2x2_OFC_TARGET_AXIS(X)) | (BMA2x2_OFC_TARGET_0G << BMA2x2_OFC_TARGET_AXIS(Y)) | (val << BMA2x2_OFC_TARGET_AXIS(Z))); - raw_write8(s->port, s->addr, BMA2x2_OFC_SETTING_ADDR, val); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_OFC_SETTING_ADDR, val); for (i = X; i <= Z; i++) { val = (i + 1) << BMA2x2_OFFSET_TRIGGER_OFF; - raw_write8(s->port, s->addr, BMA2x2_OFFSET_CTRL_ADDR, val); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_OFFSET_CTRL_ADDR, val); /* * The sensor needs 16 samples. At 100Hz/10ms, it needs 160ms to * complete. Set 400ms to have some margin. @@ -229,7 +236,7 @@ static int perform_calib(const struct motion_sensor_t *s) goto end_perform_calib; } msleep(50); - ret = raw_read8(s->port, s->addr, + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, BMA2x2_OFFSET_CTRL_ADDR, &status); if (ret != EC_SUCCESS) goto end_perform_calib; @@ -246,7 +253,8 @@ static int init(const struct motion_sensor_t *s) { int ret = 0, tries = 0, val, reg, reset_field; - ret = raw_read8(s->port, s->addr, BMA2x2_CHIP_ID_ADDR, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMA2x2_CHIP_ID_ADDR, &val); if (ret) return EC_ERROR_UNKNOWN; @@ -259,13 +267,13 @@ static int init(const struct motion_sensor_t *s) mutex_lock(s->mutex); - ret = raw_read8(s->port, s->addr, reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, reg, &val); if (ret != EC_SUCCESS) { mutex_unlock(s->mutex); return ret; } val |= reset_field; - ret = raw_write8(s->port, s->addr, reg, val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, reg, val); if (ret != EC_SUCCESS) { mutex_unlock(s->mutex); return ret; @@ -273,7 +281,7 @@ static int init(const struct motion_sensor_t *s) /* The SRST will be cleared when reset is complete. */ do { - ret = raw_read8(s->port, s->addr, reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, reg, &val); /* Reset complete. */ if ((ret == EC_SUCCESS) && !(val & reset_field)) diff --git a/driver/accel_bma2x2.h b/driver/accel_bma2x2.h index 09a4ea2452..ecd3deac23 100644 --- a/driver/accel_bma2x2.h +++ b/driver/accel_bma2x2.h @@ -22,16 +22,16 @@ extern const struct accelgyro_drv bma2x2_accel_drv; * BMA250E * BMA222E */ -#define BMA2x2_I2C_ADDR1 0x30 -#define BMA2x2_I2C_ADDR2 0x19 +#define BMA2x2_I2C_ADDR1__7bf 0x18 +#define BMA2x2_I2C_ADDR2__7bf 0x19 /* The following definition of I2C address is used for the following sensors * BMC150 * BMC056 * BMC156 */ -#define BMA2x2_I2C_ADDR3 0x10 -#define BMA2x2_I2C_ADDR4 0x11 +#define BMA2x2_I2C_ADDR3__7bf 0x10 +#define BMA2x2_I2C_ADDR4__7bf 0x11 /*** Chip-specific registers ***/ /* REGISTER ADDRESS DEFINITIONS */ diff --git a/driver/accel_kionix.c b/driver/accel_kionix.c index d486d4bcd5..4e1f5bb4fc 100644 --- a/driver/accel_kionix.c +++ b/driver/accel_kionix.c @@ -133,24 +133,27 @@ static int find_param_index(const int eng_val, const int round_up, /** * Read register from accelerometer. */ -static int raw_read8(const int port, const int addr, const int reg, - int *data_ptr) +static int raw_read8__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const int reg, int *data_ptr) { int rv = EC_ERROR_INVAL; - if (KIONIX_IS_SPI(addr)) { + if (SLAVE_IS_SPI(i2c_spi_addr__7bf)) { #ifdef CONFIG_SPI_ACCEL_PORT uint8_t val; uint8_t cmd = 0x80 | reg; - rv = spi_transaction(&spi_devices[KIONIX_SPI_ADDRESS(addr)], - &cmd, 1, &val, 1); + rv = spi_transaction( + &spi_devices[SLAVE_GET_SPI_ADDR__7b(i2c_spi_addr__7bf)], + &cmd, 1, &val, 1); if (rv == EC_SUCCESS) *data_ptr = val; #endif } else { - rv = i2c_read8(port, addr, reg, data_ptr); + rv = i2c_read8__7bf(port, i2c_spi_addr__7bf, + reg, data_ptr); } return rv; } @@ -158,36 +161,43 @@ static int raw_read8(const int port, const int addr, const int reg, /** * Write register from accelerometer. */ -static int raw_write8(const int port, const int addr, const int reg, int data) +static int raw_write8__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const int reg, int data) { int rv = EC_ERROR_INVAL; - if (KIONIX_IS_SPI(addr)) { + if (SLAVE_IS_SPI(i2c_spi_addr__7bf)) { #ifdef CONFIG_SPI_ACCEL_PORT uint8_t cmd[2] = { reg, data }; - rv = spi_transaction(&spi_devices[KIONIX_SPI_ADDRESS(addr)], - cmd, 2, NULL, 0); + rv = spi_transaction( + &spi_devices[SLAVE_GET_SPI_ADDR__7b(i2c_spi_addr__7bf)], + cmd, 2, NULL, 0); #endif } else { - rv = i2c_write8(port, addr, reg, data); + rv = i2c_write8__7bf(port, i2c_spi_addr__7bf, + reg, data); } return rv; } -static int raw_read_multi(const int port, int addr, uint8_t reg, - uint8_t *rxdata, int rxlen) +static int raw_read_multi__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + uint8_t reg, uint8_t *rxdata, int rxlen) { int rv = EC_ERROR_INVAL; - if (KIONIX_IS_SPI(addr)) { + if (SLAVE_IS_SPI(i2c_spi_addr__7bf)) { #ifdef CONFIG_SPI_ACCEL_PORT reg |= 0x80; - rv = spi_transaction(&spi_devices[KIONIX_SPI_ADDRESS(addr)], - ®, 1, rxdata, rxlen); + rv = spi_transaction( + &spi_devices[SLAVE_GET_SPI_ADDR__7b(i2c_spi_addr__7bf)], + ®, 1, rxdata, rxlen); #endif } else { - rv = i2c_read_block(port, addr, reg, rxdata, rxlen); + rv = i2c_read_block__7bf(port, i2c_spi_addr__7bf, + reg, rxdata, rxlen); } return rv; } @@ -215,13 +225,15 @@ static int disable_sensor(const struct motion_sensor_t *s, int *reg_val) * so that we can restore it later. */ for (i = 0; i < SENSOR_ENABLE_ATTEMPTS; i++) { - ret = raw_read8(s->port, s->addr, reg, reg_val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, reg_val); if (ret != EC_SUCCESS) continue; *reg_val &= ~pc1_field; - ret = raw_write8(s->port, s->addr, reg, *reg_val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, *reg_val); if (ret == EC_SUCCESS) return EC_SUCCESS; } @@ -246,7 +258,8 @@ static int enable_sensor(const struct motion_sensor_t *s, int reg_val) pc1_field = KIONIX_PC1_FIELD(V(s)); for (i = 0; i < SENSOR_ENABLE_ATTEMPTS; i++) { - ret = raw_read8(s->port, s->addr, reg, ®_val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, ®_val); if (ret != EC_SUCCESS) continue; @@ -257,8 +270,8 @@ static int enable_sensor(const struct motion_sensor_t *s, int reg_val) #endif /* Enable accelerometer based on reg_val value. */ - ret = raw_write8(s->port, s->addr, reg, - reg_val | pc1_field); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, reg_val | pc1_field); /* On first success, we are done. */ if (ret == EC_SUCCESS) @@ -292,7 +305,8 @@ static int set_value(const struct motion_sensor_t *s, int reg, int val, /* Determine new value of control reg and attempt to write it. */ reg_val_new = (reg_val & ~field) | val; - ret = raw_write8(s->port, s->addr, reg, reg_val_new); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, reg_val_new); /* If successfully written, then save the range. */ if (ret == EC_SUCCESS) @@ -433,7 +447,7 @@ static int check_orientation_locked(const struct motion_sensor_t *s) int orientation, raw_orientation; int ret; - ret = raw_read8(s->port, s->addr, + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, KX022_TSCP, &raw_orientation); if (ret != EC_SUCCESS) return ret; @@ -459,7 +473,7 @@ static int read(const struct motion_sensor_t *s, intv3_t v) /* Read 6 bytes starting at XOUT_L. */ reg = KIONIX_XOUT_L(V(s)); mutex_lock(s->mutex); - ret = raw_read_multi(s->port, s->addr, reg, acc, 6); + ret = raw_read_multi__7bf(s->port, s->i2c_spi_addr__7bf, reg, acc, 6); #ifdef CONFIG_KX022_ORIENTATION_SENSOR if ((s->location == MOTIONSENSE_LOC_LID) && (V(s) == 0) && (ret == EC_SUCCESS)) @@ -518,7 +532,8 @@ static int init(const struct motion_sensor_t *s) do { msleep(1); /* Read WHO_AM_I to be sure the device has booted */ - ret = raw_read8(s->port, s->addr, reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, &val); if (ret == EC_SUCCESS) break; @@ -531,16 +546,22 @@ static int init(const struct motion_sensor_t *s) } else { /* Write 0x00 to the internal register for KX022 */ reg = KX022_INTERNAL; - ret = raw_write8(s->port, s->addr, reg, 0x0); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, 0x0); if (ret != EC_SUCCESS) { /* * For I2C communication, if ACK was not received * from the first address, resend the command using * the second address. */ - if (!KIONIX_IS_SPI(s->addr)) { - ret = raw_write8(s->port, s->addr & ~4, reg, - 0x0); + if (!SLAVE_IS_SPI(s->i2c_spi_addr__7bf)) { + const uint16_t i2c_alt_addr__7bf = + I2C_GET_ADDR__7b( + s->i2c_spi_addr__7bf) + & ~2; + ret = raw_write8__7bf(s->port, + i2c_alt_addr__7bf, + reg, 0x0); } } } @@ -557,21 +578,21 @@ static int init(const struct motion_sensor_t *s) ret = disable_sensor(s, &val); if (ret != EC_SUCCESS) goto reset_failed; - ret = raw_read8(s->port, s->addr, reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, reg, &val); if (ret != EC_SUCCESS) goto reset_failed; val |= reset_field; } else { /* Write 0 to CTRL2 for KX022 */ - ret = raw_write8(s->port, s->addr, reg, 0x0); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, reg, 0x0); if (ret != EC_SUCCESS) goto reset_failed; val = reset_field; } - ret = raw_write8(s->port, s->addr, reg, val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, reg, val); if (ret != EC_SUCCESS) goto reset_failed; @@ -581,7 +602,8 @@ static int init(const struct motion_sensor_t *s) do { msleep(1); - ret = raw_read8(s->port, s->addr, reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, &val); /* Reset complete. */ if ((ret == EC_SUCCESS) && !(val & reset_field)) break; @@ -596,7 +618,7 @@ static int init(const struct motion_sensor_t *s) msleep(2); reg = KX022_COTR; - ret = raw_read8(s->port, s->addr, reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, reg, &val); if (val != KX022_COTR_VAL_DEFAULT) { CPRINTF("[%s: the software reset failed]\n", s->name); ret = EC_ERROR_HW_INTERNAL; @@ -605,7 +627,7 @@ static int init(const struct motion_sensor_t *s) } reg = KIONIX_WHO_AM_I(V(s)); - ret = raw_read8(s->port, s->addr, reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, reg, &val); if (ret != EC_SUCCESS || val != KIONIX_WHO_AM_I_VAL(V(s))) { ret = EC_ERROR_HW_INTERNAL; goto reset_failed; @@ -648,7 +670,7 @@ struct i2c_stress_test_dev kionix_i2c_stress_test_dev = { .read_val = KIONIX_WHO_AM_I_VAL(V(s)), .write_reg = KIONIX_ODR_REG(V(s)), }, - .i2c_read = &raw_read8, - .i2c_write = &raw_write8, + .i2c_read__7bf = &raw_read8__7bf, + .i2c_write__7bf = &raw_write8__7bf, }; #endif /* CONFIG_CMD_I2C_STRESS_TEST_ACCEL */ diff --git a/driver/accel_kionix.h b/driver/accel_kionix.h index b6dfa08b48..2491c5d39d 100644 --- a/driver/accel_kionix.h +++ b/driver/accel_kionix.h @@ -47,9 +47,6 @@ extern const struct accelgyro_drv kionix_accel_drv; * | SPI device ID | 1 | * +-------------------------------+---+ */ -#define KIONIX_IS_SPI(_addr) ((_addr) & 1) -#define KIONIX_SPI_ADDRESS(_addr) ((_addr) >> 1) - #define KIONIX_CTRL1_REG(v) (KX022_CNTL1 + \ (v) * (KXCJ9_CTRL1 - KX022_CNTL1)) #define KIONIX_CTRL2_REG(v) (KX022_CNTL2 + \ diff --git a/driver/accel_kx022.h b/driver/accel_kx022.h index c6f02edcb0..f47d077b39 100644 --- a/driver/accel_kx022.h +++ b/driver/accel_kx022.h @@ -12,8 +12,8 @@ * 7-bit address is 001111Xb. Where 'X' is determined * by the voltage on the ADDR pin. */ -#define KX022_ADDR0 0x3c -#define KX022_ADDR1 0x3e +#define KX022_ADDR0__7bf (0x1e) +#define KX022_ADDR1__7bf (0x1f) #define KX022_WHO_AM_I_VAL 0x14 /* Chip-specific registers */ diff --git a/driver/accel_kxcj9.h b/driver/accel_kxcj9.h index 02b0fba06b..4efad87682 100644 --- a/driver/accel_kxcj9.h +++ b/driver/accel_kxcj9.h @@ -14,8 +14,8 @@ * 7-bit address is 000111Xb. Where 'X' is determined * by the voltage on the ADDR pin. */ -#define KXCJ9_ADDR0 0x1c -#define KXCJ9_ADDR1 0x1e +#define KXCJ9_ADDR0__7bf 0x0E +#define KXCJ9_ADDR1__7bf 0x0D #define KXCJ9_WHO_AM_I_VAL 0x0A /* Chip-specific registers */ diff --git a/driver/accel_lis2dh.c b/driver/accel_lis2dh.c index 9c982d9ac0..6ef840b291 100644 --- a/driver/accel_lis2dh.c +++ b/driver/accel_lis2dh.c @@ -122,7 +122,8 @@ static int is_data_ready(const struct motion_sensor_t *s, int *ready) { int ret, tmp; - ret = st_raw_read8(s->port, s->addr, LIS2DH_STATUS_REG, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_STATUS_REG, &tmp); if (ret != EC_SUCCESS) { CPRINTS("%s type:0x%X RS Error", s->name, s->type); return ret; @@ -154,8 +155,8 @@ static int read(const struct motion_sensor_t *s, intv3_t v) } /* Read output data bytes starting at LIS2DH_OUT_X_L_ADDR */ - ret = st_raw_read_n(s->port, s->addr, LIS2DH_OUT_X_L_ADDR, raw, - OUT_XYZ_SIZE); + ret = st_raw_read_n__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_OUT_X_L_ADDR, raw, OUT_XYZ_SIZE); if (ret != EC_SUCCESS) { CPRINTS("%s type:0x%X RD XYZ Error", s->name, s->type); return ret; @@ -180,7 +181,8 @@ static int init(const struct motion_sensor_t *s) * complete boot procedure. */ do { - ret = st_raw_read8(s->port, s->addr, LIS2DH_WHO_AM_I_REG, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_WHO_AM_I_REG, &tmp); if (ret != EC_SUCCESS) { udelay(10); count--; @@ -201,34 +203,34 @@ static int init(const struct motion_sensor_t *s) * register must be restored to it's default. */ /* Enable all accel axes data and clear old settings */ - ret = st_raw_write8(s->port, s->addr, LIS2DH_CTRL1_ADDR, - LIS2DH_ENABLE_ALL_AXES); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_CTRL1_ADDR, LIS2DH_ENABLE_ALL_AXES); if (ret != EC_SUCCESS) goto err_unlock; - ret = st_raw_write8(s->port, s->addr, LIS2DH_CTRL2_ADDR, - LIS2DH_CTRL2_RESET_VAL); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_CTRL2_ADDR, LIS2DH_CTRL2_RESET_VAL); if (ret != EC_SUCCESS) goto err_unlock; - ret = st_raw_write8(s->port, s->addr, LIS2DH_CTRL3_ADDR, - LIS2DH_CTRL3_RESET_VAL); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_CTRL3_ADDR, LIS2DH_CTRL3_RESET_VAL); if (ret != EC_SUCCESS) goto err_unlock; /* Enable BDU */ - ret = st_raw_write8(s->port, s->addr, LIS2DH_CTRL4_ADDR, - LIS2DH_BDU_MASK); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_CTRL4_ADDR, LIS2DH_BDU_MASK); if (ret != EC_SUCCESS) goto err_unlock; - ret = st_raw_write8(s->port, s->addr, LIS2DH_CTRL5_ADDR, - LIS2DH_CTRL5_RESET_VAL); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_CTRL5_ADDR, LIS2DH_CTRL5_RESET_VAL); if (ret != EC_SUCCESS) goto err_unlock; - ret = st_raw_write8(s->port, s->addr, LIS2DH_CTRL6_ADDR, - LIS2DH_CTRL6_RESET_VAL); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2DH_CTRL6_ADDR, LIS2DH_CTRL6_RESET_VAL); if (ret != EC_SUCCESS) goto err_unlock; diff --git a/driver/accel_lis2dh.h b/driver/accel_lis2dh.h index 691cca6865..ac5193d388 100644 --- a/driver/accel_lis2dh.h +++ b/driver/accel_lis2dh.h @@ -16,8 +16,8 @@ * 8-bit address is 0011 00XW b. Where 'X' is determined * by the voltage on the ADDR pin, and 'W' is read write bit */ -#define LIS2DH_ADDR0 0x30 -#define LIS2DH_ADDR1 0x32 +#define LIS2DH_ADDR0__7bf 0x18 +#define LIS2DH_ADDR1__7bf 0x19 /* * LNG2DM: @@ -25,8 +25,8 @@ * 8-bit address is 0101 00XW b. Where 'X' is determined * by the voltage on the ADDR pin, and 'W' is read write bit */ -#define LNG2DM_ADDR0 0x50 -#define LNG2DM_ADDR1 0x52 +#define LNG2DM_ADDR0__7bf 0x28 +#define LNG2DM_ADDR1__7bf 0x29 /* Who Am I */ #define LIS2DH_WHO_AM_I_REG 0x0f diff --git a/driver/accelgyro_bmi160.c b/driver/accelgyro_bmi160.c index d06d3f7d99..da9fe2c375 100644 --- a/driver/accelgyro_bmi160.c +++ b/driver/accelgyro_bmi160.c @@ -144,21 +144,23 @@ static inline int spi_raw_read(const int addr, const uint8_t reg, /** * Read 8bit register from accelerometer. */ -static int raw_read8(const int port, const int addr, const int reg, - int *data_ptr) +static int raw_read8__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const int reg, int *data_ptr) { int rv = -EC_ERROR_PARAM1; - if (BMI160_IS_SPI(addr)) { + if (SLAVE_IS_SPI(i2c_spi_addr__7bf)) { #ifdef CONFIG_SPI_ACCEL_PORT uint8_t val; - rv = spi_raw_read(BMI160_SPI_ADDRESS(addr), reg, &val, 1); + rv = spi_raw_read(SLAVE_GET_SPI_ADDR__7b(i2c_spi_addr__7bf), + reg, &val, 1); if (rv == EC_SUCCESS) *data_ptr = val; #endif } else { #ifdef I2C_PORT_ACCEL - rv = i2c_read8(port, BMI160_I2C_ADDRESS(addr), + rv = i2c_read8__7bf(port, i2c_spi_addr__7bf, reg, data_ptr); #endif } @@ -168,20 +170,22 @@ static int raw_read8(const int port, const int addr, const int reg, /** * Write 8bit register from accelerometer. */ -static int raw_write8(const int port, const int addr, const int reg, - int data) +static int raw_write8__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const int reg, int data) { int rv = -EC_ERROR_PARAM1; - if (BMI160_IS_SPI(addr)) { + if (SLAVE_IS_SPI(i2c_spi_addr__7bf)) { #ifdef CONFIG_SPI_ACCEL_PORT uint8_t cmd[2] = { reg, data }; - rv = spi_transaction(&spi_devices[BMI160_SPI_ADDRESS(addr)], - cmd, 2, NULL, 0); + rv = spi_transaction( + &spi_devices[SLAVE_GET_SPI_ADDR__7b(i2c_spi_addr__7bf)], + cmd, 2, NULL, 0); #endif } else { #ifdef I2C_PORT_ACCEL - rv = i2c_write8(port, BMI160_I2C_ADDRESS(addr), + rv = i2c_write8__7bf(port, i2c_spi_addr__7bf, reg, data); #endif } @@ -199,18 +203,19 @@ static int raw_write8(const int port, const int addr, const int reg, /** * Read 32bit register from accelerometer. */ -static int raw_read32(const int port, const int addr, const uint8_t reg, - int *data_ptr) +static int raw_read32__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const uint8_t reg, int *data_ptr) { int rv = -EC_ERROR_PARAM1; - if (BMI160_IS_SPI(addr)) { + if (SLAVE_IS_SPI(i2c_spi_addr__7bf)) { #ifdef CONFIG_SPI_ACCEL_PORT - rv = spi_raw_read(BMI160_SPI_ADDRESS(addr), reg, - (uint8_t *)data_ptr, 4); + rv = spi_raw_read(SLAVE_GET_SPI_ADDR__7b(i2c_spi_addr__7bf), + reg, (uint8_t *)data_ptr, 4); #endif } else { #ifdef I2C_PORT_ACCEL - rv = i2c_read32(port, BMI160_I2C_ADDRESS(addr), + rv = i2c_read32__7bf(port, i2c_spi_addr__7bf, reg, data_ptr); #endif } @@ -221,19 +226,21 @@ static int raw_read32(const int port, const int addr, const uint8_t reg, /** * Read n bytes from accelerometer. */ -static int raw_read_n(const int port, const int addr, const uint8_t reg, - uint8_t *data_ptr, const int len) +static int raw_read_n__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const uint8_t reg, uint8_t *data_ptr, const int len) { int rv = -EC_ERROR_PARAM1; - if (BMI160_IS_SPI(addr)) { + if (SLAVE_IS_SPI(i2c_spi_addr__7bf)) { #ifdef CONFIG_SPI_ACCEL_PORT - rv = spi_raw_read(BMI160_SPI_ADDRESS(addr), reg, data_ptr, len); + rv = spi_raw_read(SLAVE_GET_SPI_ADDR__7b(i2c_spi_addr__7bf), + reg, data_ptr, len); #endif } else { #ifdef I2C_PORT_ACCEL - rv = i2c_read_block(port, BMI160_I2C_ADDRESS(addr), reg, - data_ptr, len); + rv = i2c_read_block__7bf(port, i2c_spi_addr__7bf, + reg, data_ptr, len); #endif } return rv; @@ -246,11 +253,13 @@ static int raw_read_n(const int port, const int addr, const uint8_t reg, * 1: manual access, we can issue i2c to the compass * 0: data access: BMI160 gather data periodically from the compass. */ -static int bmi160_sec_access_ctrl(const int port, const int addr, +static int bmi160_sec_access_ctrl__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, const int enable) { int mag_if_ctrl; - raw_read8(port, addr, BMI160_MAG_IF_1, &mag_if_ctrl); + raw_read8__7bf(port, i2c_spi_addr__7bf, + BMI160_MAG_IF_1, &mag_if_ctrl); if (enable) { mag_if_ctrl |= BMI160_MAG_MANUAL_EN; mag_if_ctrl &= ~BMI160_MAG_READ_BURST_MASK; @@ -260,30 +269,37 @@ static int bmi160_sec_access_ctrl(const int port, const int addr, mag_if_ctrl &= ~BMI160_MAG_READ_BURST_MASK; mag_if_ctrl |= BMI160_MAG_READ_BURST_8; } - return raw_write8(port, addr, BMI160_MAG_IF_1, mag_if_ctrl); + return raw_write8__7bf(port, i2c_spi_addr__7bf, + BMI160_MAG_IF_1, mag_if_ctrl); } /** * Read register from compass. * Assuming we are in manual access mode, read compass i2c register. */ -int bmi160_sec_raw_read8(const int port, const int addr, const uint8_t reg, - int *data_ptr) +int bmi160_sec_raw_read8__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const uint8_t reg, int *data_ptr) { /* Only read 1 bytes */ - raw_write8(port, addr, BMI160_MAG_I2C_READ_ADDR, reg); - return raw_read8(port, addr, BMI160_MAG_I2C_READ_DATA, data_ptr); + raw_write8__7bf(port, i2c_spi_addr__7bf, + BMI160_MAG_I2C_READ_ADDR, reg); + return raw_read8__7bf(port, i2c_spi_addr__7bf, + BMI160_MAG_I2C_READ_DATA, data_ptr); } /** * Write register from compass. * Assuming we are in manual access mode, write to compass i2c register. */ -int bmi160_sec_raw_write8(const int port, const int addr, const uint8_t reg, - int data) +int bmi160_sec_raw_write8__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const uint8_t reg, int data) { - raw_write8(port, addr, BMI160_MAG_I2C_WRITE_DATA, data); - return raw_write8(port, addr, BMI160_MAG_I2C_WRITE_ADDR, reg); + raw_write8__7bf(port, i2c_spi_addr__7bf, + BMI160_MAG_I2C_WRITE_DATA, data); + return raw_write8__7bf(port, i2c_spi_addr__7bf, + BMI160_MAG_I2C_WRITE_ADDR, reg); } #endif @@ -295,17 +311,21 @@ static int enable_fifo(const struct motion_sensor_t *s, int enable) if (enable) { /* FIFO start collecting events */ - ret = raw_read8(s->port, s->addr, BMI160_FIFO_CONFIG_1, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_CONFIG_1, &val); val |= BMI160_FIFO_SENSOR_EN(s->type); - ret = raw_write8(s->port, s->addr, BMI160_FIFO_CONFIG_1, val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_CONFIG_1, val); if (ret == EC_SUCCESS) data->flags |= 1 << (s->type + BMI160_FIFO_FLAG_OFFSET); } else { /* FIFO stop collecting events */ - ret = raw_read8(s->port, s->addr, BMI160_FIFO_CONFIG_1, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_CONFIG_1, &val); val &= ~BMI160_FIFO_SENSOR_EN(s->type); - ret = raw_write8(s->port, s->addr, BMI160_FIFO_CONFIG_1, val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_CONFIG_1, val); if (ret == EC_SUCCESS) data->flags &= ~(1 << (s->type + BMI160_FIFO_FLAG_OFFSET)); @@ -332,7 +352,8 @@ static int set_range(const struct motion_sensor_t *s, ranges = get_range_table(s->type, &range_tbl_size); reg_val = get_reg_val(range, rnd, ranges, range_tbl_size); - ret = raw_write8(s->port, s->addr, ctrl_reg, reg_val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + ctrl_reg, reg_val); /* Now that we have set the range, update the driver's value. */ if (ret == EC_SUCCESS) data->range = get_engineering_val(reg_val, ranges, @@ -369,7 +390,8 @@ static int set_data_rate(const struct motion_sensor_t *s, enable_fifo(s, 0); #endif /* go to suspend mode */ - ret = raw_write8(s->port, s->addr, BMI160_CMD_REG, + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_MODE_SUSPEND(s->type)); msleep(3); data->odr = 0; @@ -380,7 +402,8 @@ static int set_data_rate(const struct motion_sensor_t *s, return ret; } else if (data->odr == 0) { /* back from suspend mode. */ - ret = raw_write8(s->port, s->addr, BMI160_CMD_REG, + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_MODE_NORMAL(s->type)); msleep(wakeup_time[s->type]); } @@ -421,12 +444,12 @@ static int set_data_rate(const struct motion_sensor_t *s, */ mutex_lock(s->mutex); - ret = raw_read8(s->port, s->addr, ctrl_reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, ctrl_reg, &val); if (ret != EC_SUCCESS) goto accel_cleanup; val = (val & ~BMI160_ODR_MASK) | reg_val; - ret = raw_write8(s->port, s->addr, ctrl_reg, val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, ctrl_reg, val); if (ret != EC_SUCCESS) goto accel_cleanup; @@ -483,8 +506,8 @@ static int get_offset(const struct motion_sensor_t *s, * range selected for the accelerometer. */ for (i = X; i <= Z; i++) { - raw_read8(s->port, s->addr, BMI160_OFFSET_ACC70 + i, - &val); + raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_ACC70 + i, &val); if (val > 0x7f) val = -256 + val; v[i] = val * BMI160_OFFSET_ACC_MULTI_MG / @@ -493,7 +516,8 @@ static int get_offset(const struct motion_sensor_t *s, break; case MOTIONSENSE_TYPE_GYRO: /* Read the MSB first */ - raw_read8(s->port, s->addr, BMI160_OFFSET_EN_GYR98, &val98); + raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_EN_GYR98, &val98); /* * The offset of the gyroscope off_gyr_[xyz] is a 10 bit * two-complement number in units of 0.061 °/s. @@ -501,8 +525,8 @@ static int get_offset(const struct motion_sensor_t *s, * -31.25 °/s to +31.25 °/s */ for (i = X; i <= Z; i++) { - raw_read8(s->port, s->addr, BMI160_OFFSET_GYR70 + i, - &val); + raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_GYR70 + i, &val); val |= ((val98 >> (2 * i)) & 0x3) << 8; if (val > 0x1ff) val = -1024 + val; @@ -537,7 +561,8 @@ static int set_offset(const struct motion_sensor_t *s, rotate_inv(v, *s->rot_standard_ref, v); - ret = raw_read8(s->port, s->addr, BMI160_OFFSET_EN_GYR98, &val98); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_EN_GYR98, &val98); if (ret != 0) return ret; @@ -552,10 +577,11 @@ static int set_offset(const struct motion_sensor_t *s, val = -128; if (val < 0) val = 256 + val; - raw_write8(s->port, s->addr, BMI160_OFFSET_ACC70 + i, - val); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_ACC70 + i, val); } - ret = raw_write8(s->port, s->addr, BMI160_OFFSET_EN_GYR98, + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_EN_GYR98, val98 | BMI160_OFFSET_ACC_EN); break; case MOTIONSENSE_TYPE_GYRO: @@ -568,12 +594,13 @@ static int set_offset(const struct motion_sensor_t *s, val = -512; if (val < 0) val = 1024 + val; - raw_write8(s->port, s->addr, BMI160_OFFSET_GYR70 + i, - val & 0xFF); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_GYR70 + i, val & 0xFF); val98 &= ~(0x3 << (2 * i)); val98 |= (val >> 8) << (2 * i); } - ret = raw_write8(s->port, s->addr, BMI160_OFFSET_EN_GYR98, + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_EN_GYR98, val98 | BMI160_OFFSET_GYRO_EN); break; #ifdef CONFIG_MAG_BMI160_BMM150 @@ -644,9 +671,10 @@ static int perform_calib(const struct motion_sensor_t *s) ret = EC_RES_INVALID_PARAM; goto end_perform_calib; } - ret = raw_write8(s->port, s->addr, BMI160_FOC_CONF, val); - ret = raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_START_FOC); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FOC_CONF, val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_START_FOC); deadline.val = get_time().val + 400 * MSEC; do { if (timestamp_expired(deadline, NULL)) { @@ -654,15 +682,17 @@ static int perform_calib(const struct motion_sensor_t *s) goto end_perform_calib; } msleep(50); - ret = raw_read8(s->port, s->addr, BMI160_STATUS, &status); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_STATUS, &status); if (ret != EC_SUCCESS) goto end_perform_calib; } while ((status & BMI160_FOC_RDY) == 0); /* Calibration is successful, and loaded, use the result */ - ret = raw_read8(s->port, s->addr, BMI160_OFFSET_EN_GYR98, &val); - ret = raw_write8(s->port, s->addr, BMI160_OFFSET_EN_GYR98, - val | en_flag); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_EN_GYR98, &val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_OFFSET_EN_GYR98, val | en_flag); end_perform_calib: set_data_rate(s, rate, 0); return ret; @@ -715,7 +745,8 @@ int manage_activity(const struct motion_sensor_t *s, return ret; if (enable) { /* We should use parameters from caller */ - raw_write8(s->port, s->addr, BMI160_INT_MOTION_3, + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_MOTION_3, BMI160_MOTION_PROOF_TIME( CONFIG_GESTURE_SIGMO_PROOF_MS) << BMI160_MOTION_PROOF_OFF | @@ -723,7 +754,8 @@ int manage_activity(const struct motion_sensor_t *s, CONFIG_GESTURE_SIGMO_SKIP_MS) << BMI160_MOTION_SKIP_OFF | BMI160_MOTION_SIG_MOT_SEL); - raw_write8(s->port, s->addr, BMI160_INT_MOTION_1, + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_MOTION_1, BMI160_MOTION_TH(s, CONFIG_GESTURE_SIGMO_THRES_MG)); tmp |= BMI160_INT_ANYMO_X_EN | @@ -734,7 +766,8 @@ int manage_activity(const struct motion_sensor_t *s, BMI160_INT_ANYMO_Y_EN | BMI160_INT_ANYMO_Z_EN); } - ret = raw_write8(s->port, s->addr, BMI160_INT_EN_0, tmp); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_EN_0, tmp); if (ret) ret = EC_RES_UNAVAILABLE; break; @@ -744,14 +777,16 @@ int manage_activity(const struct motion_sensor_t *s, case MOTIONSENSE_ACTIVITY_DOUBLE_TAP: { int tmp; /* Set double tap interrupt */ - ret = raw_read8(s->port, s->addr, BMI160_INT_EN_0, &tmp); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_EN_0, &tmp); if (ret) return ret; if (enable) tmp |= BMI160_INT_D_TAP_EN; else tmp &= ~BMI160_INT_D_TAP_EN; - ret = raw_write8(s->port, s->addr, BMI160_INT_EN_0, tmp); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_EN_0, tmp); if (ret) ret = EC_RES_UNAVAILABLE; break; @@ -888,13 +923,14 @@ static int load_fifo(struct motion_sensor_t *s, uint32_t last_ts) * Flush potential left over: * When sensor is resumed, we won't read old data. */ - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_FIFO_FLUSH); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_FIFO_FLUSH); return EC_SUCCESS; } - raw_read_n(s->port, s->addr, BMI160_FIFO_LENGTH_0, - (uint8_t *)&length, sizeof(length)); + raw_read_n__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_LENGTH_0, + (uint8_t *)&length, sizeof(length)); length &= BMI160_FIFO_LENGTH_MASK; /* @@ -914,8 +950,8 @@ static int load_fifo(struct motion_sensor_t *s, uint32_t last_ts) length = MIN(length, sizeof(bmi160_buffer)); - raw_read_n(s->port, s->addr, BMI160_FIFO_DATA, bmi160_buffer, - length); + raw_read_n__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_DATA, bmi160_buffer, length); beginning = *(uint32_t *)bmi160_buffer; ep = bmi160_buffer + length; /* @@ -959,7 +995,7 @@ static int load_fifo(struct motion_sensor_t *s, uint32_t last_ts) default: CPRINTS("Unknown header: 0x%02x @ %d", hdr, bp - bmi160_buffer); - raw_write8(s->port, s->addr, + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, BMI160_CMD_REG, BMI160_CMD_FIFO_FLUSH); return EC_ERROR_NOT_HANDLED; @@ -1023,36 +1059,45 @@ static int config_interrupt(const struct motion_sensor_t *s) return EC_SUCCESS; mutex_lock(s->mutex); - raw_write8(s->port, s->addr, BMI160_CMD_REG, BMI160_CMD_FIFO_FLUSH); - raw_write8(s->port, s->addr, BMI160_CMD_REG, BMI160_CMD_INT_RESET); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_FIFO_FLUSH); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_INT_RESET); #ifdef CONFIG_GESTURE_SENSOR_BATTERY_TAP - raw_write8(s->port, s->addr, BMI160_INT_TAP_0, - BMI160_TAP_DUR(s, CONFIG_GESTURE_TAP_MAX_INTERSTICE_T)); - ret = raw_write8(s->port, s->addr, BMI160_INT_TAP_1, - BMI160_TAP_TH(s, CONFIG_GESTURE_TAP_THRES_MG)); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_TAP_0, + BMI160_TAP_DUR(s, CONFIG_GESTURE_TAP_MAX_INTERSTICE_T)); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_TAP_1, + BMI160_TAP_TH(s, CONFIG_GESTURE_TAP_THRES_MG)); #endif #ifdef CONFIG_BMI160_ORIENTATION_SENSOR /* only use orientation sensor on the lid sensor */ if (s->location == MOTIONSENSE_LOC_LID) { - ret = raw_write8(s->port, s->addr, BMI160_INT_ORIENT_0, - BMI160_INT_ORIENT_0_INIT_VAL); - ret = raw_write8(s->port, s->addr, BMI160_INT_ORIENT_1, - BMI160_INT_ORIENT_1_INIT_VAL); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_ORIENT_0, + BMI160_INT_ORIENT_0_INIT_VAL); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_ORIENT_1, + BMI160_INT_ORIENT_1_INIT_VAL); } #endif #ifdef CONFIG_ACCELGYRO_BMI160_INT2_OUTPUT - ret = raw_write8(s->port, s->addr, BMI160_INT_LATCH, BMI160_LATCH_5MS); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_LATCH, BMI160_LATCH_5MS); #else /* Also, configure int2 as an external input. */ - ret = raw_write8(s->port, s->addr, BMI160_INT_LATCH, - BMI160_INT2_INPUT_EN | BMI160_LATCH_5MS); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_LATCH, + BMI160_INT2_INPUT_EN | BMI160_LATCH_5MS); #endif /* configure int1 as an interrupt */ - ret = raw_write8(s->port, s->addr, BMI160_INT_OUT_CTRL, - BMI160_INT_CTRL(1, OUTPUT_EN)); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_OUT_CTRL, + BMI160_INT_CTRL(1, OUTPUT_EN)); /* Map activity interrupt to int 1 */ tmp = 0; @@ -1067,29 +1112,36 @@ static int config_interrupt(const struct motion_sensor_t *s) if (s->location == MOTIONSENSE_LOC_LID) tmp |= BMI160_INT_ORIENT; #endif - ret = raw_write8(s->port, s->addr, BMI160_INT_MAP_REG(1), tmp); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_MAP_REG(1), tmp); #ifdef CONFIG_ACCEL_FIFO /* map fifo water mark to int 1 */ - ret = raw_write8(s->port, s->addr, BMI160_INT_FIFO_MAP, - BMI160_INT_MAP(1, FWM) | - BMI160_INT_MAP(1, FFULL)); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_FIFO_MAP, + BMI160_INT_MAP(1, FWM) | + BMI160_INT_MAP(1, FFULL)); /* configure fifo watermark to int whenever there's any data in there */ - ret = raw_write8(s->port, s->addr, BMI160_FIFO_CONFIG_0, 1); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_CONFIG_0, 1); #ifdef CONFIG_ACCELGYRO_BMI160_INT2_OUTPUT - ret = raw_write8(s->port, s->addr, BMI160_FIFO_CONFIG_1, - BMI160_FIFO_HEADER_EN); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_CONFIG_1, + BMI160_FIFO_HEADER_EN); #else - ret = raw_write8(s->port, s->addr, BMI160_FIFO_CONFIG_1, - BMI160_FIFO_TAG_INT2_EN | - BMI160_FIFO_HEADER_EN); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_FIFO_CONFIG_1, + BMI160_FIFO_TAG_INT2_EN | + BMI160_FIFO_HEADER_EN); #endif /* Set fifo*/ - ret = raw_read8(s->port, s->addr, BMI160_INT_EN_1, &tmp); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_EN_1, &tmp); tmp |= BMI160_INT_FWM_EN | BMI160_INT_FFUL_EN; - ret = raw_write8(s->port, s->addr, BMI160_INT_EN_1, tmp); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_EN_1, tmp); #endif mutex_unlock(s->mutex); return ret; @@ -1148,8 +1200,8 @@ static int irq_handler(struct motion_sensor_t *s, uint32_t *event) return EC_ERROR_NOT_HANDLED; do { - rv = raw_read32(s->port, s->addr, BMI160_INT_STATUS_0, - &interrupt); + rv = raw_read32__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_INT_STATUS_0, &interrupt); /* * Bail out of this loop there was an error reading the register */ @@ -1185,7 +1237,8 @@ static int read(const struct motion_sensor_t *s, intv3_t v) uint8_t data[6]; int ret, status = 0; - ret = raw_read8(s->port, s->addr, BMI160_STATUS, &status); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_STATUS, &status); if (ret != EC_SUCCESS) return ret; @@ -1201,7 +1254,8 @@ static int read(const struct motion_sensor_t *s, intv3_t v) } /* Read 6 bytes starting at xyz_reg */ - ret = raw_read_n(s->port, s->addr, get_xyz_reg(s->type), data, 6); + ret = raw_read_n__7bf(s->port, s->i2c_spi_addr__7bf, + get_xyz_reg(s->type), data, 6); if (ret != EC_SUCCESS) { CPRINTS("%s: type:0x%X RD XYZ Error %d", s->name, s->type, ret); @@ -1216,21 +1270,23 @@ static int init(const struct motion_sensor_t *s) int ret = 0, tmp, i; struct accelgyro_saved_data_t *saved_data = BMI160_GET_SAVED_DATA(s); - ret = raw_read8(s->port, s->addr, BMI160_CHIP_ID, &tmp); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CHIP_ID, &tmp); if (ret) return EC_ERROR_UNKNOWN; if (tmp != BMI160_CHIP_ID_MAJOR && tmp != BMI168_CHIP_ID_MAJOR) { /* The device may be lock on paging mode. Try to unlock it. */ - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_EXT_MODE_EN_B0); - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_EXT_MODE_EN_B1); - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_EXT_MODE_EN_B2); - raw_write8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, - BMI160_CMD_PAGING_EN); - raw_write8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, 0); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_EXT_MODE_EN_B0); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_EXT_MODE_EN_B1); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_EXT_MODE_EN_B2); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, BMI160_CMD_PAGING_EN); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, 0); return EC_ERROR_ACCESS_DENIED; } @@ -1239,8 +1295,8 @@ static int init(const struct motion_sensor_t *s) struct bmi160_drv_data_t *data = BMI160_GET_DATA(s); /* Reset the chip to be in a good state */ - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_SOFT_RESET); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_SOFT_RESET); msleep(1); data->flags &= ~(BMI160_FLAG_SEC_I2C_ENABLED | (BMI160_FIFO_ALL_MASK << @@ -1258,7 +1314,8 @@ static int init(const struct motion_sensor_t *s) #endif #endif /* To avoid gyro wakeup */ - raw_write8(s->port, s->addr, BMI160_PMU_TRIGGER, 0); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_PMU_TRIGGER, 0); } #ifdef CONFIG_BMI160_SEC_I2C @@ -1269,8 +1326,8 @@ static int init(const struct motion_sensor_t *s) * To be able to configure the real magnetometer, we must set * the BMI160 magnetometer part (a pass through) in normal mode. */ - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_MODE_NORMAL(s->type)); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_MODE_NORMAL(s->type)); msleep(wakeup_time[s->type]); if ((data->flags & BMI160_FLAG_SEC_I2C_ENABLED) == 0) { @@ -1283,48 +1340,57 @@ static int init(const struct motion_sensor_t *s) * * Magic command sequences */ - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_EXT_MODE_EN_B0); - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_EXT_MODE_EN_B1); - raw_write8(s->port, s->addr, BMI160_CMD_REG, - BMI160_CMD_EXT_MODE_EN_B2); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_EXT_MODE_EN_B0); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_EXT_MODE_EN_B1); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_REG, BMI160_CMD_EXT_MODE_EN_B2); /* * Change the register page to target mode, to change * the internal pull ups of the secondary interface. */ - raw_read8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, - &ext_page_reg); - raw_write8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, - ext_page_reg | BMI160_CMD_TARGET_PAGE); - raw_read8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, - &ext_page_reg); - raw_write8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, - ext_page_reg | BMI160_CMD_PAGING_EN); - raw_read8(s->port, s->addr, BMI160_COM_C_TRIM_ADDR, - &pullup_reg); - raw_write8(s->port, s->addr, BMI160_COM_C_TRIM_ADDR, - pullup_reg | BMI160_COM_C_TRIM); - raw_read8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, - &ext_page_reg); - raw_write8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, - ext_page_reg & ~BMI160_CMD_TARGET_PAGE); - raw_read8(s->port, s->addr, BMI160_CMD_EXT_MODE_ADDR, - &ext_page_reg); + raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, &ext_page_reg); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, + ext_page_reg | BMI160_CMD_TARGET_PAGE); + raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, &ext_page_reg); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, + ext_page_reg | BMI160_CMD_PAGING_EN); + raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_COM_C_TRIM_ADDR, &pullup_reg); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_COM_C_TRIM_ADDR, + pullup_reg | BMI160_COM_C_TRIM); + raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, &ext_page_reg); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, + ext_page_reg & ~BMI160_CMD_TARGET_PAGE); + raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_CMD_EXT_MODE_ADDR, &ext_page_reg); /* Set the i2c address of the compass */ - ret = raw_write8(s->port, s->addr, BMI160_MAG_IF_0, - CONFIG_ACCELGYRO_SEC_ADDR); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_MAG_IF_0, + I2C_GET_ADDR__7b( + CONFIG_ACCELGYRO_SEC_ADDR__7BF) + << 1); /* Enable the secondary interface as I2C */ - ret = raw_write8(s->port, s->addr, BMI160_IF_CONF, - BMI160_IF_MODE_AUTO_I2C << BMI160_IF_MODE_OFF); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_IF_CONF, + BMI160_IF_MODE_AUTO_I2C << + BMI160_IF_MODE_OFF); data->flags |= BMI160_FLAG_SEC_I2C_ENABLED; } - bmi160_sec_access_ctrl(s->port, s->addr, 1); + bmi160_sec_access_ctrl__7bf(s->port, s->i2c_spi_addr__7bf, 1); ret = bmm150_init(s); if (ret) @@ -1332,13 +1398,13 @@ static int init(const struct motion_sensor_t *s) return ret; /* Leave the address for reading the data */ - raw_write8(s->port, s->addr, BMI160_MAG_I2C_READ_ADDR, - BMM150_BASE_DATA); + raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_MAG_I2C_READ_ADDR, BMM150_BASE_DATA); /* * Put back the secondary interface in normal mode. * BMI160 will poll based on the configure ODR. */ - bmi160_sec_access_ctrl(s->port, s->addr, 0); + bmi160_sec_access_ctrl__7bf(s->port, s->i2c_spi_addr__7bf, 0); /* * Clean interrupt event that may have occurred while the @@ -1396,8 +1462,8 @@ struct i2c_stress_test_dev bmi160_i2c_stress_test_dev = { .read_val = BMI160_CHIP_ID_MAJOR, .write_reg = BMI160_PMU_TRIGGER, }, - .i2c_read = &raw_read8, - .i2c_write = &raw_write8, + .i2c_read__7bf = &raw_read8__7bf, + .i2c_write__7bf = &raw_write8__7bf, }; #endif /* CONFIG_CMD_I2C_STRESS_TEST_ACCEL */ @@ -1407,7 +1473,8 @@ int bmi160_get_sensor_temp(int idx, int *temp_ptr) int16_t temp; int ret; - ret = raw_read_n(s->port, s->addr, BMI160_TEMPERATURE_0, + ret = raw_read_n__7bf(s->port, s->i2c_spi_addr__7bf, + BMI160_TEMPERATURE_0, (uint8_t *)&temp, sizeof(temp)); if (ret || temp == BMI160_INVALID_TEMP) diff --git a/driver/accelgyro_bmi160.h b/driver/accelgyro_bmi160.h index 428338b080..4f9cc61b84 100644 --- a/driver/accelgyro_bmi160.h +++ b/driver/accelgyro_bmi160.h @@ -22,14 +22,10 @@ * | SPI device ID | 1 | * +-------------------------------+---+ */ -#define BMI160_SET_SPI_ADDRESS(_addr) (((_addr) << 1) | 1) -#define BMI160_IS_SPI(_addr) ((_addr) & 1) -#define BMI160_SPI_ADDRESS(_addr) ((_addr) >> 1) -#define BMI160_I2C_ADDRESS(_addr) (_addr) /* I2C addresses */ -#define BMI160_ADDR0 0xd0 -#define BMI160_ADDR1 0xd2 +#define BMI160_ADDR0__7bf 0x68 +#define BMI160_ADDR1__7bf 0x69 #define BMI160_CHIP_ID 0x00 #define BMI160_CHIP_ID_MAJOR 0xd1 @@ -490,10 +486,10 @@ void bmi160_interrupt(enum gpio_signal signal); #ifdef CONFIG_BMI160_SEC_I2C /* Functions to access the secondary device through the accel/gyro. */ -int bmi160_sec_raw_read8(const int port, const int addr, const uint8_t reg, - int *data_ptr); -int bmi160_sec_raw_write8(const int port, const int addr, const uint8_t reg, - int data); +int bmi160_sec_raw_read8__7bf(const int port, const uint16_t addr__7bf, + const uint8_t reg, int *data_ptr); +int bmi160_sec_raw_write8__7bf(const int port, const uint16_t addr__7bf, + const uint8_t reg, int data); #endif #ifdef CONFIG_CMD_I2C_STRESS_TEST_ACCEL diff --git a/driver/accelgyro_lsm6ds0.c b/driver/accelgyro_lsm6ds0.c index 664fcc7e88..19ed4fa272 100644 --- a/driver/accelgyro_lsm6ds0.c +++ b/driver/accelgyro_lsm6ds0.c @@ -151,19 +151,19 @@ static int get_engineering_val(const int reg_val, /** * Read register from accelerometer. */ -static inline int raw_read8(const int port, const int addr, const int reg, - int *data_ptr) +static inline int raw_read8__7bf(const int port, const uint16_t i2c_addr__7bf, + const int reg, int *data_ptr) { - return i2c_read8(port, addr, reg, data_ptr); + return i2c_read8__7bf(port, i2c_addr__7bf, reg, data_ptr); } /** * Write register from accelerometer. */ -static inline int raw_write8(const int port, const int addr, const int reg, - int data) +static inline int raw_write8__7bf(const int port, const uint16_t i2c_addr__7bf, + const int reg, int data) { - return i2c_write8(port, addr, reg, data); + return i2c_write8__7bf(port, i2c_addr__7bf, reg, data); } static int set_range(const struct motion_sensor_t *s, @@ -186,12 +186,14 @@ static int set_range(const struct motion_sensor_t *s, */ mutex_lock(s->mutex); - ret = raw_read8(s->port, s->addr, ctrl_reg, &ctrl_val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + ctrl_reg, &ctrl_val); if (ret != EC_SUCCESS) goto accel_cleanup; ctrl_val = (ctrl_val & ~LSM6DS0_RANGE_MASK) | reg_val; - ret = raw_write8(s->port, s->addr, ctrl_reg, ctrl_val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + ctrl_reg, ctrl_val); /* Now that we have set the range, update the driver's value. */ if (ret == EC_SUCCESS) @@ -234,12 +236,12 @@ static int set_data_rate(const struct motion_sensor_t *s, */ mutex_lock(s->mutex); - ret = raw_read8(s->port, s->addr, ctrl_reg, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, ctrl_reg, &val); if (ret != EC_SUCCESS) goto accel_cleanup; val = (val & ~LSM6DS0_ODR_MASK) | reg_val; - ret = raw_write8(s->port, s->addr, ctrl_reg, val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, ctrl_reg, val); /* Now that we have set the odr, update the driver's value. */ if (ret == EC_SUCCESS) @@ -254,14 +256,16 @@ static int set_data_rate(const struct motion_sensor_t *s, * Table 48 Gyroscope high-pass filter cutoff frequency */ if (MOTIONSENSE_TYPE_GYRO == s->type) { - ret = raw_read8(s->port, s->addr, LSM6DS0_CTRL_REG3_G, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DS0_CTRL_REG3_G, &val); if (ret != EC_SUCCESS) goto accel_cleanup; val &= ~(0x3 << 4); /* clear bit [5:4] */ val = (rate > 119000) ? (val | (1<<7)) /* set high-power mode */ : (val & ~(1<<7)); /* set low-power mode */ - ret = raw_write8(s->port, s->addr, LSM6DS0_CTRL_REG3_G, val); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DS0_CTRL_REG3_G, val); } accel_cleanup: @@ -304,7 +308,8 @@ static int is_data_ready(const struct motion_sensor_t *s, int *ready) { int ret, tmp; - ret = raw_read8(s->port, s->addr, LSM6DS0_STATUS_REG, &tmp); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DS0_STATUS_REG, &tmp); if (ret != EC_SUCCESS) { CPRINTS("%s type:0x%X RS Error", s->name, s->type); @@ -344,7 +349,8 @@ static int read(const struct motion_sensor_t *s, intv3_t v) xyz_reg = get_xyz_reg(s->type); /* Read 6 bytes starting at xyz_reg */ - ret = i2c_read_block(s->port, s->addr, xyz_reg, raw, 6); + ret = i2c_read_block__7bf(s->port, s->i2c_spi_addr__7bf, + xyz_reg, raw, 6); if (ret != EC_SUCCESS) { CPRINTS("%s type:0x%X RD XYZ Error", @@ -369,7 +375,8 @@ static int init(const struct motion_sensor_t *s) { int ret = 0, tmp; - ret = raw_read8(s->port, s->addr, LSM6DS0_WHO_AM_I_REG, &tmp); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DS0_WHO_AM_I_REG, &tmp); if (ret) return EC_ERROR_UNKNOWN; @@ -391,21 +398,23 @@ static int init(const struct motion_sensor_t *s) if (MOTIONSENSE_TYPE_ACCEL == s->type) { mutex_lock(s->mutex); - ret = raw_read8(s->port, s->addr, LSM6DS0_CTRL_REG8, &tmp); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DS0_CTRL_REG8, &tmp); if (ret) { mutex_unlock(s->mutex); return EC_ERROR_UNKNOWN; } tmp |= (1 | LSM6DS0_BDU_ENABLE); - ret = raw_write8(s->port, s->addr, LSM6DS0_CTRL_REG8, tmp); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DS0_CTRL_REG8, tmp); mutex_unlock(s->mutex); if (ret) return ret; /* Power Down Gyro */ - ret = raw_write8(s->port, s->addr, - LSM6DS0_CTRL_REG1_G, 0x0); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DS0_CTRL_REG1_G, 0x0); if (ret) return ret; } diff --git a/driver/accelgyro_lsm6ds0.h b/driver/accelgyro_lsm6ds0.h index ff8a36818d..4724dac168 100644 --- a/driver/accelgyro_lsm6ds0.h +++ b/driver/accelgyro_lsm6ds0.h @@ -15,8 +15,8 @@ * 7-bit address is 110101Xb. Where 'X' is determined * by the voltage on the ADDR pin. */ -#define LSM6DS0_ADDR0 0xd4 -#define LSM6DS0_ADDR1 0xd6 +#define LSM6DS0_ADDR0__7bf 0x6a +#define LSM6DS0_ADDR1__7bf 0x6b /* who am I */ #define LSM6DS0_WHO_AM_I 0x68 diff --git a/driver/accelgyro_lsm6dsm.c b/driver/accelgyro_lsm6dsm.c index b4ba92a0e8..aa60013f33 100644 --- a/driver/accelgyro_lsm6dsm.c +++ b/driver/accelgyro_lsm6dsm.c @@ -106,23 +106,24 @@ static int config_interrupt(const struct motion_sensor_t *accel) int ret = EC_SUCCESS; int int1_ctrl_val; - ret = st_raw_read8(accel->port, accel->addr, LSM6DSM_INT1_CTRL, - &int1_ctrl_val); + ret = st_raw_read8__7bf(accel->port, accel->i2c_spi_addr__7bf, + LSM6DSM_INT1_CTRL, &int1_ctrl_val); if (ret != EC_SUCCESS) return ret; #ifdef CONFIG_ACCEL_FIFO /* As soon as one sample is ready, trigger an interrupt. */ - ret = st_raw_write8(accel->port, accel->addr, LSM6DSM_FIFO_CTRL1_ADDR, - OUT_XYZ_SIZE / sizeof(uint16_t)); + ret = st_raw_write8__7bf(accel->port, accel->i2c_spi_addr__7bf, + LSM6DSM_FIFO_CTRL1_ADDR, + OUT_XYZ_SIZE / sizeof(uint16_t)); if (ret != EC_SUCCESS) return ret; int1_ctrl_val |= LSM6DSM_INT_FIFO_TH | LSM6DSM_INT_FIFO_OVR | LSM6DSM_INT_FIFO_FULL; #endif /* CONFIG_ACCEL_FIFO */ - return st_raw_write8( - accel->port, accel->addr, LSM6DSM_INT1_CTRL, int1_ctrl_val); + return st_raw_write8__7bf(accel->port, accel->i2c_spi_addr__7bf, + LSM6DSM_INT1_CTRL, int1_ctrl_val); } @@ -134,7 +135,7 @@ static int config_interrupt(const struct motion_sensor_t *accel) */ static int fifo_disable(const struct motion_sensor_t *accel) { - return st_raw_write8(accel->port, accel->addr, + return st_raw_write8__7bf(accel->port, accel->i2c_spi_addr__7bf, LSM6DSM_FIFO_CTRL5_ADDR, 0x00); } @@ -194,8 +195,8 @@ static int fifo_enable(const struct motion_sensor_t *accel) /* FIFO ODR must be set before the decimation factors */ odr_reg_val = LSM6DSM_ODR_TO_REG(max_odr) << LSM6DSM_FIFO_CTRL5_ODR_OFF; - err = st_raw_write8(accel->port, accel->addr, LSM6DSM_FIFO_CTRL5_ADDR, - odr_reg_val); + err = st_raw_write8__7bf(accel->port, accel->i2c_spi_addr__7bf, + LSM6DSM_FIFO_CTRL5_ADDR, odr_reg_val); /* Scan all sensors configuration to calculate FIFO decimator. */ private->config.total_samples_in_pattern = 0; @@ -212,12 +213,14 @@ static int fifo_enable(const struct motion_sensor_t *accel) private->config.samples_in_pattern[i] = 0; } } - st_raw_write8(accel->port, accel->addr, LSM6DSM_FIFO_CTRL3_ADDR, + st_raw_write8__7bf(accel->port, accel->i2c_spi_addr__7bf, + LSM6DSM_FIFO_CTRL3_ADDR, (decimators[FIFO_DEV_GYRO] << LSM6DSM_FIFO_DEC_G_OFF) | (decimators[FIFO_DEV_ACCEL] << LSM6DSM_FIFO_DEC_XL_OFF)); #ifdef CONFIG_LSM6DSM_SEC_I2C - st_raw_write8(accel->port, accel->addr, LSM6DSM_FIFO_CTRL4_ADDR, - decimators[FIFO_DEV_MAG]); + st_raw_write8__7bf(accel->port, accel->i2c_spi_addr__7bf, + LSM6DSM_FIFO_CTRL4_ADDR, + decimators[FIFO_DEV_MAG]); /* * FIFO ODR is limited by odr of gyro or accel. @@ -252,7 +255,8 @@ static int fifo_enable(const struct motion_sensor_t *accel) * After ODR and decimation values are set, continuous mode can be * enabled */ - err = st_raw_write8(accel->port, accel->addr, LSM6DSM_FIFO_CTRL5_ADDR, + err = st_raw_write8__7bf(accel->port, accel->i2c_spi_addr__7bf, + LSM6DSM_FIFO_CTRL5_ADDR, odr_reg_val | LSM6DSM_FIFO_MODE_CONTINUOUS_VAL); if (err != EC_SUCCESS) return err; @@ -392,7 +396,7 @@ static int load_fifo(struct motion_sensor_t *s, const struct fstatus *fsts, length = left; /* Read data and copy in buffer. */ - err = st_raw_read_n_noinc(s->port, s->addr, + err = st_raw_read_n_noinc__7bf(s->port, s->i2c_spi_addr__7bf, LSM6DSM_FIFO_DATA_ADDR, fifo, length); *last_fifo_read_ts = __hw_clock_source_read(); @@ -423,9 +427,9 @@ static int is_fifo_empty(struct motion_sensor_t *s, struct fstatus *fsts) if (s->flags & MOTIONSENSE_FLAG_INT_SIGNAL) return gpio_get_level(s->int_signal); CPRINTS("Interrupt signal not set for %s", s->name); - res = st_raw_read_n_noinc(s->port, s->addr, - LSM6DSM_FIFO_STS1_ADDR, - (int8_t *)fsts, sizeof(*fsts)); + res = st_raw_read_n_noinc__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_FIFO_STS1_ADDR, + (int8_t *)fsts, sizeof(*fsts)); /* If we failed to read the FIFO size assume empty. */ if (res != EC_SUCCESS) return 1; @@ -471,9 +475,9 @@ static int irq_handler(struct motion_sensor_t *s, uint32_t *event) last_interrupt_timestamp; /* Read how many data pattern on FIFO to read and pattern. */ - ret = st_raw_read_n_noinc(s->port, s->addr, - LSM6DSM_FIFO_STS1_ADDR, - (uint8_t *)&fsts, sizeof(fsts)); + ret = st_raw_read_n_noinc__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_FIFO_STS1_ADDR, + (uint8_t *)&fsts, sizeof(fsts)); if (ret != EC_SUCCESS) return ret; last_fifo_read_ts = __hw_clock_source_read(); @@ -651,7 +655,8 @@ static int is_data_ready(const struct motion_sensor_t *s, int *ready) { int ret, tmp; - ret = st_raw_read8(s->port, s->addr, LSM6DSM_STATUS_REG, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_STATUS_REG, &tmp); if (ret != EC_SUCCESS) { CPRINTS("%s type:0x%X RS Error", s->name, s->type); return ret; @@ -694,8 +699,8 @@ static int read(const struct motion_sensor_t *s, intv3_t v) xyz_reg = get_xyz_reg(s->type); /* Read data bytes starting at xyz_reg. */ - ret = st_raw_read_n_noinc(s->port, s->addr, xyz_reg, raw, - OUT_XYZ_SIZE); + ret = st_raw_read_n_noinc__7bf(s->port, s->i2c_spi_addr__7bf, + xyz_reg, raw, OUT_XYZ_SIZE); if (ret != EC_SUCCESS) return ret; @@ -710,7 +715,8 @@ static int init(const struct motion_sensor_t *s) struct stprivate_data *data = s->drv_data; uint8_t ctrl_reg, reg_val = 0; - ret = st_raw_read8(s->port, s->addr, LSM6DSM_WHO_AM_I_REG, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_WHO_AM_I_REG, &tmp); if (ret != EC_SUCCESS) return EC_ERROR_UNKNOWN; @@ -735,18 +741,20 @@ static int init(const struct motion_sensor_t *s) ctrl_reg = LSM6DSM_ODR_REG(MOTIONSENSE_TYPE_ACCEL); /* Power OFF gyro. */ - ret = st_raw_write8(s->port, s->addr, LSM6DSM_CTRL2_ADDR, 0); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_CTRL2_ADDR, 0); if (ret != EC_SUCCESS) goto err_unlock; /* Power ON Accel. */ - ret = st_raw_write8(s->port, s->addr, ctrl_reg, reg_val); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + ctrl_reg, reg_val); if (ret != EC_SUCCESS) goto err_unlock; /* Software reset. */ - ret = st_raw_write8(s->port, s->addr, LSM6DSM_CTRL3_ADDR, - LSM6DSM_SW_RESET); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_CTRL3_ADDR, LSM6DSM_SW_RESET); if (ret != EC_SUCCESS) goto err_unlock; @@ -759,12 +767,13 @@ static int init(const struct motion_sensor_t *s) */ /* Power ON Accel. */ - ret = st_raw_write8(s->port, s->addr, ctrl_reg, reg_val); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + ctrl_reg, reg_val); if (ret != EC_SUCCESS) goto err_unlock; - ret = st_raw_write8(s->port, s->addr, LSM6DSM_CTRL3_ADDR, - LSM6DSM_BOOT); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_CTRL3_ADDR, LSM6DSM_BOOT); if (ret != EC_SUCCESS) goto err_unlock; @@ -775,7 +784,8 @@ static int init(const struct motion_sensor_t *s) msleep(15); /* Power OFF Accel. */ - ret = st_raw_write8(s->port, s->addr, ctrl_reg, 0); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + ctrl_reg, 0); if (ret != EC_SUCCESS) goto err_unlock; #endif @@ -784,9 +794,11 @@ static int init(const struct motion_sensor_t *s) * Output data not updated until have been read. * Prefer interrupt to be active low. */ - ret = st_raw_write8(s->port, s->addr, LSM6DSM_CTRL3_ADDR, - LSM6DSM_BDU | LSM6DSM_H_L_ACTIVE | - LSM6DSM_IF_INC); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_CTRL3_ADDR, + LSM6DSM_BDU + | LSM6DSM_H_L_ACTIVE + | LSM6DSM_IF_INC); if (ret != EC_SUCCESS) goto err_unlock; diff --git a/driver/accelgyro_lsm6dsm.h b/driver/accelgyro_lsm6dsm.h index 3d4e2645f1..a23298f11b 100644 --- a/driver/accelgyro_lsm6dsm.h +++ b/driver/accelgyro_lsm6dsm.h @@ -13,14 +13,12 @@ #include "mag_bmm150.h" #include "mag_lis2mdl.h" -#define LSM6DSM_I2C_ADDR(__x) (__x << 1) - /* * 7-bit address is 110101xb. Where 'x' is determined * by the voltage on the ADDR pin */ -#define LSM6DSM_ADDR0 LSM6DSM_I2C_ADDR(0x6a) -#define LSM6DSM_ADDR1 LSM6DSM_I2C_ADDR(0x6b) +#define LSM6DSM_ADDR0__7bf 0x6a +#define LSM6DSM_ADDR1__7bf 0x6b /* COMMON DEFINE FOR ACCEL-GYRO SENSORS */ #define LSM6DSM_EN_BIT 0x01 diff --git a/driver/accelgyro_lsm6dso.c b/driver/accelgyro_lsm6dso.c index 9517712138..f7d44e0e93 100644 --- a/driver/accelgyro_lsm6dso.c +++ b/driver/accelgyro_lsm6dso.c @@ -55,8 +55,8 @@ static int config_interrupt(const struct motion_sensor_t *s) #ifdef CONFIG_ACCEL_FIFO int int1_ctrl_val; - ret = st_raw_read8(s->port, s->addr, LSM6DSO_INT1_CTRL, - &int1_ctrl_val); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_INT1_CTRL, &int1_ctrl_val); if (ret != EC_SUCCESS) return ret; @@ -67,15 +67,16 @@ static int config_interrupt(const struct motion_sensor_t *s) * number or samples still present in FIFO exceeds the configured * threshold. */ - ret = st_raw_write8(s->port, s->addr, LSM6DSO_FIFO_CTRL1_ADDR, 1); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_FIFO_CTRL1_ADDR, 1); if (ret != EC_SUCCESS) return ret; int1_ctrl_val |= LSM6DSO_INT_FIFO_TH | LSM6DSO_INT_FIFO_OVR | LSM6DSO_INT_FIFO_FULL; - ret = st_raw_write8(s->port, s->addr, LSM6DSO_INT1_CTRL, - int1_ctrl_val); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_INT1_CTRL, int1_ctrl_val); #endif /* CONFIG_ACCEL_FIFO */ return ret; @@ -88,7 +89,8 @@ static int config_interrupt(const struct motion_sensor_t *s) */ static int fifo_disable(const struct motion_sensor_t *s) { - return st_raw_write8(s->port, s->addr, LSM6DSO_FIFO_CTRL4_ADDR, + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_FIFO_CTRL4_ADDR, LSM6DSO_FIFO_MODE_BYPASS_VAL); } @@ -100,7 +102,8 @@ static int fifo_disable(const struct motion_sensor_t *s) */ static int fifo_enable(const struct motion_sensor_t *s) { - return st_raw_write8(s->port, s->addr, LSM6DSO_FIFO_CTRL4_ADDR, + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_FIFO_CTRL4_ADDR, LSM6DSO_FIFO_MODE_CONTINUOUS_VAL); } @@ -168,7 +171,7 @@ static inline int load_fifo(struct motion_sensor_t *s, fifo_len = fifo_depth * LSM6DSO_FIFO_SAMPLE_SIZE; while (read_len < fifo_len) { word_len = GENERIC_MIN(fifo_len - read_len, sizeof(fifo)); - err = st_raw_read_n_noinc(s->port, s->addr, + err = st_raw_read_n_noinc__7bf(s->port, s->i2c_spi_addr__7bf, LSM6DSO_FIFO_DATA_ADDR_TAG, fifo, word_len); if (err != EC_SUCCESS) @@ -244,7 +247,7 @@ static int irq_handler(struct motion_sensor_t *s, uint32_t *event) #ifdef CONFIG_ACCEL_FIFO /* Read how many data patterns on FIFO to read. */ - ret = st_raw_read_n_noinc(s->port, s->addr, + ret = st_raw_read_n_noinc__7bf(s->port, s->i2c_spi_addr__7bf, LSM6DSO_FIFO_STS1_ADDR, (uint8_t *)&fsts, sizeof(fsts)); if (ret != EC_SUCCESS) @@ -366,7 +369,8 @@ static int is_data_ready(const struct motion_sensor_t *s, int *ready) { int ret, tmp; - ret = st_raw_read8(s->port, s->addr, LSM6DSO_STATUS_REG, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_STATUS_REG, &tmp); if (ret != EC_SUCCESS) { CPRINTS("%s type:0x%X RS Error", s->name, s->type); @@ -411,8 +415,8 @@ static int read(const struct motion_sensor_t *s, intv3_t v) xyz_reg = get_xyz_reg(s->type); /* Read data bytes starting at xyz_reg. */ - ret = st_raw_read_n_noinc(s->port, s->addr, xyz_reg, raw, - OUT_XYZ_SIZE); + ret = st_raw_read_n_noinc__7bf(s->port, s->i2c_spi_addr__7bf, + xyz_reg, raw, OUT_XYZ_SIZE); if (ret != EC_SUCCESS) return ret; @@ -427,7 +431,8 @@ static int init(const struct motion_sensor_t *s) int ret = 0, tmp; struct stprivate_data *data = LSM6DSO_GET_DATA(s); - ret = st_raw_read8(s->port, s->addr, LSM6DSO_WHO_AM_I_REG, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_WHO_AM_I_REG, &tmp); if (ret != EC_SUCCESS) return EC_ERROR_UNKNOWN; @@ -445,8 +450,8 @@ static int init(const struct motion_sensor_t *s) mutex_lock(s->mutex); /* Software reset. */ - ret = st_raw_write8(s->port, s->addr, LSM6DSO_CTRL3_ADDR, - LSM6DSO_SW_RESET); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_CTRL3_ADDR, LSM6DSO_SW_RESET); if (ret != EC_SUCCESS) goto err_unlock; @@ -454,7 +459,8 @@ static int init(const struct motion_sensor_t *s) * Output data not updated until have been read. * Prefer interrupt to be active low. */ - ret = st_raw_write8(s->port, s->addr, LSM6DSO_CTRL3_ADDR, + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSO_CTRL3_ADDR, LSM6DSO_BDU | LSM6DSO_IF_INC); if (ret != EC_SUCCESS) goto err_unlock; diff --git a/driver/accelgyro_lsm6dso.h b/driver/accelgyro_lsm6dso.h index 7748c7fe94..4d59fd1a07 100644 --- a/driver/accelgyro_lsm6dso.h +++ b/driver/accelgyro_lsm6dso.h @@ -10,14 +10,12 @@ #include "stm_mems_common.h" -#define LSM6DSO_I2C_ADDR(__x) (__x << 1) - /* * 7-bit address is 110101xb. Where 'x' is determined * by the voltage on the ADDR pin */ -#define LSM6DSO_ADDR0 LSM6DSO_I2C_ADDR(0x6a) -#define LSM6DSO_ADDR1 LSM6DSO_I2C_ADDR(0x6b) +#define LSM6DSO_ADDR0__7bf 0x6a +#define LSM6DSO_ADDR1__7bf 0x6b /* Access to embedded sensor hub register bank */ #define LSM6DSO_FUNC_CFG_ACC_ADDR 0x01 diff --git a/driver/als_al3010.h b/driver/als_al3010.h index eb06762883..f4de75ed0e 100644 --- a/driver/als_al3010.h +++ b/driver/als_al3010.h @@ -9,9 +9,9 @@ #define __CROS_EC_ALS_AL3010_H /* I2C interface */ -#define AL3010_I2C_ADDR1 (0x1C << 1) -#define AL3010_I2C_ADDR2 (0x1D << 1) -#define AL3010_I2C_ADDR3 (0x1E << 1) +#define AL3010_I2C_ADDR1__7bf (0x1C) +#define AL3010_I2C_ADDR2__7bf (0x1D) +#define AL3010_I2C_ADDR3__7bf (0x1E) /* AL3010 registers */ #define AL3010_REG_SYSTEM 0x00 diff --git a/driver/als_bh1730.c b/driver/als_bh1730.c index 0f96680471..4b0b50e0a1 100644 --- a/driver/als_bh1730.c +++ b/driver/als_bh1730.c @@ -62,7 +62,8 @@ static int bh1730_read_lux(const struct motion_sensor_t *s, intv3_t v) int data0_1; /* read data0 and data1 from sensor */ - ret = i2c_read32(s->port, s->addr, BH1730_DATA0LOW, &data0_1); + ret = i2c_read32__7bf(s->port, s->i2c_spi_addr__7bf, + BH1730_DATA0LOW, &data0_1); if (ret != EC_SUCCESS) { CPRINTF("bh1730_read_lux - fail %d\n", ret); return ret; @@ -136,9 +137,10 @@ static int bh1730_init(const struct motion_sensor_t *s) int ret; /* power and measurement bit high */ - ret = i2c_write8(s->port, s->addr, + ret = i2c_write8__7bf(s->port, s->i2c_spi_addr__7bf, BH1730_CONTROL, - BH1730_CONTROL_POWER_ENABLE|BH1730_CONTROL_ADC_EN_ENABLE); + BH1730_CONTROL_POWER_ENABLE + | BH1730_CONTROL_ADC_EN_ENABLE); if (ret != EC_SUCCESS) { CPRINTF("bh1730_init_sensor - enable fail %d\n", ret); @@ -146,13 +148,15 @@ static int bh1730_init(const struct motion_sensor_t *s) } /* set timing */ - ret = i2c_write8(s->port, s->addr, BH1730_TIMING, BH1730_CONF_ITIME); + ret = i2c_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BH1730_TIMING, BH1730_CONF_ITIME); if (ret != EC_SUCCESS) { CPRINTF("bh1730_init_sensor - time fail %d\n", ret); return ret; } /* set ADC gain */ - ret = i2c_write8(s->port, s->addr, BH1730_GAIN, BH1730_CONF_GAIN); + ret = i2c_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BH1730_GAIN, BH1730_CONF_GAIN); if (ret != EC_SUCCESS) { CPRINTF("bh1730_init_sensor - gain fail %d\n", ret); diff --git a/driver/als_bh1730.h b/driver/als_bh1730.h index 3cd8757822..f729d3edaa 100644 --- a/driver/als_bh1730.h +++ b/driver/als_bh1730.h @@ -9,7 +9,7 @@ #define __CROS_EC_ALS_BH1730_H /* I2C interface */ -#define BH1730_I2C_ADDR (0x29 << 1) +#define BH1730_I2C_ADDR__7bf 0x29 /* BH1730 registers */ #define BH1730_CONTROL 0x80 diff --git a/driver/als_isl29035.c b/driver/als_isl29035.c index b2a4a67c9c..341489979f 100644 --- a/driver/als_isl29035.c +++ b/driver/als_isl29035.c @@ -9,7 +9,7 @@ #include "i2c.h" /* I2C interface */ -#define ILS29035_I2C_ADDR 0x88 +#define ILS29035_I2C_ADDR__7bf 0x44 #define ILS29035_REG_COMMAND_I 0 #define ILS29035_REG_COMMAND_II 1 #define ILS29035_REG_DATA_LSB 2 @@ -27,8 +27,8 @@ int isl29035_init(void) * zero, but it makes the hook/update code cleaner (we don't want to * wait 90ms to read on demand while processing hook callbacks). */ - return i2c_write8(I2C_PORT_ALS, ILS29035_I2C_ADDR, - ILS29035_REG_COMMAND_I, 0xa0); + return i2c_write8__7bf(I2C_PORT_ALS, ILS29035_I2C_ADDR__7bf, + ILS29035_REG_COMMAND_I, 0xa0); } int isl29035_read_lux(int *lux, int af) @@ -43,13 +43,13 @@ int isl29035_read_lux(int *lux, int af) */ /* Read lsb */ - rv = i2c_read8(I2C_PORT_ALS, ILS29035_I2C_ADDR, + rv = i2c_read8__7bf(I2C_PORT_ALS, ILS29035_I2C_ADDR__7bf, ILS29035_REG_DATA_LSB, &lsb); if (rv) return rv; /* Read msb */ - rv = i2c_read8(I2C_PORT_ALS, ILS29035_I2C_ADDR, + rv = i2c_read8__7bf(I2C_PORT_ALS, ILS29035_I2C_ADDR__7bf, ILS29035_REG_DATA_MSB, &msb); if (rv) return rv; diff --git a/driver/als_opt3001.c b/driver/als_opt3001.c index fd5dded45d..42a06bfdcc 100644 --- a/driver/als_opt3001.c +++ b/driver/als_opt3001.c @@ -17,7 +17,8 @@ static int opt3001_i2c_read(const int reg, int *data_ptr) { int ret; - ret = i2c_read16(I2C_PORT_ALS, OPT3001_I2C_ADDR, reg, data_ptr); + ret = i2c_read16__7bf(I2C_PORT_ALS, OPT3001_I2C_ADDR__7bf, + reg, data_ptr); if (!ret) *data_ptr = ((*data_ptr << 8) & 0xFF00) | ((*data_ptr >> 8) & 0x00FF); @@ -31,7 +32,8 @@ static int opt3001_i2c_read(const int reg, int *data_ptr) static int opt3001_i2c_write(const int reg, int data) { data = ((data << 8) & 0xFF00) | ((data >> 8) & 0x00FF); - return i2c_write16(I2C_PORT_ALS, OPT3001_I2C_ADDR, reg, data); + return i2c_write16__7bf(I2C_PORT_ALS, OPT3001_I2C_ADDR__7bf, + reg, data); } /** @@ -108,12 +110,14 @@ struct i2c_stress_test_dev opt3001_i2c_stress_test_dev = { /** * Read register from OPT3001 light sensor. */ -static int opt3001_i2c_read(const int port, const int addr, const int reg, - int *data_ptr) +static int opt3001_i2c_read__7bf(const int port, + const uint16_t i2c_addr__7bf, + const int reg, int *data_ptr) { int ret; - ret = i2c_read16(port, addr, reg, data_ptr); + ret = i2c_read16__7bf(port, i2c_addr__7bf, + reg, data_ptr); if (!ret) *data_ptr = ((*data_ptr << 8) & 0xFF00) | ((*data_ptr >> 8) & 0x00FF); @@ -124,11 +128,13 @@ static int opt3001_i2c_read(const int port, const int addr, const int reg, /** * Write register to OPT3001 light sensor. */ -static int opt3001_i2c_write(const int port, const int addr, const int reg, - int data) +static int opt3001_i2c_write__7bf(const int port, + const uint16_t i2c_addr__7bf, + const int reg, int data) { data = ((data << 8) & 0xFF00) | ((data >> 8) & 0x00FF); - return i2c_write16(port, addr, reg, data); + return i2c_write16__7bf(port, i2c_addr__7bf, + reg, data); } /** @@ -140,7 +146,8 @@ int opt3001_read_lux(const struct motion_sensor_t *s, intv3_t v) int ret; int data; - ret = opt3001_i2c_read(s->port, s->addr, OPT3001_REG_RESULT, &data); + ret = opt3001_i2c_read__7bf(s->port, s->i2c_spi_addr__7bf, + OPT3001_REG_RESULT, &data); if (ret) return ret; @@ -211,13 +218,15 @@ static int opt3001_set_data_rate(const struct motion_sensor_t *s, if (rate > 1000) rate = 1000; } - rv = opt3001_i2c_read(s->port, s->addr, OPT3001_REG_CONFIGURE, ®); + rv = opt3001_i2c_read__7bf(s->port, s->i2c_spi_addr__7bf, + OPT3001_REG_CONFIGURE, ®); if (rv) return rv; - rv = opt3001_i2c_write(s->port, s->addr, OPT3001_REG_CONFIGURE, + rv = opt3001_i2c_write__7bf(s->port, s->i2c_spi_addr__7bf, + OPT3001_REG_CONFIGURE, (reg & OPT3001_MODE_MASK) | - (mode << OPT3001_MODE_OFFSET)); + (mode << OPT3001_MODE_OFFSET)); if (rv) return rv; @@ -262,13 +271,15 @@ static int opt3001_init(const struct motion_sensor_t *s) int data; int ret; - ret = opt3001_i2c_read(s->port, s->addr, OPT3001_REG_MAN_ID, &data); + ret = opt3001_i2c_read__7bf(s->port, s->i2c_spi_addr__7bf, + OPT3001_REG_MAN_ID, &data); if (ret) return ret; if (data != OPT3001_MANUFACTURER_ID) return EC_ERROR_ACCESS_DENIED; - ret = opt3001_i2c_read(s->port, s->addr, OPT3001_REG_DEV_ID, &data); + ret = opt3001_i2c_read__7bf(s->port, s->i2c_spi_addr__7bf, + OPT3001_REG_DEV_ID, &data); if (ret) return ret; if (data != OPT3001_DEVICE_ID) @@ -279,7 +290,8 @@ static int opt3001_init(const struct motion_sensor_t *s) * [11] : 1b Conversion time 800ms * [4] : 1b Latched window-style comparison operation */ - opt3001_i2c_write(s->port, s->addr, OPT3001_REG_CONFIGURE, 0xC810); + opt3001_i2c_write__7bf(s->port, s->i2c_spi_addr__7bf, + OPT3001_REG_CONFIGURE, 0xC810); opt3001_set_range(s, s->default_range, 0); @@ -304,8 +316,8 @@ struct i2c_stress_test_dev opt3001_i2c_stress_test_dev = { .read_val = OPT3001_DEVICE_ID, .write_reg = OPT3001_REG_INT_LIMIT_LSB, }, - .i2c_read = &opt3001_i2c_read, - .i2c_write = &opt3001_i2c_write, + .i2c_read__7bf = &opt3001_i2c_read__7bf, + .i2c_write__7bf = &opt3001_i2c_write__7bf, }; #endif /* CONFIG_CMD_I2C_STRESS_TEST_ALS */ #endif /* HAS_TASK_ALS */ diff --git a/driver/als_opt3001.h b/driver/als_opt3001.h index d2d2737e20..34d129b5a5 100644 --- a/driver/als_opt3001.h +++ b/driver/als_opt3001.h @@ -9,10 +9,10 @@ #define __CROS_EC_ALS_OPT3001_H /* I2C interface */ -#define OPT3001_I2C_ADDR1 (0x44 << 1) -#define OPT3001_I2C_ADDR2 (0x45 << 1) -#define OPT3001_I2C_ADDR3 (0x46 << 1) -#define OPT3001_I2C_ADDR4 (0x47 << 1) +#define OPT3001_I2C_ADDR1__7bf 0x44 +#define OPT3001_I2C_ADDR2__7bf 0x45 +#define OPT3001_I2C_ADDR3__7bf 0x46 +#define OPT3001_I2C_ADDR4__7bf 0x47 /* OPT3001 registers */ #define OPT3001_REG_RESULT 0x00 diff --git a/driver/als_si114x.c b/driver/als_si114x.c index b51cf8cfc6..f0b3165e67 100644 --- a/driver/als_si114x.c +++ b/driver/als_si114x.c @@ -27,28 +27,28 @@ static int init(const struct motion_sensor_t *s); /** * Read 8bit register from device. */ -static inline int raw_read8(const int port, const int addr, const int reg, - int *data_ptr) +static inline int raw_read8__7bf(const int port, const uint16_t i2c_addr__7bf, + const int reg, int *data_ptr) { - return i2c_read8(port, addr, reg, data_ptr); + return i2c_read8__7bf(port, i2c_addr__7bf, reg, data_ptr); } /** * Write 8bit register from device. */ -static inline int raw_write8(const int port, const int addr, const int reg, - int data) +static inline int raw_write8__7bf(const int port, const uint16_t i2c_addr__7bf, + const int reg, int data) { - return i2c_write8(port, addr, reg, data); + return i2c_write8__7bf(port, i2c_addr__7bf, reg, data); } /** * Read 16bit register from device. */ -static inline int raw_read16(const int port, const int addr, const int reg, - int *data_ptr) +static inline int raw_read16__7bf(const int port, const uint16_t i2c_addr__7bf, + const int reg, int *data_ptr) { - return i2c_read16(port, addr, reg, data_ptr); + return i2c_read16__7bf(port, i2c_addr__7bf, reg, data_ptr); } /* helper function to operate on parameter values: op can be query/set/or/and */ @@ -62,17 +62,19 @@ static int si114x_param_op(const struct motion_sensor_t *s, mutex_lock(s->mutex); if (op != SI114X_CMD_PARAM_QUERY) { - ret = raw_write8(s->port, s->addr, SI114X_REG_PARAM_WR, *value); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_PARAM_WR, *value); if (ret != EC_SUCCESS) goto error; } - ret = raw_write8(s->port, s->addr, SI114X_REG_COMMAND, - op | (param & 0x1F)); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_COMMAND, op | (param & 0x1F)); if (ret != EC_SUCCESS) goto error; - ret = raw_read8(s->port, s->addr, SI114X_REG_PARAM_RD, value); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_PARAM_RD, value); if (ret != EC_SUCCESS) goto error; @@ -96,7 +98,7 @@ static int si114x_read_results(struct motion_sensor_t *s, int nb) /* Read ALX result */ for (i = 0; i < nb; i++) { - ret = raw_read16(s->port, s->addr, + ret = raw_read16__7bf(s->port, s->i2c_spi_addr__7bf, type_data->base_data_reg + i * 2, &val); if (ret) @@ -196,7 +198,8 @@ static int irq_handler(struct motion_sensor_t *s, uint32_t *event) if (!(*event & CONFIG_ALS_SI114X_INT_EVENT)) return EC_ERROR_NOT_HANDLED; - ret = raw_read8(s->port, s->addr, SI114X_REG_IRQ_STATUS, &val); + ret = raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_IRQ_STATUS, &val); if (ret) return ret; @@ -204,7 +207,8 @@ static int irq_handler(struct motion_sensor_t *s, uint32_t *event) return EC_ERROR_INVAL; /* clearing IRQ */ - ret = raw_write8(s->port, s->addr, SI114X_REG_IRQ_STATUS, + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_IRQ_STATUS, val & type_data->irq_flags); if (ret != EC_SUCCESS) CPRINTS("clearing irq failed"); @@ -216,8 +220,9 @@ static int irq_handler(struct motion_sensor_t *s, uint32_t *event) ret = si114x_read_results(s, 1); /* Fire pending requests */ if (data->state == SI114X_ALS_IN_PROGRESS_PS_PENDING) { - ret = raw_write8(s->port, s->addr, SI114X_REG_COMMAND, - SI114X_CMD_PS_FORCE); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_COMMAND, + SI114X_CMD_PS_FORCE); data->state = SI114X_PS_IN_PROGRESS; } else { data->state = SI114X_IDLE; @@ -228,8 +233,9 @@ static int irq_handler(struct motion_sensor_t *s, uint32_t *event) /* Read PS results */ ret = si114x_read_results(s, SI114X_NUM_LEDS); if (data->state == SI114X_PS_IN_PROGRESS_ALS_PENDING) { - ret = raw_write8(s->port, s->addr, SI114X_REG_COMMAND, - SI114X_CMD_ALS_FORCE); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_COMMAND, + SI114X_CMD_ALS_FORCE); data->state = SI114X_ALS_IN_PROGRESS; } else { data->state = SI114X_IDLE; @@ -282,7 +288,8 @@ static int read(const struct motion_sensor_t *s, intv3_t v) CPRINTS("Invalid sensor type"); return EC_ERROR_INVAL; } - ret = raw_write8(s->port, s->addr, SI114X_REG_COMMAND, cmd); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_COMMAND, cmd); #ifdef CONFIG_ALS_SI114X_POLLING hook_call_deferred(&si114x_read_deferred_data, SI114x_POLLING_DELAY); @@ -370,63 +377,68 @@ static int si114x_initialize(const struct motion_sensor_t *s) int ret, val; /* send reset command */ - ret = raw_write8(s->port, s->addr, SI114X_REG_COMMAND, - SI114X_CMD_RESET); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_COMMAND, SI114X_CMD_RESET); if (ret != EC_SUCCESS) return ret; msleep(20); /* hardware key, magic value */ - ret = raw_write8(s->port, s->addr, SI114X_REG_HW_KEY, 0x17); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_HW_KEY, 0x17); if (ret != EC_SUCCESS) return ret; msleep(20); /* interrupt configuration, interrupt output enable */ - ret = raw_write8(s->port, s->addr, SI114X_REG_INT_CFG, - SI114X_INT_CFG_OE); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_INT_CFG, SI114X_INT_CFG_OE); if (ret != EC_SUCCESS) return ret; /* enable interrupt for certain activities */ - ret = raw_write8(s->port, s->addr, SI114X_REG_IRQ_ENABLE, - SI114X_PS3_IE | SI114X_PS2_IE | SI114X_PS1_IE | - SI114X_ALS_INT0_IE); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_IRQ_ENABLE, + SI114X_PS3_IE | SI114X_PS2_IE | SI114X_PS1_IE | + SI114X_ALS_INT0_IE); if (ret != EC_SUCCESS) return ret; /* Only forced mode */ - ret = raw_write8(s->port, s->addr, SI114X_REG_MEAS_RATE, 0); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_MEAS_RATE, 0); if (ret != EC_SUCCESS) return ret; /* measure ALS every time device wakes up */ - ret = raw_write8(s->port, s->addr, SI114X_REG_ALS_RATE, 0); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_ALS_RATE, 0); if (ret != EC_SUCCESS) return ret; /* measure proximity every time device wakes up */ - ret = raw_write8(s->port, s->addr, SI114X_REG_PS_RATE, 0); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_PS_RATE, 0); if (ret != EC_SUCCESS) return ret; /* set LED currents to maximum */ switch (SI114X_NUM_LEDS) { case 3: - ret = raw_write8(s->port, s->addr, - SI114X_REG_PS_LED3, 0x0f); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_PS_LED3, 0x0f); if (ret != EC_SUCCESS) return ret; - ret = raw_write8(s->port, s->addr, - SI114X_REG_PS_LED21, 0xff); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_PS_LED21, 0xff); break; case 2: - ret = raw_write8(s->port, s->addr, - SI114X_REG_PS_LED21, 0xff); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_PS_LED21, 0xff); break; case 1: - ret = raw_write8(s->port, s->addr, - SI114X_REG_PS_LED21, 0x0f); + ret = raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + SI114X_REG_PS_LED21, 0x0f); break; } if (ret != EC_SUCCESS) diff --git a/driver/als_si114x.h b/driver/als_si114x.h index d3fcf1d64a..8f7f3530d4 100644 --- a/driver/als_si114x.h +++ b/driver/als_si114x.h @@ -22,7 +22,7 @@ #ifndef __CROS_EC_ALS_SI114X_H #define __CROS_EC_ALS_SI114X_H -#define SI114X_ADDR (0x5a << 1) +#define SI114X_ADDR__7bf 0x5a #define SI114X_REG_PART_ID 0x00 #define SI114X_SI1141_ID 0x41 diff --git a/driver/als_tcs3400.c b/driver/als_tcs3400.c index 61b16bb355..8544f51a4b 100644 --- a/driver/als_tcs3400.c +++ b/driver/als_tcs3400.c @@ -24,13 +24,13 @@ static volatile uint32_t last_interrupt_timestamp; static inline int tcs3400_i2c_read8(const struct motion_sensor_t *s, int reg, int *data) { - return i2c_read8(s->port, s->addr, reg, data); + return i2c_read8__7bf(s->port, s->i2c_spi_addr__7bf, reg, data); } static inline int tcs3400_i2c_write8(const struct motion_sensor_t *s, int reg, int data) { - return i2c_write8(s->port, s->addr, reg, data); + return i2c_write8__7bf(s->port, s->i2c_spi_addr__7bf, reg, data); } static void tcs3400_read_deferred(void) @@ -113,8 +113,9 @@ static int tcs3400_post_events(struct motion_sensor_t *s, uint32_t last_ts) } while (!(data & TCS_I2C_STATUS_RGBC_VALID)); /* Read the light registers */ - ret = i2c_read_block(s->port, s->addr, TCS_DATA_START_LOCATION, - light_data, sizeof(light_data)); + ret = i2c_read_block__7bf(s->port, s->i2c_spi_addr__7bf, + TCS_DATA_START_LOCATION, + light_data, sizeof(light_data)); if (ret) return ret; diff --git a/driver/als_tcs3400.h b/driver/als_tcs3400.h index 7e5f062d17..bfe1f0e5ab 100644 --- a/driver/als_tcs3400.h +++ b/driver/als_tcs3400.h @@ -9,7 +9,7 @@ #define __CROS_EC_ALS_TCS3400_H /* I2C Interface */ -#define TCS3400_I2C_ADDR 0x72 +#define TCS3400_I2C_ADDR__7bf 0x39 /* ID for TCS34001 and TCS34005 */ #define TCS340015_DEVICE_ID 0x90 diff --git a/driver/baro_bmp280.c b/driver/baro_bmp280.c index b622535819..10d1c4b91a 100644 --- a/driver/baro_bmp280.c +++ b/driver/baro_bmp280.c @@ -98,7 +98,7 @@ static int bmp280_get_calib_param(const struct motion_sensor_t *s) uint8_t a_data_u8[BMP280_CALIB_DATA_SIZE] = {0}; struct bmp280_drv_data_t *data = BMP280_GET_DATA(s); - ret = i2c_read_block(s->port, s->addr, + ret = i2c_read_block__7bf(s->port, s->i2c_spi_addr__7bf, BMP280_TEMPERATURE_CALIB_DIG_T1_LSB_REG, a_data_u8, BMP280_CALIB_DATA_SIZE); @@ -129,7 +129,7 @@ static int bmp280_read_uncomp_pressure(const struct motion_sensor_t *s, int ret; uint8_t a_data_u8[BMP280_PRESSURE_DATA_SIZE] = {0}; - ret = i2c_read_block(s->port, s->addr, + ret = i2c_read_block__7bf(s->port, s->i2c_spi_addr__7bf, BMP280_PRESSURE_MSB_REG, a_data_u8, BMP280_PRESSURE_DATA_SIZE); @@ -218,13 +218,13 @@ static int bmp280_set_standby_durn(const struct motion_sensor_t *s, { int ret, val; - ret = i2c_read8(s->port, s->addr, + ret = i2c_read8__7bf(s->port, s->i2c_spi_addr__7bf, BMP280_CONFIG_REG, &val); if (ret == EC_SUCCESS) { val = (val & 0xE0) | ((durn << 5) & 0xE0); /* write the standby duration*/ - ret = i2c_write8(s->port, s->addr, + ret = i2c_write8__7bf(s->port, s->i2c_spi_addr__7bf, BMP280_CONFIG_REG, val); } @@ -239,7 +239,8 @@ static int bmp280_set_power_mode(const struct motion_sensor_t *s, val = (BMP280_OVERSAMP_TEMP << 5) + (BMP280_OVERSAMP_PRES << 2) + power_mode; - return i2c_write8(s->port, s->addr, BMP280_CTRL_MEAS_REG, val); + return i2c_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMP280_CTRL_MEAS_REG, val); } static int bmp280_set_range(const struct motion_sensor_t *s, @@ -277,7 +278,7 @@ static int bmp280_init(const struct motion_sensor_t *s) return EC_ERROR_INVAL; /* Read chip id */ - ret = i2c_read8(s->port, s->addr, + ret = i2c_read8__7bf(s->port, s->i2c_spi_addr__7bf, BMP280_CHIP_ID_REG, &val); if (ret) return ret; @@ -383,7 +384,7 @@ struct i2c_stress_test_dev bmp280_i2c_stress_test_dev = { .read_val = BMP280_CHIP_ID, .write_reg = BMP280_CONFIG_REG, }, - .i2c_read = &i2c_read8, - .i2c_write = &i2c_write8, + .i2c_read__7bf = &i2c_read8__7bf, + .i2c_write__7bf = &i2c_write8__7bf, }; #endif /* CONFIG_CMD_I2C_STRESS_TEST_ACCEL */ diff --git a/driver/baro_bmp280.h b/driver/baro_bmp280.h index a3cb919a7c..f5070bd71d 100644 --- a/driver/baro_bmp280.h +++ b/driver/baro_bmp280.h @@ -74,8 +74,9 @@ * Bit 1 of 7-bit address: 0 - If SDO is connected to GND * Bit 1 of 7-bit address: 1 - If SDO is connected to Vddio */ -#define BMP280_I2C_ADDRESS1 ((0x76) << 1) -#define BMP280_I2C_ADDRESS2 ((0x77) << 1) +#define BMP280_I2C_ADDRESS1__7bf 0x76 +#define BMP280_I2C_ADDRESS2__7bf 0x77 + /* * CHIP ID */ diff --git a/driver/battery/bq27541.c b/driver/battery/bq27541.c index 2645597ec7..c41914f4e8 100644 --- a/driver/battery/bq27541.c +++ b/driver/battery/bq27541.c @@ -12,7 +12,7 @@ #include "i2c.h" #include "util.h" -#define BQ27541_ADDR 0xaa +#define BQ27541_ADDR__7bf 0x55 #define BQ27541_TYPE_ID 0x0541 #define BQ27741_TYPE_ID 0x0741 #define BQ27742_TYPE_ID 0x0742 diff --git a/driver/battery/bq27621_g1.c b/driver/battery/bq27621_g1.c index 5e7f0c8df9..76d020f6df 100644 --- a/driver/battery/bq27621_g1.c +++ b/driver/battery/bq27621_g1.c @@ -13,7 +13,7 @@ #include "util.h" #include "timer.h" -#define BQ27621_ADDR 0xaa +#define BQ27621_ADDR__7bf 0x55 #define BQ27621_TYPE_ID 0x0621 #define REG_CTRL 0x00 diff --git a/driver/battery/max17055.c b/driver/battery/max17055.c index 28a2ba1038..90ceb12214 100644 --- a/driver/battery/max17055.c +++ b/driver/battery/max17055.c @@ -66,12 +66,14 @@ static int fake_state_of_charge = -1; static int max17055_read(int offset, int *data) { - return i2c_read16(I2C_PORT_BATTERY, MAX17055_ADDR, offset, data); + return i2c_read16__7bf(I2C_PORT_BATTERY, MAX17055_ADDR__7bf, + offset, data); } static int max17055_write(int offset, int data) { - return i2c_write16(I2C_PORT_BATTERY, MAX17055_ADDR, offset, data); + return i2c_write16__7bf(I2C_PORT_BATTERY, MAX17055_ADDR__7bf, + offset, data); } /* Return 1 if the device id is correct. */ diff --git a/driver/battery/max17055.h b/driver/battery/max17055.h index bdee9ca948..ce10b8ebf0 100644 --- a/driver/battery/max17055.h +++ b/driver/battery/max17055.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_MAX17055_H #define __CROS_EC_MAX17055_H -#define MAX17055_ADDR 0x6c +#define MAX17055_ADDR__7bf 0x36 #define MAX17055_DEVICE_ID 0x4010 #define MAX17055_OCV_TABLE_SIZE 48 diff --git a/driver/battery/mm8013.c b/driver/battery/mm8013.c index 012f3a25bd..87926553db 100644 --- a/driver/battery/mm8013.c +++ b/driver/battery/mm8013.c @@ -23,7 +23,7 @@ static int mm8013_read16(int offset, int *data) int rv; *data = 0; - rv = i2c_read16(I2C_PORT_BATTERY, MM8013_ADDR, offset, data); + rv = i2c_read16__7bf(I2C_PORT_BATTERY, MM8013_ADDR__7bf, offset, data); usleep(I2C_WAIT_TIME); if (rv) return rv; @@ -34,7 +34,8 @@ static int mm8013_read_block(int offset, uint8_t *data, int len) { int rv; - rv = i2c_read_block(I2C_PORT_BATTERY, MM8013_ADDR, offset, data, len); + rv = i2c_read_block__7bf(I2C_PORT_BATTERY, MM8013_ADDR__7bf, + offset, data, len); usleep(I2C_WAIT_TIME); if (rv) return rv; diff --git a/driver/battery/mm8013.h b/driver/battery/mm8013.h index 4dedfbd4a3..5acdcdff68 100644 --- a/driver/battery/mm8013.h +++ b/driver/battery/mm8013.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_MM8013_H #define __CROS_EC_MM8013_H -#define MM8013_ADDR 0xaa +#define MM8013_ADDR__7bf 0x55 #define REG_TEMPERATURE 0x06 #define REG_VOLTAGE 0x08 diff --git a/driver/battery/smart.c b/driver/battery/smart.c index e42ebc726a..ced1e7cfc3 100644 --- a/driver/battery/smart.c +++ b/driver/battery/smart.c @@ -30,7 +30,9 @@ test_mockable int sb_read(int cmd, int *param) if (battery_is_cut_off()) return EC_RES_ACCESS_DENIED; #endif - return i2c_read16(I2C_PORT_BATTERY, BATTERY_ADDR, cmd, param); + + return i2c_read16__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + cmd, param); } test_mockable int sb_write(int cmd, int param) @@ -42,7 +44,9 @@ test_mockable int sb_write(int cmd, int param) if (battery_is_cut_off()) return EC_RES_ACCESS_DENIED; #endif - return i2c_write16(I2C_PORT_BATTERY, BATTERY_ADDR, cmd, param); + + return i2c_write16__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + cmd, param); } int sb_read_string(int offset, uint8_t *data, int len) @@ -54,8 +58,9 @@ int sb_read_string(int offset, uint8_t *data, int len) if (battery_is_cut_off()) return EC_RES_ACCESS_DENIED; #endif - return i2c_read_string(I2C_PORT_BATTERY, BATTERY_ADDR, - offset, data, len); + + return i2c_read_string__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + offset, data, len); } int sb_read_mfgacc(int cmd, int block, uint8_t *data, int len) @@ -99,8 +104,8 @@ int sb_write_block(int reg, const uint8_t *val, int len) #endif /* TODO: implement smbus_write_block. */ - return i2c_write_block(I2C_PORT_BATTERY, BATTERY_ADDR, reg, val, len); - + return i2c_write_block__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + reg, val, len); } int battery_get_mode(int *mode) diff --git a/driver/bc12/pi3usb9201.c b/driver/bc12/pi3usb9201.c index ba4ab9e496..2fdb9719a5 100644 --- a/driver/bc12/pi3usb9201.c +++ b/driver/bc12/pi3usb9201.c @@ -62,15 +62,15 @@ static const struct bc12_status bc12_chg_limits[] = { static inline int raw_read8(int port, int offset, int *value) { - return i2c_read8(pi3usb2901_bc12_chips[port].i2c_port, - pi3usb2901_bc12_chips[port].i2c_addr, + return i2c_read8__7bf(pi3usb2901_bc12_chips[port].i2c_port, + pi3usb2901_bc12_chips[port].i2c_addr__7bf, offset, value); } static inline int raw_write8(int port, int offset, int value) { - return i2c_write8(pi3usb2901_bc12_chips[port].i2c_port, - pi3usb2901_bc12_chips[port].i2c_addr, + return i2c_write8__7bf(pi3usb2901_bc12_chips[port].i2c_port, + pi3usb2901_bc12_chips[port].i2c_addr__7bf, offset, value); } diff --git a/driver/bc12/pi3usb9201.h b/driver/bc12/pi3usb9201.h index 1e60e63c47..ba379ffff3 100644 --- a/driver/bc12/pi3usb9201.h +++ b/driver/bc12/pi3usb9201.h @@ -5,11 +5,11 @@ /* PI3USB9201 USB BC 1.2 Charger Detector driver definitions */ -/* 8-bit I2C address */ -#define PI3USB9201_I2C_ADDR_0 0xB8 -#define PI3USB9201_I2C_ADDR_1 0xBA -#define PI3USB9201_I2C_ADDR_2 0xBC -#define PI3USB9201_I2C_ADDR_3 0xBE +/* I2C address */ +#define PI3USB9201_I2C_ADDR_0__7bf 0x5C +#define PI3USB9201_I2C_ADDR_1__7bf 0x5D +#define PI3USB9201_I2C_ADDR_2__7bf 0x5E +#define PI3USB9201_I2C_ADDR_3__7bf 0x5F #define PI3USB9201_REG_CTRL_1 0x0 #define PI3USB9201_REG_CTRL_2 0x1 @@ -33,7 +33,7 @@ struct pi3usb2901_config_t { const int i2c_port; - const int i2c_addr; + const int i2c_addr__7bf; }; enum pi3usb9201_mode { diff --git a/driver/bc12/pi3usb9281.c b/driver/bc12/pi3usb9281.c index eba326ac3b..8d88d5a1e8 100644 --- a/driver/bc12/pi3usb9281.c +++ b/driver/bc12/pi3usb9281.c @@ -23,8 +23,8 @@ #define CPUTS(outstr) cputs(CC_USBCHARGE, outstr) #define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) -/* 8-bit I2C address */ -#define PI3USB9281_I2C_ADDR (0x25 << 1) +/* I2C address */ +#define PI3USB9281_I2C_ADDR__7bf (0x25) /* Delay values */ #define PI3USB9281_SW_RESET_DELAY 20 @@ -69,7 +69,8 @@ static uint8_t pi3usb9281_do_read(int port, uint8_t reg, int with_lock) if (with_lock) select_chip(port); - res = i2c_read8(chip->i2c_port, PI3USB9281_I2C_ADDR, reg, &val); + res = i2c_read8__7bf(chip->i2c_port, PI3USB9281_I2C_ADDR__7bf, + reg, &val); if (with_lock) unselect_chip(port); @@ -99,7 +100,8 @@ static int pi3usb9281_do_write( if (with_lock) select_chip(port); - res = i2c_write8(chip->i2c_port, PI3USB9281_I2C_ADDR, reg, val); + res = i2c_write8__7bf(chip->i2c_port, PI3USB9281_I2C_ADDR__7bf, + reg, val); if (with_lock) unselect_chip(port); diff --git a/driver/charger/bd9995x.c b/driver/charger/bd9995x.c index 1eba3e9aa6..e9d2e601a1 100644 --- a/driver/charger/bd9995x.c +++ b/driver/charger/bd9995x.c @@ -131,7 +131,7 @@ static inline int ch_raw_read16(int cmd, int *param, /* Map the Charge command code to appropriate region */ mutex_lock(&bd9995x_map_mutex); if (charger_map_cmd != map_cmd) { - rv = i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, + rv = i2c_write16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, BD9995X_CMD_MAP_SET, map_cmd); if (rv) { charger_map_cmd = BD9995X_INVALID_COMMAND; @@ -141,7 +141,8 @@ static inline int ch_raw_read16(int cmd, int *param, charger_map_cmd = map_cmd; } - rv = i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, cmd, param); + rv = i2c_read16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + cmd, param); bd9995x_read_cleanup: mutex_unlock(&bd9995x_map_mutex); @@ -157,7 +158,7 @@ static inline int ch_raw_write16(int cmd, int param, /* Map the Charge command code to appropriate region */ mutex_lock(&bd9995x_map_mutex); if (charger_map_cmd != map_cmd) { - rv = i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, + rv = i2c_write16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, BD9995X_CMD_MAP_SET, map_cmd); if (rv) { charger_map_cmd = BD9995X_INVALID_COMMAND; @@ -167,7 +168,8 @@ static inline int ch_raw_write16(int cmd, int param, charger_map_cmd = map_cmd; } - rv = i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, cmd, param); + rv = i2c_write16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + cmd, param); bd9995x_write_cleanup: mutex_unlock(&bd9995x_map_mutex); diff --git a/driver/charger/bd9995x.h b/driver/charger/bd9995x.h index 6719fd8661..6a946835bc 100644 --- a/driver/charger/bd9995x.h +++ b/driver/charger/bd9995x.h @@ -8,8 +8,8 @@ #ifndef __CROS_EC_BD9995X_H #define __CROS_EC_BD9995X_H -#define BD9995X_ADDR 0x12 /* 7bit address 0001_001 */ -#define I2C_ADDR_CHARGER BD9995X_ADDR +#define BD9995X_ADDR__7bf 0x09 +#define I2C_ADDR_CHARGER__7bf BD9995X_ADDR__7bf #define BD9995X_CHARGER_NAME "bd9995x" #define BD99955_CHIP_ID 0x221 diff --git a/driver/charger/bq24192.h b/driver/charger/bq24192.h index 0bde4483c3..188cb24942 100644 --- a/driver/charger/bq24192.h +++ b/driver/charger/bq24192.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_BQ24192_H #define __CROS_EC_BQ24192_H -#define BQ24192_ADDR 0xd6 +#define BQ24192_ADDR__7bf 0x6b /* Registers */ #define BQ24192_REG_INPUT_CTRL 0x0 diff --git a/driver/charger/bq24715.c b/driver/charger/bq24715.c index 4fe49599f6..bd38ed5f95 100644 --- a/driver/charger/bq24715.c +++ b/driver/charger/bq24715.c @@ -37,12 +37,14 @@ static const struct charger_info bq24725_charger_info = { static inline int sbc_read(int cmd, int *param) { - return i2c_read16(I2C_PORT_CHARGER, CHARGER_ADDR, cmd, param); + return i2c_read16__7bf(I2C_PORT_CHARGER, CHARGER_ADDR__7bf, + cmd, param); } static inline int sbc_write(int cmd, int param) { - return i2c_write16(I2C_PORT_CHARGER, CHARGER_ADDR, cmd, param); + return i2c_write16__7bf(I2C_PORT_CHARGER, CHARGER_ADDR__7bf, + cmd, param); } int charger_set_input_current(int input_current) diff --git a/driver/charger/bq24773.h b/driver/charger/bq24773.h index 52c7c47873..0191da9ac4 100644 --- a/driver/charger/bq24773.h +++ b/driver/charger/bq24773.h @@ -12,8 +12,8 @@ #include "i2c.h" /* I2C address */ -#define BQ24770_ADDR (0x12) -#define BQ24773_ADDR (0x6a << 1) +#define BQ24770_ADDR__7bf 0x09 +#define BQ24773_ADDR__7bf 0x6a /* Chip specific commands */ #define BQ24770_CHARGE_OPTION0 0x12 @@ -72,7 +72,7 @@ #ifdef CONFIG_CHARGER_BQ24770 #define CHARGER_NAME "bq24770" - #define I2C_ADDR_CHARGER BQ24770_ADDR + #define I2C_ADDR_CHARGER__7bf BQ24770_ADDR__7bf #define REG_CHARGE_OPTION0 BQ24770_CHARGE_OPTION0 #define REG_CHARGE_OPTION1 BQ24770_CHARGE_OPTION1 @@ -88,7 +88,7 @@ #elif defined(CONFIG_CHARGER_BQ24773) #define CHARGER_NAME "bq24773" - #define I2C_ADDR_CHARGER BQ24773_ADDR + #define I2C_ADDR_CHARGER__7bf BQ24773_ADDR__7bf #define REG_CHARGE_OPTION0 BQ24773_CHARGE_OPTION0 #define REG_CHARGE_OPTION1 BQ24773_CHARGE_OPTION1 @@ -105,23 +105,27 @@ #ifdef CONFIG_CHARGER_BQ24773 static inline int raw_read8(int offset, int *value) { - return i2c_read8(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); + return i2c_read8__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + offset, value); } static inline int raw_write8(int offset, int value) { - return i2c_write8(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); + return i2c_write8__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + offset, value); } #endif static inline int raw_read16(int offset, int *value) { - return i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); + return i2c_read16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + offset, value); } static inline int raw_write16(int offset, int value) { - return i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); + return i2c_write16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + offset, value); } #endif /* __CROS_EC_BQ24773_H */ diff --git a/driver/charger/bq25703.h b/driver/charger/bq25703.h index 54d64a81c7..c568285e5c 100644 --- a/driver/charger/bq25703.h +++ b/driver/charger/bq25703.h @@ -9,7 +9,7 @@ #define __CROS_EC_BQ25703_H /* I2C Interface */ -#define BQ25703_I2C_ADDR1 0xD6 +#define BQ25703_I2C_ADDR1__7bf 0x6B /* * BC1.2 minimum voltage threshold for BQ25703. diff --git a/driver/charger/bq25710.c b/driver/charger/bq25710.c index 5700a0325b..3f9f03b805 100644 --- a/driver/charger/bq25710.c +++ b/driver/charger/bq25710.c @@ -62,13 +62,14 @@ static const struct charger_info bq25710_charger_info = { static inline int raw_read16(int offset, int *value) { - return i2c_read16(I2C_PORT_CHARGER, BQ25710_SMBUS_ADDR1, offset, value); + return i2c_read16__7bf(I2C_PORT_CHARGER, BQ25710_SMBUS_ADDR1__7bf, + offset, value); } static inline int raw_write16(int offset, int value) { - return i2c_write16(I2C_PORT_CHARGER, BQ25710_SMBUS_ADDR1, offset, - value); + return i2c_write16__7bf(I2C_PORT_CHARGER, BQ25710_SMBUS_ADDR1__7bf, + offset, value); } #if defined(CONFIG_CHARGE_RAMP_HW) || \ diff --git a/driver/charger/bq25710.h b/driver/charger/bq25710.h index 448e24bad0..a4861e50ca 100644 --- a/driver/charger/bq25710.h +++ b/driver/charger/bq25710.h @@ -9,7 +9,7 @@ #define __CROS_EC_BQ25710_H /* SMBUS Interface */ -#define BQ25710_SMBUS_ADDR1 0x12 +#define BQ25710_SMBUS_ADDR1__7bf 0x09 #define BQ25710_BC12_MIN_VOLTAGE_MV 1408 diff --git a/driver/charger/bq2589x.h b/driver/charger/bq2589x.h index c13d34ec7d..38dd944dd4 100644 --- a/driver/charger/bq2589x.h +++ b/driver/charger/bq2589x.h @@ -99,13 +99,13 @@ /* Variant-specific configuration */ #if defined(CONFIG_CHARGER_BQ25890) #define BQ2589X_DEVICE_ID BQ25890_DEVICE_ID -#define BQ2589X_ADDR (0x6A << 1) +#define BQ2589X_ADDR__7bf (0x6A) #elif defined(CONFIG_CHARGER_BQ25895) #define BQ2589X_DEVICE_ID BQ25895_DEVICE_ID -#define BQ2589X_ADDR (0x6A << 1) +#define BQ2589X_ADDR__7bf (0x6A) #elif defined(CONFIG_CHARGER_BQ25892) #define BQ2589X_DEVICE_ID BQ25892_DEVICE_ID -#define BQ2589X_ADDR (0x6B << 1) +#define BQ2589X_ADDR__7bf (0x6B) #else #error BQ2589X unknown variant #endif diff --git a/driver/charger/isl923x.c b/driver/charger/isl923x.c index 80385bebcd..a2d6e08977 100644 --- a/driver/charger/isl923x.c +++ b/driver/charger/isl923x.c @@ -56,17 +56,20 @@ static const struct charger_info isl9237_charger_info = { static inline int raw_read8(int offset, int *value) { - return i2c_read8(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); + return i2c_read8__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + offset, value); } static inline int raw_read16(int offset, int *value) { - return i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); + return i2c_read16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + offset, value); } static inline int raw_write16(int offset, int value) { - return i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); + return i2c_write16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + offset, value); } static int isl9237_set_current(uint16_t current) @@ -572,8 +575,8 @@ static int print_amon_bmon(enum amon_bmon amon, int direction, int adc, curr, reg, ret; #ifdef CONFIG_CHARGER_ISL9238 - ret = i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, - ISL9238_REG_CONTROL3, ®); + ret = i2c_read16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + ISL9238_REG_CONTROL3, ®); if (ret) return ret; @@ -582,15 +585,15 @@ static int print_amon_bmon(enum amon_bmon amon, int direction, reg |= ISL9238_C3_AMON_BMON_DIRECTION; else reg &= ~ISL9238_C3_AMON_BMON_DIRECTION; - ret = i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, - ISL9238_REG_CONTROL3, reg); + ret = i2c_write16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + ISL9238_REG_CONTROL3, reg); if (ret) return ret; #endif mutex_lock(&control1_mutex); - ret = i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, + ret = i2c_read16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, ISL923X_REG_CONTROL1, ®); if (!ret) { /* Switch between AMON/BMON */ @@ -601,8 +604,8 @@ static int print_amon_bmon(enum amon_bmon amon, int direction, /* Enable monitor */ reg &= ~ISL923X_C1_DISABLE_MON; - ret = i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, - ISL923X_REG_CONTROL1, reg); + ret = i2c_write16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + ISL923X_REG_CONTROL1, reg); } mutex_unlock(&control1_mutex); @@ -686,8 +689,8 @@ static void dump_reg_range(int low, int high) for (reg = low; reg <= high; reg++) { CPRINTF("[%Xh] = ", reg); - rv = i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, reg, - ®val); + rv = i2c_read16__7bf(I2C_PORT_CHARGER, I2C_ADDR_CHARGER__7bf, + reg, ®val); if (!rv) CPRINTF("0x%04x\n", regval); else diff --git a/driver/charger/isl923x.h b/driver/charger/isl923x.h index 4623b679b7..09a627d251 100644 --- a/driver/charger/isl923x.h +++ b/driver/charger/isl923x.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_ISL923X_H #define __CROS_EC_ISL923X_H -#define ISL923X_ADDR 0x12 /* 7bit address 0001001 */ +#define ISL923X_ADDR__7bf (0x09) /* Registers */ #define ISL923X_REG_CHG_CURRENT 0x14 @@ -304,7 +304,7 @@ enum isl9237_fsm_state { #define INPUT_I_MIN 4 #define INPUT_I_STEP 4 -#define I2C_ADDR_CHARGER ISL923X_ADDR +#define I2C_ADDR_CHARGER__7bf ISL923X_ADDR__7bf #endif /* __CROS_EC_ISL923X_H */ /** diff --git a/driver/charger/isl9241.h b/driver/charger/isl9241.h index f2d4f1493d..e145abc610 100644 --- a/driver/charger/isl9241.h +++ b/driver/charger/isl9241.h @@ -8,8 +8,8 @@ #ifndef __CROS_EC_ISL9241_H #define __CROS_EC_ISL9241_H -#define ISL9241_ADDR 0x12 /* 7bit address 0001001 */ -#define I2C_ADDR_CHARGER ISL9241_ADDR +#define ISL9241_ADDR__7bf 0x09 +#define I2C_ADDR_CHARGER__7bf ISL9241_ADDR__7bf #define CHARGER_NAME "ISL9241" #define CHARGE_V_MAX 18304 diff --git a/driver/charger/rt946x.c b/driver/charger/rt946x.c index 2915ba5155..4b7b9d13c6 100644 --- a/driver/charger/rt946x.c +++ b/driver/charger/rt946x.c @@ -145,17 +145,18 @@ static const uint16_t rt946x_boost_current[] = { static int rt946x_read8(int reg, int *val) { - return i2c_read8(I2C_PORT_CHARGER, RT946X_ADDR, reg, val); + return i2c_read8__7bf(I2C_PORT_CHARGER, RT946X_ADDR__7bf, reg, val); } static int rt946x_write8(int reg, int val) { - return i2c_write8(I2C_PORT_CHARGER, RT946X_ADDR, reg, val); + return i2c_write8__7bf(I2C_PORT_CHARGER, RT946X_ADDR__7bf, reg, val); } static int rt946x_block_write(int reg, const uint8_t *val, int len) { - return i2c_write_block(I2C_PORT_CHARGER, RT946X_ADDR, reg, val, len); + return i2c_write_block__7bf(I2C_PORT_CHARGER, RT946X_ADDR__7bf, + reg, val, len); } static int rt946x_update_bits(int reg, int mask, int val) diff --git a/driver/charger/rt946x.h b/driver/charger/rt946x.h index d9ec30a596..c5132702be 100644 --- a/driver/charger/rt946x.h +++ b/driver/charger/rt946x.h @@ -583,15 +583,15 @@ #if defined(CONFIG_CHARGER_RT9466) #define RT946X_CHARGER_NAME "rt9466" #define RT946X_VENDOR_ID 0x80 - #define RT946X_ADDR (0x53 << 1) + #define RT946X_ADDR__7bf 0x53 #elif defined(CONFIG_CHARGER_RT9467) #define RT946X_CHARGER_NAME "rt9467" #define RT946X_VENDOR_ID 0x90 - #define RT946X_ADDR (0x5B << 1) + #define RT946X_ADDR__7bf 0x5B #elif defined(CONFIG_CHARGER_MT6370) #define RT946X_CHARGER_NAME "mt6370" #define RT946X_VENDOR_ID 0xE0 - #define RT946X_ADDR (0x34 << 1) + #define RT946X_ADDR__7bf 0x34 #else #error "No suitable charger option defined" #endif diff --git a/driver/charger/sy21612.c b/driver/charger/sy21612.c index 378c8891a3..0ec3a570e3 100644 --- a/driver/charger/sy21612.c +++ b/driver/charger/sy21612.c @@ -22,7 +22,7 @@ static int sy21612_clear_set_reg(int reg, int clear, int set) { int val, old_val, rv; - rv = i2c_read8(I2C_PORT_SY21612, SY21612_ADDR, reg, &old_val); + rv = i2c_read8__7bf(I2C_PORT_SY21612, SY21612_ADDR__7bf, reg, &old_val); if (rv) return rv; @@ -31,14 +31,15 @@ static int sy21612_clear_set_reg(int reg, int clear, int set) val |= set; if (val != old_val || clear || set) - rv = i2c_write8(I2C_PORT_SY21612, SY21612_ADDR, reg, val); + rv = i2c_write8__7bf(I2C_PORT_SY21612, SY21612_ADDR__7bf, + reg, val); return rv; } static int sy21612_read(int reg, int *val) { - return i2c_read8(I2C_PORT_SY21612, SY21612_ADDR, reg, val); + return i2c_read8__7bf(I2C_PORT_SY21612, SY21612_ADDR__7bf, reg, val); } int sy21612_enable_regulator(int enable) diff --git a/driver/charger/sy21612.h b/driver/charger/sy21612.h index d685406fcf..8b72966223 100644 --- a/driver/charger/sy21612.h +++ b/driver/charger/sy21612.h @@ -10,8 +10,8 @@ #include "gpio.h" -#ifndef SY21612_ADDR -#define SY21612_ADDR 0xe2 /* 7bit address 1110_010 */ +#ifndef SY21612_ADDR__7bf +#define SY21612_ADDR__7bf 0x71 #endif enum sy21612_switching_freq { diff --git a/driver/gyro_l3gd20h.h b/driver/gyro_l3gd20h.h index 1864c5afac..e7684688d1 100644 --- a/driver/gyro_l3gd20h.h +++ b/driver/gyro_l3gd20h.h @@ -15,8 +15,8 @@ * 7-bit address is 110101Xb. Where 'X' is determined * by the voltage on the ADDR pin. */ -#define L3GD20_ADDR0 0xd4 -#define L3GD20_ADDR1 0xd6 +#define L3GD20_ADDR0__7bf 0x6a +#define L3GD20_ADDR1__7bf 0x6b /* who am I */ #define L3GD20_WHO_AM_I 0xd7 diff --git a/driver/ina2xx.c b/driver/ina2xx.c index 70dd5ecc75..a50d5f800e 100644 --- a/driver/ina2xx.c +++ b/driver/ina2xx.c @@ -16,16 +16,16 @@ /* Console output macros */ #define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) -/* 8-bit I2C base address */ -#define INA2XX_I2C_ADDR (0x40 << 1) +/* I2C base address */ +#define INA2XX_I2C_ADDR__7bf 0x40 uint16_t ina2xx_read(uint8_t idx, uint8_t reg) { int res; int val; - uint8_t addr = INA2XX_I2C_ADDR | (idx << 1); - res = i2c_read16(I2C_PORT_MASTER, addr, reg, &val); + res = i2c_read16__7bf(I2C_PORT_MASTER, INA2XX_I2C_ADDR__7bf | idx, + reg, &val); if (res) { CPRINTS("INA2XX I2C read failed"); return 0x0bad; @@ -36,10 +36,10 @@ uint16_t ina2xx_read(uint8_t idx, uint8_t reg) int ina2xx_write(uint8_t idx, uint8_t reg, uint16_t val) { int res; - uint8_t addr = INA2XX_I2C_ADDR | (idx << 1); uint16_t be_val = (val >> 8) | ((val & 0xff) << 8); - res = i2c_write16(I2C_PORT_MASTER, addr, reg, be_val); + res = i2c_write16__7bf(I2C_PORT_MASTER, INA2XX_I2C_ADDR__7bf | idx, + reg, be_val); if (res) CPRINTS("INA2XX I2C write failed"); return res; diff --git a/driver/ioexpander_pca9534.c b/driver/ioexpander_pca9534.c index be22e7918d..4eddd5adab 100644 --- a/driver/ioexpander_pca9534.c +++ b/driver/ioexpander_pca9534.c @@ -8,37 +8,45 @@ #include "i2c.h" #include "ioexpander_pca9534.h" -static int pca9534_pin_read(int port, int addr, int reg, int pin, int *val) +static int pca9534_pin_read__7bf(const int port, const uint16_t addr__7bf, + int reg, int pin, int *val) { int ret; - ret = i2c_read8(port, addr, reg, val); + ret = i2c_read8__7bf(port, addr__7bf, reg, val); *val = (*val & BIT(pin)) ? 1 : 0; return ret; } -static int pca9534_pin_write(int port, int addr, int reg, int pin, int val) +static int pca9534_pin_write__7bf(const int port, const uint16_t addr__7bf, + int reg, int pin, int val) { int ret, v; - ret = i2c_read8(port, addr, reg, &v); + ret = i2c_read8__7bf(port, addr__7bf, reg, &v); if (ret != EC_SUCCESS) return ret; v &= ~BIT(pin); if (val) v |= 1 << pin; - return i2c_write8(port, addr, reg, v); + return i2c_write8__7bf(port, addr__7bf, reg, v); } -int pca9534_get_level(int port, int addr, int pin, int *level) +int pca9534_get_level__7bf(const int port, const uint16_t addr__7bf, + int pin, int *level) { - return pca9534_pin_read(port, addr, PCA9534_REG_INPUT, pin, level); + return pca9534_pin_read__7bf(port, addr__7bf, + PCA9534_REG_INPUT, pin, level); } -int pca9534_set_level(int port, int addr, int pin, int level) +int pca9534_set_level__7bf(const int port, const uint16_t addr__7bf, + int pin, int level) { - return pca9534_pin_write(port, addr, PCA9534_REG_OUTPUT, pin, level); + return pca9534_pin_write__7bf(port, addr__7bf, + PCA9534_REG_OUTPUT, pin, level); } -int pca9534_config_pin(int port, int addr, int pin, int is_input) +int pca9534_config_pin__7bf(const int port, const uint16_t addr__7bf, + int pin, int is_input) { - return pca9534_pin_write(port, addr, PCA9534_REG_CONFIG, pin, is_input); + return pca9534_pin_write__7bf(port, addr__7bf, + PCA9534_REG_CONFIG, pin, is_input); } diff --git a/driver/ioexpander_pca9534.h b/driver/ioexpander_pca9534.h index 9c8959b096..7e5ce79c8d 100644 --- a/driver/ioexpander_pca9534.h +++ b/driver/ioexpander_pca9534.h @@ -26,7 +26,8 @@ * * @return EC_SUCCESS, or EC_ERROR_* on error. */ -int pca9534_get_level(int port, int addr, int pin, int *level); +int pca9534_get_level__7bf(const int port, const uint16_t addr__7bf, + int pin, int *level); /* * Set output level. This function has no effect if the pin is @@ -39,7 +40,8 @@ int pca9534_get_level(int port, int addr, int pin, int *level); * * @return EC_SUCCESS, or EC_ERROR_* on error. */ -int pca9534_set_level(int port, int addr, int pin, int level); +int pca9534_set_level__7bf(const int port, const uint16_t addr__7bf, + int pin, int level); /* * Config a pin as input or output. @@ -51,6 +53,7 @@ int pca9534_set_level(int port, int addr, int pin, int level); * * @return EC_SUCCESS, or EC_ERROR_* on error. */ -int pca9534_config_pin(int port, int addr, int pin, int is_input); +int pca9534_config_pin__7bf(const int port, const uint16_t addr__7bf, + int pin, int is_input); #endif /* __CROS_EC_IOEXPANDER_PCA9534_H */ diff --git a/driver/ioexpander_pca9555.h b/driver/ioexpander_pca9555.h index 874f24356a..49a626d068 100644 --- a/driver/ioexpander_pca9555.h +++ b/driver/ioexpander_pca9555.h @@ -28,14 +28,18 @@ #define PCA9555_IO_6 BIT(6) #define PCA9555_IO_7 BIT(7) -static inline int pca9555_read(int port, int addr, int reg, int *data_ptr) +static inline int pca9555_read__7bf(const int port, + const uint16_t i2c_addr__7bf, + int reg, int *data_ptr) { - return i2c_read8(port, addr, reg, data_ptr); + return i2c_read8__7bf(port, i2c_addr__7bf, reg, data_ptr); } -static inline int pca9555_write(int port, int addr, int reg, int data) +static inline int pca9555_write__7bf(const int port, + const uint16_t i2c_addr__7bf, + int reg, int data) { - return i2c_write8(port, addr, reg, data); + return i2c_write8__7bf(port, i2c_addr__7bf, reg, data); } #endif /* __CROS_EC_IOEXPANDER_PCA9555_H */ diff --git a/driver/led/lm3509.c b/driver/led/lm3509.c index 0f44681659..c940dd69e2 100644 --- a/driver/led/lm3509.c +++ b/driver/led/lm3509.c @@ -12,12 +12,14 @@ static inline int lm3509_write(uint8_t reg, uint8_t val) { - return i2c_write8(I2C_PORT_KBLIGHT, LM3509_I2C_ADDR, reg, val); + return i2c_write8__7bf(I2C_PORT_KBLIGHT, LM3509_I2C_ADDR__7bf, + reg, val); } static inline int lm3509_read(uint8_t reg, int *val) { - return i2c_read8(I2C_PORT_KBLIGHT, LM3509_I2C_ADDR, reg, val); + return i2c_read8__7bf(I2C_PORT_KBLIGHT, LM3509_I2C_ADDR__7bf, + reg, val); } /* Brightness level (0.0 to 100.0%) to brightness register conversion table */ diff --git a/driver/led/lm3509.h b/driver/led/lm3509.h index 8318197a8e..fce0c993dc 100644 --- a/driver/led/lm3509.h +++ b/driver/led/lm3509.h @@ -8,8 +8,7 @@ #ifndef __CROS_EC_LM3509_H #define __CROS_EC_LM3509_H -/* 8-bit I2C address */ -#define LM3509_I2C_ADDR 0x6C +#define LM3509_I2C_ADDR__7bf 0x36 /* * General purpose register diff --git a/driver/led/lm3630a.c b/driver/led/lm3630a.c index 5515771ffa..10f850b09d 100644 --- a/driver/led/lm3630a.c +++ b/driver/led/lm3630a.c @@ -11,17 +11,19 @@ #include "timer.h" -/* 8-bit I2C address */ -#define LM3630A_I2C_ADDR (0x36 << 1) +/* I2C address */ +#define LM3630A_I2C_ADDR__7bf 0x36 static inline int lm3630a_write(uint8_t reg, uint8_t val) { - return i2c_write8(I2C_PORT_KBLIGHT, LM3630A_I2C_ADDR, reg, val); + return i2c_write8__7bf(I2C_PORT_KBLIGHT, LM3630A_I2C_ADDR__7bf, + reg, val); } static inline int lm3630a_read(uint8_t reg, int *val) { - return i2c_read8(I2C_PORT_KBLIGHT, LM3630A_I2C_ADDR, reg, val); + return i2c_read8__7bf(I2C_PORT_KBLIGHT, LM3630A_I2C_ADDR__7bf, + reg, val); } static void deferred_lm3630a_poweron(void) diff --git a/driver/led/lp5562.c b/driver/led/lp5562.c index 4a72c914bb..966aff5e58 100644 --- a/driver/led/lp5562.c +++ b/driver/led/lp5562.c @@ -11,8 +11,8 @@ #include "timer.h" #include "util.h" -/* 8-bit I2C address */ -#define LP5562_I2C_ADDR (0x30 << 1) +/* I2C address */ +#define LP5562_I2C_ADDR__7bf (0x30) inline int lp5562_write(uint8_t reg, uint8_t val) { diff --git a/driver/led/max695x.h b/driver/led/max695x.h index d7e6d26bbf..4bead04194 100644 --- a/driver/led/max695x.h +++ b/driver/led/max695x.h @@ -9,8 +9,8 @@ #define __CROS_EC_MAX656X_H /* I2C interface */ -#define MAX695X_I2C_ADDR1 (0x38 << 1) -#define MAX695X_I2C_ADDR2 (0x39 << 1) +#define MAX695X_I2C_ADDR1__7bf (0x38) +#define MAX695X_I2C_ADDR2__7bf (0x39) /* Decode mode register */ #define MAX695X_REG_DECODE_MODE 0x01 diff --git a/driver/led/oz554.c b/driver/led/oz554.c index 7ceb6bdfa9..6369e064a3 100644 --- a/driver/led/oz554.c +++ b/driver/led/oz554.c @@ -16,7 +16,7 @@ #define CPRINTS(format, args...) cprints(CC_I2C, format, ## args) #define CPRINTF(format, args...) cprintf(CC_I2C, format, ## args) -#define I2C_ADDR_OZ554 0x62 +#define I2C_ADDR_OZ554__7bf 0x31 struct oz554_value { uint8_t offset; @@ -80,7 +80,8 @@ static void set_oz554_reg(void) int i; for (i = 0; i < oz554_conf_size; ++i) { - int rv = i2c_write8(I2C_PORT_BACKLIGHT, I2C_ADDR_OZ554, + int rv = i2c_write8__7bf(I2C_PORT_BACKLIGHT, + I2C_ADDR_OZ554__7bf, oz554_conf[i].offset, oz554_conf[i].data); if (rv) { CPRINTS("Write OZ554 register %d failed rv=%d" , i, rv); diff --git a/driver/mag_bmm150.c b/driver/mag_bmm150.c index 9598d85105..30555cbe56 100644 --- a/driver/mag_bmm150.c +++ b/driver/mag_bmm150.c @@ -19,8 +19,8 @@ #ifdef CONFIG_MAG_BMI160_BMM150 #include "driver/accelgyro_bmi160.h" -#define raw_mag_read8 bmi160_sec_raw_read8 -#define raw_mag_write8 bmi160_sec_raw_write8 +#define raw_mag_read8__7bf bmi160_sec_raw_read8__7bf +#define raw_mag_write8__7bf bmi160_sec_raw_write8__7bf #else #error "Not implemented" #endif @@ -73,9 +73,9 @@ #define BMI150_READ_16BIT_COM_REG(store_, addr_) do { \ int val; \ - raw_mag_read8(s->port, s->addr, (addr_), &val); \ + raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, (addr_), &val); \ store_ = val; \ - raw_mag_read8(s->port, s->addr, (addr_) + 1, &val); \ + raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, (addr_) + 1, &val); \ store_ |= (val << 8); \ } while (0) @@ -88,10 +88,12 @@ int bmm150_init(const struct motion_sensor_t *s) struct mag_cal_t *moc = BMM150_CAL(s); /* Set the compass from Suspend to Sleep */ - ret = raw_mag_write8(s->port, s->addr, BMM150_PWR_CTRL, BMM150_PWR_ON); + ret = raw_mag_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_PWR_CTRL, BMM150_PWR_ON); msleep(4); /* Now we can read the device id */ - ret = raw_mag_read8(s->port, s->addr, BMM150_CHIP_ID, &val); + ret = raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_CHIP_ID, &val); if (ret) return EC_ERROR_UNKNOWN; @@ -99,21 +101,27 @@ int bmm150_init(const struct motion_sensor_t *s) return EC_ERROR_ACCESS_DENIED; /* Read the private registers for compensation */ - ret = raw_mag_read8(s->port, s->addr, BMM150_REGA_DIG_X1, &val); + ret = raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REGA_DIG_X1, &val); if (ret) return EC_ERROR_UNKNOWN; regs->dig1[X] = val; - raw_mag_read8(s->port, s->addr, BMM150_REGA_DIG_Y1, &val); + raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REGA_DIG_Y1, &val); regs->dig1[Y] = val; - raw_mag_read8(s->port, s->addr, BMM150_REGA_DIG_X2, &val); + raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REGA_DIG_X2, &val); regs->dig2[X] = val; - raw_mag_read8(s->port, s->addr, BMM150_REGA_DIG_Y2, &val); + raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REGA_DIG_Y2, &val); regs->dig2[Y] = val; - raw_mag_read8(s->port, s->addr, BMM150_REGA_DIG_XY1, &val); + raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REGA_DIG_XY1, &val); regs->dig_xy1 = val; - raw_mag_read8(s->port, s->addr, BMM150_REGA_DIG_XY2, &val); + raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REGA_DIG_XY2, &val); regs->dig_xy2 = val; BMI150_READ_16BIT_COM_REG(regs->dig_z1, BMM150_REGA_DIG_Z1_LSB); @@ -124,15 +132,20 @@ int bmm150_init(const struct motion_sensor_t *s) /* Set the repetition in "Regular Preset" */ - raw_mag_write8(s->port, s->addr, BMM150_REPXY, BMM150_REP(SPECIAL, XY)); - raw_mag_write8(s->port, s->addr, BMM150_REPZ, BMM150_REP(SPECIAL, Z)); - ret = raw_mag_read8(s->port, s->addr, BMM150_REPXY, &val); - ret = raw_mag_read8(s->port, s->addr, BMM150_REPZ, &val); + raw_mag_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REPXY, BMM150_REP(SPECIAL, XY)); + raw_mag_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REPZ, BMM150_REP(SPECIAL, Z)); + ret = raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REPXY, &val); + ret = raw_mag_read8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_REPZ, &val); /* * Set the compass forced mode, to sleep after each measure. */ - ret = raw_mag_write8(s->port, s->addr, BMM150_OP_CTRL, - BMM150_OP_MODE_FORCED << BMM150_OP_MODE_OFFSET); + ret = raw_mag_write8__7bf(s->port, s->i2c_spi_addr__7bf, + BMM150_OP_CTRL, + BMM150_OP_MODE_FORCED << BMM150_OP_MODE_OFFSET); init_mag_cal(moc); moc->radius = 0.0f; diff --git a/driver/mag_bmm150.h b/driver/mag_bmm150.h index a504b1a20a..e9b3ce660b 100644 --- a/driver/mag_bmm150.h +++ b/driver/mag_bmm150.h @@ -11,10 +11,10 @@ #include "accelgyro.h" #include "mag_cal.h" -#define BMM150_ADDR0 0x20 -#define BMM150_ADDR1 0x22 -#define BMM150_ADDR2 0x24 -#define BMM150_ADDR3 0x26 +#define BMM150_ADDR0__7bf 0x10 +#define BMM150_ADDR1__7bf 0x11 +#define BMM150_ADDR2__7bf 0x12 +#define BMM150_ADDR3__7bf 0x13 #define BMM150_CHIP_ID 0x40 #define BMM150_CHIP_ID_MAJOR 0x32 diff --git a/driver/mag_lis2mdl.c b/driver/mag_lis2mdl.c index 40725c180d..348577adfd 100644 --- a/driver/mag_lis2mdl.c +++ b/driver/mag_lis2mdl.c @@ -146,25 +146,25 @@ int lis2mdl_thru_lsm6dsm_init(const struct motion_sensor_t *s) mutex_lock(s->mutex); /* Magnetometer in cascade mode */ - ret = sensorhub_check_and_rst( + ret = sensorhub_check_and_rst__7bf( LSM6DSM_MAIN_SENSOR(s), - CONFIG_ACCELGYRO_SEC_ADDR, + CONFIG_ACCELGYRO_SEC_ADDR__7BF, LIS2MDL_WHO_AM_I_REG, LIS2MDL_WHO_AM_I, LIS2MDL_CFG_REG_A_ADDR, LIS2MDL_FLAG_SW_RESET); if (ret != EC_SUCCESS) goto err_unlock; - ret = sensorhub_config_ext_reg( + ret = sensorhub_config_ext_reg__7bf( LSM6DSM_MAIN_SENSOR(s), - CONFIG_ACCELGYRO_SEC_ADDR, + CONFIG_ACCELGYRO_SEC_ADDR__7BF, LIS2MDL_CFG_REG_A_ADDR, LIS2MDL_ODR_50HZ | LIS2MDL_MODE_CONT); if (ret != EC_SUCCESS) goto err_unlock; - ret = sensorhub_config_slv0_read( + ret = sensorhub_config_slv0_read__7bf( LSM6DSM_MAIN_SENSOR(s), - CONFIG_ACCELGYRO_SEC_ADDR, + CONFIG_ACCELGYRO_SEC_ADDR__7BF, LIS2MDL_OUT_REG, OUT_XYZ_SIZE); if (ret != EC_SUCCESS) goto err_unlock; @@ -200,7 +200,8 @@ static int lis2mdl_is_data_ready(const struct motion_sensor_t *s, int *ready) { int ret, tmp; - ret = st_raw_read8(s->port, s->addr, LIS2MDL_STATUS_REG, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2MDL_STATUS_REG, &tmp); if (ret != EC_SUCCESS) { *ready = 0; return ret; @@ -241,8 +242,8 @@ int lis2mdl_read(const struct motion_sensor_t *s, intv3_t v) } mutex_lock(s->mutex); - ret = st_raw_read_n(s->port, s->addr, LIS2MDL_OUT_REG, raw, - OUT_XYZ_SIZE); + ret = st_raw_read_n__7bf(s->port, s->i2c_spi_addr__7bf, + LIS2MDL_OUT_REG, raw, OUT_XYZ_SIZE); mutex_unlock(s->mutex); if (ret == EC_SUCCESS) { lis2mdl_normalize(s, v, raw); @@ -262,8 +263,8 @@ int lis2mdl_init(const struct motion_sensor_t *s) /* Check who am I value */ do { - ret = st_raw_read8(s->port, LIS2MDL_ADDR, LIS2MDL_WHO_AM_I_REG, - &who_am_i); + ret = st_raw_read8__7bf(s->port, LIS2MDL_ADDR__7bf, + LIS2MDL_WHO_AM_I_REG, &who_am_i); if (ret != EC_SUCCESS) { /* Make sure we wait for the chip to start up. Sleep 1ms * and try again. @@ -282,7 +283,8 @@ int lis2mdl_init(const struct motion_sensor_t *s) mutex_lock(s->mutex); /* Reset the sensor */ - ret = st_raw_write8(s->port, LIS2MDL_ADDR, LIS2MDL_CFG_REG_A_ADDR, + ret = st_raw_write8__7bf(s->port, LIS2MDL_ADDR__7bf, + LIS2MDL_CFG_REG_A_ADDR, LIS2MDL_FLAG_SW_RESET); if (ret != EC_SUCCESS) goto lis2mdl_init_error; @@ -361,13 +363,13 @@ int lis2mdl_set_data_rate(const struct motion_sensor_t *s, int rate, int rnd) mutex_lock(s->mutex); if (rate <= 0) { - ret = st_raw_write8(s->port, LIS2MDL_ADDR, + ret = st_raw_write8__7bf(s->port, LIS2MDL_ADDR__7bf, LIS2MDL_CFG_REG_A_ADDR, LIS2MDL_FLAG_SW_RESET); } else { /* Add continuous and temp compensation flags */ reg_val |= LIS2MDL_MODE_CONT | LIS2MDL_FLAG_TEMP_COMPENSATION; - ret = st_raw_write8(s->port, LIS2MDL_ADDR, + ret = st_raw_write8__7bf(s->port, LIS2MDL_ADDR__7bf, LIS2MDL_CFG_REG_A_ADDR, reg_val); } diff --git a/driver/mag_lis2mdl.h b/driver/mag_lis2mdl.h index f87b4e1f91..e0c2f1652d 100644 --- a/driver/mag_lis2mdl.h +++ b/driver/mag_lis2mdl.h @@ -16,7 +16,7 @@ * 8-bit address is 0011110Wb where the last bit represents whether the * operation is a read or a write. */ -#define LIS2MDL_ADDR 0x3c +#define LIS2MDL_ADDR__7bf 0x1e #define LIS2MDL_STARTUP_MS 10 diff --git a/driver/pmic_tps650x30.h b/driver/pmic_tps650x30.h index 861f1d8d14..c3d3691385 100644 --- a/driver/pmic_tps650x30.h +++ b/driver/pmic_tps650x30.h @@ -9,9 +9,9 @@ #define __CROS_EC_PMIC_TPS650X30_H /* I2C interface */ -#define TPS650X30_I2C_ADDR1 (0x30 << 1) -#define TPS650X30_I2C_ADDR2 (0x32 << 1) -#define TPS650X30_I2C_ADDR3 (0x34 << 1) +#define TPS650X30_I2C_ADDR1__7bf 0x30 +#define TPS650X30_I2C_ADDR2__7bf 0x32 +#define TPS650X30_I2C_ADDR3__7bf 0x34 /* TPS650X30 registers */ #define TPS650X30_REG_VENDORID 0x00 diff --git a/driver/ppc/nx20p348x.c b/driver/ppc/nx20p348x.c index aae4e18f56..fc234539de 100644 --- a/driver/ppc/nx20p348x.c +++ b/driver/ppc/nx20p348x.c @@ -32,16 +32,16 @@ static uint8_t flags[CONFIG_USB_PD_PORT_COUNT]; static int read_reg(uint8_t port, int reg, int *regval) { - return i2c_read8(ppc_chips[port].i2c_port, - ppc_chips[port].i2c_addr, + return i2c_read8__7bf(ppc_chips[port].i2c_port, + ppc_chips[port].i2c_addr__7bf, reg, regval); } static int write_reg(uint8_t port, int reg, int regval) { - return i2c_write8(ppc_chips[port].i2c_port, - ppc_chips[port].i2c_addr, + return i2c_write8__7bf(ppc_chips[port].i2c_port, + ppc_chips[port].i2c_addr__7bf, reg, regval); } diff --git a/driver/ppc/nx20p348x.h b/driver/ppc/nx20p348x.h index 531842d766..a04868c732 100644 --- a/driver/ppc/nx20p348x.h +++ b/driver/ppc/nx20p348x.h @@ -8,15 +8,15 @@ #ifndef __CROS_EC_NX20P348X_H #define __CROS_EC_NX20P348X_H -#define NX20P3483_ADDR0 0xE0 -#define NX20P3483_ADDR1 0xE2 -#define NX20P3483_ADDR2 0xE4 -#define NX20P3483_ADDR3 0xE6 - -#define NX20P3481_ADDR0 0xE8 -#define NX20P3481_ADDR1 0xEA -#define NX20P3481_ADDR2 0xEC -#define NX20P3481_ADDR3 0xEE +#define NX20P3483_ADDR0__7bf (0x70) +#define NX20P3483_ADDR1__7bf (0x71) +#define NX20P3483_ADDR2__7bf (0x72) +#define NX20P3483_ADDR3__7bf (0x73) + +#define NX20P3481_ADDR0__7bf (0x74) +#define NX20P3481_ADDR1__7bf (0x75) +#define NX20P3481_ADDR2__7bf (0x76) +#define NX20P3481_ADDR3__7bf (0x77) /* * This PPC hard-codes the over voltage protect of Vbus at 6.8V in dead-battery diff --git a/driver/ppc/sn5s330.c b/driver/ppc/sn5s330.c index 98c2641440..5cfbace742 100644 --- a/driver/ppc/sn5s330.c +++ b/driver/ppc/sn5s330.c @@ -31,16 +31,16 @@ static int source_enabled[CONFIG_USB_PD_PORT_COUNT]; static int read_reg(uint8_t port, int reg, int *regval) { - return i2c_read8(ppc_chips[port].i2c_port, - ppc_chips[port].i2c_addr, + return i2c_read8__7bf(ppc_chips[port].i2c_port, + ppc_chips[port].i2c_addr__7bf, reg, regval); } static int write_reg(uint8_t port, int reg, int regval) { - return i2c_write8(ppc_chips[port].i2c_port, - ppc_chips[port].i2c_addr, + return i2c_write8__7bf(ppc_chips[port].i2c_port, + ppc_chips[port].i2c_addr__7bf, reg, regval); } @@ -78,12 +78,12 @@ static int sn5s330_dump(int port) int i; int data; const int i2c_port = ppc_chips[port].i2c_port; - const int i2c_addr = ppc_chips[port].i2c_addr; + const uint16_t i2c_addr__7bf = ppc_chips[port].i2c_addr__7bf; /* Flush after every set otherwise console buffer may get full. */ for (i = SN5S330_FUNC_SET1; i <= SN5S330_FUNC_SET12; i++) { - i2c_read8(i2c_port, i2c_addr, i, &data); + i2c_read8__7bf(i2c_port, i2c_addr__7bf, i, &data); ccprintf("FUNC_SET%d [%02Xh] = 0x%02x\n", i - SN5S330_FUNC_SET1 + 1, i, @@ -93,7 +93,7 @@ static int sn5s330_dump(int port) cflush(); for (i = SN5S330_INT_STATUS_REG1; i <= SN5S330_INT_STATUS_REG4; i++) { - i2c_read8(i2c_port, i2c_addr, i, &data); + i2c_read8__7bf(i2c_port, i2c_addr__7bf, i, &data); ccprintf("INT_STATUS_REG%d [%02Xh] = 0x%02x\n", i - SN5S330_INT_STATUS_REG1 + 1, i, @@ -104,7 +104,7 @@ static int sn5s330_dump(int port) for (i = SN5S330_INT_TRIP_RISE_REG1; i <= SN5S330_INT_TRIP_RISE_REG3; i++) { - i2c_read8(i2c_port, i2c_addr, i, &data); + i2c_read8__7bf(i2c_port, i2c_addr__7bf, i, &data); ccprintf("INT_TRIP_RISE_REG%d [%02Xh] = 0x%02x\n", i - SN5S330_INT_TRIP_RISE_REG1 + 1, i, @@ -115,7 +115,7 @@ static int sn5s330_dump(int port) for (i = SN5S330_INT_TRIP_FALL_REG1; i <= SN5S330_INT_TRIP_FALL_REG3; i++) { - i2c_read8(i2c_port, i2c_addr, i, &data); + i2c_read8__7bf(i2c_port, i2c_addr__7bf, i, &data); ccprintf("INT_TRIP_FALL_REG%d [%02Xh] = 0x%02x\n", i - SN5S330_INT_TRIP_FALL_REG1 + 1, i, @@ -126,7 +126,7 @@ static int sn5s330_dump(int port) for (i = SN5S330_INT_MASK_RISE_REG1; i <= SN5S330_INT_MASK_RISE_REG3; i++) { - i2c_read8(i2c_port, i2c_addr, i, &data); + i2c_read8__7bf(i2c_port, i2c_addr__7bf, i, &data); ccprintf("INT_MASK_RISE_REG%d [%02Xh] = 0x%02x\n", i - SN5S330_INT_MASK_RISE_REG1 + 1, i, @@ -137,7 +137,7 @@ static int sn5s330_dump(int port) for (i = SN5S330_INT_MASK_FALL_REG1; i <= SN5S330_INT_MASK_FALL_REG3; i++) { - i2c_read8(i2c_port, i2c_addr, i, &data); + i2c_read8__7bf(i2c_port, i2c_addr__7bf, i, &data); ccprintf("INT_MASK_FALL_REG%d [%02Xh] = 0x%02x\n", i - SN5S330_INT_MASK_FALL_REG1 + 1, i, @@ -184,7 +184,7 @@ static int sn5s330_init(int port) int retries; int reg; const int i2c_port = ppc_chips[port].i2c_port; - const int i2c_addr = ppc_chips[port].i2c_addr; + const uint16_t i2c_addr__7bf = ppc_chips[port].i2c_addr__7bf; #ifdef CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT /* Set the sourcing current limit value. */ @@ -211,8 +211,8 @@ static int sn5s330_init(int port) */ retries = 0; do { - status = i2c_write8(i2c_port, i2c_addr, SN5S330_FUNC_SET1, - regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET1, regval); if (status) { CPRINTS("ppc p%d: Failed to set FUNC_SET1! Retrying..", port); @@ -225,21 +225,24 @@ static int sn5s330_init(int port) /* Set Vbus OVP threshold to ~22.325V. */ regval = 0x37; - status = i2c_write8(i2c_port, i2c_addr, SN5S330_FUNC_SET5, regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET5, regval); if (status) { CPRINTS("ppc p%d: Failed to set FUNC_SET5!", port); return status; } /* Set Vbus UVP threshold to ~2.75V. */ - status = i2c_read8(i2c_port, i2c_addr, SN5S330_FUNC_SET6, ®val); + status = i2c_read8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET6, ®val); if (status) { CPRINTS("ppc p%d: Failed to read FUNC_SET6!", port); return status; } regval &= ~0x3F; regval |= 1; - status = i2c_write8(i2c_port, i2c_addr, SN5S330_FUNC_SET6, regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET6, regval); if (status) { CPRINTS("ppc p%d: Failed to write FUNC_SET6!", port); return status; @@ -247,7 +250,8 @@ static int sn5s330_init(int port) /* Enable SBU Fets and set PP2 current limit to ~3A. */ regval = SN5S330_SBU_EN | 0x8; - status = i2c_write8(i2c_port, i2c_addr, SN5S330_FUNC_SET2, regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET2, regval); if (status) { CPRINTS("ppc p%d: Failed to set FUNC_SET2!", port); return status; @@ -266,7 +270,8 @@ static int sn5s330_init(int port) * low voltage protection). */ regval = SN5S330_OVP_EN_CC | SN5S330_PP2_CONFIG | SN5S330_CONFIG_UVP; - status = i2c_write8(i2c_port, i2c_addr, SN5S330_FUNC_SET9, regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET9, regval); if (status) { CPRINTS("ppc p%d: Failed to set FUNC_SET9!", port); return status; @@ -274,8 +279,8 @@ static int sn5s330_init(int port) /* Set analog current limit delay to 200 us for both PP1 & PP2. */ regval = (PPX_ILIM_DEGLITCH_0_US_200 << 3) | PPX_ILIM_DEGLITCH_0_US_200; - status = i2c_write8(i2c_port, i2c_addr, SN5S330_FUNC_SET11, - regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET11, regval); if (status) { CPRINTS("ppc p%d: Failed to set FUNC_SET11", port); return status; @@ -288,14 +293,16 @@ static int sn5s330_init(int port) * reset default (20 us). */ regval = 0; - status = i2c_read8(i2c_port, i2c_addr, SN5S330_FUNC_SET8, ®val); + status = i2c_read8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET8, ®val); if (status) { CPRINTS("ppc p%d: Failed to read FUNC_SET8!", port); return status; } regval &= ~SN5S330_VCONN_DEGLITCH_MASK; regval |= SN5S330_VCONN_DEGLITCH_640_US; - status = i2c_write8(i2c_port, i2c_addr, SN5S330_FUNC_SET8, regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_FUNC_SET8, regval); if (status) { CPRINTS("ppc p%d: Failed to set FUNC_SET8!", port); return status; @@ -347,8 +354,8 @@ static int sn5s330_init(int port) * is checked below. */ regval = SN5S330_DIG_RES | SN5S330_VSAFE0V_MASK; - status = i2c_write8(i2c_port, i2c_addr, SN5S330_INT_STATUS_REG4, - regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_STATUS_REG4, regval); if (status) { CPRINTS("ppc p%d: Failed to write INT_STATUS_REG4!", port); return status; @@ -365,30 +372,30 @@ static int sn5s330_init(int port) */ regval = ~SN5S330_ILIM_PP1_MASK; - status = i2c_write8(i2c_port, i2c_addr, SN5S330_INT_MASK_RISE_REG1, - regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_MASK_RISE_REG1, regval); if (status) { CPRINTS("ppc p%d: Failed to write INT_MASK_RISE1!", port); return status; } - status = i2c_write8(i2c_port, i2c_addr, SN5S330_INT_MASK_FALL_REG1, - regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_MASK_FALL_REG1, regval); if (status) { CPRINTS("ppc p%d: Failed to write INT_MASK_FALL1!", port); return status; } /* Now mask all the other interrupts. */ - status = i2c_write8(i2c_port, i2c_addr, SN5S330_INT_MASK_RISE_REG2, - 0xFF); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_MASK_RISE_REG2, 0xFF); if (status) { CPRINTS("ppc p%d: Failed to write INT_MASK_RISE2!", port); return status; } - status = i2c_write8(i2c_port, i2c_addr, SN5S330_INT_MASK_FALL_REG2, - 0xFF); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_MASK_FALL_REG2, 0xFF); if (status) { CPRINTS("ppc p%d: Failed to write INT_MASK_FALL2!", port); return status; @@ -401,15 +408,15 @@ static int sn5s330_init(int port) regval = 0xFF; #endif /* CONFIG_USB_PD_VBUS_DETECT_PPC && CONFIG_USB_CHARGER */ - status = i2c_write8(i2c_port, i2c_addr, SN5S330_INT_MASK_RISE_REG3, - regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_MASK_RISE_REG3, regval); if (status) { CPRINTS("ppc p%d: Failed to write INT_MASK_RISE3!", port); return status; } - status = i2c_write8(i2c_port, i2c_addr, SN5S330_INT_MASK_FALL_REG3, - regval); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_MASK_FALL_REG3, regval); if (status) { CPRINTS("ppc p%d: Failed to write INT_MASK_FALL3!", port); return status; @@ -419,7 +426,8 @@ static int sn5s330_init(int port) for (reg = SN5S330_INT_TRIP_RISE_REG1; reg <= SN5S330_INT_TRIP_FALL_REG3; reg++) { - status = i2c_write8(i2c_port, i2c_addr, reg, 0xFF); + status = i2c_write8__7bf(i2c_port, i2c_addr__7bf, + reg, 0xFF); if (status) { CPRINTS("ppc p%d: Failed to write reg 0x%2x!", port); return status; @@ -431,8 +439,8 @@ static int sn5s330_init(int port) * For PP2, check to see if we booted in dead battery mode. If we * booted in dead battery mode, the PP2 FET will already be enabled. */ - status = i2c_read8(i2c_port, i2c_addr, SN5S330_INT_STATUS_REG4, - ®val); + status = i2c_read8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_STATUS_REG4, ®val); if (status) { CPRINTS("ppc p%d: Failed to read INT_STATUS_REG4!", port); return status; @@ -443,8 +451,8 @@ static int sn5s330_init(int port) * Clear the bit by writing 1 and keep vSafe0V_MASK * unchanged. */ - i2c_write8(i2c_port, i2c_addr, SN5S330_INT_STATUS_REG4, - regval); + i2c_write8__7bf(i2c_port, i2c_addr__7bf, + SN5S330_INT_STATUS_REG4, regval); /* Turn on PP2 FET. */ status = sn5s330_pp_fet_enable(port, SN5S330_PP2, 1); diff --git a/driver/ppc/sn5s330.h b/driver/ppc/sn5s330.h index 6c79aa46ed..95f8fb4ac7 100644 --- a/driver/ppc/sn5s330.h +++ b/driver/ppc/sn5s330.h @@ -12,7 +12,7 @@ struct sn5s330_config { uint8_t i2c_port; - uint8_t i2c_addr; + uint8_t i2c_addr__7bf; }; extern const struct sn5s330_config sn5s330_chips[]; @@ -25,10 +25,10 @@ enum sn5s330_pp_idx { SN5S330_PP_COUNT, }; -#define SN5S330_ADDR0 0x80 -#define SN5S330_ADDR1 0x82 -#define SN5S330_ADDR2 0x84 -#define SN5S330_ADDR3 0x86 +#define SN5S330_ADDR0__7bf (0x40) +#define SN5S330_ADDR1__7bf (0x41) +#define SN5S330_ADDR2__7bf (0x42) +#define SN5S330_ADDR3__7bf (0x43) #define SN5S330_FUNC_SET1 0x50 #define SN5S330_FUNC_SET2 0x51 diff --git a/driver/ppc/syv682x.c b/driver/ppc/syv682x.c index 24a8b9a3ee..a8f5c146bb 100644 --- a/driver/ppc/syv682x.c +++ b/driver/ppc/syv682x.c @@ -23,16 +23,16 @@ static uint8_t flags[CONFIG_USB_PD_PORT_COUNT]; static int read_reg(uint8_t port, int reg, int *regval) { - return i2c_read8(ppc_chips[port].i2c_port, - ppc_chips[port].i2c_addr, + return i2c_read8__7bf(ppc_chips[port].i2c_port, + ppc_chips[port].i2c_addr__7bf, reg, regval); } static int write_reg(uint8_t port, int reg, int regval) { - return i2c_write8(ppc_chips[port].i2c_port, - ppc_chips[port].i2c_addr, + return i2c_write8__7bf(ppc_chips[port].i2c_port, + ppc_chips[port].i2c_addr__7bf, reg, regval); } @@ -258,11 +258,11 @@ static int syv682x_dump(int port) int data; int rv; const int i2c_port = ppc_chips[port].i2c_port; - const int i2c_addr = ppc_chips[port].i2c_addr; + const int i2c_addr__7bf = ppc_chips[port].i2c_addr__7bf; for (reg_addr = SYV682X_STATUS_REG; reg_addr <= SYV682X_CONTROL_4_REG; reg_addr++) { - rv = i2c_read8(i2c_port, i2c_addr, reg_addr, &data); + rv = i2c_read8__7bf(i2c_port, i2c_addr__7bf, reg_addr, &data); if (rv) ccprintf("ppc_syv682[p%d]: Failed to read reg 0x%02x\n", port, reg_addr); diff --git a/driver/ppc/syv682x.h b/driver/ppc/syv682x.h index 98bb67d522..f355fe1cf9 100644 --- a/driver/ppc/syv682x.h +++ b/driver/ppc/syv682x.h @@ -8,11 +8,11 @@ #ifndef __CROS_EC_SYV682X_H #define __CROS_EC_SYV682X_H -/* 8 bit I2C addresses */ -#define SYV682X_ADDR0 0x80 -#define SYV682X_ADDR1 0x82 -#define SYV682X_ADDR2 0x84 -#define SYV682x_ADDR3 0x86 +/* I2C addresses */ +#define SYV682X_ADDR0__7bf 0x40 +#define SYV682X_ADDR1__7bf 0x41 +#define SYV682X_ADDR2__7bf 0x42 +#define SYV682x_ADDR3__7bf 0x43 /* SYV682x register addresses */ #define SYV682X_STATUS_REG 0x00 diff --git a/driver/regulator_ir357x.c b/driver/regulator_ir357x.c index d2aaeccd99..0e88eeaf37 100644 --- a/driver/regulator_ir357x.c +++ b/driver/regulator_ir357x.c @@ -16,8 +16,8 @@ #define CPUTS(outstr) cputs(CC_CHIPSET, outstr) #define CPRINTF(format, args...) cprintf(CC_CHIPSET, format, ## args) -/* 8-bit I2C address */ -#define IR357x_I2C_ADDR (0x8 << 1) +/* I2C address */ +#define IR357x_I2C_ADDR__7bf (0x8) struct ir_setting { uint8_t reg; diff --git a/driver/sensorhub_lsm6dsm.c b/driver/sensorhub_lsm6dsm.c index f663f5a5ae..711294fb98 100644 --- a/driver/sensorhub_lsm6dsm.c +++ b/driver/sensorhub_lsm6dsm.c @@ -21,12 +21,12 @@ static int set_reg_bit_field(const struct motion_sensor_t *s, int tmp; int ret; - ret = st_raw_read8(s->port, s->addr, reg, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, reg, &tmp); if (ret != EC_SUCCESS) return ret; tmp |= bit_field; - return st_raw_write8(s->port, s->addr, reg, tmp); + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, reg, tmp); } static int clear_reg_bit_field(const struct motion_sensor_t *s, @@ -35,12 +35,12 @@ static int clear_reg_bit_field(const struct motion_sensor_t *s, int tmp; int ret; - ret = st_raw_read8(s->port, s->addr, reg, &tmp); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, reg, &tmp); if (ret != EC_SUCCESS) return ret; tmp &= ~(bit_field); - return st_raw_write8(s->port, s->addr, reg, tmp); + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, reg, tmp); } static inline int enable_sensorhub_func(const struct motion_sensor_t *s) @@ -89,7 +89,8 @@ static inline int disable_aux_i2c_master(const struct motion_sensor_t *s) static inline int restore_master_cfg(const struct motion_sensor_t *s, int cache) { - return st_raw_write8(s->port, s->addr, LSM6DSM_MASTER_CFG_ADDR, cache); + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_MASTER_CFG_ADDR, cache); } static int enable_i2c_pass_through(const struct motion_sensor_t *s, @@ -97,7 +98,8 @@ static int enable_i2c_pass_through(const struct motion_sensor_t *s, { int ret; - ret = st_raw_read8(s->port, s->addr, LSM6DSM_MASTER_CFG_ADDR, cache); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_MASTER_CFG_ADDR, cache); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x MCR error ret: %d\n", __func__, s->name, s->type, ret); @@ -109,8 +111,9 @@ static int enable_i2c_pass_through(const struct motion_sensor_t *s, * Wait is for any pending bus activity(probably read) to settle down * so that there is no bus contention. */ - ret = st_raw_write8(s->port, s->addr, LSM6DSM_MASTER_CFG_ADDR, - *cache | LSM6DSM_EXT_TRIGGER_EN); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_MASTER_CFG_ADDR, + *cache | LSM6DSM_EXT_TRIGGER_EN); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x MCETEN error ret: %d\n", __func__, s->name, s->type, ret); @@ -118,8 +121,10 @@ static int enable_i2c_pass_through(const struct motion_sensor_t *s, } msleep(10); - ret = st_raw_write8(s->port, s->addr, LSM6DSM_MASTER_CFG_ADDR, - *cache & ~(LSM6DSM_EXT_TRIGGER_EN | LSM6DSM_I2C_MASTER_ON)); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_MASTER_CFG_ADDR, + *cache & ~(LSM6DSM_EXT_TRIGGER_EN + | LSM6DSM_I2C_MASTER_ON)); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x MCC error ret: %d\n", __func__, s->name, s->type, ret); @@ -127,7 +132,7 @@ static int enable_i2c_pass_through(const struct motion_sensor_t *s, return ret; } - return st_raw_write8(s->port, s->addr, + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, LSM6DSM_MASTER_CFG_ADDR, LSM6DSM_I2C_PASS_THRU_MODE); } @@ -136,37 +141,43 @@ static inline int power_down_accel(const struct motion_sensor_t *s, { int ret; - ret = st_raw_read8(s->port, s->addr, LSM6DSM_CTRL1_ADDR, cache); + ret = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_CTRL1_ADDR, cache); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x CTRL1R error ret: %d\n", __func__, s->name, s->type, ret); return ret; } - return st_raw_write8(s->port, s->addr, LSM6DSM_CTRL1_ADDR, - *cache & ~LSM6DSM_XL_ODR_MASK); + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_CTRL1_ADDR, + *cache & ~LSM6DSM_XL_ODR_MASK); } static inline int restore_ctrl1(const struct motion_sensor_t *s, int cache) { - return st_raw_write8(s->port, s->addr, - LSM6DSM_CTRL1_ADDR, cache); + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_CTRL1_ADDR, cache); } -static int config_slv0_read(const struct motion_sensor_t *s, uint8_t addr, - uint8_t reg, uint8_t len) +static int config_slv0_read__7bf(const struct motion_sensor_t *s, + const uint16_t slv_addr__7bf, + uint16_t reg, uint8_t len) { int ret; + uint16_t addr__8b = I2C_GET_ADDR__7b(slv_addr__7bf) << 1; - ret = st_raw_write8(s->port, s->addr, LSM6DSM_SLV0_ADD_ADDR, - (addr | LSM6DSM_SLV0_RD_BIT)); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_SLV0_ADD_ADDR, + (addr__8b | LSM6DSM_SLV0_RD_BIT)); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x SA error ret: %d\n", __func__, s->name, s->type, ret); return ret; } - ret = st_raw_write8(s->port, s->addr, LSM6DSM_SLV0_SUBADD_ADDR, reg); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_SLV0_SUBADD_ADDR, reg); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x RA error ret: %d\n", __func__, s->name, s->type, ret); @@ -177,8 +188,9 @@ static int config_slv0_read(const struct motion_sensor_t *s, uint8_t addr, * No decimation for external sensor 0, * Number of sensors connected to external sensor hub 1 */ - ret = st_raw_write8(s->port, s->addr, LSM6DSM_SLV0_CONFIG_ADDR, - (len & LSM6DSM_SLV0_NUM_OPS_MASK)); + ret = st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_SLV0_CONFIG_ADDR, + (len & LSM6DSM_SLV0_NUM_OPS_MASK)); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x CFG error ret: %d\n", __func__, s->name, s->type, ret); @@ -188,8 +200,9 @@ static int config_slv0_read(const struct motion_sensor_t *s, uint8_t addr, return EC_SUCCESS; } -int sensorhub_config_ext_reg(const struct motion_sensor_t *s, - uint8_t slv_addr, uint8_t reg, uint8_t val) +int sensorhub_config_ext_reg__7bf(const struct motion_sensor_t *s, + const uint16_t slv_addr__7bf, + uint8_t reg, uint8_t val) { int ret; int tmp; @@ -201,13 +214,13 @@ int sensorhub_config_ext_reg(const struct motion_sensor_t *s, return ret; } - ret = st_raw_write8(s->port, slv_addr, reg, val); + ret = st_raw_write8__7bf(s->port, slv_addr__7bf, reg, val); restore_master_cfg(s, tmp); return ret; } -int sensorhub_config_slv0_read(const struct motion_sensor_t *s, - uint8_t slv_addr, uint8_t reg, int len) +int sensorhub_config_slv0_read__7bf(const struct motion_sensor_t *s, + uint16_t slv_addr__7bf, uint8_t reg, int len) { int tmp_xl_cfg; int ret; @@ -232,7 +245,7 @@ int sensorhub_config_slv0_read(const struct motion_sensor_t *s, goto out_restore_ctrl1; } - ret = config_slv0_read(s, slv_addr, reg, len); + ret = config_slv0_read__7bf(s, slv_addr__7bf, reg, len); disable_ereg_bank_acc(s); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x CS0R error ret: %d\n", @@ -267,8 +280,9 @@ int sensorhub_slv0_data_read(const struct motion_sensor_t *s, uint8_t *raw) * register as soon as the accel is in power-up mode. So return the * contents of that register. */ - ret = st_raw_read_n_noinc(s->port, s->addr, LSM6DSM_SENSORHUB1_REG, - raw, OUT_XYZ_SIZE); + ret = st_raw_read_n_noinc__7bf(s->port, s->i2c_spi_addr__7bf, + LSM6DSM_SENSORHUB1_REG, + raw, OUT_XYZ_SIZE); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x SH1R error ret: %d\n", __func__, s->name, s->type, ret); @@ -277,9 +291,10 @@ int sensorhub_slv0_data_read(const struct motion_sensor_t *s, uint8_t *raw) return EC_SUCCESS; } -int sensorhub_check_and_rst(const struct motion_sensor_t *s, uint8_t slv_addr, - uint8_t whoami_reg, uint8_t whoami_val, - uint8_t rst_reg, uint8_t rst_val) +int sensorhub_check_and_rst__7bf(const struct motion_sensor_t *s, + const uint16_t slv_addr__7bf, + uint8_t whoami_reg, uint8_t whoami_val, + uint8_t rst_reg, uint8_t rst_val) { int ret, tmp; int tmp_master_cfg; @@ -291,7 +306,7 @@ int sensorhub_check_and_rst(const struct motion_sensor_t *s, uint8_t slv_addr, return ret; } - ret = st_raw_read8(s->port, slv_addr, whoami_reg, &tmp); + ret = st_raw_read8__7bf(s->port, slv_addr__7bf, whoami_reg, &tmp); if (ret != EC_SUCCESS) { CPRINTF("%s: %s type:0x%x WAIR error ret: %d\n", __func__, s->name, s->type, ret); @@ -305,7 +320,7 @@ int sensorhub_check_and_rst(const struct motion_sensor_t *s, uint8_t slv_addr, goto err_restore_master_cfg; } - ret = st_raw_write8(s->port, slv_addr, rst_reg, rst_val); + ret = st_raw_write8__7bf(s->port, slv_addr__7bf, rst_reg, rst_val); err_restore_master_cfg: restore_master_cfg(s, tmp_master_cfg); return ret; diff --git a/driver/sensorhub_lsm6dsm.h b/driver/sensorhub_lsm6dsm.h index a86ca6f9c3..0eaef61c32 100644 --- a/driver/sensorhub_lsm6dsm.h +++ b/driver/sensorhub_lsm6dsm.h @@ -24,8 +24,9 @@ * @param val Value to be written into the external sensor register. * @return EC_SUCCESS on success, EC error codes on failure. */ -int sensorhub_config_ext_reg(const struct motion_sensor_t *s, - uint8_t slv_addr, uint8_t reg, uint8_t val); +int sensorhub_config_ext_reg__7bf(const struct motion_sensor_t *s, + const uint16_t slv_addr__7bf, + uint8_t reg, uint8_t val); /** * Configure the sensor hub to read data from a specific register of an @@ -37,8 +38,9 @@ int sensorhub_config_ext_reg(const struct motion_sensor_t *s, * @param len Length of data to be read. * @return EC_SUCCESS on success, EC error codes on failure. */ -int sensorhub_config_slv0_read(const struct motion_sensor_t *s, - uint8_t slv_addr, uint8_t reg, int len); +int sensorhub_config_slv0_read__7bf(const struct motion_sensor_t *s, + const uint16_t slv_addr__7bf, + uint8_t reg, int len); /** * Reads the data from the register bank that is associated with the slave0 @@ -62,7 +64,8 @@ int sensorhub_slv0_data_read(const struct motion_sensor_t *s, uint8_t *raw); * @param rst_val Value to be written to the reset register. * @return EC_SUCCESS on success, EC error codes on failure. */ -int sensorhub_check_and_rst(const struct motion_sensor_t *s, uint8_t slv_addr, - uint8_t whoami_reg, uint8_t whoami_val, - uint8_t rst_reg, uint8_t rst_val); +int sensorhub_check_and_rst__7bf(const struct motion_sensor_t *s, + const uint16_t slv_addr__7bf, + uint8_t whoami_reg, uint8_t whoami_val, + uint8_t rst_reg, uint8_t rst_val); #endif /* __CROS_EC_SENSORHUB_LSM6DSM_H */ diff --git a/driver/stm_mems_common.c b/driver/stm_mems_common.c index 00784fc1fc..9341308fb5 100644 --- a/driver/stm_mems_common.c +++ b/driver/stm_mems_common.c @@ -11,21 +11,25 @@ /** * st_raw_read_n - Read n bytes for read */ -int st_raw_read_n(const int port, const int addr, const uint8_t reg, - uint8_t *data_ptr, const int len) +int st_raw_read_n__7bf(const int port, + const uint16_t i2c_addr__7bf, + const uint8_t reg, uint8_t *data_ptr, const int len) { /* TODO: Implement SPI interface support */ - return i2c_read_block(port, addr, reg | 0x80, data_ptr, len); + return i2c_read_block__7bf(port, i2c_addr__7bf, + reg | 0x80, data_ptr, len); } /** * st_raw_read_n_noinc - Read n bytes for read (no auto inc address) */ -int st_raw_read_n_noinc(const int port, const int addr, const uint8_t reg, - uint8_t *data_ptr, const int len) +int st_raw_read_n_noinc__7bf(const int port, + const uint16_t i2c_addr__7bf, + const uint8_t reg, uint8_t *data_ptr, const int len) { /* TODO: Implement SPI interface support */ - return i2c_read_block(port, addr, reg, data_ptr, len); + return i2c_read_block__7bf(port, i2c_addr__7bf, + reg, data_ptr, len); } /** @@ -41,7 +45,8 @@ int st_write_data_with_mask(const struct motion_sensor_t *s, int reg, int err; int new_data = 0x00, old_data = 0x00; - err = st_raw_read8(s->port, s->addr, reg, &old_data); + err = st_raw_read8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, &old_data); if (err != EC_SUCCESS) return err; @@ -51,7 +56,8 @@ int st_write_data_with_mask(const struct motion_sensor_t *s, int reg, if (new_data == old_data) return EC_SUCCESS; - return st_raw_write8(s->port, s->addr, reg, new_data); + return st_raw_write8__7bf(s->port, s->i2c_spi_addr__7bf, + reg, new_data); } /** diff --git a/driver/stm_mems_common.h b/driver/stm_mems_common.h index e2211480aa..39d718cf1b 100644 --- a/driver/stm_mems_common.h +++ b/driver/stm_mems_common.h @@ -34,34 +34,38 @@ /** * Read single register */ -static inline int st_raw_read8(const int port, const int addr, const int reg, - int *data_ptr) +static inline int st_raw_read8__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const int reg, int *data_ptr) { /* TODO: Implement SPI interface support */ - return i2c_read8(port, addr, reg, data_ptr); + return i2c_read8__7bf(port, i2c_spi_addr__7bf, reg, data_ptr); } /** * Write single register */ -static inline int st_raw_write8(const int port, const int addr, const int reg, - int data) +static inline int st_raw_write8__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const int reg, int data) { /* TODO: Implement SPI interface support */ - return i2c_write8(port, addr, reg, data); + return i2c_write8__7bf(port, i2c_spi_addr__7bf, reg, data); } /** * st_raw_read_n - Read n bytes for read */ -int st_raw_read_n(const int port, const int addr, const uint8_t reg, - uint8_t *data_ptr, const int len); +int st_raw_read_n__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const uint8_t reg, uint8_t *data_ptr, const int len); /** * st_raw_read_n_noinc - Read n bytes for read (no auto inc address) */ -int st_raw_read_n_noinc(const int port, const int addr, const uint8_t reg, - uint8_t *data_ptr, const int len); +int st_raw_read_n_noinc__7bf(const int port, + const uint16_t i2c_spi_addr__7bf, + const uint8_t reg, uint8_t *data_ptr, const int len); /** * st_write_data_with_mask - Write register with mask diff --git a/driver/tcpm/anx7447.c b/driver/tcpm/anx7447.c index 0a3c98c6ac..7883f72717 100644 --- a/driver/tcpm/anx7447.c +++ b/driver/tcpm/anx7447.c @@ -5,6 +5,7 @@ /* ANX7447 port manager */ +#include "common.h" #include "anx7447.h" #include "console.h" #include "hooks.h" @@ -40,7 +41,7 @@ (((anx7447_get_vbus_voltage(port))) > vsafe0v_max) struct anx_state { - int i2c_slave_addr; + uint16_t i2c_slave_addr__7bf; }; struct anx_usb_mux { @@ -63,18 +64,18 @@ static struct anx_usb_mux mux[CONFIG_USB_PD_PORT_COUNT]; * anx7447_reg_write() and anx7447_reg_read() are implemented here to access * ANX7447 SPI slave address. */ -const struct anx7447_i2c_addr anx7447_i2c_addrs[] = { - {AN7447_TCPC0_I2C_ADDR, AN7447_SPI0_I2C_ADDR}, - {AN7447_TCPC1_I2C_ADDR, AN7447_SPI1_I2C_ADDR}, - {AN7447_TCPC2_I2C_ADDR, AN7447_SPI2_I2C_ADDR}, - {AN7447_TCPC3_I2C_ADDR, AN7447_SPI3_I2C_ADDR} +const struct anx7447_i2c_addr anx7447_i2c_addrs__7bf[] = { + {AN7447_TCPC0_I2C_ADDR__7bf, AN7447_SPI0_I2C_ADDR__7bf}, + {AN7447_TCPC1_I2C_ADDR__7bf, AN7447_SPI1_I2C_ADDR__7bf}, + {AN7447_TCPC2_I2C_ADDR__7bf, AN7447_SPI2_I2C_ADDR__7bf}, + {AN7447_TCPC3_I2C_ADDR__7bf, AN7447_SPI3_I2C_ADDR__7bf} }; static inline int anx7447_reg_write(int port, int reg, int val) { - int rv = i2c_write8(tcpc_config[port].i2c_info.port, - anx[port].i2c_slave_addr, - reg, val); + int rv = i2c_write8__7bf(tcpc_config[port].i2c_info.port, + anx[port].i2c_slave_addr__7bf, + reg, val); #ifdef CONFIG_USB_PD_TCPC_LOW_POWER pd_device_accessed(port); #endif @@ -83,9 +84,9 @@ static inline int anx7447_reg_write(int port, int reg, int val) static inline int anx7447_reg_read(int port, int reg, int *val) { - int rv = i2c_read8(tcpc_config[port].i2c_info.port, - anx[port].i2c_slave_addr, - reg, val); + int rv = i2c_read8__7bf(tcpc_config[port].i2c_info.port, + anx[port].i2c_slave_addr__7bf, + reg, val); #ifdef CONFIG_USB_PD_TCPC_LOW_POWER pd_device_accessed(port); #endif @@ -290,17 +291,20 @@ static int anx7447_init(int port) * find corresponding anx7447 SPI slave address according to * specified TCPC slave address */ - for (i = 0; i < ARRAY_SIZE(anx7447_i2c_addrs); i++) { - if (tcpc_config[port].i2c_info.addr == - anx7447_i2c_addrs[i].tcpc_slave_addr) { - anx[port].i2c_slave_addr = - anx7447_i2c_addrs[i].spi_slave_addr; + for (i = 0; i < ARRAY_SIZE(anx7447_i2c_addrs__7bf); i++) { + if (I2C_GET_ADDR__7b( + tcpc_config[port].i2c_info.addr__7bf) == + I2C_GET_ADDR__7b( + anx7447_i2c_addrs__7bf[i].tcpc_slave_addr__7bf)) { + anx[port].i2c_slave_addr__7bf = + anx7447_i2c_addrs__7bf[i].spi_slave_addr__7bf; break; } } - if (!anx[port].i2c_slave_addr) { + if (!I2C_GET_ADDR__7b(anx[port].i2c_slave_addr__7bf)) { ccprintf("TCPC I2C slave addr 0x%x is invalid for ANX7447\n", - tcpc_config[port].i2c_info.addr); + I2C_GET_ADDR__7b(tcpc_config[port] + .i2c_info.addr__7bf)); return EC_ERROR_UNKNOWN; } diff --git a/driver/tcpm/anx7447.h b/driver/tcpm/anx7447.h index 093d74238a..32958f0007 100644 --- a/driver/tcpm/anx7447.h +++ b/driver/tcpm/anx7447.h @@ -91,19 +91,19 @@ /* End of defines used for CONFIG_USB_PD_TCPM_ANX7447_OCM_ERASE_COMMAND */ struct anx7447_i2c_addr { - int tcpc_slave_addr; - int spi_slave_addr; + uint16_t tcpc_slave_addr__7bf; + uint16_t spi_slave_addr__7bf; }; -#define AN7447_TCPC0_I2C_ADDR 0x58 -#define AN7447_TCPC1_I2C_ADDR 0x56 -#define AN7447_TCPC2_I2C_ADDR 0x54 -#define AN7447_TCPC3_I2C_ADDR 0x52 +#define AN7447_TCPC0_I2C_ADDR__7bf (0x2C) +#define AN7447_TCPC1_I2C_ADDR__7bf (0x2B) +#define AN7447_TCPC2_I2C_ADDR__7bf (0x2A) +#define AN7447_TCPC3_I2C_ADDR__7bf (0x29) -#define AN7447_SPI0_I2C_ADDR 0x7E -#define AN7447_SPI1_I2C_ADDR 0x6E -#define AN7447_SPI2_I2C_ADDR 0x64 -#define AN7447_SPI3_I2C_ADDR 0x62 +#define AN7447_SPI0_I2C_ADDR__7bf (0x3F) +#define AN7447_SPI1_I2C_ADDR__7bf (0x37) +#define AN7447_SPI2_I2C_ADDR__7bf (0x32) +#define AN7447_SPI3_I2C_ADDR__7bf (0x31) /* * Time TEST_R must be held high for a reset diff --git a/driver/tcpm/anx74xx.c b/driver/tcpm/anx74xx.c index 274e668960..8973a34213 100644 --- a/driver/tcpm/anx74xx.c +++ b/driver/tcpm/anx74xx.c @@ -1173,7 +1173,7 @@ struct i2c_stress_test_dev anx74xx_i2c_stress_test_dev = { .read_val = ANX74XX_VENDOR_ID & 0xFF, .write_reg = ANX74XX_REG_CC_SOFTWARE_CTRL, }, - .i2c_read = &tcpc_i2c_read, - .i2c_write = &tcpc_i2c_write, + .i2c_read__7bf = &tcpc_i2c_read__7bf, + .i2c_write__7bf = &tcpc_i2c_write__7bf, }; #endif /* CONFIG_CMD_I2C_STRESS_TEST_TCPC */ diff --git a/driver/tcpm/anx74xx.h b/driver/tcpm/anx74xx.h index 18708d38b4..39762129a7 100644 --- a/driver/tcpm/anx74xx.h +++ b/driver/tcpm/anx74xx.h @@ -11,10 +11,10 @@ #define __CROS_EC_USB_PD_TCPM_ANX74XX_H /* I2C interface */ -#define ANX74XX_I2C_ADDR1 0x50 -#define ANX74XX_I2C_ADDR2 0x72 -#define ANX74XX_I2C_ADDR3 0x7C -#define ANX74XX_I2C_ADDR4 0x80 +#define ANX74XX_I2C_ADDR1__7bf 0x28 +#define ANX74XX_I2C_ADDR2__7bf 0x39 +#define ANX74XX_I2C_ADDR3__7bf 0x3E +#define ANX74XX_I2C_ADDR4__7bf 0x40 #define ANX74XX_REG_IRQ_POL_LOW 0x00 #define ANX74XX_REG_IRQ_POL_HIGH 0x02 diff --git a/driver/tcpm/anx7688.c b/driver/tcpm/anx7688.c index bac65892de..4ea0602483 100644 --- a/driver/tcpm/anx7688.c +++ b/driver/tcpm/anx7688.c @@ -21,7 +21,7 @@ #define ANX7688_REG_HPD_IRQ BIT(1) #define ANX7688_REG_HPD_ENABLE BIT(2) -#define ANX7688_USBC_ADDR 0x50 +#define ANX7688_USBC_ADDR__7bf 0x28 #define ANX7688_REG_RAMCTRL 0xe7 #define ANX7688_REG_RAMCTRL_BOOT_DONE BIT(6) @@ -39,7 +39,7 @@ static int anx7688_init(int port) * 100ms to follow cts. */ while (1) { - rv = i2c_read8(I2C_PORT_TCPC, ANX7688_USBC_ADDR, + rv = i2c_read8__7bf(I2C_PORT_TCPC, ANX7688_USBC_ADDR__7bf, ANX7688_REG_RAMCTRL, &mask); if (rv == EC_SUCCESS && (mask & ANX7688_REG_RAMCTRL_BOOT_DONE)) @@ -174,7 +174,7 @@ static int anx7688_tcpm_get_vbus_level(int port) * Therefore, we use a proprietary register to read the unfiltered VBus * value. See crosbug.com/p/55221 . */ - i2c_read8(I2C_PORT_TCPC, 0x50, 0x40, ®); + i2c_read8__7bf(I2C_PORT_TCPC, 0x28, 0x40, ®); return ((reg & 0x10) ? 1 : 0); } #endif diff --git a/driver/tcpm/fusb302.h b/driver/tcpm/fusb302.h index 6236e47439..edf1feb8dd 100644 --- a/driver/tcpm/fusb302.h +++ b/driver/tcpm/fusb302.h @@ -16,13 +16,13 @@ /* I2C slave address varies by part number */ /* FUSB302BUCX / FUSB302BMPX */ -#define FUSB302_I2C_SLAVE_ADDR 0x44 +#define FUSB302_I2C_SLAVE_ADDR__7bf 0x22 /* FUSB302B01MPX */ -#define FUSB302_I2C_SLAVE_ADDR_B01 0x46 +#define FUSB302_I2C_SLAVE_ADDR_B01__7bf 0x23 /* FUSB302B10MPX */ -#define FUSB302_I2C_SLAVE_ADDR_B10 0x48 +#define FUSB302_I2C_SLAVE_ADDR_B10__7bf 0x24 /* FUSB302B11MPX */ -#define FUSB302_I2C_SLAVE_ADDR_B11 0x4A +#define FUSB302_I2C_SLAVE_ADDR_B11__7bf 0x25 /* Default retry count for transmitting */ #define PD_RETRY_COUNT 3 diff --git a/driver/tcpm/mt6370.c b/driver/tcpm/mt6370.c index dc6c86d2c4..473e2a1881 100644 --- a/driver/tcpm/mt6370.c +++ b/driver/tcpm/mt6370.c @@ -22,8 +22,8 @@ /* i2c_write function which won't wake TCPC from low power mode. */ static int mt6370_i2c_write8(int port, int reg, int val) { - return i2c_write8(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + return i2c_write8__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, reg, val); } static int mt6370_init(int port) diff --git a/driver/tcpm/mt6370.h b/driver/tcpm/mt6370.h index 1d30d27f8f..166009d9a4 100644 --- a/driver/tcpm/mt6370.h +++ b/driver/tcpm/mt6370.h @@ -48,7 +48,7 @@ #define MT6370_REG_UNLOCK_PW2 0xF0 #define MT6370_REG_UNLOCK_PW1 0xF1 -#define MT6370_TCPC_I2C_ADDR 0x9C +#define MT6370_TCPC_I2C_ADDR__7bf 0x4E /* * MT6370_REG_PHY_CTRL1 0x80 diff --git a/driver/tcpm/nct38xx.h b/driver/tcpm/nct38xx.h index 367a30d17a..1357d47bab 100644 --- a/driver/tcpm/nct38xx.h +++ b/driver/tcpm/nct38xx.h @@ -10,15 +10,15 @@ #define __CROS_EC_USB_PD_TCPM_NCT38XX_H /* I2C interface */ -#define NCT38xx_I2C_ADDR1_1 0xE0 -#define NCT38xx_I2C_ADDR1_2 0xE2 -#define NCT38xx_I2C_ADDR1_3 0xE4 -#define NCT38xx_I2C_ADDR1_4 0xE6 - -#define NCT38xx_I2C_ADDR2_1 0xE8 -#define NCT38xx_I2C_ADDR2_2 0xEA -#define NCT38xx_I2C_ADDR2_3 0xEC -#define NCT38xx_I2C_ADDR2_4 0xEE +#define NCT38xx_I2C_ADDR1_1__7bf 0x70 +#define NCT38xx_I2C_ADDR1_2__7bf 0x71 +#define NCT38xx_I2C_ADDR1_3__7bf 0x72 +#define NCT38xx_I2C_ADDR1_4__7bf 0x73 + +#define NCT38xx_I2C_ADDR2_1__7bf 0x74 +#define NCT38xx_I2C_ADDR2_2__7bf 0x75 +#define NCT38xx_I2C_ADDR2_3__7bf 0x76 +#define NCT38xx_I2C_ADDR2_4__7bf 0x77 #define NCT38XX_REG_VENDOR_ID_L 0x00 #define NCT38XX_REG_VENDOR_ID_H 0x01 diff --git a/driver/tcpm/ps8xxx.c b/driver/tcpm/ps8xxx.c index 1ffb18a2c3..6e49e8429d 100644 --- a/driver/tcpm/ps8xxx.c +++ b/driver/tcpm/ps8xxx.c @@ -202,8 +202,8 @@ struct i2c_stress_test_dev ps8xxx_i2c_stress_test_dev = { .read_val = PS8XXX_VENDOR_ID & 0xFF, .write_reg = MUX_IN_HPD_ASSERTION_REG, }, - .i2c_read = &tcpc_i2c_read, - .i2c_write = &tcpc_i2c_write, + .i2c_read__7bf = &tcpc_i2c_read__7bf, + .i2c_write__7bf = &tcpc_i2c_write__7bf, }; #endif /* CONFIG_CMD_I2C_STRESS_TEST_TCPC */ diff --git a/driver/tcpm/ps8xxx.h b/driver/tcpm/ps8xxx.h index f69bb3e11a..143ab67649 100644 --- a/driver/tcpm/ps8xxx.h +++ b/driver/tcpm/ps8xxx.h @@ -9,10 +9,10 @@ #define __CROS_EC_USB_PD_TCPM_PS8XXX_H /* I2C interface */ -#define PS8751_I2C_ADDR1 0x16 -#define PS8751_I2C_ADDR2 0x36 -#define PS8751_I2C_ADDR3 0x56 -#define PS8751_I2C_ADDR4 0x96 +#define PS8751_I2C_ADDR1__7bf (0x0B) +#define PS8751_I2C_ADDR2__7bf (0x1B) +#define PS8751_I2C_ADDR3__7bf (0x2B) +#define PS8751_I2C_ADDR4__7bf (0x4B) /* Minimum Delay for reset assertion */ #define PS8XXX_RESET_DELAY_MS 1 diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index 2e6f2a6fca..6765ce7bdc 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -40,8 +40,9 @@ int tcpc_write(int port, int reg, int val) pd_wait_exit_low_power(port); - rv = i2c_write8(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + rv = i2c_write8__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, val); pd_device_accessed(port); return rv; @@ -53,8 +54,9 @@ int tcpc_write16(int port, int reg, int val) pd_wait_exit_low_power(port); - rv = i2c_write16(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + rv = i2c_write16__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, val); pd_device_accessed(port); return rv; @@ -66,8 +68,9 @@ int tcpc_read(int port, int reg, int *val) pd_wait_exit_low_power(port); - rv = i2c_read8(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + rv = i2c_read8__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, val); pd_device_accessed(port); return rv; @@ -79,8 +82,9 @@ int tcpc_read16(int port, int reg, int *val) pd_wait_exit_low_power(port); - rv = i2c_read16(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + rv = i2c_read16__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, val); pd_device_accessed(port); return rv; @@ -92,8 +96,9 @@ int tcpc_read_block(int port, int reg, uint8_t *in, int size) pd_wait_exit_low_power(port); - rv = i2c_read_block(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, in, size); + rv = i2c_read_block__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, in, size); pd_device_accessed(port); return rv; @@ -105,8 +110,9 @@ int tcpc_write_block(int port, int reg, const uint8_t *out, int size) pd_wait_exit_low_power(port); - rv = i2c_write_block(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, out, size); + rv = i2c_write_block__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, out, size); pd_device_accessed(port); return rv; @@ -131,9 +137,9 @@ int tcpc_xfer_unlocked(int port, const uint8_t *out, int out_size, pd_wait_exit_low_power(port); - rv = i2c_xfer_unlocked(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, out, - out_size, in, in_size, flags); + rv = i2c_xfer_unlocked__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + out, out_size, in, in_size, flags); pd_device_accessed(port); return rv; diff --git a/driver/tcpm/tcpm.h b/driver/tcpm/tcpm.h index e5fec627c5..fb67eb315b 100644 --- a/driver/tcpm/tcpm.h +++ b/driver/tcpm/tcpm.h @@ -27,55 +27,61 @@ #ifndef CONFIG_USB_PD_TCPC_LOW_POWER static inline int tcpc_write(int port, int reg, int val) { - return i2c_write8(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + return i2c_write8__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, val); } static inline int tcpc_write16(int port, int reg, int val) { - return i2c_write16(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + return i2c_write16__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, val); } static inline int tcpc_read(int port, int reg, int *val) { - return i2c_read8(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + return i2c_read8__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, val); } static inline int tcpc_read16(int port, int reg, int *val) { - return i2c_read16(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, val); + return i2c_read16__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, val); } static inline int tcpc_xfer(int port, const uint8_t *out, int out_size, uint8_t *in, int in_size) { - return i2c_xfer(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, out, out_size, in, - in_size); + return i2c_xfer__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + out, out_size, in, in_size); } static inline int tcpc_xfer_unlocked(int port, const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags) { - return i2c_xfer_unlocked(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, out, out_size, in, - in_size, flags); + return i2c_xfer_unlocked__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + out, out_size, in, in_size, flags); } static inline int tcpc_read_block(int port, int reg, uint8_t *in, int size) { - return i2c_read_block(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, in, size); + return i2c_read_block__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, in, size); } static inline int tcpc_write_block(int port, int reg, const uint8_t *out, int size) { - return i2c_write_block(tcpc_config[port].i2c_info.port, - tcpc_config[port].i2c_info.addr, reg, out, size); + return i2c_write_block__7bf(tcpc_config[port].i2c_info.port, + tcpc_config[port].i2c_info.addr__7bf, + reg, out, size); } #else /* !CONFIG_USB_PD_TCPC_LOW_POWER */ @@ -219,13 +225,13 @@ static inline int tcpm_enter_low_power_mode(int port) #endif #ifdef CONFIG_CMD_I2C_STRESS_TEST_TCPC -static inline int tcpc_i2c_read(const int port, const int addr, +static inline int tcpc_i2c_read__7bf(const int port, const uint16_t addr__7bf, const int reg, int *data) { return tcpc_read(port, reg, data); } -static inline int tcpc_i2c_write(const int port, const int addr, +static inline int tcpc_i2c_write__7bf(const int port, const uint16_t addr__7bf, const int reg, int data) { return tcpc_write(port, reg, data); diff --git a/driver/tcpm/tusb422.h b/driver/tcpm/tusb422.h index 2a01eb4725..524886801c 100644 --- a/driver/tcpm/tusb422.h +++ b/driver/tcpm/tusb422.h @@ -9,7 +9,7 @@ #define __CROS_EC_USB_PD_TCPM_TUSB422_H /* I2C interface */ -#define TUSB422_I2C_ADDR 0x40 +#define TUSB422_I2C_ADDR__7bf 0x20 extern const struct tcpm_drv tusb422_tcpm_drv; diff --git a/driver/temp_sensor/adt7481.c b/driver/temp_sensor/adt7481.c index 22d7cc5f9a..c724e958e1 100644 --- a/driver/temp_sensor/adt7481.c +++ b/driver/temp_sensor/adt7481.c @@ -34,12 +34,14 @@ static int has_power(void) static int raw_read8(const int offset, int *data_ptr) { - return i2c_read8(I2C_PORT_THERMAL, ADT7481_I2C_ADDR, offset, data_ptr); + return i2c_read8__7bf(I2C_PORT_THERMAL, ADT7481_I2C_ADDR__7bf, + offset, data_ptr); } static int raw_write8(const int offset, int data) { - return i2c_write8(I2C_PORT_THERMAL, ADT7481_I2C_ADDR, offset, data); + return i2c_write8__7bf(I2C_PORT_THERMAL, ADT7481_I2C_ADDR__7bf, + offset, data); } static int get_temp(const int offset, int *temp_ptr) diff --git a/driver/temp_sensor/adt7481.h b/driver/temp_sensor/adt7481.h index 45da88560e..17f3c20056 100644 --- a/driver/temp_sensor/adt7481.h +++ b/driver/temp_sensor/adt7481.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_ADT7481_H #define __CROS_EC_ADT7481_H -#define ADT7481_I2C_ADDR 0x96 /* 7-bit address is 0x4B */ +#define ADT7481_I2C_ADDR__7bf 0x4B #define ADT7481_IDX_LOCAL 0 #define ADT7481_IDX_REMOTE1 1 diff --git a/driver/temp_sensor/bd99992gw.c b/driver/temp_sensor/bd99992gw.c index 291ce32479..9ccbde6d8e 100644 --- a/driver/temp_sensor/bd99992gw.c +++ b/driver/temp_sensor/bd99992gw.c @@ -39,7 +39,8 @@ static enum bd99992gw_adc_channel static int raw_read8(const int offset, int *data_ptr) { int ret; - ret = i2c_read8(I2C_PORT_THERMAL, BD99992GW_I2C_ADDR, offset, data_ptr); + ret = i2c_read8__7bf(I2C_PORT_THERMAL, BD99992GW_I2C_ADDR__7bf, + offset, data_ptr); if (ret != EC_SUCCESS) CPRINTS("bd99992gw read fail %d", ret); return ret; @@ -48,7 +49,8 @@ static int raw_read8(const int offset, int *data_ptr) static int raw_write8(const int offset, int data) { int ret; - ret = i2c_write8(I2C_PORT_THERMAL, BD99992GW_I2C_ADDR, offset, data); + ret = i2c_write8__7bf(I2C_PORT_THERMAL, BD99992GW_I2C_ADDR__7bf, + offset, data); if (ret != EC_SUCCESS) CPRINTS("bd99992gw write fail %d", ret); return ret; diff --git a/driver/temp_sensor/bd99992gw.h b/driver/temp_sensor/bd99992gw.h index 7db3990e07..1d5aff7287 100644 --- a/driver/temp_sensor/bd99992gw.h +++ b/driver/temp_sensor/bd99992gw.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_TEMP_SENSOR_BD99992GW_H #define __CROS_EC_TEMP_SENSOR_BD99992GW_H -#define BD99992GW_I2C_ADDR 0x60 +#define BD99992GW_I2C_ADDR__7bf 0x30 /* ADC channels */ enum bd99992gw_adc_channel { diff --git a/driver/temp_sensor/f75303.c b/driver/temp_sensor/f75303.c index e2a324f0fb..794d2e865a 100644 --- a/driver/temp_sensor/f75303.c +++ b/driver/temp_sensor/f75303.c @@ -20,7 +20,8 @@ static int8_t fake_temp[F75303_IDX_COUNT] = {-1, -1, -1}; */ static int raw_read8(const int offset, int *data) { - return i2c_read8(I2C_PORT_THERMAL, F75303_I2C_ADDR, offset, data); + return i2c_read8__7bf(I2C_PORT_THERMAL, F75303_I2C_ADDR__7bf, + offset, data); } static int get_temp(const int offset, int *temp) diff --git a/driver/temp_sensor/f75303.h b/driver/temp_sensor/f75303.h index ada32e75e7..ea2dcdbd79 100644 --- a/driver/temp_sensor/f75303.h +++ b/driver/temp_sensor/f75303.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_F75303_H #define __CROS_EC_F75303_H -#define F75303_I2C_ADDR 0x9A /* 7-bit address is 0x4C */ +#define F75303_I2C_ADDR__7bf 0x4C enum f75303_index { F75303_IDX_LOCAL = 0, diff --git a/driver/temp_sensor/g78x.c b/driver/temp_sensor/g78x.c index 948569da1c..0a71556b27 100644 --- a/driver/temp_sensor/g78x.c +++ b/driver/temp_sensor/g78x.c @@ -35,13 +35,15 @@ static int has_power(void) static int raw_read8(const int offset, int *data_ptr) { - return i2c_read8(I2C_PORT_THERMAL, G78X_I2C_ADDR, offset, data_ptr); + return i2c_read8__7bf(I2C_PORT_THERMAL, G78X_I2C_ADDR__7bf, + offset, data_ptr); } #ifdef CONFIG_CMD_TEMP_SENSOR static int raw_write8(const int offset, int data) { - return i2c_write8(I2C_PORT_THERMAL, G78X_I2C_ADDR, offset, data); + return i2c_write8__7bf(I2C_PORT_THERMAL, G78X_I2C_ADDR__7bf, + offset, data); } #endif diff --git a/driver/temp_sensor/g78x.h b/driver/temp_sensor/g78x.h index 2ef75f1da9..6d656610d9 100644 --- a/driver/temp_sensor/g78x.h +++ b/driver/temp_sensor/g78x.h @@ -12,7 +12,7 @@ #error Cannot support both G781 and G782 together! #endif -#define G78X_I2C_ADDR 0x98 /* 7-bit address is 0x4C */ +#define G78X_I2C_ADDR__7bf 0x4C #define G78X_IDX_INTERNAL 0 #define G78X_IDX_EXTERNAL1 1 diff --git a/driver/temp_sensor/sb_tsi.c b/driver/temp_sensor/sb_tsi.c index 9cf42d983f..3de816e1dc 100644 --- a/driver/temp_sensor/sb_tsi.c +++ b/driver/temp_sensor/sb_tsi.c @@ -19,7 +19,8 @@ static int raw_read8(const int offset, int *data_ptr) { - return i2c_read8(I2C_PORT_THERMAL, SB_TSI_I2C_ADDR, offset, data_ptr); + return i2c_read8__7bf(I2C_PORT_THERMAL, SB_TSI_I2C_ADDR__7bf, + offset, data_ptr); } int sb_tsi_get_val(int idx, int *temp_ptr) diff --git a/driver/temp_sensor/sb_tsi.h b/driver/temp_sensor/sb_tsi.h index 3ae11c5dbd..afed1d206f 100644 --- a/driver/temp_sensor/sb_tsi.h +++ b/driver/temp_sensor/sb_tsi.h @@ -11,7 +11,7 @@ #ifndef __CROS_EC_SB_TSI_H #define __CROS_EC_SB_TSI_H -#define SB_TSI_I2C_ADDR 0x98 /* 7-bit address is 0x4C */ +#define SB_TSI_I2C_ADDR__7bf 0x4C /* G781 register */ #define SB_TSI_TEMP_H 0x01 diff --git a/driver/temp_sensor/tmp006.c b/driver/temp_sensor/tmp006.c index b33ab67a6c..b615dbd4cc 100644 --- a/driver/temp_sensor/tmp006.c +++ b/driver/temp_sensor/tmp006.c @@ -86,7 +86,7 @@ static void tmp006_poll_sensor(int sensor_id) { struct tmp006_data_t *tdata = tmp006_data + sensor_id; int t, v, rv; - int addr = tmp006_sensors[sensor_id].addr; + int addr__7bf = tmp006_sensors__7bf[sensor_id].addr__7bf; /* Invalidate the filter history if there is any error */ if (tdata->fail) { @@ -104,7 +104,8 @@ static void tmp006_poll_sensor(int sensor_id) * data ready; otherwise, we read garbage data. */ if (tdata->fail & (FAIL_POWER | FAIL_INIT)) { - rv = i2c_read16(TMP006_PORT(addr), TMP006_REG(addr), + rv = i2c_read16__7bf(TMP006_PORT(addr__7bf), + TMP006_REG__7bf(addr__7bf), TMP006_REG_CONFIG, &v); if (rv) { tdata->fail |= FAIL_I2C; @@ -116,14 +117,16 @@ static void tmp006_poll_sensor(int sensor_id) } } - rv = i2c_read16(TMP006_PORT(addr), TMP006_REG(addr), + rv = i2c_read16__7bf(TMP006_PORT(addr__7bf), + TMP006_REG__7bf(addr__7bf), TMP006_REG_TDIE, &t); if (rv) { tdata->fail |= FAIL_I2C; return; } - rv = i2c_read16(TMP006_PORT(addr), TMP006_REG(addr), + rv = i2c_read16__7bf(TMP006_PORT(addr__7bf), + TMP006_REG__7bf(addr__7bf), TMP006_REG_VOBJ, &v); if (rv) { tdata->fail |= FAIL_I2C; @@ -370,37 +373,42 @@ static int tmp006_print(int idx) int traw, t; int rv; int d; - int addr = tmp006_sensors[idx].addr; + int addr__7bf = tmp006_sensors__7bf[idx].addr__7bf; - ccprintf("Debug data from %s:\n", tmp006_sensors[idx].name); + ccprintf("Debug data from %s:\n", tmp006_sensors__7bf[idx].name); if (!tmp006_has_power(idx)) { ccputs("Sensor powered off.\n"); return EC_ERROR_UNKNOWN; } - rv = i2c_read16(TMP006_PORT(addr), TMP006_REG(addr), + rv = i2c_read16__7bf(TMP006_PORT(addr__7bf), + TMP006_REG__7bf(addr__7bf), TMP006_REG_MANUFACTURER_ID, &d); if (rv) return rv; ccprintf(" Manufacturer ID: 0x%04x\n", d); - rv = i2c_read16(TMP006_PORT(addr), TMP006_REG(addr), + rv = i2c_read16__7bf(TMP006_PORT(addr__7bf), + TMP006_REG__7bf(addr__7bf), TMP006_REG_DEVICE_ID, &d); ccprintf(" Device ID: 0x%04x\n", d); - rv = i2c_read16(TMP006_PORT(addr), TMP006_REG(addr), + rv = i2c_read16__7bf(TMP006_PORT(addr__7bf), + TMP006_REG__7bf(addr__7bf), TMP006_REG_CONFIG, &d); ccprintf(" Config: 0x%04x\n", d); - rv = i2c_read16(TMP006_PORT(addr), TMP006_REG(addr), + rv = i2c_read16__7bf(TMP006_PORT(addr__7bf), + TMP006_REG__7bf(addr__7bf), TMP006_REG_VOBJ, &vraw); v = ((int)vraw * 15625) / 100; ccprintf(" Voltage: 0x%04x = %d nV\n", vraw, v); - rv = i2c_read16(TMP006_PORT(addr), TMP006_REG(addr), + rv = i2c_read16__7bf(TMP006_PORT(addr__7bf), + TMP006_REG__7bf(addr__7bf), TMP006_REG_TDIE, &traw); t = (int)traw; ccprintf(" Temperature: 0x%04x = %d.%02d C\n", @@ -455,7 +463,7 @@ static int command_t6cal(int argc, char **argv) tdata = tmp006_data + i; ccprintf("%d %-11s" "%7de-17 %7de-8 %7de-10 %7de-12\n", - i, tmp006_sensors[i].name, + i, tmp006_sensors__7bf[i].name, (int)(tdata->s0 * 1e17f), (int)(tdata->b0 * 1e8f), (int)(tdata->b1 * 1e10f), diff --git a/driver/temp_sensor/tmp006.h b/driver/temp_sensor/tmp006.h index 28204829a2..98f8e31ee0 100644 --- a/driver/temp_sensor/tmp006.h +++ b/driver/temp_sensor/tmp006.h @@ -16,17 +16,17 @@ #define TMP006_REG_DEVICE_ID 0xff /* I2C address components */ -#define TMP006_ADDR(PORT,REG) ((PORT << 16) + REG) -#define TMP006_PORT(ADDR) (ADDR >> 16) -#define TMP006_REG(ADDR) (ADDR & 0xffff) +#define TMP006_ADDR__7bf(PORT, REG) ((PORT << 16) + REG) +#define TMP006_PORT(ADDR__7bf) (ADDR__7bf >> 16) +#define TMP006_REG__7bf(ADDR__7bf) (ADDR__7bf & 0xffff) struct tmp006_t { const char *name; - int addr; /* I2C address formed by TMP006_ADDR macro. */ + int addr__7bf; /* I2C address formed by TMP006_ADDR macro. */ }; /* Names and addresses of the sensors we have */ -extern const struct tmp006_t tmp006_sensors[]; +extern const struct tmp006_t tmp006_sensors__7bf[]; /** * Get the last polled value of a sensor. diff --git a/driver/temp_sensor/tmp112.c b/driver/temp_sensor/tmp112.c index f61cf23784..b80fc4bb61 100644 --- a/driver/temp_sensor/tmp112.c +++ b/driver/temp_sensor/tmp112.c @@ -20,12 +20,14 @@ static int temp_val_local; static int raw_read16(const int offset, int *data_ptr) { - return i2c_read16(I2C_PORT_THERMAL, TMP112_I2C_ADDR, offset, data_ptr); + return i2c_read16__7bf(I2C_PORT_THERMAL, TMP112_I2C_ADDR__7bf, + offset, data_ptr); } static int raw_write16(const int offset, int data) { - return i2c_write16(I2C_PORT_THERMAL, TMP112_I2C_ADDR, offset, data); + return i2c_write16__7bf(I2C_PORT_THERMAL, TMP112_I2C_ADDR__7bf, + offset, data); } static int get_temp(int *temp_ptr) diff --git a/driver/temp_sensor/tmp112.h b/driver/temp_sensor/tmp112.h index 63bf4bfab4..f1c5725741 100644 --- a/driver/temp_sensor/tmp112.h +++ b/driver/temp_sensor/tmp112.h @@ -8,7 +8,7 @@ #include "i2c.h" -#define TMP112_I2C_ADDR 0x90 | I2C_FLAG_BIG_ENDIAN +#define TMP112_I2C_ADDR__7bf (0x48 | I2C_FLAG_BIG_ENDIAN) #define TMP112_REG_TEMP 0x00 #define TMP112_REG_CONF 0x01 diff --git a/driver/temp_sensor/tmp411.h b/driver/temp_sensor/tmp411.h index e5fd37b5c8..6e15f52c3e 100644 --- a/driver/temp_sensor/tmp411.h +++ b/driver/temp_sensor/tmp411.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_TMP411_H #define __CROS_EC_TMP411_H -#define TMP411_I2C_ADDR 0x98 /* 7-bit address is 0x4C */ +#define TMP411_I2C_ADDR__7bf 0x4C #define TMP411_IDX_LOCAL 0 #define TMP411_IDX_REMOTE1 1 diff --git a/driver/temp_sensor/tmp432.c b/driver/temp_sensor/tmp432.c index c0e04a84ad..6325547ace 100644 --- a/driver/temp_sensor/tmp432.c +++ b/driver/temp_sensor/tmp432.c @@ -35,12 +35,14 @@ static int has_power(void) static int raw_read8(const int offset, int *data_ptr) { - return i2c_read8(I2C_PORT_THERMAL, TMP432_I2C_ADDR, offset, data_ptr); + return i2c_read8__7bf(I2C_PORT_THERMAL, TMP432_I2C_ADDR__7bf, + offset, data_ptr); } static int raw_write8(const int offset, int data) { - return i2c_write8(I2C_PORT_THERMAL, TMP432_I2C_ADDR, offset, data); + return i2c_write8__7bf(I2C_PORT_THERMAL, TMP432_I2C_ADDR__7bf, + offset, data); } static int get_temp(const int offset, int *temp_ptr) diff --git a/driver/temp_sensor/tmp432.h b/driver/temp_sensor/tmp432.h index bcdc83d926..638cde91e1 100644 --- a/driver/temp_sensor/tmp432.h +++ b/driver/temp_sensor/tmp432.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_TMP432_H #define __CROS_EC_TMP432_H -#define TMP432_I2C_ADDR 0x98 /* 7-bit address is 0x4C */ +#define TMP432_I2C_ADDR__7bf 0x4C #define TMP432_IDX_LOCAL 0 #define TMP432_IDX_REMOTE1 1 diff --git a/driver/temp_sensor/tmp468.c b/driver/temp_sensor/tmp468.c index 09a3faa80e..444a1d5dc8 100644 --- a/driver/temp_sensor/tmp468.c +++ b/driver/temp_sensor/tmp468.c @@ -27,12 +27,14 @@ static int has_power(void) static int raw_read16(const int offset, int *data_ptr) { - return i2c_read16(I2C_PORT_THERMAL, TMP468_I2C_ADDR, offset, data_ptr); + return i2c_read16__7bf(I2C_PORT_THERMAL, TMP468_I2C_ADDR__7bf, + offset, data_ptr); } static int raw_write16(const int offset, int data_ptr) { - return i2c_write16(I2C_PORT_THERMAL, TMP468_I2C_ADDR, offset, data_ptr); + return i2c_write16__7bf(I2C_PORT_THERMAL, TMP468_I2C_ADDR__7bf, + offset, data_ptr); } static int tmp468_shutdown(uint8_t want_shutdown) diff --git a/driver/temp_sensor/tmp468.h b/driver/temp_sensor/tmp468.h index 70d772f097..f8f4337d8a 100644 --- a/driver/temp_sensor/tmp468.h +++ b/driver/temp_sensor/tmp468.h @@ -8,7 +8,7 @@ #ifndef __CROS_EC_TMP468_H #define __CROS_EC_TMP468_H -#define TMP468_I2C_ADDR (0x90 | I2C_FLAG_BIG_ENDIAN) +#define TMP468_I2C_ADDR__7bf (0x48 | I2C_FLAG_BIG_ENDIAN) #define TMP468_SHIFT1 7 #define TMP468_LOCAL 0x00 diff --git a/driver/touchpad_elan.c b/driver/touchpad_elan.c index 10a2038158..247c85894f 100644 --- a/driver/touchpad_elan.c +++ b/driver/touchpad_elan.c @@ -115,8 +115,9 @@ static int elan_tp_read_cmd(uint16_t reg, uint16_t *val) buf[0] = reg; buf[1] = reg >> 8; - return i2c_xfer(CONFIG_TOUCHPAD_I2C_PORT, CONFIG_TOUCHPAD_I2C_ADDR, - buf, sizeof(buf), (uint8_t *)val, sizeof(*val)); + return i2c_xfer__7bf(CONFIG_TOUCHPAD_I2C_PORT, + CONFIG_TOUCHPAD_I2C_ADDR__7BF, + buf, sizeof(buf), (uint8_t *)val, sizeof(*val)); } static int elan_tp_write_cmd(uint16_t reg, uint16_t val) @@ -128,8 +129,9 @@ static int elan_tp_write_cmd(uint16_t reg, uint16_t val) buf[2] = val; buf[3] = val >> 8; - return i2c_xfer(CONFIG_TOUCHPAD_I2C_PORT, CONFIG_TOUCHPAD_I2C_ADDR, - buf, sizeof(buf), NULL, 0); + return i2c_xfer__7bf(CONFIG_TOUCHPAD_I2C_PORT, + CONFIG_TOUCHPAD_I2C_ADDR__7BF, + buf, sizeof(buf), NULL, 0); } /* Power is on by default. */ @@ -189,7 +191,8 @@ static int elan_tp_read_report(void) /* Compute and save timestamp early in case another interrupt comes. */ timestamp = irq_ts / USB_HID_TOUCHPAD_TIMESTAMP_UNIT; - rv = i2c_xfer(CONFIG_TOUCHPAD_I2C_PORT, CONFIG_TOUCHPAD_I2C_ADDR, + rv = i2c_xfer__7bf(CONFIG_TOUCHPAD_I2C_PORT, + CONFIG_TOUCHPAD_I2C_ADDR__7BF, NULL, 0, tp_buf, ETP_I2C_REPORT_LEN); if (rv) { @@ -277,7 +280,8 @@ static void elan_tp_init(void) elan_tp_write_cmd(ETP_I2C_STAND_CMD, ETP_I2C_RESET); msleep(100); - rv = i2c_xfer(CONFIG_TOUCHPAD_I2C_PORT, CONFIG_TOUCHPAD_I2C_ADDR, + rv = i2c_xfer__7bf(CONFIG_TOUCHPAD_I2C_PORT, + CONFIG_TOUCHPAD_I2C_ADDR__7BF, NULL, 0, val, sizeof(val)); CPRINTS("reset rv %d buf=%04x", rv, *((uint16_t *)val)); @@ -467,7 +471,8 @@ static int touchpad_update_page(const uint8_t *data) page_store[FW_PAGE_SIZE + 2 + 0] = checksum & 0xff; page_store[FW_PAGE_SIZE + 2 + 1] = (checksum >> 8) & 0xff; - rv = i2c_xfer(CONFIG_TOUCHPAD_I2C_PORT, CONFIG_TOUCHPAD_I2C_ADDR, + rv = i2c_xfer__7bf(CONFIG_TOUCHPAD_I2C_PORT, + CONFIG_TOUCHPAD_I2C_ADDR__7BF, page_store, sizeof(page_store), NULL, 0); if (rv) return rv; @@ -631,8 +636,8 @@ int touchpad_debug(const uint8_t *param, unsigned int param_size, memset(buffer, 0, buffer_size); } - rv = i2c_xfer(CONFIG_TOUCHPAD_I2C_PORT, - CONFIG_TOUCHPAD_I2C_ADDR, + rv = i2c_xfer__7bf(CONFIG_TOUCHPAD_I2C_PORT, + CONFIG_TOUCHPAD_I2C_ADDR__7BF, ¶m[offset], write_length, buffer, read_length); diff --git a/driver/usb_mux/it5205.c b/driver/usb_mux/it5205.c index 9a6f71dade..745a341591 100644 --- a/driver/usb_mux/it5205.c +++ b/driver/usb_mux/it5205.c @@ -16,12 +16,12 @@ static int it5205_read(int port, uint8_t reg, int *val) { - return i2c_read8(I2C_PORT_USB_MUX, MUX_ADDR(port), reg, val); + return i2c_read8__7bf(I2C_PORT_USB_MUX, MUX_ADDR__7bf(port), reg, val); } static int it5205_write(int port, uint8_t reg, uint8_t val) { - return i2c_write8(I2C_PORT_USB_MUX, MUX_ADDR(port), reg, val); + return i2c_write8__7bf(I2C_PORT_USB_MUX, MUX_ADDR__7bf(port), reg, val); } struct mux_chip_id_t { diff --git a/driver/usb_mux/it5205.h b/driver/usb_mux/it5205.h index b81b33cac3..02d389ad36 100644 --- a/driver/usb_mux/it5205.h +++ b/driver/usb_mux/it5205.h @@ -9,8 +9,8 @@ #define __CROS_EC_IT5205_H /* I2C interface */ -#define IT5205_I2C_ADDR1 (0x48 << 1) -#define IT5205_I2C_ADDR2 (0x58 << 1) +#define IT5205_I2C_ADDR1__7bf (0x48) +#define IT5205_I2C_ADDR2__7bf (0x58) /* Chip ID registers */ #define IT5205_REG_CHIP_ID3 0x4 diff --git a/driver/usb_mux/pi3usb30532.c b/driver/usb_mux/pi3usb30532.c index 54d6f49fe7..24f9cbd095 100644 --- a/driver/usb_mux/pi3usb30532.c +++ b/driver/usb_mux/pi3usb30532.c @@ -20,7 +20,9 @@ static int pi3usb30532_read(int port, uint8_t reg, uint8_t *val) * Second byte read will be vendor ID. * Third byte read will be selection control. */ - res = i2c_read16(I2C_PORT_USB_MUX, MUX_ADDR(port), 0, &read); + res = i2c_read16__7bf(I2C_PORT_USB_MUX, + MUX_ADDR__7bf(port), + 0, &read); if (res) return res; @@ -37,7 +39,9 @@ static int pi3usb30532_write(int port, uint8_t reg, uint8_t val) if (reg != PI3USB30532_REG_CONTROL) return EC_ERROR_UNKNOWN; - return i2c_write8(I2C_PORT_USB_MUX, MUX_ADDR(port), 0, val); + return i2c_write8__7bf(I2C_PORT_USB_MUX, + MUX_ADDR__7bf(port), + 0, val); } static int pi3usb30532_reset(int port) diff --git a/driver/usb_mux/ps874x.c b/driver/usb_mux/ps874x.c index bf00553d28..73bb39bce5 100644 --- a/driver/usb_mux/ps874x.c +++ b/driver/usb_mux/ps874x.c @@ -13,12 +13,16 @@ static inline int ps874x_read(int port, uint8_t reg, int *val) { - return i2c_read8(I2C_PORT_USB_MUX, MUX_ADDR(port), reg, val); + return i2c_read8__7bf(I2C_PORT_USB_MUX, + MUX_ADDR__7bf(port), + reg, val); } static inline int ps874x_write(int port, uint8_t reg, uint8_t val) { - return i2c_write8(I2C_PORT_USB_MUX, MUX_ADDR(port), reg, val); + return i2c_write8__7bf(I2C_PORT_USB_MUX, + MUX_ADDR__7bf(port), + reg, val); } static int ps874x_init(int port) diff --git a/driver/wpc/p9221.c b/driver/wpc/p9221.c index 2678173ea6..948734aba1 100644 --- a/driver/wpc/p9221.c +++ b/driver/wpc/p9221.c @@ -98,34 +98,38 @@ static int p9221_reg_is_8_bit(uint16_t reg) static int p9221_read8(uint16_t reg, int *val) { - return i2c_read_offset16(wpc->i2c_port, P9221_R7_ADDR, reg, val, 1); + return i2c_read_offset16__7bf(wpc->i2c_port, P9221_R7_ADDR__7bf, + reg, val, 1); } static int p9221_write8(uint16_t reg, int val) { - return i2c_write_offset16(wpc->i2c_port, P9221_R7_ADDR, reg, val, 1); + return i2c_write_offset16__7bf(wpc->i2c_port, P9221_R7_ADDR__7bf, + reg, val, 1); } static int p9221_read16(uint16_t reg, int *val) { - return i2c_read_offset16(wpc->i2c_port, P9221_R7_ADDR, reg, val, 2); + return i2c_read_offset16__7bf(wpc->i2c_port, P9221_R7_ADDR__7bf, + reg, val, 2); } static int p9221_write16(uint16_t reg, int val) { - return i2c_write_offset16(wpc->i2c_port, P9221_R7_ADDR, reg, val, 2); + return i2c_write_offset16__7bf(wpc->i2c_port, P9221_R7_ADDR__7bf, + reg, val, 2); } static int p9221_block_read(uint16_t reg, uint8_t *data, int len) { - return i2c_read_offset16_block(wpc->i2c_port, P9221_R7_ADDR, reg, data, - len); + return i2c_read_offset16_block__7bf(wpc->i2c_port, P9221_R7_ADDR__7bf, + reg, data, len); } static int p9221_block_write(uint16_t reg, uint8_t *data, int len) { - return i2c_write_offset16_block(wpc->i2c_port, P9221_R7_ADDR, reg, data, - len); + return i2c_write_offset16_block__7bf(wpc->i2c_port, P9221_R7_ADDR__7bf, + reg, data, len); } static int p9221_set_cmd_reg(uint8_t cmd) diff --git a/driver/wpc/p9221.h b/driver/wpc/p9221.h index 7c5156c833..b590a5c1c7 100644 --- a/driver/wpc/p9221.h +++ b/driver/wpc/p9221.h @@ -19,7 +19,7 @@ /* ========== Variant-specific configuration ============ */ -#define P9221_R7_ADDR (0x61 << 1) +#define P9221_R7_ADDR__7bf 0x61 /* * P9221 common registers diff --git a/include/battery_smart.h b/include/battery_smart.h index ceec42719c..84b80fd162 100644 --- a/include/battery_smart.h +++ b/include/battery_smart.h @@ -11,8 +11,8 @@ #include "common.h" /* Smart battery and charger I2C address */ -#define BATTERY_ADDR 0x16 -#define CHARGER_ADDR 0x12 +#define BATTERY_ADDR__7bf (0x0B) +#define CHARGER_ADDR__7bf (0x09) /* Charger functions */ #define SB_CHARGER_SPEC_INFO 0x11 diff --git a/include/charge_state_v2.h b/include/charge_state_v2.h index f44fd3d8f7..1a7f698cc4 100644 --- a/include/charge_state_v2.h +++ b/include/charge_state_v2.h @@ -14,7 +14,7 @@ #define __CROS_EC_CHARGE_STATE_V2_H #if defined(CONFIG_I2C_VIRTUAL_BATTERY) && defined(CONFIG_BATTERY_SMART) -#define VIRTUAL_BATTERY_ADDR BATTERY_ADDR +#define VIRTUAL_BATTERY_ADDR__7bf BATTERY_ADDR__7bf #endif /* * The values exported by charge_get_state() and charge_get_flags() are used diff --git a/include/config.h b/include/config.h index a798f0eac1..95258abd54 100644 --- a/include/config.h +++ b/include/config.h @@ -139,7 +139,7 @@ #undef CONFIG_KX022_ORIENTATION_SENSOR /* Define the i2c address of the sensor behind the main sensor, if present. */ -#undef CONFIG_ACCELGYRO_SEC_ADDR +#undef CONFIG_ACCELGYRO_SEC_ADDR__7BF /* * Define if either CONFIG_BMI160_ORIENTATION_SUPPORT or @@ -601,7 +601,7 @@ #undef CONFIG_BOARD_VERSION_GPIO /* EC responses to a board defined I2C slave address */ -#undef CONFIG_BOARD_I2C_SLAVE_ADDR +#undef CONFIG_BOARD_I2C_SLAVE_ADDR__7BF /* * The board is unable to distinguish EC reset from power-on so it should treat @@ -2030,7 +2030,7 @@ * For ECs where the host command interface is I2C, slave * address which the EC will respond to. */ -#undef CONFIG_HOSTCMD_I2C_SLAVE_ADDR +#undef CONFIG_HOSTCMD_I2C_SLAVE_ADDR__7BF /* * Accept EC host commands over the SPI slave (SPS) interface. @@ -2199,7 +2199,7 @@ * transaction is done, the pin is set back to low. */ #undef CONFIG_I2C_SCL_GATE_PORT -#undef CONFIG_I2C_SCL_GATE_ADDR +#undef CONFIG_I2C_SCL_GATE_ADDR__7BF #undef CONFIG_I2C_SCL_GATE_GPIO /* @@ -3411,9 +3411,9 @@ /* Enable Elan driver */ #undef CONFIG_TOUCHPAD_ELAN -/* Set I2C port and address (8-bit) */ +/* Set I2C port and address (7-bit) */ #undef CONFIG_TOUCHPAD_I2C_PORT -#undef CONFIG_TOUCHPAD_I2C_ADDR +#undef CONFIG_TOUCHPAD_I2C_ADDR__7BF /* * Enable touchpad FW update over USB update protocol, and define touchpad @@ -3624,7 +3624,7 @@ #undef CONFIG_USB_PD_IDENTITY_SW_VERS /* USB PD MCU slave address for host commands */ -#define CONFIG_USB_PD_I2C_SLAVE_ADDR 0x3c +#define CONFIG_USB_PD_I2C_SLAVE_ADDR__7BF 0x1E /* Define if using internal comparator for PD receive */ #undef CONFIG_USB_PD_INTERNAL_COMP @@ -3736,7 +3736,7 @@ #undef CONFIG_USB_PD_VBUS_MEASURE_NOT_PRESENT /* Define the type-c port controller I2C base address. */ -#define CONFIG_TCPC_I2C_BASE_ADDR 0x9c +#define CONFIG_TCPC_I2C_BASE_ADDR__7BF 0x4E /* Use this option to enable Try.SRC mode for Dual Role devices */ #undef CONFIG_USB_PD_TRY_SRC @@ -4713,7 +4713,7 @@ #if defined(CONFIG_MAG_BMI160_LIS2MDL) || \ defined(CONFIG_MAG_LSM6DSM_LIS2MDL) #define CONFIG_MAG_LIS2MDL -#ifndef CONFIG_ACCELGYRO_SEC_ADDR +#ifndef CONFIG_ACCELGYRO_SEC_ADDR__7BF #error "The i2c address of the magnetometer is not set." #endif #endif @@ -4722,7 +4722,7 @@ #if defined(CONFIG_MAG_BMI160_BMM150) || \ defined(CONFIG_MAG_LSM6DSM_BMM150) #define CONFIG_MAG_BMM150 -#ifndef CONFIG_ACCELGYRO_SEC_ADDR +#ifndef CONFIG_ACCELGYRO_SEC_ADDR__7BF #error "The i2c address of the magnetometer is not set." #endif #endif diff --git a/include/ec_commands.h b/include/ec_commands.h index 5e78cae51c..fb1523b479 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -4008,7 +4008,10 @@ struct ec_response_power_info { #define EC_I2C_STATUS_ERROR (EC_I2C_STATUS_NAK | EC_I2C_STATUS_TIMEOUT) struct ec_params_i2c_passthru_msg { - uint16_t addr_flags; /* I2C slave address (7 or 10 bits) and flags */ + union { + uint16_t addr_flags; /* I2C slave address and flags */ + uint16_t addr_flags__7bf; /* remove before final merge */ + }; uint16_t len; /* Number of bytes to read or write */ } __ec_align2; @@ -5402,8 +5405,11 @@ enum ec_bus_type { }; struct ec_i2c_info { - uint16_t port; /* Physical port for device */ - uint16_t addr; /* 7-bit (or 10-bit) address */ + uint16_t port; /* Physical port for device */ + union { + uint16_t addr_flags; /* 7-bit (or 10-bit) address */ + uint16_t addr__7bf; /* remove before final merge */ + }; }; struct ec_params_locate_chip { diff --git a/include/i2c.h b/include/i2c.h index 566ae7b402..1281b8280d 100644 --- a/include/i2c.h +++ b/include/i2c.h @@ -13,8 +13,35 @@ #include "host_command.h" #include "stddef.h" -/* Flags for slave address field, in addition to the 8-bit address */ -#define I2C_FLAG_BIG_ENDIAN 0x100 /* 16 byte values are MSB-first */ +/* + * I2C Slave Address encoding + * + * EC will favor 7bit I2C/SPI address encoding. The variable/define + * naming should follow the pattern, if it is just the 7 bit address + * then end the variable as "addr". This can be addr, i2c_addr, + * slave_addr, etc. If the 7 bit address contains flags for BIG + * ENDIAN or overloading the address to be a SPI address, then it + * will be customary to end the variable as "addr_flags". This can + * be addr_flags, i2c_addr_flags, slave_addr_flags, etc. + * + * Some of the drivers use an 8bit left shifted 7bit address. Since + * this is driver specific, it will be up to the driver to make this + * clear. I suggest, since this is a very small amount of usage, that + * ending the variable as "addr__8bit" would make this clear. + * + * NOTE: Slave addresses are always 16 bit values. The least significant + * 10 bits are available as an address. More significant bits are + * used here and in motion_sense to give specific meaning to the + * address that is pertinent to its use. + */ +#define I2C_ADDR_MASK 0x03FF +#define I2C_FLAG_BIG_ENDIAN BIT(14) +/* BIT(15) SPI_FLAG - used in motion_sense to overload address */ +#define I2C_FLAG_ADDR_IS_SPI BIT(15) + +#define I2C_GET_ADDR(x) (I2C_GET_ADDR__7b(x)) +#define I2C_GET_ADDR__7b(x__7bf) ((x__7bf) & I2C_ADDR_MASK) +#define I2C_IS_BIG_ENDIAN(x__7bf) ((x__7bf) & I2C_FLAG_BIG_ENDIAN) /* * Max data size for a version 3 request/response packet. This is @@ -35,7 +62,16 @@ enum i2c_freq { struct i2c_info_t { uint16_t port; /* Physical port for device */ - uint16_t addr; /* 8-bit (or 11-bit) address */ + + /* + * union is temporary to accommodate ec_tools + * and will be reduced to the non-__7bf version + * before the final merge + */ + union { + uint16_t addr_flags; + uint16_t addr__7bf; + }; }; /* Data structure to define I2C port configuration. */ @@ -47,8 +83,8 @@ struct i2c_port_t { enum gpio_signal sda; /* Port SDA GPIO line */ /* When bus is protected, returns true if passthru allowed for address. * If the function is not defined, the default value is true. */ - int (*passthru_allowed)(const struct i2c_port_t *port, - uint16_t address); + int (*passthru_allowed__7bf)(const struct i2c_port_t *port, + uint16_t addr__7bf); }; extern const struct i2c_port_t i2c_ports[]; @@ -72,17 +108,19 @@ struct i2c_test_results { struct i2c_stress_test_dev { struct i2c_test_reg_info reg_info; struct i2c_test_results test_results; - int (*i2c_read)(const int port, const int addr, - const int reg, int *data); - int (*i2c_write)(const int port, const int addr, - const int reg, int data); + int (*i2c_read__7bf)(const int port, + const uint16_t slave_addr__7bf, + const int reg, int *data); + int (*i2c_write__7bf)(const int port, + const uint16_t slave_addr__7bf, + const int reg, int data); int (*i2c_read_dev)(const int reg, int *data); int (*i2c_write_dev)(const int reg, int data); }; struct i2c_stress_test { int port; - int addr; + uint16_t addr__7bf; struct i2c_stress_test_dev *i2c_test; }; @@ -109,7 +147,9 @@ extern const int i2c_test_dev_used; * @param in_size Number of bytes to receive * @return EC_SUCCESS, or non-zero if error. */ -int i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int i2c_xfer__7bf(const int port, + const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size); /** @@ -118,7 +158,8 @@ int i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, * * @param flags Flags (see I2C_XFER_* above) */ -int i2c_xfer_unlocked(int port, int slave_addr, +int i2c_xfer_unlocked__7bf(const int port, + const uint16_t slave_addr__7bf, const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags); @@ -142,7 +183,9 @@ int i2c_xfer_unlocked(int port, int slave_addr, * @param flags Flags (see I2C_XFER_* above) * @return EC_SUCCESS, or non-zero if error. */ -int chip_i2c_xfer(int port, int slave_addr, const uint8_t *out, int out_size, +int chip_i2c_xfer__7bf(const int port, + const uint16_t slave_addr__7bf, + const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags); /** @@ -236,68 +279,84 @@ void i2c_prepare_sysjump(void); void i2c_set_timeout(int port, uint32_t timeout); /** - * Read a 32-bit register from the slave at 8-bit slave address <slaveaddr>, at + * Read a 32-bit register from the slave at 7-bit slave address <slaveaddr>, at * the specified 8-bit <offset> in the slave's address space. */ -int i2c_read32(int port, int slave_addr, int offset, int *data); +int i2c_read32__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int *data); /** - * Write a 32-bit register to the slave at 8-bit slave address <slaveaddr>, at + * Write a 32-bit register to the slave at 7-bit slave address <slaveaddr>, at * the specified 8-bit <offset> in the slave's address space. */ -int i2c_write32(int port, int slave_addr, int offset, int data); +int i2c_write32__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int data); /** - * Read a 16-bit register from the slave at 8-bit slave address <slaveaddr>, at + * Read a 16-bit register from the slave at 7-bit slave address <slaveaddr>, at * the specified 8-bit <offset> in the slave's address space. */ -int i2c_read16(int port, int slave_addr, int offset, int *data); +int i2c_read16__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int *data); /** - * Write a 16-bit register to the slave at 8-bit slave address <slaveaddr>, at + * Write a 16-bit register to the slave at 7-bit slave address <slaveaddr>, at * the specified 8-bit <offset> in the slave's address space. */ -int i2c_write16(int port, int slave_addr, int offset, int data); +int i2c_write16__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int data); /** - * Read an 8-bit register from the slave at 8-bit slave address <slaveaddr>, at + * Read an 8-bit register from the slave at 7-bit slave address <slaveaddr>, at * the specified 8-bit <offset> in the slave's address space. */ -int i2c_read8(int port, int slave_addr, int offset, int *data); +int i2c_read8__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int *data); /** - * Write an 8-bit register to the slave at 8-bit slave address <slaveaddr>, at + * Write an 8-bit register to the slave at 7-bit slave address <slaveaddr>, at * the specified 8-bit <offset> in the slave's address space. */ -int i2c_write8(int port, int slave_addr, int offset, int data); +int i2c_write8__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, int data); /** - * Read one or two bytes data from the slave at 8-bit slave address + * Read one or two bytes data from the slave at 7-bit slave address * * <slaveaddr>, at 16-bit <offset> in the slave's address space. */ -int i2c_read_offset16(int port, int slave_addr, uint16_t offset, int *data, - int len); +int i2c_read_offset16__7bf(const int port, + const uint16_t slave_addr__7bf, + uint16_t offset, int *data, int len); /** - * Write one or two bytes data to the slave at 8-bit slave address + * Write one or two bytes data to the slave at 7-bit slave address * <slaveaddr>, at 16-bit <offset> in the slave's address space. */ -int i2c_write_offset16(int port, int slave_addr, uint16_t offset, int data, - int len); +int i2c_write_offset16__7bf(const int port, + const uint16_t slave_addr__7bf, + uint16_t offset, int data, int len); /** - * Read <len> bytes block data from the slave at 8-bit slave address + * Read <len> bytes block data from the slave at 7-bit slave address * * <slaveaddr>, at 16-bit <offset> in the slave's address space. */ -int i2c_read_offset16_block(int port, int slave_addr, uint16_t offset, - uint8_t *data, int len); +int i2c_read_offset16_block__7bf(const int port, + const uint16_t slave_addr__7bf, + uint16_t offset, uint8_t *data, int len); /** - * Write <len> bytes block data to the slave at 8-bit slave address + * Write <len> bytes block data to the slave at 7-bit slave address * <slaveaddr>, at 16-bit <offset> in the slave's address space. */ -int i2c_write_offset16_block(int port, int slave_addr, uint16_t offset, - const uint8_t *data, int len); +int i2c_write_offset16_block__7bf(const int port, + const uint16_t slave_addr__7bf, + uint16_t offset, const uint8_t *data, int len); /** * @return non-zero if i2c bus is busy @@ -324,24 +383,27 @@ int i2c_unwedge(int port); * always written into the output buffer. * <len> == 0 : buffer size > 255 */ -int i2c_read_string(int port, int slave_addr, int offset, uint8_t *data, - int len); +int i2c_read_string__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, uint8_t *data, int len); /** - * Read a data block of <len> 8-bit transfers from the slave at 8-bit slave + * Read a data block of <len> 8-bit transfers from the slave at 7-bit slave * address <slaveaddr>, at the specified 8-bit <offset> in the slave's address * space. */ -int i2c_read_block(int port, int slave_addr, int offset, uint8_t *data, - int len); +int i2c_read_block__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, uint8_t *data, int len); /** - * Write a data block of <len> 8-bit transfers to the slave at 8-bit slave + * Write a data block of <len> 8-bit transfers to the slave at 7-bit slave * address <slaveaddr>, at the specified 8-bit <offset> in the slave's address * space. */ -int i2c_write_block(int port, int slave_addr, int offset, const uint8_t *data, - int len); +int i2c_write_block__7bf(const int port, + const uint16_t slave_addr__7bf, + int offset, const uint8_t *data, int len); /** * Convert port number to controller number, for multi-port controllers. @@ -414,7 +476,8 @@ int board_is_i2c_port_powered(int port); * @param slave_addr: Slave device address * */ -void i2c_start_xfer_notify(int port, int slave_addr); +void i2c_start_xfer_notify__7bf(const int port, + const uint16_t slave_addr__7bf); /** * Function to allow board to take any action after an i2c transaction on a @@ -425,7 +488,8 @@ void i2c_start_xfer_notify(int port, int slave_addr); * @param slave_addr: Slave device address * */ -void i2c_end_xfer_notify(int port, int slave_addr); +void i2c_end_xfer_notify__7bf(const int port, + const uint16_t slave_addr__7bf); /** * Defined in common/i2c_trace.c, used by i2c master to notify tracing @@ -438,7 +502,7 @@ void i2c_end_xfer_notify(int port, int slave_addr); * @param data: pointer to data read or written * @param size: size of data read or written */ -void i2c_trace_notify(int port, int slave_addr, int direction, - const uint8_t *data, size_t size); +void i2c_trace_notify__7bf(int port, uint16_t slave_addr__7bf, + int direction, const uint8_t *data, size_t size); #endif /* __CROS_EC_I2C_H */ diff --git a/include/motion_sense.h b/include/motion_sense.h index 34da3f9ea5..0e9f79e422 100644 --- a/include/motion_sense.h +++ b/include/motion_sense.h @@ -12,6 +12,7 @@ #include "common.h" #include "ec_commands.h" #include "gpio.h" +#include "i2c.h" #include "math_util.h" #include "queue.h" #include "timer.h" @@ -81,6 +82,24 @@ enum sensor_config { #endif /* + * I2C/SPI Slave Address encoding for motion sensors + * - The generic defines, I2C_ADDR_MASK and I2C_IS_BIG_ENDIAN_MASK + * are defined in i2c.h. + * - Motion sensors support some sensors on the SPI bus, so this + * overloads the I2C Address to use a single bit to indicate + * it is a SPI address instead of an I2C. Since SPI does not + * use slave addressing, it is up to the driver to use this + * field as it sees fit + */ +#define SLAVE_MK_I2C_ADDR__7bf(x__7b) (x__7b) +#define SLAVE_MK_SPI_ADDR__7bf(x__7b) ((x__7b) | I2C_FLAG_ADDR_IS_SPI) + +#define SLAVE_GET_I2C_ADDR__7b(x__7bf) (I2C_GET_ADDR__7b(x__7bf)) +#define SLAVE_GET_SPI_ADDR__7b(x__7bf) ((x__7bf) & I2C_ADDR_MASK) + +#define SLAVE_IS_SPI(x__7bf) ((x__7bf) & I2C_FLAG_ADDR_IS_SPI) + +/* * Define the frequency to use in max_frequency based on the maximal frequency * the sensor support and what the EC can provide. * Return a frequency the sensor supports. @@ -131,7 +150,7 @@ struct motion_sensor_t { /* i2c port */ uint8_t port; /* i2c address or SPI slave logic GPIO. */ - uint8_t addr; + uint16_t i2c_spi_addr__7bf; /* * Various flags, see MOTIONSENSE_FLAG_* diff --git a/include/test_util.h b/include/test_util.h index 098700d67b..a812817b8f 100644 --- a/include/test_util.h +++ b/include/test_util.h @@ -218,20 +218,21 @@ void test_reboot_to_next_step(enum test_state_t step); struct test_i2c_read_string_dev { /* I2C string read handler */ - int (*routine)(int port, int slave_addr, int offset, uint8_t *data, - int len); + int (*routine__7bf)(const int port, const uint16_t i2c_addr__7bf, + int offset, uint8_t *data, int len); }; struct test_i2c_xfer { /* I2C xfer handler */ - int (*routine)(int port, int slave_addr, + int (*routine__7bf)(const int port, const uint16_t i2c_addr__7bf, const uint8_t *out, int out_size, uint8_t *in, int in_size, int flags); }; struct test_i2c_write_dev { /* I2C write handler */ - int (*routine)(int port, int slave_addr, int offset, int data); + int (*routine__7bf)(const int port, const uint16_t i2c_addr__7bf, + int offset, int data); }; /** @@ -258,7 +259,7 @@ struct test_i2c_write_dev { * @return EC_SUCCESS if detached; EC_ERROR_OVERFLOW if too many devices are * detached. */ -int test_detach_i2c(int port, int slave_addr); +int test_detach_i2c__7bf(const int port, const uint16_t slave_addr__7bf); /* * Re-attach an I2C device. @@ -268,6 +269,6 @@ int test_detach_i2c(int port, int slave_addr); * @return EC_SUCCESS if re-attached; EC_ERROR_INVAL if the specified device * is not a detached device. */ -int test_attach_i2c(int port, int slave_addr); +int test_attach_i2c__7bf(const int port, const uint16_t slave_addr__7bf); #endif /* __CROS_EC_TEST_UTIL_H */ diff --git a/include/usb_i2c.h b/include/usb_i2c.h index 2f09076eb9..629f495b69 100644 --- a/include/usb_i2c.h +++ b/include/usb_i2c.h @@ -218,7 +218,7 @@ int usb_i2c_board_is_enabled(void); * Special i2c address to use when the client is required to execute some * command which does not directly involve the i2c master driver. */ -#define USB_I2C_CMD_ADDR 0xf0 +#define USB_I2C_CMD_ADDR__7bf 0x78 /* * Function to call to register a handler for commands sent to the special i2c diff --git a/include/usb_mux.h b/include/usb_mux.h index ff2704d2b6..94e2d6dbac 100644 --- a/include/usb_mux.h +++ b/include/usb_mux.h @@ -27,7 +27,7 @@ typedef uint8_t mux_state_t; */ #define MUX_PORT_AND_ADDR(port, addr) ((port << 8) | (addr & 0xFF)) #define MUX_PORT(port) (usb_muxes[port].port_addr >> 8) -#define MUX_ADDR(port) (usb_muxes[port].port_addr & 0xFF) +#define MUX_ADDR__7bf(port) (usb_muxes[port].port_addr & 0xFF) /* Mux state attributes */ /* TODO: Directly use USB_PD_MUX_* everywhere and remove these 3 defines */ @@ -143,29 +143,31 @@ extern struct usb_mux usb_muxes[]; static inline int mux_write(int port, int reg, int val) { return usb_muxes[port].flags & USB_MUX_FLAG_NOT_TCPC - ? i2c_write8(MUX_PORT(port), MUX_ADDR(port), reg, val) - : tcpc_write(port, reg, val); + ? i2c_write8__7bf(MUX_PORT(port), MUX_ADDR__7bf(port), reg, val) + : tcpc_write(port, reg, val); } static inline int mux_read(int port, int reg, int *val) { return usb_muxes[port].flags & USB_MUX_FLAG_NOT_TCPC - ? i2c_read8(MUX_PORT(port), MUX_ADDR(port), reg, val) - : tcpc_read(port, reg, val); + ? i2c_read8__7bf(MUX_PORT(port), MUX_ADDR__7bf(port), reg, val) + : tcpc_read(port, reg, val); } static inline int mux_write16(int port, int reg, int val) { return usb_muxes[port].flags & USB_MUX_FLAG_NOT_TCPC - ? i2c_write16(MUX_PORT(port), MUX_ADDR(port), reg, val) - : tcpc_write16(port, reg, val); + ? i2c_write16__7bf(MUX_PORT(port), MUX_ADDR__7bf(port), + reg, val) + : tcpc_write16(port, reg, val); } static inline int mux_read16(int port, int reg, int *val) { return usb_muxes[port].flags & USB_MUX_FLAG_NOT_TCPC - ? i2c_read16(MUX_PORT(port), MUX_ADDR(port), reg, val) - : tcpc_read16(port, reg, val); + ? i2c_read16__7bf(MUX_PORT(port), MUX_ADDR__7bf(port), + reg, val) + : tcpc_read16(port, reg, val); } #endif /* CONFIG_USB_PD_TCPM_MUX */ diff --git a/include/usb_pd_tcpc.h b/include/usb_pd_tcpc.h index f5785921a4..ba911f00ad 100644 --- a/include/usb_pd_tcpc.h +++ b/include/usb_pd_tcpc.h @@ -18,9 +18,11 @@ #ifdef TCPCI_I2C_SLAVE /* Convert TCPC address to type-C port number */ -#define TCPC_ADDR_TO_PORT(addr) (((addr) - CONFIG_TCPC_I2C_BASE_ADDR) >> 1) +#define TCPC_ADDR_TO_PORT(addr) ((addr) \ + - I2C_GET_ADDR__7b(CONFIG_TCPC_I2C_BASE_ADDR__7BF)) /* Check if the i2c address belongs to TCPC */ -#define ADDR_IS_TCPC(addr) (((addr) & 0xfc) == CONFIG_TCPC_I2C_BASE_ADDR) +#define ADDR_IS_TCPC(addr) (((addr) & 0x7E) \ + == I2C_GET_ADDR__7b(CONFIG_TCPC_I2C_BASE_ADDR__7BF)) #endif /** diff --git a/include/usbc_ppc.h b/include/usbc_ppc.h index fbd4385afc..3e74f37956 100644 --- a/include/usbc_ppc.h +++ b/include/usbc_ppc.h @@ -141,7 +141,7 @@ struct ppc_drv { struct ppc_config_t { int i2c_port; - int i2c_addr; + uint16_t i2c_addr__7bf; const struct ppc_drv *drv; }; diff --git a/include/virtual_battery.h b/include/virtual_battery.h index c686a76172..99fb30e03b 100644 --- a/include/virtual_battery.h +++ b/include/virtual_battery.h @@ -7,7 +7,7 @@ #define __CROS_EC_VIRTUAL_BATTERY_H #if defined(CONFIG_I2C_VIRTUAL_BATTERY) && defined(CONFIG_BATTERY_SMART) -#define VIRTUAL_BATTERY_ADDR BATTERY_ADDR +#define VIRTUAL_BATTERY_ADDR__7bf BATTERY_ADDR__7bf #endif /** diff --git a/test/battery_get_params_smart.c b/test/battery_get_params_smart.c index 9a1eeda825..5ee62d3682 100644 --- a/test/battery_get_params_smart.c +++ b/test/battery_get_params_smart.c @@ -40,12 +40,14 @@ int sb_read(int cmd, int *param) if (read_count >= fail_on_first && read_count <= fail_on_last) return EC_ERROR_UNKNOWN; - return i2c_read16(I2C_PORT_BATTERY, BATTERY_ADDR, cmd, param); + return i2c_read16__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + cmd, param); } int sb_write(int cmd, int param) { write_count++; - return i2c_write16(I2C_PORT_BATTERY, BATTERY_ADDR, cmd, param); + return i2c_write16__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf, + cmd, param); } diff --git a/test/sbs_charging_v2.c b/test/sbs_charging_v2.c index 06af4b4f00..7270173997 100644 --- a/test/sbs_charging_v2.c +++ b/test/sbs_charging_v2.c @@ -180,7 +180,7 @@ static int test_charge_state(void) /* Detach battery, charging error */ ccprintf("[CHARGING TEST] Detach battery\n"); - TEST_ASSERT(test_detach_i2c(I2C_PORT_BATTERY, BATTERY_ADDR) == + TEST_ASSERT(test_detach_i2c__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf) == EC_SUCCESS); msleep(BATTERY_DETACH_DELAY); state = wait_charging_state(); @@ -188,7 +188,7 @@ static int test_charge_state(void) /* Attach battery again, charging */ ccprintf("[CHARGING TEST] Attach battery\n"); - test_attach_i2c(I2C_PORT_BATTERY, BATTERY_ADDR); + test_attach_i2c__7bf(I2C_PORT_BATTERY, BATTERY_ADDR__7bf); /* And changing full capacity should trigger a host event */ ev_clear(EC_HOST_EVENT_BATTERY); sb_write(SB_FULL_CHARGE_CAPACITY, 0xeff0); diff --git a/util/ectool.c b/util/ectool.c index 6b2b834742..fa08cb7917 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -25,6 +25,7 @@ #include "ec_flash.h" #include "ec_version.h" #include "ectool.h" +#include "i2c.h" #include "lightbar.h" #include "lock/gec_lock.h" #include "misc_util.h" @@ -6341,7 +6342,8 @@ int cmd_locate_chip(int argc, char *argv[]) * (firmware_ECCbiEeprom) still passes. It may silently skip the test. */ printf("Bus: %s; Port: %d; Address: 0x%02x (7-bit format)\n", - bus_type[r.bus_type], r.i2c_info.port, r.i2c_info.addr); + bus_type[r.bus_type], r.i2c_info.port, + I2C_GET_ADDR(r.i2c_info.addr_flags)); printf("reserved: 0x%x\n", r.reserved); |