diff options
Diffstat (limited to 'drivers/video/omap2/displays')
-rw-r--r-- | drivers/video/omap2/displays/panel-taal.c | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c index 0f21fa5a16ae..72d63076ab19 100644 --- a/drivers/video/omap2/displays/panel-taal.c +++ b/drivers/video/omap2/displays/panel-taal.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/gpio.h> | 30 | #include <linux/gpio.h> |
31 | #include <linux/workqueue.h> | 31 | #include <linux/workqueue.h> |
32 | #include <linux/slab.h> | 32 | #include <linux/slab.h> |
33 | #include <linux/regulator/consumer.h> | ||
34 | #include <linux/mutex.h> | 33 | #include <linux/mutex.h> |
35 | 34 | ||
36 | #include <video/omapdss.h> | 35 | #include <video/omapdss.h> |
@@ -55,73 +54,6 @@ static int _taal_enable_te(struct omap_dss_device *dssdev, bool enable); | |||
55 | 54 | ||
56 | static int taal_panel_reset(struct omap_dss_device *dssdev); | 55 | static int taal_panel_reset(struct omap_dss_device *dssdev); |
57 | 56 | ||
58 | struct panel_regulator { | ||
59 | struct regulator *regulator; | ||
60 | const char *name; | ||
61 | int min_uV; | ||
62 | int max_uV; | ||
63 | }; | ||
64 | |||
65 | static void free_regulators(struct panel_regulator *regulators, int n) | ||
66 | { | ||
67 | int i; | ||
68 | |||
69 | for (i = 0; i < n; i++) { | ||
70 | /* disable/put in reverse order */ | ||
71 | regulator_disable(regulators[n - i - 1].regulator); | ||
72 | regulator_put(regulators[n - i - 1].regulator); | ||
73 | } | ||
74 | } | ||
75 | |||
76 | static int init_regulators(struct omap_dss_device *dssdev, | ||
77 | struct panel_regulator *regulators, int n) | ||
78 | { | ||
79 | int r, i, v; | ||
80 | |||
81 | for (i = 0; i < n; i++) { | ||
82 | struct regulator *reg; | ||
83 | |||
84 | reg = regulator_get(&dssdev->dev, regulators[i].name); | ||
85 | if (IS_ERR(reg)) { | ||
86 | dev_err(&dssdev->dev, "failed to get regulator %s\n", | ||
87 | regulators[i].name); | ||
88 | r = PTR_ERR(reg); | ||
89 | goto err; | ||
90 | } | ||
91 | |||
92 | /* FIXME: better handling of fixed vs. variable regulators */ | ||
93 | v = regulator_get_voltage(reg); | ||
94 | if (v < regulators[i].min_uV || v > regulators[i].max_uV) { | ||
95 | r = regulator_set_voltage(reg, regulators[i].min_uV, | ||
96 | regulators[i].max_uV); | ||
97 | if (r) { | ||
98 | dev_err(&dssdev->dev, | ||
99 | "failed to set regulator %s voltage\n", | ||
100 | regulators[i].name); | ||
101 | regulator_put(reg); | ||
102 | goto err; | ||
103 | } | ||
104 | } | ||
105 | |||
106 | r = regulator_enable(reg); | ||
107 | if (r) { | ||
108 | dev_err(&dssdev->dev, "failed to enable regulator %s\n", | ||
109 | regulators[i].name); | ||
110 | regulator_put(reg); | ||
111 | goto err; | ||
112 | } | ||
113 | |||
114 | regulators[i].regulator = reg; | ||
115 | } | ||
116 | |||
117 | return 0; | ||
118 | |||
119 | err: | ||
120 | free_regulators(regulators, i); | ||
121 | |||
122 | return r; | ||
123 | } | ||
124 | |||
125 | /** | 57 | /** |
126 | * struct panel_config - panel configuration | 58 | * struct panel_config - panel configuration |
127 | * @name: panel name | 59 | * @name: panel name |
@@ -150,8 +82,6 @@ struct panel_config { | |||
150 | unsigned int low; | 82 | unsigned int low; |
151 | } reset_sequence; | 83 | } reset_sequence; |
152 | 84 | ||
153 | struct panel_regulator *regulators; | ||
154 | int num_regulators; | ||
155 | }; | 85 | }; |
156 | 86 | ||
157 | enum { | 87 | enum { |
@@ -977,11 +907,6 @@ static int taal_probe(struct omap_dss_device *dssdev) | |||
977 | 907 | ||
978 | atomic_set(&td->do_update, 0); | 908 | atomic_set(&td->do_update, 0); |
979 | 909 | ||
980 | r = init_regulators(dssdev, panel_config->regulators, | ||
981 | panel_config->num_regulators); | ||
982 | if (r) | ||
983 | goto err_reg; | ||
984 | |||
985 | td->workqueue = create_singlethread_workqueue("taal_esd"); | 910 | td->workqueue = create_singlethread_workqueue("taal_esd"); |
986 | if (td->workqueue == NULL) { | 911 | if (td->workqueue == NULL) { |
987 | dev_err(&dssdev->dev, "can't create ESD workqueue\n"); | 912 | dev_err(&dssdev->dev, "can't create ESD workqueue\n"); |
@@ -1075,8 +1000,6 @@ err_gpio: | |||
1075 | err_bl: | 1000 | err_bl: |
1076 | destroy_workqueue(td->workqueue); | 1001 | destroy_workqueue(td->workqueue); |
1077 | err_wq: | 1002 | err_wq: |
1078 | free_regulators(panel_config->regulators, panel_config->num_regulators); | ||
1079 | err_reg: | ||
1080 | kfree(td); | 1003 | kfree(td); |
1081 | err: | 1004 | err: |
1082 | return r; | 1005 | return r; |
@@ -1113,9 +1036,6 @@ static void __exit taal_remove(struct omap_dss_device *dssdev) | |||
1113 | /* reset, to be sure that the panel is in a valid state */ | 1036 | /* reset, to be sure that the panel is in a valid state */ |
1114 | taal_hw_reset(dssdev); | 1037 | taal_hw_reset(dssdev); |
1115 | 1038 | ||
1116 | free_regulators(td->panel_config->regulators, | ||
1117 | td->panel_config->num_regulators); | ||
1118 | |||
1119 | kfree(td); | 1039 | kfree(td); |
1120 | } | 1040 | } |
1121 | 1041 | ||