struct i2c_client *client;
struct regulator *v12;
+ struct regulator *bck_fet;
+ struct regulator *lcd_fet;
struct backlight_device *bl;
int gpio_slp_n;
if (bridge->v12)
regulator_enable(bridge->v12);
+ if (bridge->bck_fet)
+ regulator_enable(bridge->bck_fet);
+ if (bridge->lcd_fet)
+ regulator_enable(bridge->lcd_fet);
if (gpio_is_valid(bridge->gpio_slp_n))
gpio_set_value(bridge->gpio_slp_n, 1);
if (gpio_is_valid(bridge->gpio_slp_n))
gpio_set_value(bridge->gpio_slp_n, 0);
+ if (bridge->lcd_fet)
+ regulator_disable(bridge->lcd_fet);
+ if (bridge->bck_fet)
+ regulator_disable(bridge->bck_fet);
if (bridge->v12)
regulator_disable(bridge->v12);
}
drm_bridge_cleanup(dbridge);
if (bridge->bl)
backlight_device_unregister(bridge->bl);
+ if (bridge->lcd_fet)
+ regulator_put(bridge->lcd_fet);
+ if (bridge->bck_fet)
+ regulator_put(bridge->bck_fet);
if (bridge->v12)
regulator_put(bridge->v12);
if (gpio_is_valid(bridge->gpio_slp_n))
DRM_ERROR("no 1.2v regulator found for PS8622\n");
bridge->v12 = NULL;
}
+ bridge->bck_fet = regulator_get(&client->dev, "vcd_led");
+ if (IS_ERR(bridge->bck_fet)) {
+ DRM_ERROR("no regulator found for backlight FET\n");
+ bridge->bck_fet = NULL;
+ }
+ bridge->lcd_fet = regulator_get(&client->dev, "lcd_vdd");
+ if (IS_ERR(bridge->lcd_fet)) {
+ DRM_ERROR("no regulator found for LCD FET\n");
+ bridge->lcd_fet = NULL;
+ }
bridge->gpio_slp_n = of_get_named_gpio(node, "sleep-gpio", 0);
if (gpio_is_valid(bridge->gpio_slp_n)) {
if (gpio_is_valid(bridge->gpio_slp_n))
gpio_free(bridge->gpio_slp_n);
err_reg:
+ if (bridge->bck_fet)
+ regulator_put(bridge->bck_fet);
+ if (bridge->lcd_fet)
+ regulator_put(bridge->lcd_fet);
if (bridge->v12)
regulator_put(bridge->v12);
DRM_ERROR("device probe failed : %d\n", ret);