diff options
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/cs5535-mfd.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/drivers/mfd/cs5535-mfd.c b/drivers/mfd/cs5535-mfd.c index 59ca6f151e78..886a06871065 100644 --- a/drivers/mfd/cs5535-mfd.c +++ b/drivers/mfd/cs5535-mfd.c | |||
@@ -39,6 +39,37 @@ enum cs5535_mfd_bars { | |||
39 | NR_BARS, | 39 | NR_BARS, |
40 | }; | 40 | }; |
41 | 41 | ||
42 | static int cs5535_mfd_res_enable(struct platform_device *pdev) | ||
43 | { | ||
44 | struct resource *res; | ||
45 | |||
46 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); | ||
47 | if (!res) { | ||
48 | dev_err(&pdev->dev, "can't fetch device resource info\n"); | ||
49 | return -EIO; | ||
50 | } | ||
51 | |||
52 | if (!request_region(res->start, resource_size(res), DRV_NAME)) { | ||
53 | dev_err(&pdev->dev, "can't request region\n"); | ||
54 | return -EIO; | ||
55 | } | ||
56 | |||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | static int cs5535_mfd_res_disable(struct platform_device *pdev) | ||
61 | { | ||
62 | struct resource *res; | ||
63 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); | ||
64 | if (!res) { | ||
65 | dev_err(&pdev->dev, "can't fetch device resource info\n"); | ||
66 | return -EIO; | ||
67 | } | ||
68 | |||
69 | release_region(res->start, resource_size(res)); | ||
70 | return 0; | ||
71 | } | ||
72 | |||
42 | static __devinitdata struct resource cs5535_mfd_resources[NR_BARS]; | 73 | static __devinitdata struct resource cs5535_mfd_resources[NR_BARS]; |
43 | 74 | ||
44 | static __devinitdata struct mfd_cell cs5535_mfd_cells[] = { | 75 | static __devinitdata struct mfd_cell cs5535_mfd_cells[] = { |
@@ -65,12 +96,18 @@ static __devinitdata struct mfd_cell cs5535_mfd_cells[] = { | |||
65 | .name = "cs5535-pms", | 96 | .name = "cs5535-pms", |
66 | .num_resources = 1, | 97 | .num_resources = 1, |
67 | .resources = &cs5535_mfd_resources[PMS_BAR], | 98 | .resources = &cs5535_mfd_resources[PMS_BAR], |
99 | |||
100 | .enable = cs5535_mfd_res_enable, | ||
101 | .disable = cs5535_mfd_res_disable, | ||
68 | }, | 102 | }, |
69 | { | 103 | { |
70 | .id = ACPI_BAR, | 104 | .id = ACPI_BAR, |
71 | .name = "cs5535-acpi", | 105 | .name = "cs5535-acpi", |
72 | .num_resources = 1, | 106 | .num_resources = 1, |
73 | .resources = &cs5535_mfd_resources[ACPI_BAR], | 107 | .resources = &cs5535_mfd_resources[ACPI_BAR], |
108 | |||
109 | .enable = cs5535_mfd_res_enable, | ||
110 | .disable = cs5535_mfd_res_disable, | ||
74 | }, | 111 | }, |
75 | }; | 112 | }; |
76 | 113 | ||