aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hsi
diff options
context:
space:
mode:
authorSebastian Reichel <sre@kernel.org>2016-04-29 19:01:06 -0400
committerSebastian Reichel <sre@kernel.org>2016-05-02 15:56:12 -0400
commit0845e1f20af100d1d4ac7cc111a8dfb790f94a16 (patch)
tree84e6662b049950f265803803880c9b69cdb7c6c3 /drivers/hsi
parentf704e1103e05a65c83b85c66d947e57bc20d6edd (diff)
HSI: omap_ssi: make sure probe stays available
device can be unbind/rebind, so probe should stay available. Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Sebastian Reichel <sre@kernel.org>
Diffstat (limited to 'drivers/hsi')
-rw-r--r--drivers/hsi/controllers/omap_ssi.c17
-rw-r--r--drivers/hsi/controllers/omap_ssi_port.c19
2 files changed, 19 insertions, 17 deletions
diff --git a/drivers/hsi/controllers/omap_ssi.c b/drivers/hsi/controllers/omap_ssi.c
index 2dd46b219af2..ffb921482e76 100644
--- a/drivers/hsi/controllers/omap_ssi.c
+++ b/drivers/hsi/controllers/omap_ssi.c
@@ -140,7 +140,7 @@ static const struct file_operations ssi_gdd_regs_fops = {
140 .release = single_release, 140 .release = single_release,
141}; 141};
142 142
143static int __init ssi_debug_add_ctrl(struct hsi_controller *ssi) 143static int ssi_debug_add_ctrl(struct hsi_controller *ssi)
144{ 144{
145 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); 145 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi);
146 struct dentry *dir; 146 struct dentry *dir;
@@ -290,7 +290,7 @@ static unsigned long ssi_get_clk_rate(struct hsi_controller *ssi)
290 return rate; 290 return rate;
291} 291}
292 292
293static int __init ssi_get_iomem(struct platform_device *pd, 293static int ssi_get_iomem(struct platform_device *pd,
294 const char *name, void __iomem **pbase, dma_addr_t *phy) 294 const char *name, void __iomem **pbase, dma_addr_t *phy)
295{ 295{
296 struct resource *mem; 296 struct resource *mem;
@@ -310,7 +310,7 @@ static int __init ssi_get_iomem(struct platform_device *pd,
310 return 0; 310 return 0;
311} 311}
312 312
313static int __init ssi_add_controller(struct hsi_controller *ssi, 313static int ssi_add_controller(struct hsi_controller *ssi,
314 struct platform_device *pd) 314 struct platform_device *pd)
315{ 315{
316 struct omap_ssi_controller *omap_ssi; 316 struct omap_ssi_controller *omap_ssi;
@@ -386,7 +386,7 @@ out_err:
386 return err; 386 return err;
387} 387}
388 388
389static int __init ssi_hw_init(struct hsi_controller *ssi) 389static int ssi_hw_init(struct hsi_controller *ssi)
390{ 390{
391 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); 391 struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi);
392 unsigned int i; 392 unsigned int i;
@@ -456,7 +456,7 @@ static int ssi_remove_ports(struct device *dev, void *c)
456 return 0; 456 return 0;
457} 457}
458 458
459static int __init ssi_probe(struct platform_device *pd) 459static int ssi_probe(struct platform_device *pd)
460{ 460{
461 struct platform_device *childpdev; 461 struct platform_device *childpdev;
462 struct device_node *np = pd->dev.of_node; 462 struct device_node *np = pd->dev.of_node;
@@ -522,7 +522,7 @@ out1:
522 return err; 522 return err;
523} 523}
524 524
525static int __exit ssi_remove(struct platform_device *pd) 525static int ssi_remove(struct platform_device *pd)
526{ 526{
527 struct hsi_controller *ssi = platform_get_drvdata(pd); 527 struct hsi_controller *ssi = platform_get_drvdata(pd);
528 528
@@ -592,7 +592,8 @@ MODULE_DEVICE_TABLE(of, omap_ssi_of_match);
592#endif 592#endif
593 593
594static struct platform_driver ssi_pdriver = { 594static struct platform_driver ssi_pdriver = {
595 .remove = __exit_p(ssi_remove), 595 .probe = ssi_probe,
596 .remove = ssi_remove,
596 .driver = { 597 .driver = {
597 .name = "omap_ssi", 598 .name = "omap_ssi",
598 .pm = DEV_PM_OPS, 599 .pm = DEV_PM_OPS,
@@ -600,7 +601,7 @@ static struct platform_driver ssi_pdriver = {
600 }, 601 },
601}; 602};
602 603
603module_platform_driver_probe(ssi_pdriver, ssi_probe); 604module_platform_driver(ssi_pdriver);
604 605
605MODULE_ALIAS("platform:omap_ssi"); 606MODULE_ALIAS("platform:omap_ssi");
606MODULE_AUTHOR("Carlos Chinea <carlos.chinea@nokia.com>"); 607MODULE_AUTHOR("Carlos Chinea <carlos.chinea@nokia.com>");
diff --git a/drivers/hsi/controllers/omap_ssi_port.c b/drivers/hsi/controllers/omap_ssi_port.c
index 948bdc7946fb..530095ed39e7 100644
--- a/drivers/hsi/controllers/omap_ssi_port.c
+++ b/drivers/hsi/controllers/omap_ssi_port.c
@@ -171,7 +171,7 @@ static int ssi_div_set(void *data, u64 val)
171 171
172DEFINE_SIMPLE_ATTRIBUTE(ssi_sst_div_fops, ssi_div_get, ssi_div_set, "%llu\n"); 172DEFINE_SIMPLE_ATTRIBUTE(ssi_sst_div_fops, ssi_div_get, ssi_div_set, "%llu\n");
173 173
174static int __init ssi_debug_add_port(struct omap_ssi_port *omap_port, 174static int ssi_debug_add_port(struct omap_ssi_port *omap_port,
175 struct dentry *dir) 175 struct dentry *dir)
176{ 176{
177 struct hsi_port *port = to_hsi_port(omap_port->dev); 177 struct hsi_port *port = to_hsi_port(omap_port->dev);
@@ -1007,7 +1007,7 @@ static irqreturn_t ssi_wake_isr(int irq __maybe_unused, void *ssi_port)
1007 return IRQ_HANDLED; 1007 return IRQ_HANDLED;
1008} 1008}
1009 1009
1010static int __init ssi_port_irq(struct hsi_port *port, 1010static int ssi_port_irq(struct hsi_port *port,
1011 struct platform_device *pd) 1011 struct platform_device *pd)
1012{ 1012{
1013 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); 1013 struct omap_ssi_port *omap_port = hsi_port_drvdata(port);
@@ -1029,7 +1029,7 @@ static int __init ssi_port_irq(struct hsi_port *port,
1029 return err; 1029 return err;
1030} 1030}
1031 1031
1032static int __init ssi_wake_irq(struct hsi_port *port, 1032static int ssi_wake_irq(struct hsi_port *port,
1033 struct platform_device *pd) 1033 struct platform_device *pd)
1034{ 1034{
1035 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); 1035 struct omap_ssi_port *omap_port = hsi_port_drvdata(port);
@@ -1060,7 +1060,7 @@ static int __init ssi_wake_irq(struct hsi_port *port,
1060 return err; 1060 return err;
1061} 1061}
1062 1062
1063static void __init ssi_queues_init(struct omap_ssi_port *omap_port) 1063static void ssi_queues_init(struct omap_ssi_port *omap_port)
1064{ 1064{
1065 unsigned int ch; 1065 unsigned int ch;
1066 1066
@@ -1071,7 +1071,7 @@ static void __init ssi_queues_init(struct omap_ssi_port *omap_port)
1071 INIT_LIST_HEAD(&omap_port->brkqueue); 1071 INIT_LIST_HEAD(&omap_port->brkqueue);
1072} 1072}
1073 1073
1074static int __init ssi_port_get_iomem(struct platform_device *pd, 1074static int ssi_port_get_iomem(struct platform_device *pd,
1075 const char *name, void __iomem **pbase, dma_addr_t *phy) 1075 const char *name, void __iomem **pbase, dma_addr_t *phy)
1076{ 1076{
1077 struct hsi_port *port = platform_get_drvdata(pd); 1077 struct hsi_port *port = platform_get_drvdata(pd);
@@ -1104,7 +1104,7 @@ static int __init ssi_port_get_iomem(struct platform_device *pd,
1104 return 0; 1104 return 0;
1105} 1105}
1106 1106
1107static int __init ssi_port_probe(struct platform_device *pd) 1107static int ssi_port_probe(struct platform_device *pd)
1108{ 1108{
1109 struct device_node *np = pd->dev.of_node; 1109 struct device_node *np = pd->dev.of_node;
1110 struct hsi_port *port; 1110 struct hsi_port *port;
@@ -1217,7 +1217,7 @@ error:
1217 return err; 1217 return err;
1218} 1218}
1219 1219
1220static int __exit ssi_port_remove(struct platform_device *pd) 1220static int ssi_port_remove(struct platform_device *pd)
1221{ 1221{
1222 struct hsi_port *port = platform_get_drvdata(pd); 1222 struct hsi_port *port = platform_get_drvdata(pd);
1223 struct omap_ssi_port *omap_port = hsi_port_drvdata(port); 1223 struct omap_ssi_port *omap_port = hsi_port_drvdata(port);
@@ -1370,7 +1370,8 @@ MODULE_DEVICE_TABLE(of, omap_ssi_port_of_match);
1370#endif 1370#endif
1371 1371
1372static struct platform_driver ssi_port_pdriver = { 1372static struct platform_driver ssi_port_pdriver = {
1373 .remove = __exit_p(ssi_port_remove), 1373 .probe = ssi_port_probe,
1374 .remove = ssi_port_remove,
1374 .driver = { 1375 .driver = {
1375 .name = "omap_ssi_port", 1376 .name = "omap_ssi_port",
1376 .of_match_table = omap_ssi_port_of_match, 1377 .of_match_table = omap_ssi_port_of_match,
@@ -1378,7 +1379,7 @@ static struct platform_driver ssi_port_pdriver = {
1378 }, 1379 },
1379}; 1380};
1380 1381
1381module_platform_driver_probe(ssi_port_pdriver, ssi_port_probe); 1382module_platform_driver(ssi_port_pdriver);
1382 1383
1383MODULE_ALIAS("platform:omap_ssi_port"); 1384MODULE_ALIAS("platform:omap_ssi_port");
1384MODULE_AUTHOR("Carlos Chinea <carlos.chinea@nokia.com>"); 1385MODULE_AUTHOR("Carlos Chinea <carlos.chinea@nokia.com>");