On 11/7/24 7:12 AM, Andre Przywara wrote: > It turns out that the Allwinner A100/A133 SoC only supports 8K DMA > blocks (13 bits wide), for both the SD/SDIO and eMMC instances. > And while this alone would make a trivial fix, the H616 falls back to > the A100 compatible string, so we have to now match the H616 compatible > string explicitly against the description advertising 64K DMA blocks. > > As the A100 is now compatible with the D1 description, let the A100 > compatible string point to that block instead, and introduce an explicit > match against the H616 string, pointing to the old description. > Also remove the redundant setting of clk_delays to NULL on the way. > > Fixes: 3536b82e5853 ("mmc: sunxi: add support for A100 mmc controller") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx> Tested working with SD card in mmc0. Tested-by: Parthiban Nallathambi <parthiban@xxxxxxxxxxx> Thanks, Parthiban > --- > drivers/mmc/host/sunxi-mmc.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c > index d3bd0ac99ec46..e0ab5fd635e6c 100644 > --- a/drivers/mmc/host/sunxi-mmc.c > +++ b/drivers/mmc/host/sunxi-mmc.c > @@ -1191,10 +1191,9 @@ static const struct sunxi_mmc_cfg sun50i_a64_emmc_cfg = { > .needs_new_timings = true, > }; > > -static const struct sunxi_mmc_cfg sun50i_a100_cfg = { > +static const struct sunxi_mmc_cfg sun50i_h616_cfg = { > .idma_des_size_bits = 16, > .idma_des_shift = 2, > - .clk_delays = NULL, > .can_calibrate = true, > .mask_data0 = true, > .needs_new_timings = true, > @@ -1217,8 +1216,9 @@ static const struct of_device_id sunxi_mmc_of_match[] = { > { .compatible = "allwinner,sun20i-d1-mmc", .data = &sun20i_d1_cfg }, > { .compatible = "allwinner,sun50i-a64-mmc", .data = &sun50i_a64_cfg }, > { .compatible = "allwinner,sun50i-a64-emmc", .data = &sun50i_a64_emmc_cfg }, > - { .compatible = "allwinner,sun50i-a100-mmc", .data = &sun50i_a100_cfg }, > + { .compatible = "allwinner,sun50i-a100-mmc", .data = &sun20i_d1_cfg }, > { .compatible = "allwinner,sun50i-a100-emmc", .data = &sun50i_a100_emmc_cfg }, > + { .compatible = "allwinner,sun50i-h616-mmc", .data = &sun50i_h616_cfg }, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, sunxi_mmc_of_match);