Commit 3a2f22b7 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'fbdev-fixes-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux

Pull fbdev fixes from Tomi Valkeinen:

 - fix fb console option parsing

 - fixes for OMAPDSS/OMAPFB crashes related to module unloading and
   device/driver binding & unbinding.

 - fix for OMAP HDMI PLL locking failing in certain cases

 - misc minor fixes for atmel lcdfb and OMAP

* tag 'fbdev-fixes-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux:
  omap: dss: connector-analog-tv: Add missing module device table
  OMAPDSS: DSI: Fix PLL_SELFEQDCO field width
  OMAPDSS: fix dispc register dump for preload & mflag
  OMAPDSS: DISPC: fix mflag offset
  OMAPDSS: HDMI: fix regsd write
  OMAPDSS: HDMI: fix PLL GO bit handling
  OMAPFB: fix releasing overlays
  OMAPFB: fix overlay disable when freeing resources.
  OMAPDSS: apply: wait pending updates on manager disable
  OMAPFB: remove __exit annotation
  OMAPDSS: set suppress_bind_attrs
  OMAPFB: add missing MODULE_ALIAS()
  drivers: video: fbdev: atmel_lcdfb.c: remove unnecessary header
  video/console: Resolve several shadow warnings
  fbcon: Fix option parsing control flow in fb_console_setup
parents 94712927 a942535d
...@@ -448,8 +448,10 @@ static int __init fb_console_setup(char *this_opt) ...@@ -448,8 +448,10 @@ static int __init fb_console_setup(char *this_opt)
return 1; return 1;
while ((options = strsep(&this_opt, ",")) != NULL) { while ((options = strsep(&this_opt, ",")) != NULL) {
if (!strncmp(options, "font:", 5)) if (!strncmp(options, "font:", 5)) {
strlcpy(fontname, options + 5, sizeof(fontname)); strlcpy(fontname, options + 5, sizeof(fontname));
continue;
}
if (!strncmp(options, "scrollback:", 11)) { if (!strncmp(options, "scrollback:", 11)) {
options += 11; options += 11;
...@@ -457,13 +459,9 @@ static int __init fb_console_setup(char *this_opt) ...@@ -457,13 +459,9 @@ static int __init fb_console_setup(char *this_opt)
fbcon_softback_size = simple_strtoul(options, &options, 0); fbcon_softback_size = simple_strtoul(options, &options, 0);
if (*options == 'k' || *options == 'K') { if (*options == 'k' || *options == 'K') {
fbcon_softback_size *= 1024; fbcon_softback_size *= 1024;
options++;
} }
if (*options != ',') }
return 1; continue;
options++;
} else
return 1;
} }
if (!strncmp(options, "map:", 4)) { if (!strncmp(options, "map:", 4)) {
...@@ -478,8 +476,7 @@ static int __init fb_console_setup(char *this_opt) ...@@ -478,8 +476,7 @@ static int __init fb_console_setup(char *this_opt)
fbcon_map_override(); fbcon_map_override();
} }
continue;
return 1;
} }
if (!strncmp(options, "vc:", 3)) { if (!strncmp(options, "vc:", 3)) {
...@@ -491,7 +488,8 @@ static int __init fb_console_setup(char *this_opt) ...@@ -491,7 +488,8 @@ static int __init fb_console_setup(char *this_opt)
if (*options++ == '-') if (*options++ == '-')
last_fb_vc = simple_strtoul(options, &options, 10) - 1; last_fb_vc = simple_strtoul(options, &options, 10) - 1;
fbcon_is_default = 0; fbcon_is_default = 0;
} continue;
}
if (!strncmp(options, "rotate:", 7)) { if (!strncmp(options, "rotate:", 7)) {
options += 7; options += 7;
...@@ -499,6 +497,7 @@ static int __init fb_console_setup(char *this_opt) ...@@ -499,6 +497,7 @@ static int __init fb_console_setup(char *this_opt)
initial_rotation = simple_strtoul(options, &options, 0); initial_rotation = simple_strtoul(options, &options, 0);
if (initial_rotation > 3) if (initial_rotation > 3)
initial_rotation = 0; initial_rotation = 0;
continue;
} }
} }
return 1; return 1;
......
...@@ -56,7 +56,7 @@ static int cursor_size_lastfrom; ...@@ -56,7 +56,7 @@ static int cursor_size_lastfrom;
static int cursor_size_lastto; static int cursor_size_lastto;
static u32 vgacon_xres; static u32 vgacon_xres;
static u32 vgacon_yres; static u32 vgacon_yres;
static struct vgastate state; static struct vgastate vgastate;
#define BLANK 0x0020 #define BLANK 0x0020
...@@ -400,7 +400,7 @@ static const char *vgacon_startup(void) ...@@ -400,7 +400,7 @@ static const char *vgacon_startup(void)
vga_video_num_lines = screen_info.orig_video_lines; vga_video_num_lines = screen_info.orig_video_lines;
vga_video_num_columns = screen_info.orig_video_cols; vga_video_num_columns = screen_info.orig_video_cols;
state.vgabase = NULL; vgastate.vgabase = NULL;
if (screen_info.orig_video_mode == 7) { if (screen_info.orig_video_mode == 7) {
/* Monochrome display */ /* Monochrome display */
...@@ -851,12 +851,12 @@ static void vga_set_palette(struct vc_data *vc, unsigned char *table) ...@@ -851,12 +851,12 @@ static void vga_set_palette(struct vc_data *vc, unsigned char *table)
{ {
int i, j; int i, j;
vga_w(state.vgabase, VGA_PEL_MSK, 0xff); vga_w(vgastate.vgabase, VGA_PEL_MSK, 0xff);
for (i = j = 0; i < 16; i++) { for (i = j = 0; i < 16; i++) {
vga_w(state.vgabase, VGA_PEL_IW, table[i]); vga_w(vgastate.vgabase, VGA_PEL_IW, table[i]);
vga_w(state.vgabase, VGA_PEL_D, vc->vc_palette[j++] >> 2); vga_w(vgastate.vgabase, VGA_PEL_D, vc->vc_palette[j++] >> 2);
vga_w(state.vgabase, VGA_PEL_D, vc->vc_palette[j++] >> 2); vga_w(vgastate.vgabase, VGA_PEL_D, vc->vc_palette[j++] >> 2);
vga_w(state.vgabase, VGA_PEL_D, vc->vc_palette[j++] >> 2); vga_w(vgastate.vgabase, VGA_PEL_D, vc->vc_palette[j++] >> 2);
} }
} }
...@@ -1008,7 +1008,7 @@ static int vgacon_blank(struct vc_data *c, int blank, int mode_switch) ...@@ -1008,7 +1008,7 @@ static int vgacon_blank(struct vc_data *c, int blank, int mode_switch)
switch (blank) { switch (blank) {
case 0: /* Unblank */ case 0: /* Unblank */
if (vga_vesa_blanked) { if (vga_vesa_blanked) {
vga_vesa_unblank(&state); vga_vesa_unblank(&vgastate);
vga_vesa_blanked = 0; vga_vesa_blanked = 0;
} }
if (vga_palette_blanked) { if (vga_palette_blanked) {
...@@ -1022,7 +1022,7 @@ static int vgacon_blank(struct vc_data *c, int blank, int mode_switch) ...@@ -1022,7 +1022,7 @@ static int vgacon_blank(struct vc_data *c, int blank, int mode_switch)
case 1: /* Normal blanking */ case 1: /* Normal blanking */
case -1: /* Obsolete */ case -1: /* Obsolete */
if (!mode_switch && vga_video_type == VIDEO_TYPE_VGAC) { if (!mode_switch && vga_video_type == VIDEO_TYPE_VGAC) {
vga_pal_blank(&state); vga_pal_blank(&vgastate);
vga_palette_blanked = 1; vga_palette_blanked = 1;
return 0; return 0;
} }
...@@ -1034,7 +1034,7 @@ static int vgacon_blank(struct vc_data *c, int blank, int mode_switch) ...@@ -1034,7 +1034,7 @@ static int vgacon_blank(struct vc_data *c, int blank, int mode_switch)
return 1; return 1;
default: /* VESA blanking */ default: /* VESA blanking */
if (vga_video_type == VIDEO_TYPE_VGAC) { if (vga_video_type == VIDEO_TYPE_VGAC) {
vga_vesa_blank(&state, blank - 1); vga_vesa_blank(&vgastate, blank - 1);
vga_vesa_blanked = blank; vga_vesa_blanked = blank;
} }
return 0; return 0;
...@@ -1280,7 +1280,7 @@ static int vgacon_font_set(struct vc_data *c, struct console_font *font, unsigne ...@@ -1280,7 +1280,7 @@ static int vgacon_font_set(struct vc_data *c, struct console_font *font, unsigne
(charcount != 256 && charcount != 512)) (charcount != 256 && charcount != 512))
return -EINVAL; return -EINVAL;
rc = vgacon_do_font_op(&state, font->data, 1, charcount == 512); rc = vgacon_do_font_op(&vgastate, font->data, 1, charcount == 512);
if (rc) if (rc)
return rc; return rc;
...@@ -1299,7 +1299,7 @@ static int vgacon_font_get(struct vc_data *c, struct console_font *font) ...@@ -1299,7 +1299,7 @@ static int vgacon_font_get(struct vc_data *c, struct console_font *font)
font->charcount = vga_512_chars ? 512 : 256; font->charcount = vga_512_chars ? 512 : 256;
if (!font->data) if (!font->data)
return 0; return 0;
return vgacon_do_font_op(&state, font->data, 0, vga_512_chars); return vgacon_do_font_op(&vgastate, font->data, 0, vga_512_chars);
} }
#else #else
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
#include <video/videomode.h> #include <video/videomode.h>
#include <mach/cpu.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <video/atmel_lcdc.h> #include <video/atmel_lcdc.h>
......
...@@ -301,6 +301,8 @@ static const struct of_device_id tvc_of_match[] = { ...@@ -301,6 +301,8 @@ static const struct of_device_id tvc_of_match[] = {
{}, {},
}; };
MODULE_DEVICE_TABLE(of, tvc_of_match);
static struct platform_driver tvc_connector_driver = { static struct platform_driver tvc_connector_driver = {
.probe = tvc_probe, .probe = tvc_probe,
.remove = __exit_p(tvc_remove), .remove = __exit_p(tvc_remove),
...@@ -308,6 +310,7 @@ static struct platform_driver tvc_connector_driver = { ...@@ -308,6 +310,7 @@ static struct platform_driver tvc_connector_driver = {
.name = "connector-analog-tv", .name = "connector-analog-tv",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = tvc_of_match, .of_match_table = tvc_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -391,6 +391,7 @@ static struct platform_driver dvi_connector_driver = { ...@@ -391,6 +391,7 @@ static struct platform_driver dvi_connector_driver = {
.name = "connector-dvi", .name = "connector-dvi",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = dvic_of_match, .of_match_table = dvic_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -437,6 +437,7 @@ static struct platform_driver hdmi_connector_driver = { ...@@ -437,6 +437,7 @@ static struct platform_driver hdmi_connector_driver = {
.name = "connector-hdmi", .name = "connector-hdmi",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = hdmic_of_match, .of_match_table = hdmic_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -298,6 +298,7 @@ static struct platform_driver tfp410_driver = { ...@@ -298,6 +298,7 @@ static struct platform_driver tfp410_driver = {
.name = "tfp410", .name = "tfp410",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = tfp410_of_match, .of_match_table = tfp410_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -461,6 +461,7 @@ static struct platform_driver tpd_driver = { ...@@ -461,6 +461,7 @@ static struct platform_driver tpd_driver = {
.name = "tpd12s015", .name = "tpd12s015",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = tpd_of_match, .of_match_table = tpd_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -327,6 +327,7 @@ static struct platform_driver panel_dpi_driver = { ...@@ -327,6 +327,7 @@ static struct platform_driver panel_dpi_driver = {
.name = "panel-dpi", .name = "panel-dpi",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = panel_dpi_of_match, .of_match_table = panel_dpi_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -1378,6 +1378,7 @@ static struct platform_driver dsicm_driver = { ...@@ -1378,6 +1378,7 @@ static struct platform_driver dsicm_driver = {
.name = "panel-dsi-cm", .name = "panel-dsi-cm",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = dsicm_of_match, .of_match_table = dsicm_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -394,6 +394,7 @@ static struct spi_driver lb035q02_spi_driver = { ...@@ -394,6 +394,7 @@ static struct spi_driver lb035q02_spi_driver = {
.name = "panel_lgphilips_lb035q02", .name = "panel_lgphilips_lb035q02",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = lb035q02_of_match, .of_match_table = lb035q02_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -424,6 +424,7 @@ static struct spi_driver nec_8048_driver = { ...@@ -424,6 +424,7 @@ static struct spi_driver nec_8048_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = NEC_8048_PM_OPS, .pm = NEC_8048_PM_OPS,
.of_match_table = nec_8048_of_match, .of_match_table = nec_8048_of_match,
.suppress_bind_attrs = true,
}, },
.probe = nec_8048_probe, .probe = nec_8048_probe,
.remove = nec_8048_remove, .remove = nec_8048_remove,
......
...@@ -410,6 +410,7 @@ static struct platform_driver sharp_ls_driver = { ...@@ -410,6 +410,7 @@ static struct platform_driver sharp_ls_driver = {
.name = "panel-sharp-ls037v7dw01", .name = "panel-sharp-ls037v7dw01",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = sharp_ls_of_match, .of_match_table = sharp_ls_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -904,6 +904,7 @@ static struct spi_driver acx565akm_driver = { ...@@ -904,6 +904,7 @@ static struct spi_driver acx565akm_driver = {
.name = "acx565akm", .name = "acx565akm",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = acx565akm_of_match, .of_match_table = acx565akm_of_match,
.suppress_bind_attrs = true,
}, },
.probe = acx565akm_probe, .probe = acx565akm_probe,
.remove = acx565akm_remove, .remove = acx565akm_remove,
......
...@@ -500,6 +500,7 @@ static struct spi_driver td028ttec1_spi_driver = { ...@@ -500,6 +500,7 @@ static struct spi_driver td028ttec1_spi_driver = {
.name = "panel-tpo-td028ttec1", .name = "panel-tpo-td028ttec1",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = td028ttec1_of_match, .of_match_table = td028ttec1_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -673,6 +673,7 @@ static struct spi_driver tpo_td043_spi_driver = { ...@@ -673,6 +673,7 @@ static struct spi_driver tpo_td043_spi_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &tpo_td043_spi_pm, .pm = &tpo_td043_spi_pm,
.of_match_table = tpo_td043_of_match, .of_match_table = tpo_td043_of_match,
.suppress_bind_attrs = true,
}, },
.probe = tpo_td043_probe, .probe = tpo_td043_probe,
.remove = tpo_td043_remove, .remove = tpo_td043_remove,
......
...@@ -1132,6 +1132,8 @@ static void dss_mgr_disable_compat(struct omap_overlay_manager *mgr) ...@@ -1132,6 +1132,8 @@ static void dss_mgr_disable_compat(struct omap_overlay_manager *mgr)
if (!mp->enabled) if (!mp->enabled)
goto out; goto out;
wait_pending_extra_info_updates();
if (!mgr_manual_update(mgr)) if (!mgr_manual_update(mgr))
dispc_mgr_disable_sync(mgr->id); dispc_mgr_disable_sync(mgr->id);
......
...@@ -3290,8 +3290,11 @@ static void dispc_dump_regs(struct seq_file *s) ...@@ -3290,8 +3290,11 @@ static void dispc_dump_regs(struct seq_file *s)
DUMPREG(i, DISPC_OVL_FIFO_SIZE_STATUS); DUMPREG(i, DISPC_OVL_FIFO_SIZE_STATUS);
DUMPREG(i, DISPC_OVL_ROW_INC); DUMPREG(i, DISPC_OVL_ROW_INC);
DUMPREG(i, DISPC_OVL_PIXEL_INC); DUMPREG(i, DISPC_OVL_PIXEL_INC);
if (dss_has_feature(FEAT_PRELOAD)) if (dss_has_feature(FEAT_PRELOAD))
DUMPREG(i, DISPC_OVL_PRELOAD); DUMPREG(i, DISPC_OVL_PRELOAD);
if (dss_has_feature(FEAT_MFLAG))
DUMPREG(i, DISPC_OVL_MFLAG_THRESHOLD);
if (i == OMAP_DSS_GFX) { if (i == OMAP_DSS_GFX) {
DUMPREG(i, DISPC_OVL_WINDOW_SKIP); DUMPREG(i, DISPC_OVL_WINDOW_SKIP);
...@@ -3312,10 +3315,6 @@ static void dispc_dump_regs(struct seq_file *s) ...@@ -3312,10 +3315,6 @@ static void dispc_dump_regs(struct seq_file *s)
} }
if (dss_has_feature(FEAT_ATTR2)) if (dss_has_feature(FEAT_ATTR2))
DUMPREG(i, DISPC_OVL_ATTRIBUTES2); DUMPREG(i, DISPC_OVL_ATTRIBUTES2);
if (dss_has_feature(FEAT_PRELOAD))
DUMPREG(i, DISPC_OVL_PRELOAD);
if (dss_has_feature(FEAT_MFLAG))
DUMPREG(i, DISPC_OVL_MFLAG_THRESHOLD);
} }
#undef DISPC_REG #undef DISPC_REG
...@@ -3843,6 +3842,7 @@ static struct platform_driver omap_dispchw_driver = { ...@@ -3843,6 +3842,7 @@ static struct platform_driver omap_dispchw_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &dispc_pm_ops, .pm = &dispc_pm_ops,
.of_match_table = dispc_of_match, .of_match_table = dispc_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -101,8 +101,7 @@ ...@@ -101,8 +101,7 @@
DISPC_FIR_COEF_V2_OFFSET(n, i)) DISPC_FIR_COEF_V2_OFFSET(n, i))
#define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \ #define DISPC_OVL_PRELOAD(n) (DISPC_OVL_BASE(n) + \
DISPC_PRELOAD_OFFSET(n)) DISPC_PRELOAD_OFFSET(n))
#define DISPC_OVL_MFLAG_THRESHOLD(n) (DISPC_OVL_BASE(n) + \ #define DISPC_OVL_MFLAG_THRESHOLD(n) DISPC_MFLAG_THRESHOLD_OFFSET(n)
DISPC_MFLAG_THRESHOLD_OFFSET(n))
/* DISPC up/downsampling FIR filter coefficient structure */ /* DISPC up/downsampling FIR filter coefficient structure */
struct dispc_coef { struct dispc_coef {
......
...@@ -720,6 +720,7 @@ static struct platform_driver omap_dpi_driver = { ...@@ -720,6 +720,7 @@ static struct platform_driver omap_dpi_driver = {
.driver = { .driver = {
.name = "omapdss_dpi", .name = "omapdss_dpi",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -1603,7 +1603,7 @@ int dsi_pll_set_clock_div(struct platform_device *dsidev, ...@@ -1603,7 +1603,7 @@ int dsi_pll_set_clock_div(struct platform_device *dsidev,
} else if (dss_has_feature(FEAT_DSI_PLL_SELFREQDCO)) { } else if (dss_has_feature(FEAT_DSI_PLL_SELFREQDCO)) {
f = cinfo->clkin4ddr < 1000000000 ? 0x2 : 0x4; f = cinfo->clkin4ddr < 1000000000 ? 0x2 : 0x4;
l = FLD_MOD(l, f, 4, 1); /* PLL_SELFREQDCO */ l = FLD_MOD(l, f, 3, 1); /* PLL_SELFREQDCO */
} }
l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */ l = FLD_MOD(l, 1, 13, 13); /* DSI_PLL_REFEN */
...@@ -5754,6 +5754,7 @@ static struct platform_driver omap_dsihw_driver = { ...@@ -5754,6 +5754,7 @@ static struct platform_driver omap_dsihw_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &dsi_pm_ops, .pm = &dsi_pm_ops,
.of_match_table = dsi_of_match, .of_match_table = dsi_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -966,6 +966,7 @@ static struct platform_driver omap_dsshw_driver = { ...@@ -966,6 +966,7 @@ static struct platform_driver omap_dsshw_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &dss_pm_ops, .pm = &dss_pm_ops,
.of_match_table = dss_of_match, .of_match_table = dss_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -781,6 +781,7 @@ static struct platform_driver omapdss_hdmihw_driver = { ...@@ -781,6 +781,7 @@ static struct platform_driver omapdss_hdmihw_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &hdmi_pm_ops, .pm = &hdmi_pm_ops,
.of_match_table = hdmi_of_match, .of_match_table = hdmi_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -806,6 +806,7 @@ static struct platform_driver omapdss_hdmihw_driver = { ...@@ -806,6 +806,7 @@ static struct platform_driver omapdss_hdmihw_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &hdmi_pm_ops, .pm = &hdmi_pm_ops,
.of_match_table = hdmi_of_match, .of_match_table = hdmi_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -124,16 +124,15 @@ static int hdmi_pll_config(struct hdmi_pll_data *pll) ...@@ -124,16 +124,15 @@ static int hdmi_pll_config(struct hdmi_pll_data *pll)
r = FLD_MOD(r, 0x0, 14, 14); /* PHY_CLKINEN de-assert during locking */ r = FLD_MOD(r, 0x0, 14, 14); /* PHY_CLKINEN de-assert during locking */
r = FLD_MOD(r, fmt->refsel, 22, 21); /* REFSEL */ r = FLD_MOD(r, fmt->refsel, 22, 21); /* REFSEL */
if (fmt->dcofreq) { if (fmt->dcofreq)
/* divider programming for frequency beyond 1000Mhz */
REG_FLD_MOD(pll->base, PLLCTRL_CFG3, fmt->regsd, 17, 10);
r = FLD_MOD(r, 0x4, 3, 1); /* 1000MHz and 2000MHz */ r = FLD_MOD(r, 0x4, 3, 1); /* 1000MHz and 2000MHz */
} else { else
r = FLD_MOD(r, 0x2, 3, 1); /* 500MHz and 1000MHz */ r = FLD_MOD(r, 0x2, 3, 1); /* 500MHz and 1000MHz */
}
hdmi_write_reg(pll->base, PLLCTRL_CFG2, r); hdmi_write_reg(pll->base, PLLCTRL_CFG2, r);
REG_FLD_MOD(pll->base, PLLCTRL_CFG3, fmt->regsd, 17, 10);
r = hdmi_read_reg(pll->base, PLLCTRL_CFG4); r = hdmi_read_reg(pll->base, PLLCTRL_CFG4);
r = FLD_MOD(r, fmt->regm2, 24, 18); r = FLD_MOD(r, fmt->regm2, 24, 18);
r = FLD_MOD(r, fmt->regmf, 17, 0); r = FLD_MOD(r, fmt->regmf, 17, 0);
...@@ -144,8 +143,8 @@ static int hdmi_pll_config(struct hdmi_pll_data *pll) ...@@ -144,8 +143,8 @@ static int hdmi_pll_config(struct hdmi_pll_data *pll)
/* wait for bit change */ /* wait for bit change */
if (hdmi_wait_for_bit_change(pll->base, PLLCTRL_PLL_GO, if (hdmi_wait_for_bit_change(pll->base, PLLCTRL_PLL_GO,
0, 0, 1) != 1) { 0, 0, 0) != 0) {
DSSERR("PLL GO bit not set\n"); DSSERR("PLL GO bit not clearing\n");
return -ETIMEDOUT; return -ETIMEDOUT;
} }
......
...@@ -1044,6 +1044,7 @@ static struct platform_driver omap_rfbihw_driver = { ...@@ -1044,6 +1044,7 @@ static struct platform_driver omap_rfbihw_driver = {
.name = "omapdss_rfbi", .name = "omapdss_rfbi",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &rfbi_pm_ops, .pm = &rfbi_pm_ops,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -377,6 +377,7 @@ static struct platform_driver omap_sdi_driver = { ...@@ -377,6 +377,7 @@ static struct platform_driver omap_sdi_driver = {
.driver = { .driver = {
.name = "omapdss_sdi", .name = "omapdss_sdi",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -966,6 +966,7 @@ static struct platform_driver omap_venchw_driver = { ...@@ -966,6 +966,7 @@ static struct platform_driver omap_venchw_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &venc_pm_ops, .pm = &venc_pm_ops,
.of_match_table = venc_of_match, .of_match_table = venc_of_match,
.suppress_bind_attrs = true,
}, },
}; };
......
...@@ -1833,14 +1833,13 @@ static void omapfb_free_resources(struct omapfb2_device *fbdev) ...@@ -1833,14 +1833,13 @@ static void omapfb_free_resources(struct omapfb2_device *fbdev)
if (fbdev == NULL) if (fbdev == NULL)
return; return;
for (i = 0; i < fbdev->num_fbs; i++) { for (i = 0; i < fbdev->num_overlays; i++) {
struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]); struct omap_overlay *ovl = fbdev->overlays[i];
int j;
for (j = 0; j < ofbi->num_overlays; j++) { ovl->disable(ovl);
struct omap_overlay *ovl = ofbi->overlays[j];
ovl->disable(ovl); if (ovl->manager)
} ovl->unset_manager(ovl);
} }
for (i = 0; i < fbdev->num_fbs; i++) for (i = 0; i < fbdev->num_fbs; i++)
...@@ -2619,7 +2618,7 @@ static int omapfb_probe(struct platform_device *pdev) ...@@ -2619,7 +2618,7 @@ static int omapfb_probe(struct platform_device *pdev)
return r; return r;
} }
static int __exit omapfb_remove(struct platform_device *pdev) static int omapfb_remove(struct platform_device *pdev)
{ {
struct omapfb2_device *fbdev = platform_get_drvdata(pdev); struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
...@@ -2636,7 +2635,7 @@ static int __exit omapfb_remove(struct platform_device *pdev) ...@@ -2636,7 +2635,7 @@ static int __exit omapfb_remove(struct platform_device *pdev)
static struct platform_driver omapfb_driver = { static struct platform_driver omapfb_driver = {
.probe = omapfb_probe, .probe = omapfb_probe,
.remove = __exit_p(omapfb_remove), .remove = omapfb_remove,
.driver = { .driver = {
.name = "omapfb", .name = "omapfb",
.owner = THIS_MODULE, .owner = THIS_MODULE,
...@@ -2651,6 +2650,7 @@ module_param_named(mirror, def_mirror, bool, 0); ...@@ -2651,6 +2650,7 @@ module_param_named(mirror, def_mirror, bool, 0);
module_platform_driver(omapfb_driver); module_platform_driver(omapfb_driver);
MODULE_ALIAS("platform:omapfb");
MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@nokia.com>"); MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@nokia.com>");
MODULE_DESCRIPTION("OMAP2/3 Framebuffer"); MODULE_DESCRIPTION("OMAP2/3 Framebuffer");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment