diff options
author | Vivien Didelot <vivien.didelot@savoirfairelinux.com> | 2012-09-10 20:29:13 -0400 |
---|---|---|
committer | Sekhar Nori <nsekhar@ti.com> | 2013-01-03 07:00:35 -0500 |
commit | 0273612cb845932f3086ceb7f6c7b43a8a338ae7 (patch) | |
tree | 5acac70e2db5564f50d6d2208005653ac556ed36 /arch | |
parent | d1c3ed669a2d452cacfb48c2d171a1f364dae2ed (diff) |
ARM: davinci: da8xx_register_spi() should not register SPI board info
Without this patch, da8xx_register_spi() registers the SPI board info,
the SPI controller, and sets its number of chipselect to the size of the
static spi_board_info array. This is bad because a SPI board info may
declare devices for different SPI buses, and because other code can also
call spi_register_board_info() (e.g. a daughter board might provide
additional SPI devices).
This patch removes the spi_register_board_info() call from
da8xx_register_spi(), renames this last one to da8xx_register_spi_bus()
to be more explicit, takes the number of chipselect as a function
parameter, and updates the impacted board-da8{3,5}0-evm.c, and
board-mityomapl138.c files accordingly. It also sets the SPI platform
data static, as it doesn't need to be exported.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
[nsekhar@ti.com: fixed conflicts with v3.7-rc7, converted to use pr_warn(),
modified print messages to use __func__]
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-davinci/board-da830-evm.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-davinci/board-da850-evm.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-davinci/board-mityomapl138.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-davinci/devices-da8xx.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-davinci/include/mach/da8xx.h | 4 |
5 files changed, 25 insertions, 20 deletions
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c index 95b5e102ceb1..f3c79bcaf31e 100644 --- a/arch/arm/mach-davinci/board-da830-evm.c +++ b/arch/arm/mach-davinci/board-da830-evm.c | |||
@@ -652,8 +652,13 @@ static __init void da830_evm_init(void) | |||
652 | if (ret) | 652 | if (ret) |
653 | pr_warning("da830_evm_init: rtc setup failed: %d\n", ret); | 653 | pr_warning("da830_evm_init: rtc setup failed: %d\n", ret); |
654 | 654 | ||
655 | ret = da8xx_register_spi(0, da830evm_spi_info, | 655 | ret = spi_register_board_info(da830evm_spi_info, |
656 | ARRAY_SIZE(da830evm_spi_info)); | 656 | ARRAY_SIZE(da830evm_spi_info)); |
657 | if (ret) | ||
658 | pr_warn("%s: spi info registration failed: %d\n", __func__, | ||
659 | ret); | ||
660 | |||
661 | ret = da8xx_register_spi_bus(0, ARRAY_SIZE(da830evm_spi_info)); | ||
657 | if (ret) | 662 | if (ret) |
658 | pr_warning("da830_evm_init: spi 0 registration failed: %d\n", | 663 | pr_warning("da830_evm_init: spi 0 registration failed: %d\n", |
659 | ret); | 664 | ret); |
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 0299915575a8..709607427a80 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c | |||
@@ -1565,8 +1565,13 @@ static __init void da850_evm_init(void) | |||
1565 | 1565 | ||
1566 | da850_vpif_init(); | 1566 | da850_vpif_init(); |
1567 | 1567 | ||
1568 | ret = da8xx_register_spi(1, da850evm_spi_info, | 1568 | ret = spi_register_board_info(da850evm_spi_info, |
1569 | ARRAY_SIZE(da850evm_spi_info)); | 1569 | ARRAY_SIZE(da850evm_spi_info)); |
1570 | if (ret) | ||
1571 | pr_warn("%s: spi info registration failed: %d\n", __func__, | ||
1572 | ret); | ||
1573 | |||
1574 | ret = da8xx_register_spi_bus(1, ARRAY_SIZE(da850evm_spi_info)); | ||
1570 | if (ret) | 1575 | if (ret) |
1571 | pr_warning("da850_evm_init: spi 1 registration failed: %d\n", | 1576 | pr_warning("da850_evm_init: spi 1 registration failed: %d\n", |
1572 | ret); | 1577 | ret); |
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c index 43e4a0d663fa..5281979c0206 100644 --- a/arch/arm/mach-davinci/board-mityomapl138.c +++ b/arch/arm/mach-davinci/board-mityomapl138.c | |||
@@ -529,8 +529,13 @@ static void __init mityomapl138_init(void) | |||
529 | 529 | ||
530 | mityomapl138_setup_nand(); | 530 | mityomapl138_setup_nand(); |
531 | 531 | ||
532 | ret = da8xx_register_spi(1, mityomapl138_spi_flash_info, | 532 | ret = spi_register_board_info(mityomapl138_spi_flash_info, |
533 | ARRAY_SIZE(mityomapl138_spi_flash_info)); | 533 | ARRAY_SIZE(mityomapl138_spi_flash_info)); |
534 | if (ret) | ||
535 | pr_warn("spi info registration failed: %d\n", ret); | ||
536 | |||
537 | ret = da8xx_register_spi_bus(1, | ||
538 | ARRAY_SIZE(mityomapl138_spi_flash_info)); | ||
534 | if (ret) | 539 | if (ret) |
535 | pr_warning("spi 1 registration failed: %d\n", ret); | 540 | pr_warning("spi 1 registration failed: %d\n", ret); |
536 | 541 | ||
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c index 2d5502d84a22..30da05f22ef4 100644 --- a/arch/arm/mach-davinci/devices-da8xx.c +++ b/arch/arm/mach-davinci/devices-da8xx.c | |||
@@ -832,7 +832,7 @@ static struct resource da8xx_spi1_resources[] = { | |||
832 | }, | 832 | }, |
833 | }; | 833 | }; |
834 | 834 | ||
835 | struct davinci_spi_platform_data da8xx_spi_pdata[] = { | 835 | static struct davinci_spi_platform_data da8xx_spi_pdata[] = { |
836 | [0] = { | 836 | [0] = { |
837 | .version = SPI_VERSION_2, | 837 | .version = SPI_VERSION_2, |
838 | .intr_line = 1, | 838 | .intr_line = 1, |
@@ -866,20 +866,12 @@ static struct platform_device da8xx_spi_device[] = { | |||
866 | }, | 866 | }, |
867 | }; | 867 | }; |
868 | 868 | ||
869 | int __init da8xx_register_spi(int instance, const struct spi_board_info *info, | 869 | int __init da8xx_register_spi_bus(int instance, unsigned num_chipselect) |
870 | unsigned len) | ||
871 | { | 870 | { |
872 | int ret; | ||
873 | |||
874 | if (instance < 0 || instance > 1) | 871 | if (instance < 0 || instance > 1) |
875 | return -EINVAL; | 872 | return -EINVAL; |
876 | 873 | ||
877 | ret = spi_register_board_info(info, len); | 874 | da8xx_spi_pdata[instance].num_chipselect = num_chipselect; |
878 | if (ret) | ||
879 | pr_warning("%s: failed to register board info for spi %d :" | ||
880 | " %d\n", __func__, instance, ret); | ||
881 | |||
882 | da8xx_spi_pdata[instance].num_chipselect = len; | ||
883 | 875 | ||
884 | if (instance == 1 && cpu_is_davinci_da850()) { | 876 | if (instance == 1 && cpu_is_davinci_da850()) { |
885 | da8xx_spi1_resources[0].start = DA850_SPI1_BASE; | 877 | da8xx_spi1_resources[0].start = DA850_SPI1_BASE; |
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h index 700d311c6854..1b14aea40310 100644 --- a/arch/arm/mach-davinci/include/mach/da8xx.h +++ b/arch/arm/mach-davinci/include/mach/da8xx.h | |||
@@ -82,8 +82,7 @@ void __init da850_init(void); | |||
82 | int da830_register_edma(struct edma_rsv_info *rsv); | 82 | int da830_register_edma(struct edma_rsv_info *rsv); |
83 | int da850_register_edma(struct edma_rsv_info *rsv[2]); | 83 | int da850_register_edma(struct edma_rsv_info *rsv[2]); |
84 | int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata); | 84 | int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata); |
85 | int da8xx_register_spi(int instance, | 85 | int da8xx_register_spi_bus(int instance, unsigned num_chipselect); |
86 | const struct spi_board_info *info, unsigned len); | ||
87 | int da8xx_register_watchdog(void); | 86 | int da8xx_register_watchdog(void); |
88 | int da8xx_register_usb20(unsigned mA, unsigned potpgt); | 87 | int da8xx_register_usb20(unsigned mA, unsigned potpgt); |
89 | int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata); | 88 | int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata); |
@@ -110,7 +109,6 @@ extern struct platform_device da8xx_serial_device; | |||
110 | extern struct emac_platform_data da8xx_emac_pdata; | 109 | extern struct emac_platform_data da8xx_emac_pdata; |
111 | extern struct da8xx_lcdc_platform_data sharp_lcd035q3dg01_pdata; | 110 | extern struct da8xx_lcdc_platform_data sharp_lcd035q3dg01_pdata; |
112 | extern struct da8xx_lcdc_platform_data sharp_lk043t1dg01_pdata; | 111 | extern struct da8xx_lcdc_platform_data sharp_lk043t1dg01_pdata; |
113 | extern struct davinci_spi_platform_data da8xx_spi_pdata[]; | ||
114 | 112 | ||
115 | extern struct platform_device da8xx_wdt_device; | 113 | extern struct platform_device da8xx_wdt_device; |
116 | 114 | ||