drivers/disk: sdmmc: stm32: configurable SDMMC bus width
Make the SDMMC bus width for STM32 configurable. Fixes #45021. Signed-off-by: Benedikt Schmidt <benedikt.schmidt@embedded-solutions.at>
This commit is contained in:
parent
f00573555b
commit
36b9da8874
2 changed files with 21 additions and 0 deletions
|
@ -495,10 +495,19 @@ static void stm32_sdmmc_irq_config_func(const struct device *dev)
|
||||||
irq_enable(DT_INST_IRQN(0));
|
irq_enable(DT_INST_IRQN(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DT_INST_PROP(0, bus_width) == 1
|
||||||
|
#define SDMMC_BUS_WIDTH SDMMC_BUS_WIDE_1B
|
||||||
|
#elif DT_INST_PROP(0, bus_width) == 4
|
||||||
|
#define SDMMC_BUS_WIDTH SDMMC_BUS_WIDE_4B
|
||||||
|
#elif DT_INST_PROP(0, bus_width) == 8
|
||||||
|
#define SDMMC_BUS_WIDTH SDMMC_BUS_WIDE_8B
|
||||||
|
#endif /* DT_INST_PROP(0, bus_width) */
|
||||||
|
|
||||||
static struct stm32_sdmmc_priv stm32_sdmmc_priv_1 = {
|
static struct stm32_sdmmc_priv stm32_sdmmc_priv_1 = {
|
||||||
.irq_config = stm32_sdmmc_irq_config_func,
|
.irq_config = stm32_sdmmc_irq_config_func,
|
||||||
.hsd = {
|
.hsd = {
|
||||||
.Instance = (MMC_TypeDef *)DT_INST_REG_ADDR(0),
|
.Instance = (MMC_TypeDef *)DT_INST_REG_ADDR(0),
|
||||||
|
.Init.BusWide = SDMMC_BUS_WIDTH,
|
||||||
},
|
},
|
||||||
#if DT_INST_NODE_HAS_PROP(0, cd_gpios)
|
#if DT_INST_NODE_HAS_PROP(0, cd_gpios)
|
||||||
.cd = {
|
.cd = {
|
||||||
|
|
|
@ -29,3 +29,15 @@ properties:
|
||||||
type: phandle-array
|
type: phandle-array
|
||||||
required: false
|
required: false
|
||||||
description: Power pin
|
description: Power pin
|
||||||
|
|
||||||
|
bus-width:
|
||||||
|
type: int
|
||||||
|
required: false
|
||||||
|
default: 1
|
||||||
|
description: |
|
||||||
|
bus width for SDMMC access, defaults to the minimum necessary
|
||||||
|
number of bus lines
|
||||||
|
enum:
|
||||||
|
- 1
|
||||||
|
- 4
|
||||||
|
- 8
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue