On Wed, 25 May 2022 at 03:51, Axe Yang <axe.yang@xxxxxxxxxxxx> wrote: > > Extend interrupts and pinctrls for SDIO wakeup interrupt feature. > This feature allow SDIO devices alarm asynchronous interrupt to host > even when host stop providing clock to SDIO card. An extra wakeup > interrupt and pinctrl states for SDIO DAT1 pin state switching are > required in this scenario. > > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx> > Signed-off-by: Axe Yang <axe.yang@xxxxxxxxxxxx> > --- > .../devicetree/bindings/mmc/mtk-sd.yaml | 50 ++++++++++++++++++- > 1 file changed, 49 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/mmc/mtk-sd.yaml b/Documentation/devicetree/bindings/mmc/mtk-sd.yaml > index 2a2e9fa8c188..e83bf10281d6 100644 > --- a/Documentation/devicetree/bindings/mmc/mtk-sd.yaml > +++ b/Documentation/devicetree/bindings/mmc/mtk-sd.yaml > @@ -72,12 +72,27 @@ properties: > - const: ahb_cg > > interrupts: > - maxItems: 1 > + description: > + Should at least contain MSDC GIC interrupt. To support SDIO in-band wakeup, an extended > + interrupt is required and be configured as wakeup source irq. > + minItems: 1 > + maxItems: 2 > + > + interrupt-names: > + items: > + - const: msdc > + - const: sdio_wakeup > > pinctrl-names: > + description: > + Should at least contain default and state_uhs. To support SDIO in-band wakeup, dat1 pin > + will be switched between GPIO mode and SDIO DAT1 mode, state_eint and state_dat1 are > + mandatory in this scenarios. > + minItems: 2 > items: > - const: default > - const: state_uhs > + - const: state_eint Don't you need something along the lines of the below instead? I mean the "state_eint" isn't always needed, right? oneOf: - items: - const: default - const: state_uhs - items: - const: default - const: state_uhs - const: state_eint > > pinctrl-0: > description: > @@ -89,6 +104,11 @@ properties: > should contain uhs mode pin ctrl. > maxItems: 1 > > + pinctrl-2: > + description: > + should switch dat1 pin to GPIO mode. > + maxItems: 1 > + > assigned-clocks: > description: > PLL of the source clock. > @@ -208,4 +228,32 @@ examples: > mediatek,hs400-cmd-resp-sel-rising; > }; > > + mmc3: mmc@11260000 { > + compatible = "mediatek,mt8173-mmc"; > + reg = <0x11260000 0x1000>; > + clock-names = "source", "hclk"; > + clocks = <&pericfg CLK_PERI_MSDC30_3>, > + <&topckgen CLK_TOP_MSDC50_2_H_SEL>; > + interrupt-names = "msdc", "sdio_wakeup"; > + interrupts-extended = <&gic GIC_SPI 74 IRQ_TYPE_LEVEL_LOW 0>, > + <&pio 23 IRQ_TYPE_LEVEL_LOW>; > + pinctrl-names = "default", "state_uhs", "state_eint"; > + pinctrl-0 = <&mmc2_pins_default>; > + pinctrl-1 = <&mmc2_pins_uhs>; > + pinctrl-2 = <&mmc2_pins_eint>; > + bus-width = <4>; > + max-frequency = <200000000>; > + cap-sd-highspeed; > + sd-uhs-sdr104; > + keep-power-in-suspend; > + wakeup-source; > + cap-sdio-irq; > + no-mmc; > + no-sd; > + non-removable; > + vmmc-supply = <&sdio_fixed_3v3>; > + vqmmc-supply = <&mt6397_vgp3_reg>; > + mmc-pwrseq = <&wifi_pwrseq>; > + }; > + > ... > -- > 2.25.1 > Kind regards Uffe