diff options
author | Vivek Gautam <gautam.vivek@samsung.com> | 2012-07-16 01:55:37 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-07-16 20:16:17 -0400 |
commit | 2c026e2b36e8e934de9726398a3e1eeb3fa6055c (patch) | |
tree | 93d74f8d90bec677238e2b2ec5c95e49e0e00be4 /drivers/usb/host/ehci-s5p.c | |
parent | d51389306f598d635c55e72f42609b543efd9469 (diff) |
USB: ehci-s5p: Add support for device tree
This patch adds support to parse probe data for
ehci driver for exynos using device tree
Signed-off-by: Thomas Abraham <thomas.abraham@linaro.org>
Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Acked-by: Jingoo Han <jg1.han@samsung.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/ehci-s5p.c')
-rw-r--r-- | drivers/usb/host/ehci-s5p.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-s5p.c b/drivers/usb/host/ehci-s5p.c index 13c179fb2ee2..37d84cf9a408 100644 --- a/drivers/usb/host/ehci-s5p.c +++ b/drivers/usb/host/ehci-s5p.c | |||
@@ -13,6 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/clk.h> | 15 | #include <linux/clk.h> |
16 | #include <linux/of.h> | ||
16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
17 | #include <plat/ehci.h> | 18 | #include <plat/ehci.h> |
18 | #include <plat/usb-phy.h> | 19 | #include <plat/usb-phy.h> |
@@ -63,6 +64,8 @@ static const struct hc_driver s5p_ehci_hc_driver = { | |||
63 | .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete, | 64 | .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete, |
64 | }; | 65 | }; |
65 | 66 | ||
67 | static u64 ehci_s5p_dma_mask = DMA_BIT_MASK(32); | ||
68 | |||
66 | static int __devinit s5p_ehci_probe(struct platform_device *pdev) | 69 | static int __devinit s5p_ehci_probe(struct platform_device *pdev) |
67 | { | 70 | { |
68 | struct s5p_ehci_platdata *pdata; | 71 | struct s5p_ehci_platdata *pdata; |
@@ -79,6 +82,16 @@ static int __devinit s5p_ehci_probe(struct platform_device *pdev) | |||
79 | return -EINVAL; | 82 | return -EINVAL; |
80 | } | 83 | } |
81 | 84 | ||
85 | /* | ||
86 | * Right now device-tree probed devices don't get dma_mask set. | ||
87 | * Since shared usb code relies on it, set it here for now. | ||
88 | * Once we move to full device tree support this will vanish off. | ||
89 | */ | ||
90 | if (!pdev->dev.dma_mask) | ||
91 | pdev->dev.dma_mask = &ehci_s5p_dma_mask; | ||
92 | if (!pdev->dev.coherent_dma_mask) | ||
93 | pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | ||
94 | |||
82 | s5p_ehci = devm_kzalloc(&pdev->dev, sizeof(struct s5p_ehci_hcd), | 95 | s5p_ehci = devm_kzalloc(&pdev->dev, sizeof(struct s5p_ehci_hcd), |
83 | GFP_KERNEL); | 96 | GFP_KERNEL); |
84 | if (!s5p_ehci) | 97 | if (!s5p_ehci) |
@@ -233,6 +246,14 @@ static const struct dev_pm_ops s5p_ehci_pm_ops = { | |||
233 | .resume = s5p_ehci_resume, | 246 | .resume = s5p_ehci_resume, |
234 | }; | 247 | }; |
235 | 248 | ||
249 | #ifdef CONFIG_OF | ||
250 | static const struct of_device_id exynos_ehci_match[] = { | ||
251 | { .compatible = "samsung,exynos-ehci" }, | ||
252 | {}, | ||
253 | }; | ||
254 | MODULE_DEVICE_TABLE(of, exynos_ehci_match); | ||
255 | #endif | ||
256 | |||
236 | static struct platform_driver s5p_ehci_driver = { | 257 | static struct platform_driver s5p_ehci_driver = { |
237 | .probe = s5p_ehci_probe, | 258 | .probe = s5p_ehci_probe, |
238 | .remove = __devexit_p(s5p_ehci_remove), | 259 | .remove = __devexit_p(s5p_ehci_remove), |
@@ -241,6 +262,7 @@ static struct platform_driver s5p_ehci_driver = { | |||
241 | .name = "s5p-ehci", | 262 | .name = "s5p-ehci", |
242 | .owner = THIS_MODULE, | 263 | .owner = THIS_MODULE, |
243 | .pm = &s5p_ehci_pm_ops, | 264 | .pm = &s5p_ehci_pm_ops, |
265 | .of_match_table = of_match_ptr(exynos_ehci_match), | ||
244 | } | 266 | } |
245 | }; | 267 | }; |
246 | 268 | ||