diff options
Diffstat (limited to 'drivers/video/omap2/displays/panel-taal.c')
-rw-r--r-- | drivers/video/omap2/displays/panel-taal.c | 90 |
1 files changed, 1 insertions, 89 deletions
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c index b2dd88b48420..901576eb5a84 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 { |
@@ -577,12 +507,6 @@ static const struct backlight_ops taal_bl_ops = { | |||
577 | .update_status = taal_bl_update_status, | 507 | .update_status = taal_bl_update_status, |
578 | }; | 508 | }; |
579 | 509 | ||
580 | static void taal_get_timings(struct omap_dss_device *dssdev, | ||
581 | struct omap_video_timings *timings) | ||
582 | { | ||
583 | *timings = dssdev->panel.timings; | ||
584 | } | ||
585 | |||
586 | static void taal_get_resolution(struct omap_dss_device *dssdev, | 510 | static void taal_get_resolution(struct omap_dss_device *dssdev, |
587 | u16 *xres, u16 *yres) | 511 | u16 *xres, u16 *yres) |
588 | { | 512 | { |
@@ -602,7 +526,7 @@ static ssize_t taal_num_errors_show(struct device *dev, | |||
602 | { | 526 | { |
603 | struct omap_dss_device *dssdev = to_dss_device(dev); | 527 | struct omap_dss_device *dssdev = to_dss_device(dev); |
604 | struct taal_data *td = dev_get_drvdata(&dssdev->dev); | 528 | struct taal_data *td = dev_get_drvdata(&dssdev->dev); |
605 | u8 errors; | 529 | u8 errors = 0; |
606 | int r; | 530 | int r; |
607 | 531 | ||
608 | mutex_lock(&td->lock); | 532 | mutex_lock(&td->lock); |
@@ -977,11 +901,6 @@ static int taal_probe(struct omap_dss_device *dssdev) | |||
977 | 901 | ||
978 | atomic_set(&td->do_update, 0); | 902 | atomic_set(&td->do_update, 0); |
979 | 903 | ||
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"); | 904 | td->workqueue = create_singlethread_workqueue("taal_esd"); |
986 | if (td->workqueue == NULL) { | 905 | if (td->workqueue == NULL) { |
987 | dev_err(&dssdev->dev, "can't create ESD workqueue\n"); | 906 | dev_err(&dssdev->dev, "can't create ESD workqueue\n"); |
@@ -1087,8 +1006,6 @@ err_bl: | |||
1087 | err_rst_gpio: | 1006 | err_rst_gpio: |
1088 | destroy_workqueue(td->workqueue); | 1007 | destroy_workqueue(td->workqueue); |
1089 | err_wq: | 1008 | err_wq: |
1090 | free_regulators(panel_config->regulators, panel_config->num_regulators); | ||
1091 | err_reg: | ||
1092 | kfree(td); | 1009 | kfree(td); |
1093 | err: | 1010 | err: |
1094 | return r; | 1011 | return r; |
@@ -1125,9 +1042,6 @@ static void __exit taal_remove(struct omap_dss_device *dssdev) | |||
1125 | /* reset, to be sure that the panel is in a valid state */ | 1042 | /* reset, to be sure that the panel is in a valid state */ |
1126 | taal_hw_reset(dssdev); | 1043 | taal_hw_reset(dssdev); |
1127 | 1044 | ||
1128 | free_regulators(td->panel_config->regulators, | ||
1129 | td->panel_config->num_regulators); | ||
1130 | |||
1131 | if (gpio_is_valid(panel_data->reset_gpio)) | 1045 | if (gpio_is_valid(panel_data->reset_gpio)) |
1132 | gpio_free(panel_data->reset_gpio); | 1046 | gpio_free(panel_data->reset_gpio); |
1133 | 1047 | ||
@@ -1909,8 +1823,6 @@ static struct omap_dss_driver taal_driver = { | |||
1909 | .run_test = taal_run_test, | 1823 | .run_test = taal_run_test, |
1910 | .memory_read = taal_memory_read, | 1824 | .memory_read = taal_memory_read, |
1911 | 1825 | ||
1912 | .get_timings = taal_get_timings, | ||
1913 | |||
1914 | .driver = { | 1826 | .driver = { |
1915 | .name = "taal", | 1827 | .name = "taal", |
1916 | .owner = THIS_MODULE, | 1828 | .owner = THIS_MODULE, |