mmc: mv_sdhci: Fix host version read for Armada100
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 mmc: mv_sdhci: Fix host version read for Armada100
Quoted 42 lines · ----- "Marek Vasut
Quoted 2 lines
sdhci_readwdoes not work for host version read in Armada100 series SoCs. This patch fix this issue by making asdhci_readlcall to gethost
drivers/mmc/mv_sdhci.c static inline void mv_sdhci_writeb(struct
Quoted 12 lines
version.
Signed-off-by Ajay Bhargav <[email protected]>--- drivers/mmc/mv_sdhci.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)drivers/mmc/mv_sdhci.c +0
-0@@ -30,6 +30,7 @@ static inline void mv_sdhci_writeb(struct
sdhci_hostdrivers/mmc/mv_sdhci.c int mv_sdh_init(u32 regbase, u32 max_clk, u32
Quoted 8 lines
drivers/mmc/mv_sdhci.c +1
-0*host, u8 val, int reg) #endif /* CONFIG_MMC_SDHCI_IO_ACCESSORS */static char *MVSDH_NAME ="mv_sdh" ; +int mv_sdh_init (u32 regbase,u32 max_clk,u32 min_clk,u32 quirks) {struct sdhci_host *host =NULL ;@@ -48,7 +49,12 @@ int mv_sdh_init(u32 regbase, u32 max_clk, u32
min_clk,drivers/mmc/mv_sdhci.c int mv_sdh_init(u32 regbase, u32 max_clk, u32 · line 60
Quoted 12 lines
drivers/mmc/mv_sdhci.c +5
-0u32 quirks) mv_ops.write_b = mv_sdhci_writeb; host->ops = &mv_ops;#endif +#ifdef CONFIG_ARMADA100 +/* SDHCI host version read workaround for Armada100 series */ + host->version =sdhci_readl (host,SDHCI_HOST_VERSION -2 ) >>16 ; +#else host->version =sdhci_readw (host,SDHCI_HOST_VERSION ); +#endif add_sdhci (host, max_clk, min_clk);return 0 ; }Basically armada100 can't do 16bit access to that register. Ok, but why does it
work for other registers? Also, can you make this a config option like
Quoted 4 lines
CONFIG_SDHCI_REG32_QUIRK(invent some better name ;-) ).Cheers
Hi Marek,
Armada100 SOC has this bug for particularly that register. This is particularly for that register so Do you think a config is required for this?
Regards,
Ajay Bhargav
PATCH 1/1 mmc: mv_sdhci: Fix host version read for Armada100
Quoted 63 lines
Quoted 62 lines · ----- "Marek Vasut
Quoted 2 lines
sdhci_readwdoes not work for host version read in Armada100 series SoCs. This patch fix this issue by making asdhci_readlcall to gethost
drivers/mmc/mv_sdhci.c static inline void mv_sdhci_writeb(struct
Quoted 13 lines
version.
Signed-off-by Ajay Bhargav <[email protected]>---
drivers/mmc/mv_sdhci.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)drivers/mmc/mv_sdhci.c +0
-0@@ -30,6 +30,7 @@ static inline void mv_sdhci_writeb(struct
sdhci_hostdrivers/mmc/mv_sdhci.c int mv_sdh_init(u32 regbase, u32 max_clk, u32
Quoted 12 lines
drivers/mmc/mv_sdhci.c +1
-0*host, u8 val, int reg) #endif /* CONFIG_MMC_SDHCI_IO_ACCESSORS */static char *MVSDH_NAME ="mv_sdh" ; +int mv_sdh_init (u32 regbase,u32 max_clk,u32 min_clk,u32 quirks){
drivers/mmc/mv_sdhci.c +0
-0struct sdhci_host *host =NULL ;@@ -48,7 +49,12 @@ int mv_sdh_init(u32 regbase, u32 max_clk, u32
min_clk,Quoted 9 lines
drivers/mmc/mv_sdhci.c +3
-0u32 quirks) mv_ops.write_b = mv_sdhci_writeb; host->ops = &mv_ops;#endif +#ifdef CONFIG_ARMADA100 +/* SDHCI host version read workaround for Armada100 series */ + host->version =sdhci_readl (host,SDHCI_HOST_VERSION -2 ) >>16 ;drivers/mmc/mv_sdhci.c int mv_sdh_init(u32 regbase, u32 max_clk, u32
Quoted 10 lines
drivers/mmc/mv_sdhci.c +2
-0+#else host->version =sdhci_readw (host,SDHCI_HOST_VERSION ); +#endif add_sdhci (host, max_clk, min_clk);return 0 ; }Basically armada100 can't do 16bit access to that register. Ok, but why does it
work for other registers? Also, can you make this a config option like
CONFIG_SDHCI_REG32_QUIRK(invent some better name ;-) ).
Quoted 7 lines
Quoted 1 line
Cheers
Hi Marek,
Armada100 SOC has this bug for particularly that register. This is particularly for that register so Do you think a config is required for this?
Well such crippled hardware might appear somewhere else too, so yes. But still, it's surprising it's only one register, really. Can you point me to a datasheet/errata stating it?
Thanks!