[U-Boot] [linux-sunxi] Re: [PATCH v3 0/9] mmc: sunxi: Enable DM_MMC

Chen-Yu Tsai
2019-01-25T11:01:12Z

On Fri, Jan 25, 2019 at 6:41 PM Jagan Teki <jagan@amarulasolutions.com> wrote:
>
> On Fri, Jan 25, 2019 at 2:05 PM Chen-Yu Tsai <wens@csie.org> wrote:
> >
> > On Fri, Jan 25, 2019 at 4:27 PM Jagan Teki <jagan@amarulasolutions.com> wrote:
> > >
> > > On Tue, Jan 22, 2019 at 7:55 AM Chen-Yu Tsai <wens@csie.org> wrote:
> > > >
> > > > On Mon, Jan 21, 2019 at 6:31 PM Jagan Teki <jagan@amarulasolutions.com> wrote:
> > > > >
> > > > > Compared to previous version changes[1] this version do manage
> > > > > ahb clocks/resets via CLK framework.
> > > > >
> > > > > This version created changes along with Andre patches to support
> > > > > clock/resets[2]
> > > > >
> > > > > Tested A64, SD, eMMC and respective changes available at
> > > > > u-boot-sunxi/next
> > > > >
> > > > > Changes for v3:
> > > > > - Handle clock via CLK framework.
> > > > > Changes for v2:
> > > > > - update the 'reset enablement' logic to do
> > > > > required SoC's
> > > > >
> > > > > [1] https://patchwork.ozlabs.org/cover/1026828/
> > > > > [2] https://patchwork.ozlabs.org/cover/1027850/
> > > > >
> > > > > Andre Przywara (2):
> > > > > sunxi: clk: add MMC gates/resets
> > > > > sunxi: clk: A80: add MMC clock support
> > > > >
> > > > > Jagan Teki (7):
> > > > > mmc: sunxi: Add A83T emmc compatible
> > > > > mmc: sunxi: Add mmc, emmc H5/A64 compatible
> > > > > mmc: sunxi: Add DM_MMC support for H6
> > > > > mmc: sunxi: Add DM_MMC support for A80
> > > > > dm: mmc: sunxi: Add CLK and RESET support
> > > > > arm: sunxi: Enable DM_MMC
> > > > > arm: dts: sunxi: Enumerate MMC2 as MMC1
> > > >
> > > > Tested-by: Chen-Yu Tsai <wens@csie.org> # on the Bananapi M2M
> > > >
> > > > However, the A80 MMC clock patch is still missing code to toggle
> > > > the upstream bus clock gate and reset control in the CCU.
> > >
> > > Sent it with original mmc clock and reset patch[1], let me know your comments.
> >
> > Right. The problem is nowhere in this series are those enabled /
> > deasserted. The A80 CCU only has one gate & reset for the whole MMC
> > subsystem, including the MMC config clocks block. Ideally the
> > driver for that block should enable the gate and deassert the
> > reset control.
>
> Yes, that same has been included with v3.1 patch which I linked above.

The gates/resets are added in that patch. No one is using them. The
device tree node for the MMC controllers do _not_ reference this clock
and reset, only the individual ones in the MMC config clock block.

Unless you are expecting BROM or SPL to have set that up for you, which
IMO is quite fragile. You could very well boot from SPI or even FEL, and
it wouldn't be correctly setup, in which case MMC would be completely
broken.

FYI the clk-sun9i-mmc driver in Linux deasserts the reset at probe:

https://elixir.bootlin.com/linux/latest/source/drivers/clk/sunxi/clk-sun9i-mmc.c#L145

And enables the bus gate when it needs to toggle bits in its register
space:

https://elixir.bootlin.com/linux/latest/source/drivers/clk/sunxi/clk-sun9i-mmc.c#L53

This is what is missing. Andre's patch doesn't have them. He specifically
mentioned this.

Regards
ChenYu