Commit fc3ba952 authored by David Brownell's avatar David Brownell Committed by Linus Torvalds

SPI driver hotplug/coldplug fixes

Update various SPI drivers so they properly support

  - coldplug through "modprobe $(cat /sys/devices/.../modalias)"

  - hotplug through "modprobe $(MODALIAS)"

The basic rule for platform, SPI, and (new style) I2C drivers is just
to make sure that modprobing the driver name works.  In this case, all
the relevant drivers are platform drivers, and this patch either

  (a)	Changes the driver name, if no in-tree code would break;
	this is simpler and thus preferable in the long term.

  (b)	Adds MODULE_ALIAS directives, when in-tree platforms declare
	devices using the current driver name; less desirable.

Most systems will link SPI controller drivers statically, but
there's no point in being needlessly broken.
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Cc: Jean Delvare <khali@linux-fr.org>
Acked-by: default avatarAndrei Konovalov <akonovalov@ru.mvista.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f2ab6d88
...@@ -1303,6 +1303,7 @@ static int bfin5xx_spi_resume(struct platform_device *pdev) ...@@ -1303,6 +1303,7 @@ static int bfin5xx_spi_resume(struct platform_device *pdev)
#define bfin5xx_spi_resume NULL #define bfin5xx_spi_resume NULL
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
MODULE_ALIAS("bfin-spi-master"); /* for platform bus hotplug */
static struct platform_driver bfin5xx_spi_driver = { static struct platform_driver bfin5xx_spi_driver = {
.driver = { .driver = {
.name = "bfin-spi-master", .name = "bfin-spi-master",
......
...@@ -1735,7 +1735,7 @@ static int spi_imx_resume(struct platform_device *pdev) ...@@ -1735,7 +1735,7 @@ static int spi_imx_resume(struct platform_device *pdev)
static struct platform_driver driver = { static struct platform_driver driver = {
.driver = { .driver = {
.name = "imx-spi", .name = "spi_imx",
.bus = &platform_bus_type, .bus = &platform_bus_type,
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
......
...@@ -530,6 +530,7 @@ static int __devexit mpc83xx_spi_remove(struct platform_device *dev) ...@@ -530,6 +530,7 @@ static int __devexit mpc83xx_spi_remove(struct platform_device *dev)
return 0; return 0;
} }
MODULE_ALIAS("mpc83xx_spi"); /* for platform bus hotplug */
static struct platform_driver mpc83xx_spi_driver = { static struct platform_driver mpc83xx_spi_driver = {
.probe = mpc83xx_spi_probe, .probe = mpc83xx_spi_probe,
.remove = __devexit_p(mpc83xx_spi_remove), .remove = __devexit_p(mpc83xx_spi_remove),
......
...@@ -427,6 +427,7 @@ static int s3c24xx_spi_resume(struct platform_device *pdev) ...@@ -427,6 +427,7 @@ static int s3c24xx_spi_resume(struct platform_device *pdev)
#define s3c24xx_spi_resume NULL #define s3c24xx_spi_resume NULL
#endif #endif
MODULE_ALIAS("s3c2410_spi"); /* for platform bus hotplug */
static struct platform_driver s3c24xx_spidrv = { static struct platform_driver s3c24xx_spidrv = {
.probe = s3c24xx_spi_probe, .probe = s3c24xx_spi_probe,
.remove = s3c24xx_spi_remove, .remove = s3c24xx_spi_remove,
......
...@@ -180,7 +180,7 @@ static struct platform_driver s3c2410_spigpio_drv = { ...@@ -180,7 +180,7 @@ static struct platform_driver s3c2410_spigpio_drv = {
.suspend = s3c2410_spigpio_suspend, .suspend = s3c2410_spigpio_suspend,
.resume = s3c2410_spigpio_resume, .resume = s3c2410_spigpio_resume,
.driver = { .driver = {
.name = "s3c24xx-spi-gpio", .name = "spi_s3c24xx_gpio",
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
}; };
......
...@@ -450,6 +450,7 @@ static int __exit txx9spi_remove(struct platform_device *dev) ...@@ -450,6 +450,7 @@ static int __exit txx9spi_remove(struct platform_device *dev)
return 0; return 0;
} }
MODULE_ALIAS("txx9spi"); /* for platform bus hotplug */
static struct platform_driver txx9spi_driver = { static struct platform_driver txx9spi_driver = {
.remove = __exit_p(txx9spi_remove), .remove = __exit_p(txx9spi_remove),
.driver = { .driver = {
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include <syslib/virtex_devices.h> #include <syslib/virtex_devices.h>
#define XILINX_SPI_NAME "xspi" #define XILINX_SPI_NAME "xilinx_spi"
/* Register definitions as per "OPB Serial Peripheral Interface (SPI) (v1.00e) /* Register definitions as per "OPB Serial Peripheral Interface (SPI) (v1.00e)
* Product Specification", DS464 * Product Specification", DS464
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment