diff options
author | Yidi Lin <yidilin@chromium.org> | 2024-09-05 17:10:33 +0800 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2024-09-12 16:57:11 +0000 |
commit | f3b698462975a5b23004affca45a6dd1a3ff46a6 (patch) | |
tree | a94a1af1b963d6140081e5c4b8c2e4d50304d974 | |
parent | ffc48178de6eee2e4efd33b4943f922475badc71 (diff) |
soc/mediatek: Remove redundant struct pad_func and PAD_* definitions
Clean up redundant `struct pad_func` and `PAD_*` definitions. This patch
also refactors the PAD_* macros by,
- Repurposing PAD_FUNC and dropping PAD_FUNC_SEL.
- Adding PAD_FUNC_DOWN and PAD_FUNC_UP to avoid the implicit
initialization.
BUG=none
TEST=emerge-{elm, kukui, asurada, cherry, corsola, geralt, rauru} coreboot
Change-Id: I12b8f6749015bff52988208a7c3aa01e952612c6
Signed-off-by: Yidi Lin <yidilin@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84222
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | src/mainboard/google/cherry/bootblock.c | 20 | ||||
-rw-r--r-- | src/soc/mediatek/common/flash_controller.c | 12 | ||||
-rw-r--r-- | src/soc/mediatek/common/include/soc/flash_controller_common.h | 8 | ||||
-rw-r--r-- | src/soc/mediatek/common/include/soc/gpio_common.h | 12 | ||||
-rw-r--r-- | src/soc/mediatek/mt8183/i2c.c | 37 | ||||
-rw-r--r-- | src/soc/mediatek/mt8183/spi.c | 52 | ||||
-rw-r--r-- | src/soc/mediatek/mt8186/i2c.c | 49 | ||||
-rw-r--r-- | src/soc/mediatek/mt8186/spi.c | 86 | ||||
-rw-r--r-- | src/soc/mediatek/mt8188/i2c.c | 37 | ||||
-rw-r--r-- | src/soc/mediatek/mt8188/spi.c | 54 | ||||
-rw-r--r-- | src/soc/mediatek/mt8192/i2c.c | 49 | ||||
-rw-r--r-- | src/soc/mediatek/mt8192/spi.c | 58 | ||||
-rw-r--r-- | src/soc/mediatek/mt8195/i2c.c | 41 | ||||
-rw-r--r-- | src/soc/mediatek/mt8195/pcie.c | 21 | ||||
-rw-r--r-- | src/soc/mediatek/mt8195/spi.c | 46 | ||||
-rw-r--r-- | src/soc/mediatek/mt8196/i2c.c | 69 | ||||
-rw-r--r-- | src/soc/mediatek/mt8196/spi.c | 12 |
17 files changed, 283 insertions, 380 deletions
diff --git a/src/mainboard/google/cherry/bootblock.c b/src/mainboard/google/cherry/bootblock.c index 5091dcc6e5..39d5aa093e 100644 --- a/src/mainboard/google/cherry/bootblock.c +++ b/src/mainboard/google/cherry/bootblock.c @@ -9,30 +9,22 @@ #include "gpio.h" -struct pad_func { - u8 pin_id; - u8 func; -}; - -#define PAD_FUNC(name, func) {PAD_##name##_ID, PAD_##name##_FUNC_##func} - static void nor_set_gpio_pinmux(void) { const struct pad_func *ptr = NULL; /* GPIO 140 ~ 143 */ struct pad_func nor_pinmux[] = { - PAD_FUNC(SPIM2_CSB, SPINOR_CS), - PAD_FUNC(SPIM2_CLK, SPINOR_CK), - PAD_FUNC(SPIM2_MO, SPINOR_IO0), - PAD_FUNC(SPIM2_MI, SPINOR_IO1), + PAD_FUNC_UP(SPIM2_CSB, SPINOR_CS), + PAD_FUNC_UP(SPIM2_CLK, SPINOR_CK), + PAD_FUNC_UP(SPIM2_MO, SPINOR_IO0), + PAD_FUNC_UP(SPIM2_MI, SPINOR_IO1), }; ptr = nor_pinmux; for (size_t i = 0; i < ARRAY_SIZE(nor_pinmux); i++) { - gpio_set_pull((gpio_t){.id = ptr[i].pin_id}, - GPIO_PULL_ENABLE, GPIO_PULL_UP); - gpio_set_mode((gpio_t){.id = ptr[i].pin_id}, ptr[i].func); + gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, ptr[i].select); + gpio_set_mode(ptr[i].gpio, ptr[i].func); } } diff --git a/src/soc/mediatek/common/flash_controller.c b/src/soc/mediatek/common/flash_controller.c index 4eaa37d3c3..4f0d4b0dfa 100644 --- a/src/soc/mediatek/common/flash_controller.c +++ b/src/soc/mediatek/common/flash_controller.c @@ -224,20 +224,20 @@ int mtk_spi_flash_probe(const struct spi_slave *spi, return 0; } -int mtk_snfc_init_pad_func(const struct mtk_snfc_pad_func *pad_func, enum gpio_drv strength) +int mtk_snfc_init_pad_func(const struct pad_func *pad, enum gpio_drv strength) { - gpio_set_pull(pad_func->gpio, GPIO_PULL_ENABLE, pad_func->select); - gpio_set_mode(pad_func->gpio, pad_func->func); + gpio_set_pull(pad->gpio, GPIO_PULL_ENABLE, pad->select); + gpio_set_mode(pad->gpio, pad->func); - if (gpio_set_driving(pad_func->gpio, strength) < 0) { + if (gpio_set_driving(pad->gpio, strength) < 0) { printk(BIOS_ERR, "%s: failed to set pin drive to %d for %d\n", - __func__, strength, pad_func->gpio.id); + __func__, strength, pad->gpio.id); return -1; } printk(BIOS_DEBUG, "%s: got pin drive: %#x\n", __func__, - gpio_get_driving(pad_func->gpio)); + gpio_get_driving(pad->gpio)); return 0; } diff --git a/src/soc/mediatek/common/include/soc/flash_controller_common.h b/src/soc/mediatek/common/include/soc/flash_controller_common.h index c71ae1773d..69ff3c76e7 100644 --- a/src/soc/mediatek/common/include/soc/flash_controller_common.h +++ b/src/soc/mediatek/common/include/soc/flash_controller_common.h @@ -76,13 +76,7 @@ struct mtk_nor_regs { }; check_member(mtk_nor_regs, fdma_end_dadr, 0x724); -struct mtk_snfc_pad_func { - gpio_t gpio; - u8 func; - enum pull_select select; -}; - int mtk_spi_flash_probe(const struct spi_slave *spi, struct spi_flash *flash); -int mtk_snfc_init_pad_func(const struct mtk_snfc_pad_func *pad_func, enum gpio_drv strength); +int mtk_snfc_init_pad_func(const struct pad_func *pad, enum gpio_drv strength); #endif /* __SOC_MEDIATEK_COMMON_FLASH_CONTROLLER_COMMON_H__ */ diff --git a/src/soc/mediatek/common/include/soc/gpio_common.h b/src/soc/mediatek/common/include/soc/gpio_common.h index 870dac59ea..dfac6f959e 100644 --- a/src/soc/mediatek/common/include/soc/gpio_common.h +++ b/src/soc/mediatek/common/include/soc/gpio_common.h @@ -50,6 +50,18 @@ struct gpio_drv_info { uint8_t width; }; +struct pad_func { + gpio_t gpio; + u8 func; + enum pull_select select; +}; + +#define GPIO_FUNC(name, func) PAD_##name##_FUNC_##func +#define PAD_FUNC(name, func, select) { GPIO(name), GPIO_FUNC(name, func), select } +#define PAD_FUNC_DOWN(name, func) PAD_FUNC(name, func, GPIO_PULL_DOWN) +#define PAD_FUNC_UP(name, func) PAD_FUNC(name, func, GPIO_PULL_UP) +#define PAD_FUNC_GPIO(name) { GPIO(name), 0 } + void gpio_set_pull(gpio_t gpio, enum pull_enable enable, enum pull_select select); void gpio_set_mode(gpio_t gpio, int mode); diff --git a/src/soc/mediatek/mt8183/i2c.c b/src/soc/mediatek/mt8183/i2c.c index 8bd7c36395..c23377e8af 100644 --- a/src/soc/mediatek/mt8183/i2c.c +++ b/src/soc/mediatek/mt8183/i2c.c @@ -53,41 +53,34 @@ struct mtk_i2c mtk_i2c_bus_controller[] = { _Static_assert(ARRAY_SIZE(mtk_i2c_bus_controller) == I2C_BUS_NUMBER, "Wrong size of mtk_i2c_bus_controller"); -struct pad_func { - gpio_t gpio; - u8 func; -}; - -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func} - static const struct pad_func i2c_funcs[I2C_BUS_NUMBER][2] = { { - PAD_FUNC(SDA0, SDA0), - PAD_FUNC(SCL0, SCL0), + PAD_FUNC_UP(SDA0, SDA0), + PAD_FUNC_UP(SCL0, SCL0), }, { - PAD_FUNC(SDA1, SDA1), - PAD_FUNC(SCL1, SCL1), + PAD_FUNC_UP(SDA1, SDA1), + PAD_FUNC_UP(SCL1, SCL1), }, { - PAD_FUNC(SDA2, SDA2), - PAD_FUNC(SCL2, SCL2), + PAD_FUNC_UP(SDA2, SDA2), + PAD_FUNC_UP(SCL2, SCL2), }, { - PAD_FUNC(SDA3, SDA3), - PAD_FUNC(SCL3, SCL3), + PAD_FUNC_UP(SDA3, SDA3), + PAD_FUNC_UP(SCL3, SCL3), }, { - PAD_FUNC(SDA4, SDA4), - PAD_FUNC(SCL4, SCL4), + PAD_FUNC_UP(SDA4, SDA4), + PAD_FUNC_UP(SCL4, SCL4), }, { - PAD_FUNC(SDA5, SDA5), - PAD_FUNC(SCL5, SCL5), + PAD_FUNC_UP(SDA5, SDA5), + PAD_FUNC_UP(SCL5, SCL5), }, { - PAD_FUNC(SDA6, SDA6), - PAD_FUNC(SCL6, SCL6), + PAD_FUNC_UP(SDA6, SDA6), + PAD_FUNC_UP(SCL6, SCL6), }, }; @@ -98,7 +91,7 @@ static void mtk_i2c_set_gpio_pinmux(uint8_t bus) const struct pad_func *ptr = i2c_funcs[bus]; for (size_t i = 0; i < 2; i++) { gpio_set_mode(ptr[i].gpio, ptr[i].func); - gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, GPIO_PULL_UP); + gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, ptr[i].select); } } diff --git a/src/soc/mediatek/mt8183/spi.c b/src/soc/mediatek/mt8183/spi.c index 9404f93c13..bf1b3b5a1c 100644 --- a/src/soc/mediatek/mt8183/spi.c +++ b/src/soc/mediatek/mt8183/spi.c @@ -35,58 +35,50 @@ struct mtk_spi_bus spi_bus[SPI_BUS_NUMBER] = { } }; -struct pad_func { - u8 pin_id; - u8 func; -}; - -#define PAD_FUNC(name, func) {PAD_##name##_ID, PAD_##name##_FUNC_##func} -#define PAD_FUNC_GPIO(name) {PAD_##name##_ID, 0} - static const struct pad_func pad0_funcs[SPI_BUS_NUMBER][4] = { { - PAD_FUNC(SPI_MI, SPI0_MI), + PAD_FUNC_DOWN(SPI_MI, SPI0_MI), PAD_FUNC_GPIO(SPI_CSB), - PAD_FUNC(SPI_MO, SPI0_MO), - PAD_FUNC(SPI_CLK, SPI0_CLK), + PAD_FUNC_DOWN(SPI_MO, SPI0_MO), + PAD_FUNC_DOWN(SPI_CLK, SPI0_CLK), }, { - PAD_FUNC(SPI1_MI, SPI1_A_MI), + PAD_FUNC_DOWN(SPI1_MI, SPI1_A_MI), PAD_FUNC_GPIO(SPI1_CSB), - PAD_FUNC(SPI1_MO, SPI1_A_MO), - PAD_FUNC(SPI1_CLK, SPI1_A_CLK), + PAD_FUNC_DOWN(SPI1_MO, SPI1_A_MO), + PAD_FUNC_DOWN(SPI1_CLK, SPI1_A_CLK), }, { - PAD_FUNC(KPCOL1, SPI2_MI), + PAD_FUNC_DOWN(KPCOL1, SPI2_MI), PAD_FUNC_GPIO(EINT0), - PAD_FUNC(EINT1, SPI2_MO), - PAD_FUNC(EINT2, SPI2_CLK), + PAD_FUNC_DOWN(EINT1, SPI2_MO), + PAD_FUNC_DOWN(EINT2, SPI2_CLK), }, { - PAD_FUNC(DPI_D8, SPI3_MI), + PAD_FUNC_DOWN(DPI_D8, SPI3_MI), PAD_FUNC_GPIO(DPI_D9), - PAD_FUNC(DPI_D10, SPI3_MO), - PAD_FUNC(DPI_D11, SPI3_CLK), + PAD_FUNC_DOWN(DPI_D10, SPI3_MO), + PAD_FUNC_DOWN(DPI_D11, SPI3_CLK), }, { - PAD_FUNC(DPI_D4, SPI4_MI), + PAD_FUNC_DOWN(DPI_D4, SPI4_MI), PAD_FUNC_GPIO(DPI_D5), - PAD_FUNC(DPI_D6, SPI4_MO), - PAD_FUNC(DPI_D7, SPI4_CLK), + PAD_FUNC_DOWN(DPI_D6, SPI4_MO), + PAD_FUNC_DOWN(DPI_D7, SPI4_CLK), }, { - PAD_FUNC(DPI_D0, SPI5_MI), + PAD_FUNC_DOWN(DPI_D0, SPI5_MI), PAD_FUNC_GPIO(DPI_D1), - PAD_FUNC(DPI_D2, SPI5_MO), - PAD_FUNC(DPI_D3, SPI5_CLK), + PAD_FUNC_DOWN(DPI_D2, SPI5_MO), + PAD_FUNC_DOWN(DPI_D3, SPI5_CLK), } }; static const struct pad_func bus1_pad1_funcs[4] = { - PAD_FUNC(EINT7, SPI1_B_MI), + PAD_FUNC_DOWN(EINT7, SPI1_B_MI), PAD_FUNC_GPIO(EINT8), - PAD_FUNC(EINT9, SPI1_B_MO), - PAD_FUNC(EINT10, SPI1_B_CLK), + PAD_FUNC_DOWN(EINT9, SPI1_B_MO), + PAD_FUNC_DOWN(EINT10, SPI1_B_CLK), }; void mtk_spi_set_gpio_pinmux(unsigned int bus, enum spi_pad_mask pad_select) @@ -100,7 +92,7 @@ void mtk_spi_set_gpio_pinmux(unsigned int bus, enum spi_pad_mask pad_select) ptr = bus1_pad1_funcs; } for (int i = 0; i < 4; i++) - gpio_set_mode((gpio_t){.id = ptr[i].pin_id}, ptr[i].func); + gpio_set_mode(ptr[i].gpio, ptr[i].func); } const struct spi_ctrlr_buses spi_ctrlr_bus_map[] = { diff --git a/src/soc/mediatek/mt8186/i2c.c b/src/soc/mediatek/mt8186/i2c.c index 9e7e4b3c04..536627583e 100644 --- a/src/soc/mediatek/mt8186/i2c.c +++ b/src/soc/mediatek/mt8186/i2c.c @@ -58,53 +58,46 @@ struct mtk_i2c mtk_i2c_bus_controller[] = { _Static_assert(ARRAY_SIZE(mtk_i2c_bus_controller) == I2C_BUS_NUMBER, "Wrong size of mtk_i2c_bus_controller"); -struct pad_func { - gpio_t gpio; - u8 func; -}; - -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func} - static const struct pad_func i2c_funcs[I2C_BUS_NUMBER][2] = { [0] = { - PAD_FUNC(SDA0, SDA0), - PAD_FUNC(SCL0, SCL0), + PAD_FUNC_UP(SDA0, SDA0), + PAD_FUNC_UP(SCL0, SCL0), }, [1] = { - PAD_FUNC(SDA1, SDA1), - PAD_FUNC(SCL1, SCL1), + PAD_FUNC_UP(SDA1, SDA1), + PAD_FUNC_UP(SCL1, SCL1), }, [2] = { - PAD_FUNC(SDA2, SDA2), - PAD_FUNC(SCL2, SCL2), + PAD_FUNC_UP(SDA2, SDA2), + PAD_FUNC_UP(SCL2, SCL2), }, [3] = { - PAD_FUNC(SDA3, SDA3), - PAD_FUNC(SCL3, SCL3), + PAD_FUNC_UP(SDA3, SDA3), + PAD_FUNC_UP(SCL3, SCL3), }, [4] = { - PAD_FUNC(SDA4, SDA4), - PAD_FUNC(SCL4, SCL4), + PAD_FUNC_UP(SDA4, SDA4), + PAD_FUNC_UP(SCL4, SCL4), }, [5] = { - PAD_FUNC(SDA5, SDA5), - PAD_FUNC(SCL5, SCL5), + PAD_FUNC_UP(SDA5, SDA5), + PAD_FUNC_UP(SCL5, SCL5), }, [6] = { - PAD_FUNC(SDA6, SDA6), - PAD_FUNC(SCL6, SCL6), + PAD_FUNC_UP(SDA6, SDA6), + PAD_FUNC_UP(SCL6, SCL6), }, [7] = { - PAD_FUNC(SDA7, SDA7), - PAD_FUNC(SCL7, SCL7), + PAD_FUNC_UP(SDA7, SDA7), + PAD_FUNC_UP(SCL7, SCL7), }, [8] = { - PAD_FUNC(SDA8, SDA8), - PAD_FUNC(SCL8, SCL8), + PAD_FUNC_UP(SDA8, SDA8), + PAD_FUNC_UP(SCL8, SCL8), }, [9] = { - PAD_FUNC(SDA9, SDA9), - PAD_FUNC(SCL9, SCL9), + PAD_FUNC_UP(SDA9, SDA9), + PAD_FUNC_UP(SCL9, SCL9), }, }; @@ -115,7 +108,7 @@ static void mtk_i2c_set_gpio_pinmux(uint8_t bus) const struct pad_func *ptr = i2c_funcs[bus]; for (size_t i = 0; i < 2; i++) { gpio_set_mode(ptr[i].gpio, ptr[i].func); - gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, GPIO_PULL_UP); + gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, ptr[i].select); } } diff --git a/src/soc/mediatek/mt8186/spi.c b/src/soc/mediatek/mt8186/spi.c index adbd437e4a..70b9ecd980 100644 --- a/src/soc/mediatek/mt8186/spi.c +++ b/src/soc/mediatek/mt8186/spi.c @@ -41,81 +41,71 @@ struct mtk_spi_bus spi_bus[SPI_BUS_NUMBER] = { } }; -struct pad_func { - gpio_t gpio; - u8 func; - enum pull_select select; -}; - -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func, GPIO_PULL_DOWN} -#define PAD_FUNC_SEL(name, func, sel) {GPIO(name), PAD_##name##_FUNC_##func, sel} -#define PAD_FUNC_GPIO(name) {GPIO(name), 0, GPIO_PULL_DOWN} - static const struct pad_func pad0_funcs[SPI_BUS_NUMBER][4] = { { - PAD_FUNC(SPI0_MI, SPI0_MI_A), + PAD_FUNC_DOWN(SPI0_MI, SPI0_MI_A), PAD_FUNC_GPIO(SPI0_CSB), - PAD_FUNC(SPI0_MO, SPI0_MO_A), - PAD_FUNC(SPI0_CLK, SPI0_CLK_A), + PAD_FUNC_DOWN(SPI0_MO, SPI0_MO_A), + PAD_FUNC_DOWN(SPI0_CLK, SPI0_CLK_A), }, { - PAD_FUNC(SPI1_MI, SPI1_MI_A), + PAD_FUNC_DOWN(SPI1_MI, SPI1_MI_A), PAD_FUNC_GPIO(SPI1_CSB), - PAD_FUNC(SPI1_MO, SPI1_MO_A), - PAD_FUNC(SPI1_CLK, SPI1_CLK_A), + PAD_FUNC_DOWN(SPI1_MO, SPI1_MO_A), + PAD_FUNC_DOWN(SPI1_CLK, SPI1_CLK_A), }, { - PAD_FUNC(SPI2_MI, SPI2_MI_A), + PAD_FUNC_DOWN(SPI2_MI, SPI2_MI_A), PAD_FUNC_GPIO(SPI2_CSB), - PAD_FUNC(SPI2_MO, SPI2_MO_A), - PAD_FUNC(SPI2_CK, SPI2_CLK_A), + PAD_FUNC_DOWN(SPI2_MO, SPI2_MO_A), + PAD_FUNC_DOWN(SPI2_CK, SPI2_CLK_A), }, { - PAD_FUNC(SPI3_MI, SPI3_MI), + PAD_FUNC_DOWN(SPI3_MI, SPI3_MI), PAD_FUNC_GPIO(SPI3_CSB), - PAD_FUNC(SPI3_MO, SPI3_MO), - PAD_FUNC(SPI3_CLK, SPI3_CLK), + PAD_FUNC_DOWN(SPI3_MO, SPI3_MO), + PAD_FUNC_DOWN(SPI3_CLK, SPI3_CLK), }, { - PAD_FUNC(EINT13, SPI4_MI_A), + PAD_FUNC_DOWN(EINT13, SPI4_MI_A), PAD_FUNC_GPIO(EINT11), - PAD_FUNC(EINT12, SPI4_MO_A), - PAD_FUNC(EINT10, SPI4_CLK_A), + PAD_FUNC_DOWN(EINT12, SPI4_MO_A), + PAD_FUNC_DOWN(EINT10, SPI4_CLK_A), }, { - PAD_FUNC(SPI5_MI, SPI5_MI), + PAD_FUNC_DOWN(SPI5_MI, SPI5_MI), PAD_FUNC_GPIO(SPI5_CSB), - PAD_FUNC(SPI5_MO, SPI5_MO), - PAD_FUNC(SPI5_CLK, SPI5_CLK), + PAD_FUNC_DOWN(SPI5_MO, SPI5_MO), + PAD_FUNC_DOWN(SPI5_CLK, SPI5_CLK), }, }; static const struct pad_func pad1_funcs[SPI_BUS_NUMBER][4] = { { - PAD_FUNC(EINT3, SPI0_MI_B), + PAD_FUNC_DOWN(EINT3, SPI0_MI_B), PAD_FUNC_GPIO(EINT1), - PAD_FUNC(EINT2, SPI0_MO_B), - PAD_FUNC(EINT0, SPI0_CLK_B), + PAD_FUNC_DOWN(EINT2, SPI0_MO_B), + PAD_FUNC_DOWN(EINT0, SPI0_CLK_B), }, { - PAD_FUNC(EINT9, SPI1_MI_B), + PAD_FUNC_DOWN(EINT9, SPI1_MI_B), PAD_FUNC_GPIO(EINT7), - PAD_FUNC(EINT8, SPI1_MO_B), - PAD_FUNC(EINT6, SPI1_CLK_B), + PAD_FUNC_DOWN(EINT8, SPI1_MO_B), + PAD_FUNC_DOWN(EINT6, SPI1_CLK_B), }, { - PAD_FUNC(CAM_PDN1, SPI2_MI_B), + PAD_FUNC_DOWN(CAM_PDN1, SPI2_MI_B), PAD_FUNC_GPIO(CAM_PDN0), - PAD_FUNC(CAM_RST0, SPI2_MO_B), - PAD_FUNC(EINT18, SPI2_CLK_B), + PAD_FUNC_DOWN(CAM_RST0, SPI2_MO_B), + PAD_FUNC_DOWN(EINT18, SPI2_CLK_B), }, { }, { - PAD_FUNC(I2S2_DI, SPI4_MI_B), + PAD_FUNC_DOWN(I2S2_DI, SPI4_MI_B), PAD_FUNC_GPIO(I2S2_BCK), - PAD_FUNC(I2S2_LRCK, SPI4_MO_B), - PAD_FUNC(I2S2_MCK, SPI4_CLK_B), + PAD_FUNC_DOWN(I2S2_LRCK, SPI4_MO_B), + PAD_FUNC_DOWN(I2S2_MCK, SPI4_CLK_B), }, { }, @@ -124,17 +114,17 @@ static const struct pad_func pad1_funcs[SPI_BUS_NUMBER][4] = { static const struct pad_func nor_pinmux[SPI_NOR_GPIO_SET_NUM][4] = { /* GPIO 36 ~ 39 */ [SPI_NOR_GPIO_SET0] = { - PAD_FUNC_SEL(SPI0_CLK, SPINOR_CK, GPIO_PULL_DOWN), - PAD_FUNC_SEL(SPI0_CSB, SPINOR_CS, GPIO_PULL_UP), - PAD_FUNC_SEL(SPI0_MO, SPINOR_IO0, GPIO_PULL_DOWN), - PAD_FUNC_SEL(SPI0_MI, SPINOR_IO1, GPIO_PULL_DOWN), + PAD_FUNC(SPI0_CLK, SPINOR_CK, GPIO_PULL_DOWN), + PAD_FUNC(SPI0_CSB, SPINOR_CS, GPIO_PULL_UP), + PAD_FUNC(SPI0_MO, SPINOR_IO0, GPIO_PULL_DOWN), + PAD_FUNC(SPI0_MI, SPINOR_IO1, GPIO_PULL_DOWN), }, /* GPIO 61 ~ 64 */ [SPI_NOR_GPIO_SET1] = { - PAD_FUNC_SEL(TDM_RX_BCK, SPINOR_CK, GPIO_PULL_DOWN), - PAD_FUNC_SEL(TDM_RX_MCLK, SPINOR_CS, GPIO_PULL_UP), - PAD_FUNC_SEL(TDM_RX_DATA0, SPINOR_IO0, GPIO_PULL_DOWN), - PAD_FUNC_SEL(TDM_RX_DATA1, SPINOR_IO1, GPIO_PULL_DOWN), + PAD_FUNC(TDM_RX_BCK, SPINOR_CK, GPIO_PULL_DOWN), + PAD_FUNC(TDM_RX_MCLK, SPINOR_CS, GPIO_PULL_UP), + PAD_FUNC(TDM_RX_DATA0, SPINOR_IO0, GPIO_PULL_DOWN), + PAD_FUNC(TDM_RX_DATA1, SPINOR_IO1, GPIO_PULL_DOWN), }, }; diff --git a/src/soc/mediatek/mt8188/i2c.c b/src/soc/mediatek/mt8188/i2c.c index 1de37c5052..edfe510202 100644 --- a/src/soc/mediatek/mt8188/i2c.c +++ b/src/soc/mediatek/mt8188/i2c.c @@ -53,41 +53,34 @@ struct mtk_i2c mtk_i2c_bus_controller[] = { _Static_assert(ARRAY_SIZE(mtk_i2c_bus_controller) == I2C_BUS_NUMBER, "Wrong size of mtk_i2c_bus_controller"); -struct pad_func { - gpio_t gpio; - u8 func; -}; - -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func} - static const struct pad_func i2c_funcs[I2C_BUS_NUMBER][2] = { [0] = { - PAD_FUNC(SDA0, SDA0), - PAD_FUNC(SCL0, SCL0), + PAD_FUNC_UP(SDA0, SDA0), + PAD_FUNC_UP(SCL0, SCL0), }, [1] = { - PAD_FUNC(SDA1, SDA1), - PAD_FUNC(SCL1, SCL1), + PAD_FUNC_UP(SDA1, SDA1), + PAD_FUNC_UP(SCL1, SCL1), }, [2] = { - PAD_FUNC(SDA2, SDA2), - PAD_FUNC(SCL2, SCL2), + PAD_FUNC_UP(SDA2, SDA2), + PAD_FUNC_UP(SCL2, SCL2), }, [3] = { - PAD_FUNC(SDA3, SDA3), - PAD_FUNC(SCL3, SCL3), + PAD_FUNC_UP(SDA3, SDA3), + PAD_FUNC_UP(SCL3, SCL3), }, [4] = { - PAD_FUNC(SDA4, SDA4), - PAD_FUNC(SCL4, SCL4), + PAD_FUNC_UP(SDA4, SDA4), + PAD_FUNC_UP(SCL4, SCL4), }, [5] = { - PAD_FUNC(SDA5, SDA5), - PAD_FUNC(SCL5, SCL5), + PAD_FUNC_UP(SDA5, SDA5), + PAD_FUNC_UP(SCL5, SCL5), }, [6] = { - PAD_FUNC(SDA6, SDA6), - PAD_FUNC(SCL6, SCL6), + PAD_FUNC_UP(SDA6, SDA6), + PAD_FUNC_UP(SCL6, SCL6), }, }; @@ -98,7 +91,7 @@ static void mtk_i2c_set_gpio_pinmux(uint8_t bus) const struct pad_func *ptr = i2c_funcs[bus]; for (size_t i = 0; i < 2; i++) { gpio_set_mode(ptr[i].gpio, ptr[i].func); - gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, GPIO_PULL_UP); + gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, ptr[i].select); } } diff --git a/src/soc/mediatek/mt8188/spi.c b/src/soc/mediatek/mt8188/spi.c index 0596bb9b7f..994663d02c 100644 --- a/src/soc/mediatek/mt8188/spi.c +++ b/src/soc/mediatek/mt8188/spi.c @@ -41,61 +41,51 @@ struct mtk_spi_bus spi_bus[SPI_BUS_NUMBER] = { }, }; -struct pad_func { - gpio_t gpio; - u8 func; - enum pull_select select; -}; - -#define PAD_FUNC_SEL(name, func, sel) {GPIO(name), PAD_##name##_FUNC_##func, sel} -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func} -#define PAD_FUNC_GPIO(name) {GPIO(name), 0} - static const struct pad_func pad_funcs[SPI_BUS_NUMBER][4] = { { - PAD_FUNC(SPIM0_MISO, SPIM0_MISO), + PAD_FUNC_DOWN(SPIM0_MISO, SPIM0_MISO), PAD_FUNC_GPIO(SPIM0_CSB), - PAD_FUNC(SPIM0_MOSI, SPIM0_MOSI), - PAD_FUNC(SPIM0_CLK, SPIM0_CLK), + PAD_FUNC_DOWN(SPIM0_MOSI, SPIM0_MOSI), + PAD_FUNC_DOWN(SPIM0_CLK, SPIM0_CLK), }, { - PAD_FUNC(SPIM1_MISO, SPIM1_MISO), + PAD_FUNC_DOWN(SPIM1_MISO, SPIM1_MISO), PAD_FUNC_GPIO(SPIM1_CSB), - PAD_FUNC(SPIM1_MOSI, SPIM1_MOSI), - PAD_FUNC(SPIM1_CLK, SPIM1_CLK), + PAD_FUNC_DOWN(SPIM1_MOSI, SPIM1_MOSI), + PAD_FUNC_DOWN(SPIM1_CLK, SPIM1_CLK), }, { - PAD_FUNC(SPIM2_MISO, SPIM2_MISO), + PAD_FUNC_DOWN(SPIM2_MISO, SPIM2_MISO), PAD_FUNC_GPIO(SPIM2_CSB), - PAD_FUNC(SPIM2_MOSI, SPIM2_MOSI), - PAD_FUNC(SPIM2_CLK, SPIM2_CLK), + PAD_FUNC_DOWN(SPIM2_MOSI, SPIM2_MOSI), + PAD_FUNC_DOWN(SPIM2_CLK, SPIM2_CLK), }, { - PAD_FUNC(DPI_D15, SPIM3_MISO), + PAD_FUNC_DOWN(DPI_D15, SPIM3_MISO), PAD_FUNC_GPIO(DPI_D12), - PAD_FUNC(DPI_D14, SPIM3_MOSI), - PAD_FUNC(DPI_D13, SPIM3_CLK), + PAD_FUNC_DOWN(DPI_D14, SPIM3_MOSI), + PAD_FUNC_DOWN(DPI_D13, SPIM3_CLK), }, { - PAD_FUNC(GPIO15, SPIM4_MISO), + PAD_FUNC_DOWN(GPIO15, SPIM4_MISO), PAD_FUNC_GPIO(GPIO12), - PAD_FUNC(GPIO14, SPIM4_MOSI), - PAD_FUNC(GPIO13, SPIM4_CLK), + PAD_FUNC_DOWN(GPIO14, SPIM4_MOSI), + PAD_FUNC_DOWN(GPIO13, SPIM4_CLK), }, { - PAD_FUNC(GPIO03, SPIM5_MISO), + PAD_FUNC_DOWN(GPIO03, SPIM5_MISO), PAD_FUNC_GPIO(GPIO00), - PAD_FUNC(GPIO02, SPIM5_MOSI), - PAD_FUNC(GPIO01, SPIM5_CLK), + PAD_FUNC_DOWN(GPIO02, SPIM5_MOSI), + PAD_FUNC_DOWN(GPIO01, SPIM5_CLK), }, }; static const struct pad_func nor_pinmux[4] = { /* GPIO 125 ~ 128 */ - PAD_FUNC_SEL(DMIC1_CLK, SPINOR_CK, GPIO_PULL_DOWN), - PAD_FUNC_SEL(DMIC1_DAT, SPINOR_CS, GPIO_PULL_UP), - PAD_FUNC_SEL(DMIC1_DAT_R, SPINOR_IO0, GPIO_PULL_DOWN), - PAD_FUNC_SEL(DMIC2_CLK, SPINOR_IO1, GPIO_PULL_DOWN), + PAD_FUNC(DMIC1_CLK, SPINOR_CK, GPIO_PULL_DOWN), + PAD_FUNC(DMIC1_DAT, SPINOR_CS, GPIO_PULL_UP), + PAD_FUNC(DMIC1_DAT_R, SPINOR_IO0, GPIO_PULL_DOWN), + PAD_FUNC(DMIC2_CLK, SPINOR_IO1, GPIO_PULL_DOWN), }; void mtk_snfc_init(void) diff --git a/src/soc/mediatek/mt8192/i2c.c b/src/soc/mediatek/mt8192/i2c.c index a3f236ad8a..3e8c21e30a 100644 --- a/src/soc/mediatek/mt8192/i2c.c +++ b/src/soc/mediatek/mt8192/i2c.c @@ -66,53 +66,46 @@ struct mtk_i2c mtk_i2c_bus_controller[] = { _Static_assert(ARRAY_SIZE(mtk_i2c_bus_controller) == I2C_BUS_NUMBER, "Wrong size of mtk_i2c_bus_controller"); -struct pad_func { - gpio_t gpio; - u8 func; -}; - -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func} - static const struct pad_func i2c_funcs[I2C_BUS_NUMBER][2] = { [0] = { - PAD_FUNC(SDA0, SDA0), - PAD_FUNC(SCL0, SCL0), + PAD_FUNC_UP(SDA0, SDA0), + PAD_FUNC_UP(SCL0, SCL0), }, [1] = { - PAD_FUNC(SDA1, SDA1), - PAD_FUNC(SCL1, SCL1), + PAD_FUNC_UP(SDA1, SDA1), + PAD_FUNC_UP(SCL1, SCL1), }, [2] = { - PAD_FUNC(SDA2, SDA2), - PAD_FUNC(SCL2, SCL2), + PAD_FUNC_UP(SDA2, SDA2), + PAD_FUNC_UP(SCL2, SCL2), }, [3] = { - PAD_FUNC(SDA3, SDA3), - PAD_FUNC(SCL3, SCL3), + PAD_FUNC_UP(SDA3, SDA3), + PAD_FUNC_UP(SCL3, SCL3), }, [4] = { - PAD_FUNC(SDA4, SDA4), - PAD_FUNC(SCL4, SCL4), + PAD_FUNC_UP(SDA4, SDA4), + PAD_FUNC_UP(SCL4, SCL4), }, [5] = { - PAD_FUNC(SDA5, SDA5), - PAD_FUNC(SCL5, SCL5), + PAD_FUNC_UP(SDA5, SDA5), + PAD_FUNC_UP(SCL5, SCL5), }, [6] = { - PAD_FUNC(SDA6, SDA6), - PAD_FUNC(SCL6, SCL6), + PAD_FUNC_UP(SDA6, SDA6), + PAD_FUNC_UP(SCL6, SCL6), }, [7] = { - PAD_FUNC(SDA7, SDA7), - PAD_FUNC(SCL7, SCL7), + PAD_FUNC_UP(SDA7, SDA7), + PAD_FUNC_UP(SCL7, SCL7), }, [8] = { - PAD_FUNC(SDA8, SDA8), - PAD_FUNC(SCL8, SCL8), + PAD_FUNC_UP(SDA8, SDA8), + PAD_FUNC_UP(SCL8, SCL8), }, [9] = { - PAD_FUNC(SDA9, SDA9), - PAD_FUNC(SCL9, SCL9), + PAD_FUNC_UP(SDA9, SDA9), + PAD_FUNC_UP(SCL9, SCL9), }, }; @@ -123,7 +116,7 @@ static void mtk_i2c_set_gpio_pinmux(uint8_t bus) const struct pad_func *ptr = i2c_funcs[bus]; for (size_t i = 0; i < 2; i++) { gpio_set_mode(ptr[i].gpio, ptr[i].func); - gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, GPIO_PULL_UP); + gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, ptr[i].select); } } diff --git a/src/soc/mediatek/mt8192/spi.c b/src/soc/mediatek/mt8192/spi.c index 42e5b4aaa9..2b31d28baa 100644 --- a/src/soc/mediatek/mt8192/spi.c +++ b/src/soc/mediatek/mt8192/spi.c @@ -42,62 +42,54 @@ struct mtk_spi_bus spi_bus[SPI_BUS_NUMBER] = { } }; -struct pad_func { - u8 pin_id; - u8 func; -}; - -#define PAD_FUNC(name, func) {PAD_##name##_ID, PAD_##name##_FUNC_##func} -#define PAD_FUNC_GPIO(name) {PAD_##name##_ID, 0} - static const struct pad_func pad0_funcs[SPI_BUS_NUMBER][4] = { { - PAD_FUNC(SPI0_MI, SPI0_A_MI), + PAD_FUNC_DOWN(SPI0_MI, SPI0_A_MI), PAD_FUNC_GPIO(SPI0_CSB), - PAD_FUNC(SPI0_MO, SPI0_A_MO), - PAD_FUNC(SPI0_CLK, SPI0_A_CLK), + PAD_FUNC_DOWN(SPI0_MO, SPI0_A_MO), + PAD_FUNC_DOWN(SPI0_CLK, SPI0_A_CLK), }, { - PAD_FUNC(SPI1_MI, SPI1_A_MI), + PAD_FUNC_DOWN(SPI1_MI, SPI1_A_MI), PAD_FUNC_GPIO(SPI1_CSB), - PAD_FUNC(SPI1_MO, SPI1_A_MO), - PAD_FUNC(SPI1_CLK, SPI1_A_CLK), + PAD_FUNC_DOWN(SPI1_MO, SPI1_A_MO), + PAD_FUNC_DOWN(SPI1_CLK, SPI1_A_CLK), }, { - PAD_FUNC(SCP_SPI2_MI, SPI2_MI), + PAD_FUNC_DOWN(SCP_SPI2_MI, SPI2_MI), PAD_FUNC_GPIO(SCP_SPI2_CSB), - PAD_FUNC(SCP_SPI2_MO, SPI2_MO), - PAD_FUNC(SCP_SPI2_CK, SPI2_CLK), + PAD_FUNC_DOWN(SCP_SPI2_MO, SPI2_MO), + PAD_FUNC_DOWN(SCP_SPI2_CK, SPI2_CLK), }, { - PAD_FUNC(CAM_RST2, SPI3_MI), + PAD_FUNC_DOWN(CAM_RST2, SPI3_MI), PAD_FUNC_GPIO(CAM_RST1), - PAD_FUNC(CAM_PDN0, SPI3_MO), - PAD_FUNC(CAM_RST0, SPI3_CLK), + PAD_FUNC_DOWN(CAM_PDN0, SPI3_MO), + PAD_FUNC_DOWN(CAM_RST0, SPI3_CLK), }, { - PAD_FUNC(EINT6, SPI4_A_MI), + PAD_FUNC_DOWN(EINT6, SPI4_A_MI), PAD_FUNC_GPIO(EINT5), - PAD_FUNC(EINT7, SPI4_A_MO), - PAD_FUNC(EINT4, SPI4_A_CLK), + PAD_FUNC_DOWN(EINT7, SPI4_A_MO), + PAD_FUNC_DOWN(EINT4, SPI4_A_CLK), }, { - PAD_FUNC(SPI5_MI, SPI5_A_MI), + PAD_FUNC_DOWN(SPI5_MI, SPI5_A_MI), PAD_FUNC_GPIO(SPI5_CSB), - PAD_FUNC(SPI5_MO, SPI5_A_MO), - PAD_FUNC(SPI5_CLK, SPI5_A_CLK), + PAD_FUNC_DOWN(SPI5_MO, SPI5_A_MO), + PAD_FUNC_DOWN(SPI5_CLK, SPI5_A_CLK), }, { - PAD_FUNC(EINT2, SPI6_MI), + PAD_FUNC_DOWN(EINT2, SPI6_MI), PAD_FUNC_GPIO(EINT1), - PAD_FUNC(EINT3, SPI6_MO), - PAD_FUNC(EINT0, SPI6_CLK), + PAD_FUNC_DOWN(EINT3, SPI6_MO), + PAD_FUNC_DOWN(EINT0, SPI6_CLK), }, { - PAD_FUNC(EINT16, SPI7_A_MI), + PAD_FUNC_DOWN(EINT16, SPI7_A_MI), PAD_FUNC_GPIO(SDA0), - PAD_FUNC(EINT17, SPI7_A_MO), - PAD_FUNC(SCL0, SPI7_A_CLK), + PAD_FUNC_DOWN(EINT17, SPI7_A_MO), + PAD_FUNC_DOWN(SCL0, SPI7_A_CLK), } }; @@ -109,7 +101,7 @@ void mtk_spi_set_gpio_pinmux(unsigned int bus, enum spi_pad_mask pad_select) ptr = pad0_funcs[bus]; for (int i = 0; i < 4; i++) - gpio_set_mode((gpio_t){.id = ptr[i].pin_id}, ptr[i].func); + gpio_set_mode(ptr[i].gpio, ptr[i].func); } static const struct spi_ctrlr spi_flash_ctrlr = { diff --git a/src/soc/mediatek/mt8195/i2c.c b/src/soc/mediatek/mt8195/i2c.c index e4041075d3..1fa9608fb9 100644 --- a/src/soc/mediatek/mt8195/i2c.c +++ b/src/soc/mediatek/mt8195/i2c.c @@ -53,45 +53,38 @@ struct mtk_i2c mtk_i2c_bus_controller[] = { _Static_assert(ARRAY_SIZE(mtk_i2c_bus_controller) == I2C_BUS_NUMBER, "Wrong size of mtk_i2c_bus_controller"); -struct pad_func { - gpio_t gpio; - u8 func; -}; - -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func} - static const struct pad_func i2c_funcs[I2C_BUS_NUMBER][2] = { [0] = { - PAD_FUNC(SDA0, SDA0), - PAD_FUNC(SCL0, SCL0), + PAD_FUNC_UP(SDA0, SDA0), + PAD_FUNC_UP(SCL0, SCL0), }, [1] = { - PAD_FUNC(SDA1, SDA1), - PAD_FUNC(SCL1, SCL1), + PAD_FUNC_UP(SDA1, SDA1), + PAD_FUNC_UP(SCL1, SCL1), }, [2] = { - PAD_FUNC(SDA2, SDA2), - PAD_FUNC(SCL2, SCL2), + PAD_FUNC_UP(SDA2, SDA2), + PAD_FUNC_UP(SCL2, SCL2), }, [3] = { - PAD_FUNC(SDA3, SDA3), - PAD_FUNC(SCL3, SCL3), + PAD_FUNC_UP(SDA3, SDA3), + PAD_FUNC_UP(SCL3, SCL3), }, [4] = { - PAD_FUNC(SDA4, SDA4), - PAD_FUNC(SCL4, SCL4), + PAD_FUNC_UP(SDA4, SDA4), + PAD_FUNC_UP(SCL4, SCL4), }, [5] = { - PAD_FUNC(HDMIRX_SCL, SCL5), - PAD_FUNC(HDMIRX_SDA, SDA5), + PAD_FUNC_DOWN(HDMIRX_SCL, SCL5), + PAD_FUNC_DOWN(HDMIRX_SDA, SDA5), }, [6] = { - PAD_FUNC(HDMITX_SCL, SCL6), - PAD_FUNC(HDMITX_SDA, SDA6), + PAD_FUNC_DOWN(HDMITX_SCL, SCL6), + PAD_FUNC_DOWN(HDMITX_SDA, SDA6), }, [7] = { - PAD_FUNC(HDMIRX_HTPLG, SCL7), - PAD_FUNC(HDMIRX_PWR5V, SDA7), + PAD_FUNC_DOWN(HDMIRX_HTPLG, SCL7), + PAD_FUNC_DOWN(HDMIRX_PWR5V, SDA7), }, }; @@ -104,7 +97,7 @@ static void mtk_i2c_set_gpio_pinmux(uint8_t bus) for (size_t i = 0; i < 2; i++) { gpio_set_mode(ptr[i].gpio, ptr[i].func); if (bus <= I2C4) - gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, GPIO_PULL_UP); + gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, ptr[i].select); } } diff --git a/src/soc/mediatek/mt8195/pcie.c b/src/soc/mediatek/mt8195/pcie.c index 2676207db7..19b4c93a3b 100644 --- a/src/soc/mediatek/mt8195/pcie.c +++ b/src/soc/mediatek/mt8195/pcie.c @@ -10,23 +10,16 @@ #define PCIE_REG_BASE_PORT0 0x112f0000 -struct pad_func { - gpio_t gpio; - u8 func; -}; - -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func} - static const struct pad_func pcie_pins[2][3] = { { - PAD_FUNC(PCIE_WAKE_N, WAKEN), - PAD_FUNC(PCIE_PERESET_N, PERSTN), - PAD_FUNC(PCIE_CLKREQ_N, CLKREQN), + PAD_FUNC_UP(PCIE_WAKE_N, WAKEN), + PAD_FUNC_UP(PCIE_PERESET_N, PERSTN), + PAD_FUNC_UP(PCIE_CLKREQ_N, CLKREQN), }, { - PAD_FUNC(CMMCLK0, PERSTN_1), - PAD_FUNC(CMMCLK1, CLKREQN_1), - PAD_FUNC(CMMCLK2, WAKEN_1), + PAD_FUNC_UP(CMMCLK0, PERSTN_1), + PAD_FUNC_UP(CMMCLK1, CLKREQN_1), + PAD_FUNC_UP(CMMCLK2, WAKEN_1), }, }; @@ -37,7 +30,7 @@ static void mtk_pcie_set_pinmux(uint8_t port) for (i = 0; i < ARRAY_SIZE(pcie_pins[port]); i++) { gpio_set_mode(pins[i].gpio, pins[i].func); - gpio_set_pull(pins[i].gpio, GPIO_PULL_ENABLE, GPIO_PULL_UP); + gpio_set_pull(pins[i].gpio, GPIO_PULL_ENABLE, pins[i].select); } } diff --git a/src/soc/mediatek/mt8195/spi.c b/src/soc/mediatek/mt8195/spi.c index 98b0d54a08..6307ff8fae 100644 --- a/src/soc/mediatek/mt8195/spi.c +++ b/src/soc/mediatek/mt8195/spi.c @@ -34,50 +34,42 @@ struct mtk_spi_bus spi_bus[SPI_BUS_NUMBER] = { }, }; -struct pad_func { - u8 pin_id; - u8 func; -}; - -#define PAD_FUNC(name, func) {PAD_##name##_ID, PAD_##name##_FUNC_##func} -#define PAD_FUNC_GPIO(name) {PAD_##name##_ID, 0} - static const struct pad_func pad0_funcs[SPI_BUS_NUMBER][4] = { { - PAD_FUNC(SPIM0_MI, SPIM0_MI), + PAD_FUNC_DOWN(SPIM0_MI, SPIM0_MI), PAD_FUNC_GPIO(SPIM0_CSB), - PAD_FUNC(SPIM0_MO, SPIM0_MO), - PAD_FUNC(SPIM0_CLK, SPIM0_CLK), + PAD_FUNC_DOWN(SPIM0_MO, SPIM0_MO), + PAD_FUNC_DOWN(SPIM0_CLK, SPIM0_CLK), }, { - PAD_FUNC(SPIM1_MI, SPIM1_MI), + PAD_FUNC_DOWN(SPIM1_MI, SPIM1_MI), PAD_FUNC_GPIO(SPIM1_CSB), - PAD_FUNC(SPIM1_MO, SPIM1_MO), - PAD_FUNC(SPIM1_CLK, SPIM1_CLK), + PAD_FUNC_DOWN(SPIM1_MO, SPIM1_MO), + PAD_FUNC_DOWN(SPIM1_CLK, SPIM1_CLK), }, { - PAD_FUNC(SPIM2_MI, SPIM2_MI), + PAD_FUNC_DOWN(SPIM2_MI, SPIM2_MI), PAD_FUNC_GPIO(SPIM2_CSB), - PAD_FUNC(SPIM2_MO, SPIM2_MO), - PAD_FUNC(SPIM2_CLK, SPIM2_CLK), + PAD_FUNC_DOWN(SPIM2_MO, SPIM2_MO), + PAD_FUNC_DOWN(SPIM2_CLK, SPIM2_CLK), }, { - PAD_FUNC(PWRAP_SPI_MI, SPIM3_MI), + PAD_FUNC_DOWN(PWRAP_SPI_MI, SPIM3_MI), PAD_FUNC_GPIO(PWRAP_SPI_CSN), - PAD_FUNC(PWRAP_SPI_MO, SPIM3_MO), - PAD_FUNC(PWRAP_SPI_CK, SPIM3_CLK), + PAD_FUNC_DOWN(PWRAP_SPI_MO, SPIM3_MO), + PAD_FUNC_DOWN(PWRAP_SPI_CK, SPIM3_CLK), }, { - PAD_FUNC(DGI_D3, SPIM4_MI), + PAD_FUNC_DOWN(DGI_D3, SPIM4_MI), PAD_FUNC_GPIO(DGI_D2), - PAD_FUNC(DGI_D1, SPIM4_MO), - PAD_FUNC(DGI_D0, SPIM4_CLK), + PAD_FUNC_DOWN(DGI_D1, SPIM4_MO), + PAD_FUNC_DOWN(DGI_D0, SPIM4_CLK), }, { - PAD_FUNC(DGI_D7, SPIM5_MI), + PAD_FUNC_DOWN(DGI_D7, SPIM5_MI), PAD_FUNC_GPIO(DGI_D6), - PAD_FUNC(DGI_D5, SPIM5_MO), - PAD_FUNC(DGI_D4, SPIM5_CLK), + PAD_FUNC_DOWN(DGI_D5, SPIM5_MO), + PAD_FUNC_DOWN(DGI_D4, SPIM5_CLK), }, }; @@ -89,7 +81,7 @@ void mtk_spi_set_gpio_pinmux(unsigned int bus, enum spi_pad_mask pad_select) ptr = pad0_funcs[bus]; for (int i = 0; i < 4; i++) - gpio_set_mode((gpio_t){.id = ptr[i].pin_id}, ptr[i].func); + gpio_set_mode(ptr[i].gpio, ptr[i].func); } static const struct spi_ctrlr spi_flash_ctrlr = { diff --git a/src/soc/mediatek/mt8196/i2c.c b/src/soc/mediatek/mt8196/i2c.c index 94e3c3f0ba..c3d3ccb31c 100644 --- a/src/soc/mediatek/mt8196/i2c.c +++ b/src/soc/mediatek/mt8196/i2c.c @@ -93,73 +93,66 @@ struct mtk_i2c mtk_i2c_bus_controller[] = { _Static_assert(ARRAY_SIZE(mtk_i2c_bus_controller) == I2C_BUS_NUMBER, "Wrong size of mtk_i2c_bus_controller"); -struct pad_func { - gpio_t gpio; - u8 func; -}; - -#define PAD_FUNC(name, func) {GPIO(name), PAD_##name##_FUNC_##func} - static const struct pad_func i2c_funcs[I2C_BUS_NUMBER][2] = { [0] = { - PAD_FUNC(SDA0, SDA0), - PAD_FUNC(SCL0, SCL0), + PAD_FUNC_UP(SDA0, SDA0), + PAD_FUNC_UP(SCL0, SCL0), }, [1] = { - PAD_FUNC(SDA1, SDA1), - PAD_FUNC(SCL1, SCL1), + PAD_FUNC_UP(SDA1, SDA1), + PAD_FUNC_UP(SCL1, SCL1), }, [2] = { - PAD_FUNC(CAM_SDA2, SDA2), - PAD_FUNC(CAM_SCL2, SCL2), + PAD_FUNC_UP(CAM_SDA2, SDA2), + PAD_FUNC_UP(CAM_SCL2, SCL2), }, [3] = { - PAD_FUNC(SDA3, SDA3), - PAD_FUNC(SCL3, SCL3), + PAD_FUNC_UP(SDA3, SDA3), + PAD_FUNC_UP(SCL3, SCL3), }, [4] = { - PAD_FUNC(CAM_SDA4, SDA4), - PAD_FUNC(CAM_SCL4, SCL4), + PAD_FUNC_UP(CAM_SDA4, SDA4), + PAD_FUNC_UP(CAM_SCL4, SCL4), }, [5] = { - PAD_FUNC(SDA5, SDA5), - PAD_FUNC(SCL5, SCL5), + PAD_FUNC_UP(SDA5, SDA5), + PAD_FUNC_UP(SCL5, SCL5), }, [6] = { - PAD_FUNC(SDA6, SDA6), - PAD_FUNC(SCL6, SCL6), + PAD_FUNC_UP(SDA6, SDA6), + PAD_FUNC_UP(SCL6, SCL6), }, [7] = { - PAD_FUNC(CAM_SDA7, SDA7), - PAD_FUNC(CAM_SCL7, SCL7), + PAD_FUNC_UP(CAM_SDA7, SDA7), + PAD_FUNC_UP(CAM_SCL7, SCL7), }, [8] = { - PAD_FUNC(CAM_SDA8, SDA8), - PAD_FUNC(CAM_SCL8, SCL8), + PAD_FUNC_UP(CAM_SDA8, SDA8), + PAD_FUNC_UP(CAM_SCL8, SCL8), }, [9] = { - PAD_FUNC(CAM_SDA9, SDA9), - PAD_FUNC(CAM_SCL9, SCL9), + PAD_FUNC_UP(CAM_SDA9, SDA9), + PAD_FUNC_UP(CAM_SCL9, SCL9), }, [10] = { - PAD_FUNC(SDA10, SDA10), - PAD_FUNC(SCL10, SCL10), + PAD_FUNC_UP(SDA10, SDA10), + PAD_FUNC_UP(SCL10, SCL10), }, [11] = { - PAD_FUNC(CAM_PDN3, SDA11), - PAD_FUNC(CAM_PDN2, SCL11), + PAD_FUNC_UP(CAM_PDN3, SDA11), + PAD_FUNC_UP(CAM_PDN2, SCL11), }, [12] = { - PAD_FUNC(CAM_PDN5, SDA12), - PAD_FUNC(CAM_PDN4, SCL12), + PAD_FUNC_UP(CAM_PDN5, SDA12), + PAD_FUNC_UP(CAM_PDN4, SCL12), }, [13] = { - PAD_FUNC(CAM_PDN7, SDA13), - PAD_FUNC(CAM_PDN6, SCL13), + PAD_FUNC_UP(CAM_PDN7, SDA13), + PAD_FUNC_UP(CAM_PDN6, SCL13), }, [14] = { - PAD_FUNC(SCP_SDA3, SDA14), - PAD_FUNC(SCP_SCL3, SCL14), + PAD_FUNC_UP(SCP_SDA3, SDA14), + PAD_FUNC_UP(SCP_SCL3, SCL14), }, }; @@ -171,7 +164,7 @@ static void mtk_i2c_set_gpio_pinmux(uint8_t bus) for (size_t i = 0; i < 2; i++) { gpio_set_mode(ptr[i].gpio, ptr[i].func); - gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, GPIO_PULL_UP); + gpio_set_pull(ptr[i].gpio, GPIO_PULL_ENABLE, ptr[i].select); } } diff --git a/src/soc/mediatek/mt8196/spi.c b/src/soc/mediatek/mt8196/spi.c index 09cd073f8a..770b5b0954 100644 --- a/src/soc/mediatek/mt8196/spi.c +++ b/src/soc/mediatek/mt8196/spi.c @@ -12,13 +12,11 @@ #include <soc/spi.h> #include <spi_flash.h> -#define PAD_FUNC_SEL(name, func, sel) {GPIO(name), PAD_##name##_FUNC_##func, sel} - -static const struct mtk_snfc_pad_func nor_pinmux[4] = { - PAD_FUNC_SEL(SDA10, SF_CK, GPIO_PULL_DOWN), - PAD_FUNC_SEL(SCL10, SF_CS, GPIO_PULL_UP), - PAD_FUNC_SEL(PERIPHERAL_EN5, SF_D0, GPIO_PULL_DOWN), - PAD_FUNC_SEL(PERIPHERAL_EN6, SF_D1, GPIO_PULL_DOWN), +static const struct pad_func nor_pinmux[4] = { + PAD_FUNC(SDA10, SF_CK, GPIO_PULL_DOWN), + PAD_FUNC(SCL10, SF_CS, GPIO_PULL_UP), + PAD_FUNC(PERIPHERAL_EN5, SF_D0, GPIO_PULL_DOWN), + PAD_FUNC(PERIPHERAL_EN6, SF_D1, GPIO_PULL_DOWN), }; void mtk_snfc_init(void) |