|
@@ -39,6 +39,12 @@
|
|
|
|
|
|
#define EXT_ACC 0xe4
|
|
#define EXT_ACC 0xe4
|
|
|
|
|
|
|
|
+#define SDHI_VER_GEN2_SDR50 0x490c
|
|
|
|
+/* very old datasheets said 0x490c for SDR104, too. They are wrong! */
|
|
|
|
+#define SDHI_VER_GEN2_SDR104 0xcb0d
|
|
|
|
+#define SDHI_VER_GEN3_SD 0xcc10
|
|
|
|
+#define SDHI_VER_GEN3_SDMMC 0xcd10
|
|
|
|
+
|
|
#define host_to_priv(host) container_of((host)->pdata, struct sh_mobile_sdhi, mmc_data)
|
|
#define host_to_priv(host) container_of((host)->pdata, struct sh_mobile_sdhi, mmc_data)
|
|
|
|
|
|
struct sh_mobile_sdhi_of_data {
|
|
struct sh_mobile_sdhi_of_data {
|
|
@@ -109,14 +115,14 @@ static void sh_mobile_sdhi_sdbuf_width(struct tmio_mmc_host *host, int width)
|
|
* sh_mobile_sdhi_of_data :: dma_buswidth
|
|
* sh_mobile_sdhi_of_data :: dma_buswidth
|
|
*/
|
|
*/
|
|
switch (sd_ctrl_read16(host, CTL_VERSION)) {
|
|
switch (sd_ctrl_read16(host, CTL_VERSION)) {
|
|
- case 0x490C:
|
|
|
|
|
|
+ case SDHI_VER_GEN2_SDR50:
|
|
val = (width == 32) ? 0x0001 : 0x0000;
|
|
val = (width == 32) ? 0x0001 : 0x0000;
|
|
break;
|
|
break;
|
|
- case 0xCB0D:
|
|
|
|
|
|
+ case SDHI_VER_GEN2_SDR104:
|
|
val = (width == 32) ? 0x0000 : 0x0001;
|
|
val = (width == 32) ? 0x0000 : 0x0001;
|
|
break;
|
|
break;
|
|
- case 0xCC10: /* Gen3, SD only */
|
|
|
|
- case 0xCD10: /* Gen3, SD + MMC */
|
|
|
|
|
|
+ case SDHI_VER_GEN3_SD:
|
|
|
|
+ case SDHI_VER_GEN3_SDMMC:
|
|
if (width == 64)
|
|
if (width == 64)
|
|
val = 0x0000;
|
|
val = 0x0000;
|
|
else if (width == 32)
|
|
else if (width == 32)
|