diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ata/sata_mv.c | 42 | ||||
-rw-r--r-- | drivers/watchdog/orion_wdt.c | 8 |
2 files changed, 37 insertions, 13 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index 24712adf69df..311be18d3f03 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
@@ -65,6 +65,8 @@ | |||
65 | #include <linux/mbus.h> | 65 | #include <linux/mbus.h> |
66 | #include <linux/bitops.h> | 66 | #include <linux/bitops.h> |
67 | #include <linux/gfp.h> | 67 | #include <linux/gfp.h> |
68 | #include <linux/of.h> | ||
69 | #include <linux/of_irq.h> | ||
68 | #include <scsi/scsi_host.h> | 70 | #include <scsi/scsi_host.h> |
69 | #include <scsi/scsi_cmnd.h> | 71 | #include <scsi/scsi_cmnd.h> |
70 | #include <scsi/scsi_device.h> | 72 | #include <scsi/scsi_device.h> |
@@ -4026,7 +4028,7 @@ static int mv_platform_probe(struct platform_device *pdev) | |||
4026 | struct ata_host *host; | 4028 | struct ata_host *host; |
4027 | struct mv_host_priv *hpriv; | 4029 | struct mv_host_priv *hpriv; |
4028 | struct resource *res; | 4030 | struct resource *res; |
4029 | int n_ports = 0; | 4031 | int n_ports = 0, irq = 0; |
4030 | int rc; | 4032 | int rc; |
4031 | #if defined(CONFIG_HAVE_CLK) | 4033 | #if defined(CONFIG_HAVE_CLK) |
4032 | int port; | 4034 | int port; |
@@ -4050,8 +4052,14 @@ static int mv_platform_probe(struct platform_device *pdev) | |||
4050 | return -EINVAL; | 4052 | return -EINVAL; |
4051 | 4053 | ||
4052 | /* allocate host */ | 4054 | /* allocate host */ |
4053 | mv_platform_data = pdev->dev.platform_data; | 4055 | if (pdev->dev.of_node) { |
4054 | n_ports = mv_platform_data->n_ports; | 4056 | of_property_read_u32(pdev->dev.of_node, "nr-ports", &n_ports); |
4057 | irq = irq_of_parse_and_map(pdev->dev.of_node, 0); | ||
4058 | } else { | ||
4059 | mv_platform_data = pdev->dev.platform_data; | ||
4060 | n_ports = mv_platform_data->n_ports; | ||
4061 | irq = platform_get_irq(pdev, 0); | ||
4062 | } | ||
4055 | 4063 | ||
4056 | host = ata_host_alloc_pinfo(&pdev->dev, ppi, n_ports); | 4064 | host = ata_host_alloc_pinfo(&pdev->dev, ppi, n_ports); |
4057 | hpriv = devm_kzalloc(&pdev->dev, sizeof(*hpriv), GFP_KERNEL); | 4065 | hpriv = devm_kzalloc(&pdev->dev, sizeof(*hpriv), GFP_KERNEL); |
@@ -4109,8 +4117,7 @@ static int mv_platform_probe(struct platform_device *pdev) | |||
4109 | dev_info(&pdev->dev, "slots %u ports %d\n", | 4117 | dev_info(&pdev->dev, "slots %u ports %d\n", |
4110 | (unsigned)MV_MAX_Q_DEPTH, host->n_ports); | 4118 | (unsigned)MV_MAX_Q_DEPTH, host->n_ports); |
4111 | 4119 | ||
4112 | rc = ata_host_activate(host, platform_get_irq(pdev, 0), mv_interrupt, | 4120 | rc = ata_host_activate(host, irq, mv_interrupt, IRQF_SHARED, &mv6_sht); |
4113 | IRQF_SHARED, &mv6_sht); | ||
4114 | if (!rc) | 4121 | if (!rc) |
4115 | return 0; | 4122 | return 0; |
4116 | 4123 | ||
@@ -4205,15 +4212,24 @@ static int mv_platform_resume(struct platform_device *pdev) | |||
4205 | #define mv_platform_resume NULL | 4212 | #define mv_platform_resume NULL |
4206 | #endif | 4213 | #endif |
4207 | 4214 | ||
4215 | #ifdef CONFIG_OF | ||
4216 | static struct of_device_id mv_sata_dt_ids[] __devinitdata = { | ||
4217 | { .compatible = "marvell,orion-sata", }, | ||
4218 | {}, | ||
4219 | }; | ||
4220 | MODULE_DEVICE_TABLE(of, mv_sata_dt_ids); | ||
4221 | #endif | ||
4222 | |||
4208 | static struct platform_driver mv_platform_driver = { | 4223 | static struct platform_driver mv_platform_driver = { |
4209 | .probe = mv_platform_probe, | 4224 | .probe = mv_platform_probe, |
4210 | .remove = __devexit_p(mv_platform_remove), | 4225 | .remove = __devexit_p(mv_platform_remove), |
4211 | .suspend = mv_platform_suspend, | 4226 | .suspend = mv_platform_suspend, |
4212 | .resume = mv_platform_resume, | 4227 | .resume = mv_platform_resume, |
4213 | .driver = { | 4228 | .driver = { |
4214 | .name = DRV_NAME, | 4229 | .name = DRV_NAME, |
4215 | .owner = THIS_MODULE, | 4230 | .owner = THIS_MODULE, |
4216 | }, | 4231 | .of_match_table = of_match_ptr(mv_sata_dt_ids), |
4232 | }, | ||
4217 | }; | 4233 | }; |
4218 | 4234 | ||
4219 | 4235 | ||
diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c index a73bea4aa1ba..c20f96b579d9 100644 --- a/drivers/watchdog/orion_wdt.c +++ b/drivers/watchdog/orion_wdt.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/spinlock.h> | 24 | #include <linux/spinlock.h> |
25 | #include <linux/clk.h> | 25 | #include <linux/clk.h> |
26 | #include <linux/err.h> | 26 | #include <linux/err.h> |
27 | #include <linux/of.h> | ||
27 | #include <mach/bridge-regs.h> | 28 | #include <mach/bridge-regs.h> |
28 | 29 | ||
29 | /* | 30 | /* |
@@ -192,6 +193,12 @@ static void orion_wdt_shutdown(struct platform_device *pdev) | |||
192 | orion_wdt_stop(&orion_wdt); | 193 | orion_wdt_stop(&orion_wdt); |
193 | } | 194 | } |
194 | 195 | ||
196 | static const struct of_device_id orion_wdt_of_match_table[] __devinitdata = { | ||
197 | { .compatible = "marvell,orion-wdt", }, | ||
198 | {}, | ||
199 | }; | ||
200 | MODULE_DEVICE_TABLE(of, orion_wdt_of_match_table); | ||
201 | |||
195 | static struct platform_driver orion_wdt_driver = { | 202 | static struct platform_driver orion_wdt_driver = { |
196 | .probe = orion_wdt_probe, | 203 | .probe = orion_wdt_probe, |
197 | .remove = __devexit_p(orion_wdt_remove), | 204 | .remove = __devexit_p(orion_wdt_remove), |
@@ -199,6 +206,7 @@ static struct platform_driver orion_wdt_driver = { | |||
199 | .driver = { | 206 | .driver = { |
200 | .owner = THIS_MODULE, | 207 | .owner = THIS_MODULE, |
201 | .name = "orion_wdt", | 208 | .name = "orion_wdt", |
209 | .of_match_table = of_match_ptr(orion_wdt_of_match_table), | ||
202 | }, | 210 | }, |
203 | }; | 211 | }; |
204 | 212 | ||