Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: davinci: mmc: derive version information from device name

Remove specifying mmc controller IP version information via platform
data, instead specify device name so that driver derives it from
platform_device_id table. Also change the clock node name to match
the changed dev_id.
Tested on da850-evm to make sure driver loads without clk_get failures.

Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
Reviewed-by: Sekhar Nori <nsekhar@ti.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Chris Ball <cjb@laptop.org>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>

authored by

Manjunathappa, Prakash and committed by
Sekhar Nori
d7ca4c75 bb170e61

+35 -29
-1
arch/arm/mach-davinci/board-da830-evm.c
··· 246 246 .wires = 8, 247 247 .max_freq = 50000000, 248 248 .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 249 - .version = MMC_CTLR_VERSION_2, 250 249 }; 251 250 252 251 static inline void da830_evm_init_mmc(void)
-2
arch/arm/mach-davinci/board-da850-evm.c
··· 802 802 .wires = 4, 803 803 .max_freq = 50000000, 804 804 .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 805 - .version = MMC_CTLR_VERSION_2, 806 805 }; 807 806 808 807 static const short da850_evm_mmcsd0_pins[] __initconst = { ··· 1371 1372 .max_freq = 25000000, 1372 1373 .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_NONREMOVABLE | 1373 1374 MMC_CAP_POWER_OFF_CARD, 1374 - .version = MMC_CTLR_VERSION_2, 1375 1375 }; 1376 1376 1377 1377 static const short da850_wl12xx_pins[] __initconst = {
-1
arch/arm/mach-davinci/board-dm355-evm.c
··· 280 280 .wires = 4, 281 281 .max_freq = 50000000, 282 282 .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 283 - .version = MMC_CTLR_VERSION_1, 284 283 }; 285 284 286 285 /* Don't connect anything to J10 unless you're only using USB host
-1
arch/arm/mach-davinci/board-dm365-evm.c
··· 253 253 .wires = 4, 254 254 .max_freq = 50000000, 255 255 .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 256 - .version = MMC_CTLR_VERSION_2, 257 256 }; 258 257 259 258 static void dm365evm_emac_configure(void)
-1
arch/arm/mach-davinci/board-dm644x-evm.c
··· 570 570 .get_cd = dm6444evm_mmc_get_cd, 571 571 .get_ro = dm6444evm_mmc_get_ro, 572 572 .wires = 4, 573 - .version = MMC_CTLR_VERSION_1 574 573 }; 575 574 576 575 static struct i2c_board_info __initdata i2c_info[] = {
-1
arch/arm/mach-davinci/board-neuros-osd2.c
··· 164 164 165 165 static struct davinci_mmc_config davinci_ntosd2_mmc_config = { 166 166 .wires = 4, 167 - .version = MMC_CTLR_VERSION_1 168 167 }; 169 168 170 169
-1
arch/arm/mach-davinci/board-omapl138-hawk.c
··· 136 136 .wires = 4, 137 137 .max_freq = 50000000, 138 138 .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 139 - .version = MMC_CTLR_VERSION_2, 140 139 }; 141 140 142 141 static __init void omapl138_hawk_mmc_init(void)
-1
arch/arm/mach-davinci/board-tnetv107x-evm.c
··· 85 85 .wires = 4, 86 86 .max_freq = 50000000, 87 87 .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 88 - .version = MMC_CTLR_VERSION_1, 89 88 }; 90 89 91 90 static const short sdio1_pins[] __initconst = {
+1 -1
arch/arm/mach-davinci/da830.c
··· 394 394 CLK(NULL, "tpcc", &tpcc_clk), 395 395 CLK(NULL, "tptc0", &tptc0_clk), 396 396 CLK(NULL, "tptc1", &tptc1_clk), 397 - CLK("davinci_mmc.0", NULL, &mmcsd_clk), 397 + CLK("da830-mmc.0", NULL, &mmcsd_clk), 398 398 CLK(NULL, "uart0", &uart0_clk), 399 399 CLK(NULL, "uart1", &uart1_clk), 400 400 CLK(NULL, "uart2", &uart2_clk),
+2 -2
arch/arm/mach-davinci/da850.c
··· 463 463 CLK("davinci_emac.1", NULL, &emac_clk), 464 464 CLK("davinci-mcasp.0", NULL, &mcasp_clk), 465 465 CLK("da8xx_lcdc.0", "fck", &lcdc_clk), 466 - CLK("davinci_mmc.0", NULL, &mmcsd0_clk), 467 - CLK("davinci_mmc.1", NULL, &mmcsd1_clk), 466 + CLK("da830-mmc.0", NULL, &mmcsd0_clk), 467 + CLK("da830-mmc.1", NULL, &mmcsd1_clk), 468 468 CLK(NULL, "aemif", &aemif_clk), 469 469 CLK(NULL, "usb11", &usb11_clk), 470 470 CLK(NULL, "usb20", &usb20_clk),
+2 -2
arch/arm/mach-davinci/devices-da8xx.c
··· 664 664 }; 665 665 666 666 static struct platform_device da8xx_mmcsd0_device = { 667 - .name = "davinci_mmc", 667 + .name = "da830-mmc", 668 668 .id = 0, 669 669 .num_resources = ARRAY_SIZE(da8xx_mmcsd0_resources), 670 670 .resource = da8xx_mmcsd0_resources, ··· 701 701 }; 702 702 703 703 static struct platform_device da850_mmcsd1_device = { 704 - .name = "davinci_mmc", 704 + .name = "da830-mmc", 705 705 .id = 1, 706 706 .num_resources = ARRAY_SIZE(da850_mmcsd1_resources), 707 707 .resource = da850_mmcsd1_resources,
+2 -2
arch/arm/mach-davinci/devices-tnetv107x.c
··· 218 218 219 219 static struct platform_device mmc_devices[2] = { 220 220 { 221 - .name = "davinci_mmc", 221 + .name = "dm6441-mmc", 222 222 .id = 0, 223 223 .dev = { 224 224 .dma_mask = &mmc0_dma_mask, ··· 228 228 .resource = mmc0_resources 229 229 }, 230 230 { 231 - .name = "davinci_mmc", 231 + .name = "dm6441-mmc", 232 232 .id = 1, 233 233 .dev = { 234 234 .dma_mask = &mmc1_dma_mask,
+4 -2
arch/arm/mach-davinci/devices.c
··· 150 150 }; 151 151 152 152 static struct platform_device davinci_mmcsd0_device = { 153 - .name = "davinci_mmc", 153 + .name = "dm6441-mmc", 154 154 .id = 0, 155 155 .dev = { 156 156 .dma_mask = &mmcsd0_dma_mask, ··· 187 187 }; 188 188 189 189 static struct platform_device davinci_mmcsd1_device = { 190 - .name = "davinci_mmc", 190 + .name = "dm6441-mmc", 191 191 .id = 1, 192 192 .dev = { 193 193 .dma_mask = &mmcsd1_dma_mask, ··· 235 235 mmcsd1_resources[0].end = DM365_MMCSD1_BASE + 236 236 SZ_4K - 1; 237 237 mmcsd1_resources[2].start = IRQ_DM365_SDIOINT1; 238 + davinci_mmcsd1_device.name = "da830-mmc"; 238 239 } else 239 240 break; 240 241 ··· 257 256 mmcsd0_resources[0].end = DM365_MMCSD0_BASE + 258 257 SZ_4K - 1; 259 258 mmcsd0_resources[2].start = IRQ_DM365_SDIOINT0; 259 + davinci_mmcsd0_device.name = "da830-mmc"; 260 260 } else if (cpu_is_davinci_dm644x()) { 261 261 /* REVISIT: should this be in board-init code? */ 262 262 /* Power-on 3.3V IO cells */
+2 -2
arch/arm/mach-davinci/dm355.c
··· 361 361 CLK("i2c_davinci.1", NULL, &i2c_clk), 362 362 CLK("davinci-mcbsp.0", NULL, &asp0_clk), 363 363 CLK("davinci-mcbsp.1", NULL, &asp1_clk), 364 - CLK("davinci_mmc.0", NULL, &mmcsd0_clk), 365 - CLK("davinci_mmc.1", NULL, &mmcsd1_clk), 364 + CLK("dm6441-mmc.0", NULL, &mmcsd0_clk), 365 + CLK("dm6441-mmc.1", NULL, &mmcsd1_clk), 366 366 CLK("spi_davinci.0", NULL, &spi0_clk), 367 367 CLK("spi_davinci.1", NULL, &spi1_clk), 368 368 CLK("spi_davinci.2", NULL, &spi2_clk),
+2 -2
arch/arm/mach-davinci/dm365.c
··· 454 454 CLK(NULL, "uart0", &uart0_clk), 455 455 CLK(NULL, "uart1", &uart1_clk), 456 456 CLK("i2c_davinci.1", NULL, &i2c_clk), 457 - CLK("davinci_mmc.0", NULL, &mmcsd0_clk), 458 - CLK("davinci_mmc.1", NULL, &mmcsd1_clk), 457 + CLK("da830-mmc.0", NULL, &mmcsd0_clk), 458 + CLK("da830-mmc.1", NULL, &mmcsd1_clk), 459 459 CLK("spi_davinci.0", NULL, &spi0_clk), 460 460 CLK("spi_davinci.1", NULL, &spi1_clk), 461 461 CLK("spi_davinci.2", NULL, &spi2_clk),
+1 -1
arch/arm/mach-davinci/dm644x.c
··· 310 310 CLK("i2c_davinci.1", NULL, &i2c_clk), 311 311 CLK("palm_bk3710", NULL, &ide_clk), 312 312 CLK("davinci-mcbsp", NULL, &asp_clk), 313 - CLK("davinci_mmc.0", NULL, &mmcsd_clk), 313 + CLK("dm6441-mmc.0", NULL, &mmcsd_clk), 314 314 CLK(NULL, "spi", &spi_clk), 315 315 CLK(NULL, "gpio", &gpio_clk), 316 316 CLK(NULL, "usb", &usb_clk),
+2 -2
arch/arm/mach-davinci/tnetv107x.c
··· 272 272 CLK("tnetv107x-keypad.0", NULL, &clk_keypad), 273 273 CLK(NULL, "clk_gpio", &clk_gpio), 274 274 CLK(NULL, "clk_mdio", &clk_mdio), 275 - CLK("davinci_mmc.0", NULL, &clk_sdio0), 275 + CLK("dm6441-mmc.0", NULL, &clk_sdio0), 276 276 CLK(NULL, "uart0", &clk_uart0), 277 277 CLK(NULL, "uart1", &clk_uart1), 278 278 CLK(NULL, "timer0", &clk_timer0), ··· 292 292 CLK(NULL, "clk_system", &clk_system), 293 293 CLK(NULL, "clk_imcop", &clk_imcop), 294 294 CLK(NULL, "clk_spare", &clk_spare), 295 - CLK("davinci_mmc.1", NULL, &clk_sdio1), 295 + CLK("dm6441-mmc.1", NULL, &clk_sdio1), 296 296 CLK(NULL, "clk_ddr2_vrst", &clk_ddr2_vrst), 297 297 CLK(NULL, "clk_ddr2_vctl_rst", &clk_ddr2_vctl_rst), 298 298 CLK(NULL, NULL, NULL),
+17 -1
drivers/mmc/host/davinci_mmc.c
··· 1157 1157 mmc_davinci_reset_ctrl(host, 0); 1158 1158 } 1159 1159 1160 + static struct platform_device_id davinci_mmc_devtype[] = { 1161 + { 1162 + .name = "dm6441-mmc", 1163 + .driver_data = MMC_CTLR_VERSION_1, 1164 + }, { 1165 + .name = "da830-mmc", 1166 + .driver_data = MMC_CTLR_VERSION_2, 1167 + }, 1168 + {}, 1169 + }; 1170 + MODULE_DEVICE_TABLE(platform, davinci_mmc_devtype); 1171 + 1160 1172 static int __init davinci_mmcsd_probe(struct platform_device *pdev) 1161 1173 { 1162 1174 struct davinci_mmc_config *pdata = pdev->dev.platform_data; ··· 1177 1165 struct resource *r, *mem = NULL; 1178 1166 int ret = 0, irq = 0; 1179 1167 size_t mem_size; 1168 + const struct platform_device_id *id_entry; 1180 1169 1181 1170 /* REVISIT: when we're fully converted, fail if pdata is NULL */ 1182 1171 ··· 1250 1237 if (pdata && (pdata->wires == 8)) 1251 1238 mmc->caps |= (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA); 1252 1239 1253 - host->version = pdata->version; 1240 + id_entry = platform_get_device_id(pdev); 1241 + if (id_entry) 1242 + host->version = id_entry->driver_data; 1254 1243 1255 1244 mmc->ops = &mmc_davinci_ops; 1256 1245 mmc->f_min = 312500; ··· 1423 1408 .pm = davinci_mmcsd_pm_ops, 1424 1409 }, 1425 1410 .remove = __exit_p(davinci_mmcsd_remove), 1411 + .id_table = davinci_mmc_devtype, 1426 1412 }; 1427 1413 1428 1414 static int __init davinci_mmcsd_init(void)
-3
include/linux/platform_data/mmc-davinci.h
··· 23 23 /* any additional host capabilities: OR'd in to mmc->f_caps */ 24 24 u32 caps; 25 25 26 - /* Version of the MMC/SD controller */ 27 - u8 version; 28 - 29 26 /* Number of sg segments */ 30 27 u8 nr_sg; 31 28 };