|
@@ -133,8 +133,7 @@ struct {
|
|
struct lcd_ctrl_extif *extif;
|
|
struct lcd_ctrl_extif *extif;
|
|
struct lcd_ctrl *int_ctrl;
|
|
struct lcd_ctrl *int_ctrl;
|
|
|
|
|
|
- void (*power_up)(struct device *dev);
|
|
|
|
- void (*power_down)(struct device *dev);
|
|
|
|
|
|
+ struct clk *sys_ck;
|
|
} hwa742;
|
|
} hwa742;
|
|
|
|
|
|
struct lcd_ctrl hwa742_ctrl;
|
|
struct lcd_ctrl hwa742_ctrl;
|
|
@@ -915,14 +914,13 @@ static void hwa742_suspend(void)
|
|
hwa742_set_update_mode(OMAPFB_UPDATE_DISABLED);
|
|
hwa742_set_update_mode(OMAPFB_UPDATE_DISABLED);
|
|
/* Enable sleep mode */
|
|
/* Enable sleep mode */
|
|
hwa742_write_reg(HWA742_POWER_SAVE, 1 << 1);
|
|
hwa742_write_reg(HWA742_POWER_SAVE, 1 << 1);
|
|
- if (hwa742.power_down != NULL)
|
|
|
|
- hwa742.power_down(hwa742.fbdev->dev);
|
|
|
|
|
|
+ clk_disable(hwa742.sys_ck);
|
|
}
|
|
}
|
|
|
|
|
|
static void hwa742_resume(void)
|
|
static void hwa742_resume(void)
|
|
{
|
|
{
|
|
- if (hwa742.power_up != NULL)
|
|
|
|
- hwa742.power_up(hwa742.fbdev->dev);
|
|
|
|
|
|
+ clk_enable(hwa742.sys_ck);
|
|
|
|
+
|
|
/* Disable sleep mode */
|
|
/* Disable sleep mode */
|
|
hwa742_write_reg(HWA742_POWER_SAVE, 0);
|
|
hwa742_write_reg(HWA742_POWER_SAVE, 0);
|
|
while (1) {
|
|
while (1) {
|
|
@@ -955,14 +953,13 @@ static int hwa742_init(struct omapfb_device *fbdev, int ext_mode,
|
|
omapfb_conf = fbdev->dev->platform_data;
|
|
omapfb_conf = fbdev->dev->platform_data;
|
|
ctrl_conf = omapfb_conf->ctrl_platform_data;
|
|
ctrl_conf = omapfb_conf->ctrl_platform_data;
|
|
|
|
|
|
- if (ctrl_conf == NULL || ctrl_conf->get_clock_rate == NULL) {
|
|
|
|
|
|
+ if (ctrl_conf == NULL) {
|
|
dev_err(fbdev->dev, "HWA742: missing platform data\n");
|
|
dev_err(fbdev->dev, "HWA742: missing platform data\n");
|
|
r = -ENOENT;
|
|
r = -ENOENT;
|
|
goto err1;
|
|
goto err1;
|
|
}
|
|
}
|
|
|
|
|
|
- hwa742.power_down = ctrl_conf->power_down;
|
|
|
|
- hwa742.power_up = ctrl_conf->power_up;
|
|
|
|
|
|
+ hwa742.sys_ck = clk_get(NULL, "hwa_sys_ck");
|
|
|
|
|
|
spin_lock_init(&hwa742.req_lock);
|
|
spin_lock_init(&hwa742.req_lock);
|
|
|
|
|
|
@@ -972,12 +969,11 @@ static int hwa742_init(struct omapfb_device *fbdev, int ext_mode,
|
|
if ((r = hwa742.extif->init(fbdev)) < 0)
|
|
if ((r = hwa742.extif->init(fbdev)) < 0)
|
|
goto err2;
|
|
goto err2;
|
|
|
|
|
|
- ext_clk = ctrl_conf->get_clock_rate(fbdev->dev);
|
|
|
|
|
|
+ ext_clk = clk_get_rate(hwa742.sys_ck);
|
|
if ((r = calc_extif_timings(ext_clk, &extif_mem_div)) < 0)
|
|
if ((r = calc_extif_timings(ext_clk, &extif_mem_div)) < 0)
|
|
goto err3;
|
|
goto err3;
|
|
hwa742.extif->set_timings(&hwa742.reg_timings);
|
|
hwa742.extif->set_timings(&hwa742.reg_timings);
|
|
- if (hwa742.power_up != NULL)
|
|
|
|
- hwa742.power_up(fbdev->dev);
|
|
|
|
|
|
+ clk_enable(hwa742.sys_ck);
|
|
|
|
|
|
calc_hwa742_clk_rates(ext_clk, &sys_clk, &pix_clk);
|
|
calc_hwa742_clk_rates(ext_clk, &sys_clk, &pix_clk);
|
|
if ((r = calc_extif_timings(sys_clk, &extif_mem_div)) < 0)
|
|
if ((r = calc_extif_timings(sys_clk, &extif_mem_div)) < 0)
|
|
@@ -1040,8 +1036,7 @@ static int hwa742_init(struct omapfb_device *fbdev, int ext_mode,
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
err4:
|
|
err4:
|
|
- if (hwa742.power_down != NULL)
|
|
|
|
- hwa742.power_down(fbdev->dev);
|
|
|
|
|
|
+ clk_disable(hwa742.sys_ck);
|
|
err3:
|
|
err3:
|
|
hwa742.extif->cleanup();
|
|
hwa742.extif->cleanup();
|
|
err2:
|
|
err2:
|
|
@@ -1055,8 +1050,7 @@ static void hwa742_cleanup(void)
|
|
hwa742_set_update_mode(OMAPFB_UPDATE_DISABLED);
|
|
hwa742_set_update_mode(OMAPFB_UPDATE_DISABLED);
|
|
hwa742.extif->cleanup();
|
|
hwa742.extif->cleanup();
|
|
hwa742.int_ctrl->cleanup();
|
|
hwa742.int_ctrl->cleanup();
|
|
- if (hwa742.power_down != NULL)
|
|
|
|
- hwa742.power_down(hwa742.fbdev->dev);
|
|
|
|
|
|
+ clk_disable(hwa742.sys_ck);
|
|
}
|
|
}
|
|
|
|
|
|
struct lcd_ctrl hwa742_ctrl = {
|
|
struct lcd_ctrl hwa742_ctrl = {
|