fbdev fixes and updates for kernel v5.18-rc1
Lots of small fixes and code cleanups across most of the fbdev drivers. This includes conversions to use helper functions, const conversions, spelling fixes, help text updates, adding return value checks, small build fixes, and much more. -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCYjogFQAKCRD3ErUQojoP X3Y7AQD/0Qd0zm6klv4EPeyLXOYzs6uXdyHiJGyCBABP3WxKZQD+J4yNXjd1g50A iGbsawaUpFMcaXTETr0NcrtRkc5jCgY= =HHa3 -----END PGP SIGNATURE----- Merge tag 'for-5.18/fbdev-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev Pull fbdev updates from Helge Deller: "Lots of small fixes and code cleanups across most of the fbdev drivers. This includes conversions to use helper functions, const conversions, spelling fixes, help text updates, adding return value checks, small build fixes, and much more" * tag 'for-5.18/fbdev-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev: (59 commits) video: fbdev: kyro: make read-only array ODValues static const video: fbdev: offb: fix warning comparing pointer to 0 video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of video: fbdev: sm712fb: Fix crash in smtcfb_write() video: fbdev: s3c-fb: fix platform_get_irq.cocci warning video: fbdev: sm712fb: Fix crash in smtcfb_read() video: fbdev: via: check the return value of kstrdup() video: fbdev: au1100fb: Spelling s/palette/palette/ video: fbdev: atari: Atari 2 bpp (STe) palette bugfix video: fbdev: atari: Remove unused atafb_setcolreg() video: fbdev: atari: Convert to standard round_up() helper video: fbdev: atari: Fix TT High video mode video: fbdev: udlfb: replace snprintf in show functions with sysfs_emit video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead of snprintf() video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of snprintf() video: fbdev: omapfb: Use sysfs_emit() instead of snprintf() video: fbdev: s3c-fb: Use platform_get_irq() to get the interrupt video: fbdev: Fix wrong file path for pvr2fb.c in Kconfig help text video: fbdev: pxa3xx-gcu: Remove unnecessary print function dev_err() video: fbdev: pxa168fb: Remove unnecessary print function dev_err() ...
This commit is contained in:
commit
9c4b86ebf5
|
@ -52,11 +52,13 @@ description: |+
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
items:
|
oneOf:
|
||||||
- enum:
|
- items:
|
||||||
- apple,simple-framebuffer
|
- enum:
|
||||||
- allwinner,simple-framebuffer
|
- apple,simple-framebuffer
|
||||||
- amlogic,simple-framebuffer
|
- allwinner,simple-framebuffer
|
||||||
|
- amlogic,simple-framebuffer
|
||||||
|
- const: simple-framebuffer
|
||||||
- const: simple-framebuffer
|
- const: simple-framebuffer
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define map_page_into_agp(page) /* nothing */
|
#define map_page_into_agp(page) do { } while (0)
|
||||||
#define unmap_page_from_agp(page) /* nothing */
|
#define unmap_page_from_agp(page) do { } while (0)
|
||||||
#define flush_agp_cache() mb()
|
#define flush_agp_cache() mb()
|
||||||
|
|
||||||
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
|
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
#define map_page_into_agp(page)
|
#define map_page_into_agp(page) do {} while (0)
|
||||||
#define unmap_page_from_agp(page)
|
#define unmap_page_from_agp(page) do {} while (0)
|
||||||
#define flush_agp_cache() mb()
|
#define flush_agp_cache() mb()
|
||||||
|
|
||||||
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
|
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
|
|
||||||
/* dummy for now */
|
/* dummy for now */
|
||||||
|
|
||||||
#define map_page_into_agp(page)
|
#define map_page_into_agp(page) do { } while (0)
|
||||||
#define unmap_page_from_agp(page)
|
#define unmap_page_from_agp(page) do { } while (0)
|
||||||
#define flush_agp_cache() mb()
|
#define flush_agp_cache() mb()
|
||||||
|
|
||||||
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
|
/* GATT allocation. Returns/accepts GATT kernel virtual address. */
|
||||||
#define alloc_gatt_pages(order) \
|
#define alloc_gatt_pages(order) \
|
||||||
|
|
|
@ -594,7 +594,6 @@ static int lm3630a_remove(struct i2c_client *client)
|
||||||
|
|
||||||
if (pchip->irq) {
|
if (pchip->irq) {
|
||||||
free_irq(pchip->irq, pchip);
|
free_irq(pchip->irq, pchip);
|
||||||
flush_workqueue(pchip->irqthread);
|
|
||||||
destroy_workqueue(pchip->irqthread);
|
destroy_workqueue(pchip->irqthread);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1734,6 +1734,7 @@ static const struct of_device_id wled_match_table[] = {
|
||||||
{ .compatible = "qcom,pmi8994-wled", .data = (void *)4 },
|
{ .compatible = "qcom,pmi8994-wled", .data = (void *)4 },
|
||||||
{ .compatible = "qcom,pmi8998-wled", .data = (void *)4 },
|
{ .compatible = "qcom,pmi8998-wled", .data = (void *)4 },
|
||||||
{ .compatible = "qcom,pm660l-wled", .data = (void *)4 },
|
{ .compatible = "qcom,pm660l-wled", .data = (void *)4 },
|
||||||
|
{ .compatible = "qcom,pm6150l-wled", .data = (void *)5 },
|
||||||
{ .compatible = "qcom,pm8150l-wled", .data = (void *)5 },
|
{ .compatible = "qcom,pm8150l-wled", .data = (void *)5 },
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
|
@ -829,7 +829,7 @@ config FB_PVR2
|
||||||
You can pass several parameters to the driver at boot time or at
|
You can pass several parameters to the driver at boot time or at
|
||||||
module load time. The parameters look like "video=pvr2:XXX", where
|
module load time. The parameters look like "video=pvr2:XXX", where
|
||||||
the meaning of XXX can be found at the end of the main source file
|
the meaning of XXX can be found at the end of the main source file
|
||||||
(<file:drivers/video/pvr2fb.c>). Please see the file
|
(<file:drivers/video/fbdev/pvr2fb.c>). Please see the file
|
||||||
<file:Documentation/fb/pvr2fb.rst>.
|
<file:Documentation/fb/pvr2fb.rst>.
|
||||||
|
|
||||||
config FB_OPENCORES
|
config FB_OPENCORES
|
||||||
|
|
|
@ -110,7 +110,7 @@ static const struct fb_ops asiliantfb_ops = {
|
||||||
static void asiliant_calc_dclk2(u32 *ppixclock, u8 *dclk2_m, u8 *dclk2_n, u8 *dclk2_div)
|
static void asiliant_calc_dclk2(u32 *ppixclock, u8 *dclk2_m, u8 *dclk2_n, u8 *dclk2_div)
|
||||||
{
|
{
|
||||||
unsigned pixclock = *ppixclock;
|
unsigned pixclock = *ppixclock;
|
||||||
unsigned Ftarget = 1000000 * (1000000 / pixclock);
|
unsigned Ftarget;
|
||||||
unsigned n;
|
unsigned n;
|
||||||
unsigned best_error = 0xffffffff;
|
unsigned best_error = 0xffffffff;
|
||||||
unsigned best_m = 0xffffffff,
|
unsigned best_m = 0xffffffff,
|
||||||
|
|
|
@ -76,8 +76,6 @@
|
||||||
#define SWITCH_SND7 0x80
|
#define SWITCH_SND7 0x80
|
||||||
#define SWITCH_NONE 0x00
|
#define SWITCH_NONE 0x00
|
||||||
|
|
||||||
#define up(x, r) (((x) + (r) - 1) & ~((r)-1))
|
|
||||||
|
|
||||||
|
|
||||||
static int default_par; /* default resolution (0=none) */
|
static int default_par; /* default resolution (0=none) */
|
||||||
|
|
||||||
|
@ -487,8 +485,8 @@ static struct fb_videomode atafb_modedb[] __initdata = {
|
||||||
"tt-mid", 60, 640, 480, 31041, 120, 100, 8, 16, 140, 30,
|
"tt-mid", 60, 640, 480, 31041, 120, 100, 8, 16, 140, 30,
|
||||||
0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
|
0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
|
||||||
}, {
|
}, {
|
||||||
/* 1280x960, 29 kHz, 60 Hz (TT high) */
|
/* 1280x960, 72 kHz, 72 Hz (TT high) */
|
||||||
"tt-high", 57, 640, 960, 31041, 120, 100, 8, 16, 140, 30,
|
"tt-high", 57, 1280, 960, 7760, 260, 60, 36, 4, 192, 4,
|
||||||
0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
|
0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1649,12 +1647,12 @@ static int falcon_pan_display(struct fb_var_screeninfo *var,
|
||||||
int bpp = info->var.bits_per_pixel;
|
int bpp = info->var.bits_per_pixel;
|
||||||
|
|
||||||
if (bpp == 1)
|
if (bpp == 1)
|
||||||
var->xoffset = up(var->xoffset, 32);
|
var->xoffset = round_up(var->xoffset, 32);
|
||||||
if (bpp != 16)
|
if (bpp != 16)
|
||||||
par->hw.falcon.xoffset = var->xoffset & 15;
|
par->hw.falcon.xoffset = var->xoffset & 15;
|
||||||
else {
|
else {
|
||||||
par->hw.falcon.xoffset = 0;
|
par->hw.falcon.xoffset = 0;
|
||||||
var->xoffset = up(var->xoffset, 2);
|
var->xoffset = round_up(var->xoffset, 2);
|
||||||
}
|
}
|
||||||
par->hw.falcon.line_offset = bpp *
|
par->hw.falcon.line_offset = bpp *
|
||||||
(info->var.xres_virtual - info->var.xres) / 16;
|
(info->var.xres_virtual - info->var.xres) / 16;
|
||||||
|
@ -1683,9 +1681,9 @@ static int falcon_setcolreg(unsigned int regno, unsigned int red,
|
||||||
((blue & 0xfc00) >> 8));
|
((blue & 0xfc00) >> 8));
|
||||||
if (regno < 16) {
|
if (regno < 16) {
|
||||||
shifter_tt.color_reg[regno] =
|
shifter_tt.color_reg[regno] =
|
||||||
(((red & 0xe000) >> 13) | ((red & 0x1000) >> 12) << 8) |
|
((((red & 0xe000) >> 13) | ((red & 0x1000) >> 12)) << 8) |
|
||||||
(((green & 0xe000) >> 13) | ((green & 0x1000) >> 12) << 4) |
|
((((green & 0xe000) >> 13) | ((green & 0x1000) >> 12)) << 4) |
|
||||||
((blue & 0xe000) >> 13) | ((blue & 0x1000) >> 12);
|
((blue & 0xe000) >> 13) | ((blue & 0x1000) >> 12);
|
||||||
((u32 *)info->pseudo_palette)[regno] = ((red & 0xf800) |
|
((u32 *)info->pseudo_palette)[regno] = ((red & 0xf800) |
|
||||||
((green & 0xfc00) >> 5) |
|
((green & 0xfc00) >> 5) |
|
||||||
((blue & 0xf800) >> 11));
|
((blue & 0xf800) >> 11));
|
||||||
|
@ -1971,9 +1969,9 @@ static int stste_setcolreg(unsigned int regno, unsigned int red,
|
||||||
green >>= 12;
|
green >>= 12;
|
||||||
if (ATARIHW_PRESENT(EXTD_SHIFTER))
|
if (ATARIHW_PRESENT(EXTD_SHIFTER))
|
||||||
shifter_tt.color_reg[regno] =
|
shifter_tt.color_reg[regno] =
|
||||||
(((red & 0xe) >> 1) | ((red & 1) << 3) << 8) |
|
((((red & 0xe) >> 1) | ((red & 1) << 3)) << 8) |
|
||||||
(((green & 0xe) >> 1) | ((green & 1) << 3) << 4) |
|
((((green & 0xe) >> 1) | ((green & 1) << 3)) << 4) |
|
||||||
((blue & 0xe) >> 1) | ((blue & 1) << 3);
|
((blue & 0xe) >> 1) | ((blue & 1) << 3);
|
||||||
else
|
else
|
||||||
shifter_tt.color_reg[regno] =
|
shifter_tt.color_reg[regno] =
|
||||||
((red & 0xe) << 7) |
|
((red & 0xe) << 7) |
|
||||||
|
@ -2268,7 +2266,7 @@ static int pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
|
||||||
if (!fbhw->set_screen_base ||
|
if (!fbhw->set_screen_base ||
|
||||||
(!ATARIHW_PRESENT(EXTD_SHIFTER) && var->xoffset))
|
(!ATARIHW_PRESENT(EXTD_SHIFTER) && var->xoffset))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
var->xoffset = up(var->xoffset, 16);
|
var->xoffset = round_up(var->xoffset, 16);
|
||||||
par->screen_base = screen_base +
|
par->screen_base = screen_base +
|
||||||
(var->yoffset * info->var.xres_virtual + var->xoffset)
|
(var->yoffset * info->var.xres_virtual + var->xoffset)
|
||||||
* info->var.bits_per_pixel / 8;
|
* info->var.bits_per_pixel / 8;
|
||||||
|
@ -2406,16 +2404,6 @@ static void atafb_set_disp(struct fb_info *info)
|
||||||
atari_stram_to_virt(info->fix.smem_start));
|
atari_stram_to_virt(info->fix.smem_start));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int atafb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
|
|
||||||
u_int transp, struct fb_info *info)
|
|
||||||
{
|
|
||||||
red >>= 8;
|
|
||||||
green >>= 8;
|
|
||||||
blue >>= 8;
|
|
||||||
|
|
||||||
return info->fbops->fb_setcolreg(regno, red, green, blue, transp, info);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
atafb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
|
atafb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
|
||||||
{
|
{
|
||||||
|
@ -2726,7 +2714,6 @@ static struct fb_ops atafb_ops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.fb_check_var = atafb_check_var,
|
.fb_check_var = atafb_check_var,
|
||||||
.fb_set_par = atafb_set_par,
|
.fb_set_par = atafb_set_par,
|
||||||
.fb_setcolreg = atafb_setcolreg,
|
|
||||||
.fb_blank = atafb_blank,
|
.fb_blank = atafb_blank,
|
||||||
.fb_pan_display = atafb_pan_display,
|
.fb_pan_display = atafb_pan_display,
|
||||||
.fb_fillrect = atafb_fillrect,
|
.fb_fillrect = atafb_fillrect,
|
||||||
|
|
|
@ -1062,15 +1062,16 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
INIT_LIST_HEAD(&info->modelist);
|
INIT_LIST_HEAD(&info->modelist);
|
||||||
|
|
||||||
if (pdev->dev.of_node) {
|
if (!pdev->dev.of_node) {
|
||||||
ret = atmel_lcdfb_of_init(sinfo);
|
|
||||||
if (ret)
|
|
||||||
goto free_info;
|
|
||||||
} else {
|
|
||||||
dev_err(dev, "cannot get default configuration\n");
|
dev_err(dev, "cannot get default configuration\n");
|
||||||
goto free_info;
|
goto free_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = atmel_lcdfb_of_init(sinfo);
|
||||||
|
if (ret)
|
||||||
|
goto free_info;
|
||||||
|
|
||||||
|
ret = -ENODEV;
|
||||||
if (!sinfo->config)
|
if (!sinfo->config)
|
||||||
goto free_info;
|
goto free_info;
|
||||||
|
|
||||||
|
|
|
@ -952,7 +952,7 @@ static void aty128_timings(struct aty128fb_par *par)
|
||||||
u32 x_mpll_ref_fb_div;
|
u32 x_mpll_ref_fb_div;
|
||||||
u32 xclk_cntl;
|
u32 xclk_cntl;
|
||||||
u32 Nx, M;
|
u32 Nx, M;
|
||||||
unsigned PostDivSet[] = { 0, 1, 2, 4, 8, 3, 6, 12 };
|
static const unsigned int PostDivSet[] = { 0, 1, 2, 4, 8, 3, 6, 12 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!par->constants.ref_clk)
|
if (!par->constants.ref_clk)
|
||||||
|
@ -1321,8 +1321,10 @@ static void aty128_set_pll(struct aty128_pll *pll,
|
||||||
{
|
{
|
||||||
u32 div3;
|
u32 div3;
|
||||||
|
|
||||||
unsigned char post_conv[] = /* register values for post dividers */
|
/* register values for post dividers */
|
||||||
{ 2, 0, 1, 4, 2, 2, 6, 2, 3, 2, 2, 2, 7 };
|
static const unsigned char post_conv[] = {
|
||||||
|
2, 0, 1, 4, 2, 2, 6, 2, 3, 2, 2, 2, 7
|
||||||
|
};
|
||||||
|
|
||||||
/* select PPLL_DIV_3 */
|
/* select PPLL_DIV_3 */
|
||||||
aty_st_le32(CLOCK_CNTL_INDEX, aty_ld_le32(CLOCK_CNTL_INDEX) | (3 << 8));
|
aty_st_le32(CLOCK_CNTL_INDEX, aty_ld_le32(CLOCK_CNTL_INDEX) | (3 << 8));
|
||||||
|
@ -1360,7 +1362,7 @@ static int aty128_var_to_pll(u32 period_in_ps, struct aty128_pll *pll,
|
||||||
const struct aty128fb_par *par)
|
const struct aty128fb_par *par)
|
||||||
{
|
{
|
||||||
const struct aty128_constants c = par->constants;
|
const struct aty128_constants c = par->constants;
|
||||||
unsigned char post_dividers[] = {1,2,4,8,3,6,12};
|
static const unsigned char post_dividers[] = { 1, 2, 4, 8, 3, 6, 12 };
|
||||||
u32 output_freq;
|
u32 output_freq;
|
||||||
u32 vclk; /* in .01 MHz */
|
u32 vclk; /* in .01 MHz */
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
|
@ -22,13 +22,11 @@ static u32 aty_pll_to_var_ct(const struct fb_info *info, const union aty_pll *pl
|
||||||
|
|
||||||
u8 aty_ld_pll_ct(int offset, const struct atyfb_par *par)
|
u8 aty_ld_pll_ct(int offset, const struct atyfb_par *par)
|
||||||
{
|
{
|
||||||
u8 res;
|
|
||||||
|
|
||||||
/* write addr byte */
|
/* write addr byte */
|
||||||
aty_st_8(CLOCK_CNTL_ADDR, (offset << 2) & PLL_ADDR, par);
|
aty_st_8(CLOCK_CNTL_ADDR, (offset << 2) & PLL_ADDR, par);
|
||||||
/* read the register value */
|
/* read the register value */
|
||||||
res = aty_ld_8(CLOCK_CNTL_DATA, par);
|
return aty_ld_8(CLOCK_CNTL_DATA, par);
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void aty_st_pll_ct(int offset, u8 val, const struct atyfb_par *par)
|
static void aty_st_pll_ct(int offset, u8 val, const struct atyfb_par *par)
|
||||||
|
|
|
@ -352,10 +352,8 @@ static int aty_var_to_pll_18818(const struct fb_info *info, u32 vclk_per,
|
||||||
post_divider = 1;
|
post_divider = 1;
|
||||||
|
|
||||||
if (MHz100 > MAX_FREQ_2595) {
|
if (MHz100 > MAX_FREQ_2595) {
|
||||||
MHz100 = MAX_FREQ_2595;
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
} else if (MHz100 < ABS_MIN_FREQ_2595) {
|
} else if (MHz100 < ABS_MIN_FREQ_2595) {
|
||||||
program_bits = 0; /* MHz100 = 257 */
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
} else {
|
} else {
|
||||||
while (MHz100 < MIN_FREQ_2595) {
|
while (MHz100 < MIN_FREQ_2595) {
|
||||||
|
|
|
@ -239,7 +239,7 @@ int au1100fb_fb_setcolreg(unsigned regno, unsigned red, unsigned green, unsigned
|
||||||
u32 value;
|
u32 value;
|
||||||
|
|
||||||
fbdev = to_au1100fb_device(fbi);
|
fbdev = to_au1100fb_device(fbi);
|
||||||
palette = fbdev->regs->lcd_pallettebase;
|
palette = fbdev->regs->lcd_palettebase;
|
||||||
|
|
||||||
if (regno > (AU1100_LCD_NBR_PALETTE_ENTRIES - 1))
|
if (regno > (AU1100_LCD_NBR_PALETTE_ENTRIES - 1))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -92,7 +92,7 @@ struct au1100fb_regs
|
||||||
u32 lcd_pwmdiv;
|
u32 lcd_pwmdiv;
|
||||||
u32 lcd_pwmhi;
|
u32 lcd_pwmhi;
|
||||||
u32 reserved[(0x0400-0x002C)/4];
|
u32 reserved[(0x0400-0x002C)/4];
|
||||||
u32 lcd_pallettebase[256];
|
u32 lcd_palettebase[256];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct au1100fb_device {
|
struct au1100fb_device {
|
||||||
|
|
|
@ -1233,8 +1233,8 @@ static int au1200fb_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
struct au1200fb_device *fbdev = info->par;
|
struct au1200fb_device *fbdev = info->par;
|
||||||
|
|
||||||
return dma_mmap_attrs(fbdev->dev, vma, fbdev->fb_mem, fbdev->fb_phys,
|
return dma_mmap_coherent(fbdev->dev, vma,
|
||||||
fbdev->fb_len, 0);
|
fbdev->fb_mem, fbdev->fb_phys, fbdev->fb_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_global(u_int cmd, struct au1200_lcd_global_regs_t *pdata)
|
static void set_global(u_int cmd, struct au1200_lcd_global_regs_t *pdata)
|
||||||
|
|
|
@ -469,7 +469,7 @@ static int cirrusfb_check_mclk(struct fb_info *info, long freq)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cirrusfb_check_pixclock(const struct fb_var_screeninfo *var,
|
static int cirrusfb_check_pixclock(struct fb_var_screeninfo *var,
|
||||||
struct fb_info *info)
|
struct fb_info *info)
|
||||||
{
|
{
|
||||||
long freq;
|
long freq;
|
||||||
|
@ -478,9 +478,7 @@ static int cirrusfb_check_pixclock(const struct fb_var_screeninfo *var,
|
||||||
unsigned maxclockidx = var->bits_per_pixel >> 3;
|
unsigned maxclockidx = var->bits_per_pixel >> 3;
|
||||||
|
|
||||||
/* convert from ps to kHz */
|
/* convert from ps to kHz */
|
||||||
freq = PICOS2KHZ(var->pixclock);
|
freq = PICOS2KHZ(var->pixclock ? : 1);
|
||||||
|
|
||||||
dev_dbg(info->device, "desired pixclock: %ld kHz\n", freq);
|
|
||||||
|
|
||||||
maxclock = cirrusfb_board_info[cinfo->btype].maxclock[maxclockidx];
|
maxclock = cirrusfb_board_info[cinfo->btype].maxclock[maxclockidx];
|
||||||
cinfo->multiplexing = 0;
|
cinfo->multiplexing = 0;
|
||||||
|
@ -488,11 +486,13 @@ static int cirrusfb_check_pixclock(const struct fb_var_screeninfo *var,
|
||||||
/* If the frequency is greater than we can support, we might be able
|
/* If the frequency is greater than we can support, we might be able
|
||||||
* to use multiplexing for the video mode */
|
* to use multiplexing for the video mode */
|
||||||
if (freq > maxclock) {
|
if (freq > maxclock) {
|
||||||
dev_err(info->device,
|
var->pixclock = KHZ2PICOS(maxclock);
|
||||||
"Frequency greater than maxclock (%ld kHz)\n",
|
|
||||||
maxclock);
|
while ((freq = PICOS2KHZ(var->pixclock)) > maxclock)
|
||||||
return -EINVAL;
|
var->pixclock++;
|
||||||
}
|
}
|
||||||
|
dev_dbg(info->device, "desired pixclock: %ld kHz\n", freq);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Additional constraint: 8bpp uses DAC clock doubling to allow maximum
|
* Additional constraint: 8bpp uses DAC clock doubling to allow maximum
|
||||||
* pixel clock
|
* pixel clock
|
||||||
|
|
|
@ -67,7 +67,9 @@
|
||||||
#define out_8(addr, val) (void)(val)
|
#define out_8(addr, val) (void)(val)
|
||||||
#define in_le32(addr) 0
|
#define in_le32(addr) 0
|
||||||
#define out_le32(addr, val) (void)(val)
|
#define out_le32(addr, val) (void)(val)
|
||||||
|
#ifndef pgprot_cached_wthru
|
||||||
#define pgprot_cached_wthru(prot) (prot)
|
#define pgprot_cached_wthru(prot) (prot)
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
static void invalid_vram_cache(void __force *addr)
|
static void invalid_vram_cache(void __force *addr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -214,9 +214,11 @@ static u32 fb_cvt_aspect_ratio(struct fb_cvt_data *cvt)
|
||||||
static void fb_cvt_print_name(struct fb_cvt_data *cvt)
|
static void fb_cvt_print_name(struct fb_cvt_data *cvt)
|
||||||
{
|
{
|
||||||
u32 pixcount, pixcount_mod;
|
u32 pixcount, pixcount_mod;
|
||||||
int cnt = 255, offset = 0, read = 0;
|
int size = 256;
|
||||||
u8 *buf = kzalloc(256, GFP_KERNEL);
|
int off = 0;
|
||||||
|
u8 *buf;
|
||||||
|
|
||||||
|
buf = kzalloc(size, GFP_KERNEL);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -224,43 +226,30 @@ static void fb_cvt_print_name(struct fb_cvt_data *cvt)
|
||||||
pixcount_mod = (cvt->xres * (cvt->yres/cvt->interlace)) % 1000000;
|
pixcount_mod = (cvt->xres * (cvt->yres/cvt->interlace)) % 1000000;
|
||||||
pixcount_mod /= 1000;
|
pixcount_mod /= 1000;
|
||||||
|
|
||||||
read = snprintf(buf+offset, cnt, "fbcvt: %dx%d@%d: CVT Name - ",
|
off += scnprintf(buf + off, size - off, "fbcvt: %dx%d@%d: CVT Name - ",
|
||||||
cvt->xres, cvt->yres, cvt->refresh);
|
cvt->xres, cvt->yres, cvt->refresh);
|
||||||
offset += read;
|
|
||||||
cnt -= read;
|
|
||||||
|
|
||||||
if (cvt->status)
|
if (cvt->status) {
|
||||||
snprintf(buf+offset, cnt, "Not a CVT standard - %d.%03d Mega "
|
off += scnprintf(buf + off, size - off,
|
||||||
"Pixel Image\n", pixcount, pixcount_mod);
|
"Not a CVT standard - %d.%03d Mega Pixel Image\n",
|
||||||
else {
|
pixcount, pixcount_mod);
|
||||||
if (pixcount) {
|
} else {
|
||||||
read = snprintf(buf+offset, cnt, "%d", pixcount);
|
if (pixcount)
|
||||||
cnt -= read;
|
off += scnprintf(buf + off, size - off, "%d", pixcount);
|
||||||
offset += read;
|
|
||||||
}
|
|
||||||
|
|
||||||
read = snprintf(buf+offset, cnt, ".%03dM", pixcount_mod);
|
off += scnprintf(buf + off, size - off, ".%03dM", pixcount_mod);
|
||||||
cnt -= read;
|
|
||||||
offset += read;
|
|
||||||
|
|
||||||
if (cvt->aspect_ratio == 0)
|
if (cvt->aspect_ratio == 0)
|
||||||
read = snprintf(buf+offset, cnt, "3");
|
off += scnprintf(buf + off, size - off, "3");
|
||||||
else if (cvt->aspect_ratio == 3)
|
else if (cvt->aspect_ratio == 3)
|
||||||
read = snprintf(buf+offset, cnt, "4");
|
off += scnprintf(buf + off, size - off, "4");
|
||||||
else if (cvt->aspect_ratio == 1 || cvt->aspect_ratio == 4)
|
else if (cvt->aspect_ratio == 1 || cvt->aspect_ratio == 4)
|
||||||
read = snprintf(buf+offset, cnt, "9");
|
off += scnprintf(buf + off, size - off, "9");
|
||||||
else if (cvt->aspect_ratio == 2)
|
else if (cvt->aspect_ratio == 2)
|
||||||
read = snprintf(buf+offset, cnt, "A");
|
off += scnprintf(buf + off, size - off, "A");
|
||||||
else
|
|
||||||
read = 0;
|
|
||||||
cnt -= read;
|
|
||||||
offset += read;
|
|
||||||
|
|
||||||
if (cvt->flags & FB_CVT_FLAG_REDUCED_BLANK) {
|
if (cvt->flags & FB_CVT_FLAG_REDUCED_BLANK)
|
||||||
read = snprintf(buf+offset, cnt, "-R");
|
off += scnprintf(buf + off, size - off, "-R");
|
||||||
cnt -= read;
|
|
||||||
offset += read;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
printk(KERN_INFO "%s\n", buf);
|
printk(KERN_INFO "%s\n", buf);
|
||||||
|
|
|
@ -396,18 +396,14 @@ static void fb_rotate_logo(struct fb_info *info, u8 *dst,
|
||||||
} else if (rotate == FB_ROTATE_CW) {
|
} else if (rotate == FB_ROTATE_CW) {
|
||||||
fb_rotate_logo_cw(image->data, dst, image->width,
|
fb_rotate_logo_cw(image->data, dst, image->width,
|
||||||
image->height);
|
image->height);
|
||||||
tmp = image->width;
|
swap(image->width, image->height);
|
||||||
image->width = image->height;
|
|
||||||
image->height = tmp;
|
|
||||||
tmp = image->dy;
|
tmp = image->dy;
|
||||||
image->dy = image->dx;
|
image->dy = image->dx;
|
||||||
image->dx = info->var.xres - image->width - tmp;
|
image->dx = info->var.xres - image->width - tmp;
|
||||||
} else if (rotate == FB_ROTATE_CCW) {
|
} else if (rotate == FB_ROTATE_CCW) {
|
||||||
fb_rotate_logo_ccw(image->data, dst, image->width,
|
fb_rotate_logo_ccw(image->data, dst, image->width,
|
||||||
image->height);
|
image->height);
|
||||||
tmp = image->width;
|
swap(image->width, image->height);
|
||||||
image->width = image->height;
|
|
||||||
image->height = tmp;
|
|
||||||
tmp = image->dx;
|
tmp = image->dx;
|
||||||
image->dx = image->dy;
|
image->dx = image->dy;
|
||||||
image->dy = info->var.yres - image->height - tmp;
|
image->dy = info->var.yres - image->height - tmp;
|
||||||
|
|
|
@ -1354,10 +1354,9 @@ static int fb_probe(struct platform_device *device)
|
||||||
return PTR_ERR(da8xx_fb_reg_base);
|
return PTR_ERR(da8xx_fb_reg_base);
|
||||||
|
|
||||||
tmp_lcdc_clk = devm_clk_get(&device->dev, "fck");
|
tmp_lcdc_clk = devm_clk_get(&device->dev, "fck");
|
||||||
if (IS_ERR(tmp_lcdc_clk)) {
|
if (IS_ERR(tmp_lcdc_clk))
|
||||||
dev_err(&device->dev, "Can not get device clock\n");
|
return dev_err_probe(&device->dev, PTR_ERR(tmp_lcdc_clk),
|
||||||
return PTR_ERR(tmp_lcdc_clk);
|
"Can not get device clock\n");
|
||||||
}
|
|
||||||
|
|
||||||
pm_runtime_enable(&device->dev);
|
pm_runtime_enable(&device->dev);
|
||||||
pm_runtime_get_sync(&device->dev);
|
pm_runtime_get_sync(&device->dev);
|
||||||
|
|
|
@ -1083,6 +1083,8 @@ static int imxfb_remove(struct platform_device *pdev)
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
if (!res)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
imxfb_disable_controller(fbi);
|
imxfb_disable_controller(fbi);
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ u32 ProgramClock(u32 refClock,
|
||||||
u32 ulScore, ulPhaseScore, ulVcoScore;
|
u32 ulScore, ulPhaseScore, ulVcoScore;
|
||||||
u32 ulTmp = 0, ulVCO;
|
u32 ulTmp = 0, ulVCO;
|
||||||
u32 ulScaleClockReq, ulMinClock, ulMaxClock;
|
u32 ulScaleClockReq, ulMinClock, ulMaxClock;
|
||||||
u32 ODValues[] = { 1, 2, 0 };
|
static const unsigned char ODValues[] = { 1, 2, 0 };
|
||||||
|
|
||||||
/* Translate clock in Hz */
|
/* Translate clock in Hz */
|
||||||
coreClock *= 100; /* in Hz */
|
coreClock *= 100; /* in Hz */
|
||||||
|
|
|
@ -1377,7 +1377,7 @@ static struct video_board vbG200 = {
|
||||||
.lowlevel = &matrox_G100
|
.lowlevel = &matrox_G100
|
||||||
};
|
};
|
||||||
static struct video_board vbG200eW = {
|
static struct video_board vbG200eW = {
|
||||||
.maxvram = 0x800000,
|
.maxvram = 0x100000,
|
||||||
.maxdisplayable = 0x800000,
|
.maxdisplayable = 0x800000,
|
||||||
.accelID = FB_ACCEL_MATROX_MGAG200,
|
.accelID = FB_ACCEL_MATROX_MGAG200,
|
||||||
.lowlevel = &matrox_G100
|
.lowlevel = &matrox_G100
|
||||||
|
|
|
@ -132,7 +132,7 @@ static void mb86290fb_imageblit8(u32 *cmd, u16 step, u16 dx, u16 dy,
|
||||||
cmd[2] = (height << 16) | width;
|
cmd[2] = (height << 16) | width;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
line = ptr = image->data;
|
line = image->data;
|
||||||
bytes = image->width;
|
bytes = image->width;
|
||||||
|
|
||||||
while (i < height) {
|
while (i < height) {
|
||||||
|
|
|
@ -514,7 +514,8 @@ static int mmphw_probe(struct platform_device *pdev)
|
||||||
/* get clock */
|
/* get clock */
|
||||||
ctrl->clk = devm_clk_get(ctrl->dev, mi->clk_name);
|
ctrl->clk = devm_clk_get(ctrl->dev, mi->clk_name);
|
||||||
if (IS_ERR(ctrl->clk)) {
|
if (IS_ERR(ctrl->clk)) {
|
||||||
dev_err(ctrl->dev, "unable to get clk %s\n", mi->clk_name);
|
dev_err_probe(ctrl->dev, ret,
|
||||||
|
"unable to get clk %s\n", mi->clk_name);
|
||||||
ret = -ENOENT;
|
ret = -ENOENT;
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ static int nvidia_setup_i2c_bus(struct nvidia_i2c_chan *chan, const char *name,
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
strcpy(chan->adapter.name, name);
|
strscpy(chan->adapter.name, name, sizeof(chan->adapter.name));
|
||||||
chan->adapter.owner = THIS_MODULE;
|
chan->adapter.owner = THIS_MODULE;
|
||||||
chan->adapter.class = i2c_class;
|
chan->adapter.class = i2c_class;
|
||||||
chan->adapter.algo_data = &chan->algo;
|
chan->adapter.algo_data = &chan->algo;
|
||||||
|
|
|
@ -387,7 +387,7 @@ static int ocfb_remove(struct platform_device *pdev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct of_device_id ocfb_match[] = {
|
static const struct of_device_id ocfb_match[] = {
|
||||||
{ .compatible = "opencores,ocfb", },
|
{ .compatible = "opencores,ocfb", },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
|
@ -412,7 +412,7 @@ static void __init offb_init_fb(const char *name,
|
||||||
|
|
||||||
info = framebuffer_alloc(sizeof(u32) * 16, NULL);
|
info = framebuffer_alloc(sizeof(u32) * 16, NULL);
|
||||||
|
|
||||||
if (info == 0) {
|
if (!info) {
|
||||||
release_mem_region(res_start, res_size);
|
release_mem_region(res_start, res_size);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,18 +131,14 @@ static int ams_delta_panel_probe(struct platform_device *pdev)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
gpiod_vblen = devm_gpiod_get(&pdev->dev, "vblen", GPIOD_OUT_LOW);
|
gpiod_vblen = devm_gpiod_get(&pdev->dev, "vblen", GPIOD_OUT_LOW);
|
||||||
if (IS_ERR(gpiod_vblen)) {
|
if (IS_ERR(gpiod_vblen))
|
||||||
ret = PTR_ERR(gpiod_vblen);
|
return dev_err_probe(&pdev->dev, PTR_ERR(gpiod_vblen),
|
||||||
dev_err(&pdev->dev, "VBLEN GPIO request failed (%d)\n", ret);
|
"VBLEN GPIO request failed\n");
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
gpiod_ndisp = devm_gpiod_get(&pdev->dev, "ndisp", GPIOD_OUT_LOW);
|
gpiod_ndisp = devm_gpiod_get(&pdev->dev, "ndisp", GPIOD_OUT_LOW);
|
||||||
if (IS_ERR(gpiod_ndisp)) {
|
if (IS_ERR(gpiod_ndisp))
|
||||||
ret = PTR_ERR(gpiod_ndisp);
|
return dev_err_probe(&pdev->dev, PTR_ERR(gpiod_ndisp),
|
||||||
dev_err(&pdev->dev, "NDISP GPIO request failed (%d)\n", ret);
|
"NDISP GPIO request failed\n");
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_LCD_CLASS_DEVICE
|
#ifdef CONFIG_LCD_CLASS_DEVICE
|
||||||
lcd_device = lcd_device_register("omapfb", &pdev->dev, NULL,
|
lcd_device = lcd_device_register("omapfb", &pdev->dev, NULL,
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
#include <linux/sysfs.h>
|
||||||
|
|
||||||
#include <linux/omap-dma.h>
|
#include <linux/omap-dma.h>
|
||||||
|
|
||||||
|
@ -1303,7 +1304,7 @@ static ssize_t omapfb_show_panel_name(struct device *dev,
|
||||||
{
|
{
|
||||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%s\n", fbdev->panel->name);
|
return sysfs_emit(buf, "%s\n", fbdev->panel->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t omapfb_show_bklight_level(struct device *dev,
|
static ssize_t omapfb_show_bklight_level(struct device *dev,
|
||||||
|
@ -1314,8 +1315,8 @@ static ssize_t omapfb_show_bklight_level(struct device *dev,
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if (fbdev->panel->get_bklight_level) {
|
if (fbdev->panel->get_bklight_level) {
|
||||||
r = snprintf(buf, PAGE_SIZE, "%d\n",
|
r = sysfs_emit(buf, "%d\n",
|
||||||
fbdev->panel->get_bklight_level(fbdev->panel));
|
fbdev->panel->get_bklight_level(fbdev->panel));
|
||||||
} else
|
} else
|
||||||
r = -ENODEV;
|
r = -ENODEV;
|
||||||
return r;
|
return r;
|
||||||
|
@ -1348,8 +1349,8 @@ static ssize_t omapfb_show_bklight_max(struct device *dev,
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if (fbdev->panel->get_bklight_level) {
|
if (fbdev->panel->get_bklight_level) {
|
||||||
r = snprintf(buf, PAGE_SIZE, "%d\n",
|
r = sysfs_emit(buf, "%d\n",
|
||||||
fbdev->panel->get_bklight_max(fbdev->panel));
|
fbdev->panel->get_bklight_max(fbdev->panel));
|
||||||
} else
|
} else
|
||||||
r = -ENODEV;
|
r = -ENODEV;
|
||||||
return r;
|
return r;
|
||||||
|
@ -1379,7 +1380,7 @@ static ssize_t omapfb_show_ctrl_name(struct device *dev,
|
||||||
{
|
{
|
||||||
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
struct omapfb_device *fbdev = dev_get_drvdata(dev);
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%s\n", fbdev->ctrl->name);
|
return sysfs_emit(buf, "%s\n", fbdev->ctrl->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct device_attribute dev_attr_ctrl_name =
|
static struct device_attribute dev_attr_ctrl_name =
|
||||||
|
|
|
@ -246,6 +246,7 @@ static int dvic_probe_of(struct platform_device *pdev)
|
||||||
adapter_node = of_parse_phandle(node, "ddc-i2c-bus", 0);
|
adapter_node = of_parse_phandle(node, "ddc-i2c-bus", 0);
|
||||||
if (adapter_node) {
|
if (adapter_node) {
|
||||||
adapter = of_get_i2c_adapter_by_node(adapter_node);
|
adapter = of_get_i2c_adapter_by_node(adapter_node);
|
||||||
|
of_node_put(adapter_node);
|
||||||
if (adapter == NULL) {
|
if (adapter == NULL) {
|
||||||
dev_err(&pdev->dev, "failed to parse ddc-i2c-bus\n");
|
dev_err(&pdev->dev, "failed to parse ddc-i2c-bus\n");
|
||||||
omap_dss_put_device(ddata->in);
|
omap_dss_put_device(ddata->in);
|
||||||
|
|
|
@ -409,7 +409,7 @@ static ssize_t dsicm_num_errors_show(struct device *dev,
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%d\n", errors);
|
return sysfs_emit(buf, "%d\n", errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t dsicm_hw_revision_show(struct device *dev,
|
static ssize_t dsicm_hw_revision_show(struct device *dev,
|
||||||
|
@ -439,7 +439,7 @@ static ssize_t dsicm_hw_revision_show(struct device *dev,
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%02x.%02x.%02x\n", id1, id2, id3);
|
return sysfs_emit(buf, "%02x.%02x.%02x\n", id1, id2, id3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t dsicm_store_ulps(struct device *dev,
|
static ssize_t dsicm_store_ulps(struct device *dev,
|
||||||
|
@ -487,7 +487,7 @@ static ssize_t dsicm_show_ulps(struct device *dev,
|
||||||
t = ddata->ulps_enabled;
|
t = ddata->ulps_enabled;
|
||||||
mutex_unlock(&ddata->lock);
|
mutex_unlock(&ddata->lock);
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%u\n", t);
|
return sysfs_emit(buf, "%u\n", t);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t dsicm_store_ulps_timeout(struct device *dev,
|
static ssize_t dsicm_store_ulps_timeout(struct device *dev,
|
||||||
|
@ -532,7 +532,7 @@ static ssize_t dsicm_show_ulps_timeout(struct device *dev,
|
||||||
t = ddata->ulps_timeout;
|
t = ddata->ulps_timeout;
|
||||||
mutex_unlock(&ddata->lock);
|
mutex_unlock(&ddata->lock);
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%u\n", t);
|
return sysfs_emit(buf, "%u\n", t);
|
||||||
}
|
}
|
||||||
|
|
||||||
static DEVICE_ATTR(num_dsi_errors, S_IRUGO, dsicm_num_errors_show, NULL);
|
static DEVICE_ATTR(num_dsi_errors, S_IRUGO, dsicm_num_errors_show, NULL);
|
||||||
|
|
|
@ -244,10 +244,9 @@ static int lb035q02_probe_of(struct spi_device *spi)
|
||||||
struct gpio_desc *gpio;
|
struct gpio_desc *gpio;
|
||||||
|
|
||||||
gpio = devm_gpiod_get(&spi->dev, "enable", GPIOD_OUT_LOW);
|
gpio = devm_gpiod_get(&spi->dev, "enable", GPIOD_OUT_LOW);
|
||||||
if (IS_ERR(gpio)) {
|
if (IS_ERR(gpio))
|
||||||
dev_err(&spi->dev, "failed to parse enable gpio\n");
|
return dev_err_probe(&spi->dev, PTR_ERR(gpio),
|
||||||
return PTR_ERR(gpio);
|
"failed to parse enable gpio\n");
|
||||||
}
|
|
||||||
|
|
||||||
ddata->enable_gpio = gpio;
|
ddata->enable_gpio = gpio;
|
||||||
|
|
||||||
|
|
|
@ -211,10 +211,9 @@ static int sharp_ls_probe_of(struct platform_device *pdev)
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
ddata->vcc = devm_regulator_get(&pdev->dev, "envdd");
|
ddata->vcc = devm_regulator_get(&pdev->dev, "envdd");
|
||||||
if (IS_ERR(ddata->vcc)) {
|
if (IS_ERR(ddata->vcc))
|
||||||
dev_err(&pdev->dev, "failed to get regulator\n");
|
return dev_err_probe(&pdev->dev, PTR_ERR(ddata->vcc),
|
||||||
return PTR_ERR(ddata->vcc);
|
"failed to get regulator\n");
|
||||||
}
|
|
||||||
|
|
||||||
/* lcd INI */
|
/* lcd INI */
|
||||||
r = sharp_ls_get_gpio_of(&pdev->dev, 0, 0, "enable", &ddata->ini_gpio);
|
r = sharp_ls_get_gpio_of(&pdev->dev, 0, 0, "enable", &ddata->ini_gpio);
|
||||||
|
|
|
@ -476,7 +476,7 @@ static ssize_t show_cabc_available_modes(struct device *dev,
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!ddata->has_cabc)
|
if (!ddata->has_cabc)
|
||||||
return snprintf(buf, PAGE_SIZE, "%s\n", cabc_modes[0]);
|
return sysfs_emit(buf, "%s\n", cabc_modes[0]);
|
||||||
|
|
||||||
for (i = 0, len = 0;
|
for (i = 0, len = 0;
|
||||||
len < PAGE_SIZE && i < ARRAY_SIZE(cabc_modes); i++)
|
len < PAGE_SIZE && i < ARRAY_SIZE(cabc_modes); i++)
|
||||||
|
|
|
@ -169,7 +169,7 @@ static ssize_t tpo_td043_vmirror_show(struct device *dev,
|
||||||
{
|
{
|
||||||
struct panel_drv_data *ddata = dev_get_drvdata(dev);
|
struct panel_drv_data *ddata = dev_get_drvdata(dev);
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%d\n", ddata->vmirror);
|
return sysfs_emit(buf, "%d\n", ddata->vmirror);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t tpo_td043_vmirror_store(struct device *dev,
|
static ssize_t tpo_td043_vmirror_store(struct device *dev,
|
||||||
|
@ -199,7 +199,7 @@ static ssize_t tpo_td043_mode_show(struct device *dev,
|
||||||
{
|
{
|
||||||
struct panel_drv_data *ddata = dev_get_drvdata(dev);
|
struct panel_drv_data *ddata = dev_get_drvdata(dev);
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%d\n", ddata->mode);
|
return sysfs_emit(buf, "%d\n", ddata->mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t tpo_td043_mode_store(struct device *dev,
|
static ssize_t tpo_td043_mode_store(struct device *dev,
|
||||||
|
@ -517,8 +517,7 @@ static int tpo_td043_probe(struct spi_device *spi)
|
||||||
|
|
||||||
ddata->vcc_reg = devm_regulator_get(&spi->dev, "vcc");
|
ddata->vcc_reg = devm_regulator_get(&spi->dev, "vcc");
|
||||||
if (IS_ERR(ddata->vcc_reg)) {
|
if (IS_ERR(ddata->vcc_reg)) {
|
||||||
dev_err(&spi->dev, "failed to get LCD VCC regulator\n");
|
r = dev_err_probe(&spi->dev, r, "failed to get LCD VCC regulator\n");
|
||||||
r = PTR_ERR(ddata->vcc_reg);
|
|
||||||
goto err_regulator;
|
goto err_regulator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -265,6 +265,7 @@ static struct attribute *display_sysfs_attrs[] = {
|
||||||
&display_attr_wss.attr,
|
&display_attr_wss.attr,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
ATTRIBUTE_GROUPS(display_sysfs);
|
||||||
|
|
||||||
static ssize_t display_attr_show(struct kobject *kobj, struct attribute *attr,
|
static ssize_t display_attr_show(struct kobject *kobj, struct attribute *attr,
|
||||||
char *buf)
|
char *buf)
|
||||||
|
@ -303,7 +304,7 @@ static const struct sysfs_ops display_sysfs_ops = {
|
||||||
|
|
||||||
static struct kobj_type display_ktype = {
|
static struct kobj_type display_ktype = {
|
||||||
.sysfs_ops = &display_sysfs_ops,
|
.sysfs_ops = &display_sysfs_ops,
|
||||||
.default_attrs = display_sysfs_attrs,
|
.default_groups = display_sysfs_groups,
|
||||||
};
|
};
|
||||||
|
|
||||||
int display_init_sysfs(struct platform_device *pdev)
|
int display_init_sysfs(struct platform_device *pdev)
|
||||||
|
|
|
@ -457,6 +457,7 @@ static struct attribute *manager_sysfs_attrs[] = {
|
||||||
&manager_attr_cpr_coef.attr,
|
&manager_attr_cpr_coef.attr,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
ATTRIBUTE_GROUPS(manager_sysfs);
|
||||||
|
|
||||||
static ssize_t manager_attr_show(struct kobject *kobj, struct attribute *attr,
|
static ssize_t manager_attr_show(struct kobject *kobj, struct attribute *attr,
|
||||||
char *buf)
|
char *buf)
|
||||||
|
@ -495,7 +496,7 @@ static const struct sysfs_ops manager_sysfs_ops = {
|
||||||
|
|
||||||
static struct kobj_type manager_ktype = {
|
static struct kobj_type manager_ktype = {
|
||||||
.sysfs_ops = &manager_sysfs_ops,
|
.sysfs_ops = &manager_sysfs_ops,
|
||||||
.default_attrs = manager_sysfs_attrs,
|
.default_groups = manager_sysfs_groups,
|
||||||
};
|
};
|
||||||
|
|
||||||
int dss_manager_kobj_init(struct omap_overlay_manager *mgr,
|
int dss_manager_kobj_init(struct omap_overlay_manager *mgr,
|
||||||
|
|
|
@ -390,6 +390,7 @@ static struct attribute *overlay_sysfs_attrs[] = {
|
||||||
&overlay_attr_zorder.attr,
|
&overlay_attr_zorder.attr,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
ATTRIBUTE_GROUPS(overlay_sysfs);
|
||||||
|
|
||||||
static ssize_t overlay_attr_show(struct kobject *kobj, struct attribute *attr,
|
static ssize_t overlay_attr_show(struct kobject *kobj, struct attribute *attr,
|
||||||
char *buf)
|
char *buf)
|
||||||
|
@ -428,7 +429,7 @@ static const struct sysfs_ops overlay_sysfs_ops = {
|
||||||
|
|
||||||
static struct kobj_type overlay_ktype = {
|
static struct kobj_type overlay_ktype = {
|
||||||
.sysfs_ops = &overlay_sysfs_ops,
|
.sysfs_ops = &overlay_sysfs_ops,
|
||||||
.default_attrs = overlay_sysfs_attrs,
|
.default_groups = overlay_sysfs_groups,
|
||||||
};
|
};
|
||||||
|
|
||||||
int dss_overlay_kobj_init(struct omap_overlay *ovl,
|
int dss_overlay_kobj_init(struct omap_overlay *ovl,
|
||||||
|
|
|
@ -1854,7 +1854,6 @@ static void omapfb_free_resources(struct omapfb2_device *fbdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fbdev->auto_update_wq != NULL) {
|
if (fbdev->auto_update_wq != NULL) {
|
||||||
flush_workqueue(fbdev->auto_update_wq);
|
|
||||||
destroy_workqueue(fbdev->auto_update_wq);
|
destroy_workqueue(fbdev->auto_update_wq);
|
||||||
fbdev->auto_update_wq = NULL;
|
fbdev->auto_update_wq = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -593,8 +593,8 @@ static void pxa168fb_init_mode(struct fb_info *info,
|
||||||
static int pxa168fb_probe(struct platform_device *pdev)
|
static int pxa168fb_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct pxa168fb_mach_info *mi;
|
struct pxa168fb_mach_info *mi;
|
||||||
struct fb_info *info = 0;
|
struct fb_info *info = NULL;
|
||||||
struct pxa168fb_info *fbi = 0;
|
struct pxa168fb_info *fbi = NULL;
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
int irq, ret;
|
int irq, ret;
|
||||||
|
@ -606,10 +606,9 @@ static int pxa168fb_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
clk = devm_clk_get(&pdev->dev, "LCDCLK");
|
clk = devm_clk_get(&pdev->dev, "LCDCLK");
|
||||||
if (IS_ERR(clk)) {
|
if (IS_ERR(clk))
|
||||||
dev_err(&pdev->dev, "unable to get LCDCLK");
|
return dev_err_probe(&pdev->dev, PTR_ERR(clk),
|
||||||
return PTR_ERR(clk);
|
"unable to get LCDCLK");
|
||||||
}
|
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
if (res == NULL) {
|
if (res == NULL) {
|
||||||
|
@ -618,10 +617,8 @@ static int pxa168fb_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
irq = platform_get_irq(pdev, 0);
|
irq = platform_get_irq(pdev, 0);
|
||||||
if (irq < 0) {
|
if (irq < 0)
|
||||||
dev_err(&pdev->dev, "no IRQ defined\n");
|
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
|
||||||
|
|
||||||
info = framebuffer_alloc(sizeof(struct pxa168fb_info), &pdev->dev);
|
info = framebuffer_alloc(sizeof(struct pxa168fb_info), &pdev->dev);
|
||||||
if (info == NULL) {
|
if (info == NULL) {
|
||||||
|
|
|
@ -606,17 +606,13 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
/* enable the clock */
|
/* enable the clock */
|
||||||
priv->clk = devm_clk_get(dev, NULL);
|
priv->clk = devm_clk_get(dev, NULL);
|
||||||
if (IS_ERR(priv->clk)) {
|
if (IS_ERR(priv->clk))
|
||||||
dev_err(dev, "failed to get clock\n");
|
return dev_err_probe(dev, PTR_ERR(priv->clk), "failed to get clock\n");
|
||||||
return PTR_ERR(priv->clk);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* request the IRQ */
|
/* request the IRQ */
|
||||||
irq = platform_get_irq(pdev, 0);
|
irq = platform_get_irq(pdev, 0);
|
||||||
if (irq < 0) {
|
if (irq < 0)
|
||||||
dev_err(dev, "no IRQ defined: %d\n", irq);
|
|
||||||
return irq;
|
return irq;
|
||||||
}
|
|
||||||
|
|
||||||
ret = devm_request_irq(dev, irq, pxa3xx_gcu_handle_irq,
|
ret = devm_request_irq(dev, irq, pxa3xx_gcu_handle_irq,
|
||||||
0, DRV_NAME, priv);
|
0, DRV_NAME, priv);
|
||||||
|
|
|
@ -1360,7 +1360,6 @@ static int s3c_fb_probe(struct platform_device *pdev)
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct s3c_fb_platdata *pd;
|
struct s3c_fb_platdata *pd;
|
||||||
struct s3c_fb *sfb;
|
struct s3c_fb *sfb;
|
||||||
struct resource *res;
|
|
||||||
int win;
|
int win;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
@ -1392,18 +1391,17 @@ static int s3c_fb_probe(struct platform_device *pdev)
|
||||||
spin_lock_init(&sfb->slock);
|
spin_lock_init(&sfb->slock);
|
||||||
|
|
||||||
sfb->bus_clk = devm_clk_get(dev, "lcd");
|
sfb->bus_clk = devm_clk_get(dev, "lcd");
|
||||||
if (IS_ERR(sfb->bus_clk)) {
|
if (IS_ERR(sfb->bus_clk))
|
||||||
dev_err(dev, "failed to get bus clock\n");
|
return dev_err_probe(dev, PTR_ERR(sfb->bus_clk),
|
||||||
return PTR_ERR(sfb->bus_clk);
|
"failed to get bus clock\n");
|
||||||
}
|
|
||||||
|
|
||||||
clk_prepare_enable(sfb->bus_clk);
|
clk_prepare_enable(sfb->bus_clk);
|
||||||
|
|
||||||
if (!sfb->variant.has_clksel) {
|
if (!sfb->variant.has_clksel) {
|
||||||
sfb->lcd_clk = devm_clk_get(dev, "sclk_fimd");
|
sfb->lcd_clk = devm_clk_get(dev, "sclk_fimd");
|
||||||
if (IS_ERR(sfb->lcd_clk)) {
|
if (IS_ERR(sfb->lcd_clk)) {
|
||||||
dev_err(dev, "failed to get lcd clock\n");
|
ret = dev_err_probe(dev, PTR_ERR(sfb->lcd_clk),
|
||||||
ret = PTR_ERR(sfb->lcd_clk);
|
"failed to get lcd clock\n");
|
||||||
goto err_bus_clk;
|
goto err_bus_clk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1418,13 +1416,12 @@ static int s3c_fb_probe(struct platform_device *pdev)
|
||||||
goto err_lcd_clk;
|
goto err_lcd_clk;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
sfb->irq_no = platform_get_irq(pdev, 0);
|
||||||
if (!res) {
|
if (sfb->irq_no < 0) {
|
||||||
dev_err(dev, "failed to acquire irq resource\n");
|
|
||||||
ret = -ENOENT;
|
ret = -ENOENT;
|
||||||
goto err_lcd_clk;
|
goto err_lcd_clk;
|
||||||
}
|
}
|
||||||
sfb->irq_no = res->start;
|
|
||||||
ret = devm_request_irq(dev, sfb->irq_no, s3c_fb_irq,
|
ret = devm_request_irq(dev, sfb->irq_no, s3c_fb_irq,
|
||||||
0, "s3c_fb", sfb);
|
0, "s3c_fb", sfb);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -1810,4 +1807,3 @@ module_platform_driver(s3c_fb_driver);
|
||||||
MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");
|
MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");
|
||||||
MODULE_DESCRIPTION("Samsung S3C SoC Framebuffer driver");
|
MODULE_DESCRIPTION("Samsung S3C SoC Framebuffer driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS("platform:s3c-fb");
|
|
||||||
|
|
|
@ -195,7 +195,6 @@ struct savagefb_par {
|
||||||
struct savage_reg initial;
|
struct savage_reg initial;
|
||||||
struct vgastate vgastate;
|
struct vgastate vgastate;
|
||||||
struct mutex open_lock;
|
struct mutex open_lock;
|
||||||
unsigned char *edid;
|
|
||||||
u32 pseudo_palette[16];
|
u32 pseudo_palette[16];
|
||||||
u32 open_count;
|
u32 open_count;
|
||||||
int paletteEnabled;
|
int paletteEnabled;
|
||||||
|
|
|
@ -2170,6 +2170,7 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
struct fb_info *info;
|
struct fb_info *info;
|
||||||
struct savagefb_par *par;
|
struct savagefb_par *par;
|
||||||
u_int h_sync, v_sync;
|
u_int h_sync, v_sync;
|
||||||
|
unsigned char __maybe_unused *edid;
|
||||||
int err, lpitch;
|
int err, lpitch;
|
||||||
int video_len;
|
int video_len;
|
||||||
|
|
||||||
|
@ -2212,9 +2213,9 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
INIT_LIST_HEAD(&info->modelist);
|
INIT_LIST_HEAD(&info->modelist);
|
||||||
#if defined(CONFIG_FB_SAVAGE_I2C)
|
#if defined(CONFIG_FB_SAVAGE_I2C)
|
||||||
savagefb_create_i2c_busses(info);
|
savagefb_create_i2c_busses(info);
|
||||||
savagefb_probe_i2c_connector(info, &par->edid);
|
savagefb_probe_i2c_connector(info, &edid);
|
||||||
fb_edid_to_monspecs(par->edid, &info->monspecs);
|
fb_edid_to_monspecs(edid, &info->monspecs);
|
||||||
kfree(par->edid);
|
kfree(edid);
|
||||||
fb_videomode_to_modelist(info->monspecs.modedb,
|
fb_videomode_to_modelist(info->monspecs.modedb,
|
||||||
info->monspecs.modedb_len,
|
info->monspecs.modedb_len,
|
||||||
&info->modelist);
|
&info->modelist);
|
||||||
|
|
|
@ -213,7 +213,7 @@ static void sisfb_search_mode(char *name, bool quiet)
|
||||||
/* This does some fuzzy mode naming detection */
|
/* This does some fuzzy mode naming detection */
|
||||||
if(sscanf(strbuf1, "%u %u %u %u", &xres, &yres, &depth, &rate) == 4) {
|
if(sscanf(strbuf1, "%u %u %u %u", &xres, &yres, &depth, &rate) == 4) {
|
||||||
if((rate <= 32) || (depth > 32)) {
|
if((rate <= 32) || (depth > 32)) {
|
||||||
j = rate; rate = depth; depth = j;
|
swap(rate, depth);
|
||||||
}
|
}
|
||||||
sprintf(strbuf, "%ux%ux%u", xres, yres, depth);
|
sprintf(strbuf, "%ux%ux%u", xres, yres, depth);
|
||||||
nameptr = strbuf;
|
nameptr = strbuf;
|
||||||
|
|
|
@ -1047,7 +1047,7 @@ static ssize_t smtcfb_read(struct fb_info *info, char __user *buf,
|
||||||
if (count + p > total_size)
|
if (count + p > total_size)
|
||||||
count = total_size - p;
|
count = total_size - p;
|
||||||
|
|
||||||
buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
|
buffer = kmalloc(PAGE_SIZE, GFP_KERNEL);
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -1059,24 +1059,13 @@ static ssize_t smtcfb_read(struct fb_info *info, char __user *buf,
|
||||||
while (count) {
|
while (count) {
|
||||||
c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
|
c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
|
||||||
dst = buffer;
|
dst = buffer;
|
||||||
for (i = c >> 2; i--;) {
|
for (i = (c + 3) >> 2; i--;) {
|
||||||
*dst = fb_readl(src++);
|
u32 val;
|
||||||
*dst = big_swap(*dst);
|
|
||||||
dst++;
|
|
||||||
}
|
|
||||||
if (c & 3) {
|
|
||||||
u8 *dst8 = (u8 *)dst;
|
|
||||||
u8 __iomem *src8 = (u8 __iomem *)src;
|
|
||||||
|
|
||||||
for (i = c & 3; i--;) {
|
val = fb_readl(src);
|
||||||
if (i & 1) {
|
*dst = big_swap(val);
|
||||||
*dst8++ = fb_readb(++src8);
|
src++;
|
||||||
} else {
|
dst++;
|
||||||
*dst8++ = fb_readb(--src8);
|
|
||||||
src8 += 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
src = (u32 __iomem *)src8;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (copy_to_user(buf, buffer, c)) {
|
if (copy_to_user(buf, buffer, c)) {
|
||||||
|
@ -1130,7 +1119,7 @@ static ssize_t smtcfb_write(struct fb_info *info, const char __user *buf,
|
||||||
count = total_size - p;
|
count = total_size - p;
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
|
buffer = kmalloc(PAGE_SIZE, GFP_KERNEL);
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -1148,24 +1137,11 @@ static ssize_t smtcfb_write(struct fb_info *info, const char __user *buf,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = c >> 2; i--;) {
|
for (i = (c + 3) >> 2; i--;) {
|
||||||
fb_writel(big_swap(*src), dst++);
|
fb_writel(big_swap(*src), dst);
|
||||||
|
dst++;
|
||||||
src++;
|
src++;
|
||||||
}
|
}
|
||||||
if (c & 3) {
|
|
||||||
u8 *src8 = (u8 *)src;
|
|
||||||
u8 __iomem *dst8 = (u8 __iomem *)dst;
|
|
||||||
|
|
||||||
for (i = c & 3; i--;) {
|
|
||||||
if (i & 1) {
|
|
||||||
fb_writeb(*src8++, ++dst8);
|
|
||||||
} else {
|
|
||||||
fb_writeb(*src8++, --dst8);
|
|
||||||
dst8 += 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dst = (u32 __iomem *)dst8;
|
|
||||||
}
|
|
||||||
|
|
||||||
*ppos += c;
|
*ppos += c;
|
||||||
buf += c;
|
buf += c;
|
||||||
|
|
|
@ -1656,6 +1656,7 @@ static int ufx_usb_probe(struct usb_interface *interface,
|
||||||
info->par = dev;
|
info->par = dev;
|
||||||
info->pseudo_palette = dev->pseudo_palette;
|
info->pseudo_palette = dev->pseudo_palette;
|
||||||
info->fbops = &ufx_ops;
|
info->fbops = &ufx_ops;
|
||||||
|
INIT_LIST_HEAD(&info->modelist);
|
||||||
|
|
||||||
retval = fb_alloc_cmap(&info->cmap, 256, 0);
|
retval = fb_alloc_cmap(&info->cmap, 256, 0);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
|
@ -1666,8 +1667,6 @@ static int ufx_usb_probe(struct usb_interface *interface,
|
||||||
INIT_DELAYED_WORK(&dev->free_framebuffer_work,
|
INIT_DELAYED_WORK(&dev->free_framebuffer_work,
|
||||||
ufx_free_framebuffer_work);
|
ufx_free_framebuffer_work);
|
||||||
|
|
||||||
INIT_LIST_HEAD(&info->modelist);
|
|
||||||
|
|
||||||
retval = ufx_reg_read(dev, 0x3000, &id_rev);
|
retval = ufx_reg_read(dev, 0x3000, &id_rev);
|
||||||
check_warn_goto_error(retval, "error %d reading 0x3000 register from device", retval);
|
check_warn_goto_error(retval, "error %d reading 0x3000 register from device", retval);
|
||||||
dev_dbg(dev->gdev, "ID_REV register value 0x%08x", id_rev);
|
dev_dbg(dev->gdev, "ID_REV register value 0x%08x", id_rev);
|
||||||
|
|
|
@ -658,9 +658,8 @@ static int ssd1307fb_probe(struct i2c_client *client)
|
||||||
|
|
||||||
par->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
|
par->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
|
||||||
if (IS_ERR(par->reset)) {
|
if (IS_ERR(par->reset)) {
|
||||||
dev_err(dev, "failed to get reset gpio: %ld\n",
|
ret = dev_err_probe(dev, PTR_ERR(par->reset),
|
||||||
PTR_ERR(par->reset));
|
"failed to get reset gpio\n");
|
||||||
ret = PTR_ERR(par->reset);
|
|
||||||
goto fb_alloc_error;
|
goto fb_alloc_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -670,7 +669,7 @@ static int ssd1307fb_probe(struct i2c_client *client)
|
||||||
if (ret == -ENODEV) {
|
if (ret == -ENODEV) {
|
||||||
par->vbat_reg = NULL;
|
par->vbat_reg = NULL;
|
||||||
} else {
|
} else {
|
||||||
dev_err(dev, "failed to get VBAT regulator: %d\n", ret);
|
dev_err_probe(dev, ret, "failed to get VBAT regulator\n");
|
||||||
goto fb_alloc_error;
|
goto fb_alloc_error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1426,7 +1426,7 @@ static ssize_t metrics_bytes_rendered_show(struct device *fbdev,
|
||||||
struct device_attribute *a, char *buf) {
|
struct device_attribute *a, char *buf) {
|
||||||
struct fb_info *fb_info = dev_get_drvdata(fbdev);
|
struct fb_info *fb_info = dev_get_drvdata(fbdev);
|
||||||
struct dlfb_data *dlfb = fb_info->par;
|
struct dlfb_data *dlfb = fb_info->par;
|
||||||
return snprintf(buf, PAGE_SIZE, "%u\n",
|
return sysfs_emit(buf, "%u\n",
|
||||||
atomic_read(&dlfb->bytes_rendered));
|
atomic_read(&dlfb->bytes_rendered));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1434,7 +1434,7 @@ static ssize_t metrics_bytes_identical_show(struct device *fbdev,
|
||||||
struct device_attribute *a, char *buf) {
|
struct device_attribute *a, char *buf) {
|
||||||
struct fb_info *fb_info = dev_get_drvdata(fbdev);
|
struct fb_info *fb_info = dev_get_drvdata(fbdev);
|
||||||
struct dlfb_data *dlfb = fb_info->par;
|
struct dlfb_data *dlfb = fb_info->par;
|
||||||
return snprintf(buf, PAGE_SIZE, "%u\n",
|
return sysfs_emit(buf, "%u\n",
|
||||||
atomic_read(&dlfb->bytes_identical));
|
atomic_read(&dlfb->bytes_identical));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1442,7 +1442,7 @@ static ssize_t metrics_bytes_sent_show(struct device *fbdev,
|
||||||
struct device_attribute *a, char *buf) {
|
struct device_attribute *a, char *buf) {
|
||||||
struct fb_info *fb_info = dev_get_drvdata(fbdev);
|
struct fb_info *fb_info = dev_get_drvdata(fbdev);
|
||||||
struct dlfb_data *dlfb = fb_info->par;
|
struct dlfb_data *dlfb = fb_info->par;
|
||||||
return snprintf(buf, PAGE_SIZE, "%u\n",
|
return sysfs_emit(buf, "%u\n",
|
||||||
atomic_read(&dlfb->bytes_sent));
|
atomic_read(&dlfb->bytes_sent));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1450,7 +1450,7 @@ static ssize_t metrics_cpu_kcycles_used_show(struct device *fbdev,
|
||||||
struct device_attribute *a, char *buf) {
|
struct device_attribute *a, char *buf) {
|
||||||
struct fb_info *fb_info = dev_get_drvdata(fbdev);
|
struct fb_info *fb_info = dev_get_drvdata(fbdev);
|
||||||
struct dlfb_data *dlfb = fb_info->par;
|
struct dlfb_data *dlfb = fb_info->par;
|
||||||
return snprintf(buf, PAGE_SIZE, "%u\n",
|
return sysfs_emit(buf, "%u\n",
|
||||||
atomic_read(&dlfb->cpu_kcycles_used));
|
atomic_read(&dlfb->cpu_kcycles_used));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -543,7 +543,7 @@ void viafb_lcd_set_mode(const struct fb_var_screeninfo *var, u16 cxres,
|
||||||
/* Get panel table Pointer */
|
/* Get panel table Pointer */
|
||||||
panel_crt_table = viafb_get_best_mode(panel_hres, panel_vres, 60);
|
panel_crt_table = viafb_get_best_mode(panel_hres, panel_vres, 60);
|
||||||
viafb_fill_var_timing_info(&panel_var, panel_crt_table);
|
viafb_fill_var_timing_info(&panel_var, panel_crt_table);
|
||||||
DEBUG_MSG(KERN_INFO "bellow viafb_lcd_set_mode!!\n");
|
DEBUG_MSG(KERN_INFO "below viafb_lcd_set_mode!!\n");
|
||||||
if (VT1636_LVDS == plvds_chip_info->lvds_chip_name)
|
if (VT1636_LVDS == plvds_chip_info->lvds_chip_name)
|
||||||
viafb_init_lvds_vt1636(plvds_setting_info, plvds_chip_info);
|
viafb_init_lvds_vt1636(plvds_setting_info, plvds_chip_info);
|
||||||
clock = PICOS2KHZ(panel_crt_table->pixclock) * 1000;
|
clock = PICOS2KHZ(panel_crt_table->pixclock) * 1000;
|
||||||
|
|
|
@ -1939,8 +1939,12 @@ static int __init viafb_setup(void)
|
||||||
|
|
||||||
if (!strncmp(this_opt, "viafb_mode1=", 12)) {
|
if (!strncmp(this_opt, "viafb_mode1=", 12)) {
|
||||||
viafb_mode1 = kstrdup(this_opt + 12, GFP_KERNEL);
|
viafb_mode1 = kstrdup(this_opt + 12, GFP_KERNEL);
|
||||||
|
if (!viafb_mode1)
|
||||||
|
return -ENOMEM;
|
||||||
} else if (!strncmp(this_opt, "viafb_mode=", 11)) {
|
} else if (!strncmp(this_opt, "viafb_mode=", 11)) {
|
||||||
viafb_mode = kstrdup(this_opt + 11, GFP_KERNEL);
|
viafb_mode = kstrdup(this_opt + 11, GFP_KERNEL);
|
||||||
|
if (!viafb_mode)
|
||||||
|
return -ENOMEM;
|
||||||
} else if (!strncmp(this_opt, "viafb_bpp1=", 11)) {
|
} else if (!strncmp(this_opt, "viafb_bpp1=", 11)) {
|
||||||
if (kstrtouint(this_opt + 11, 0, &viafb_bpp1) < 0)
|
if (kstrtouint(this_opt + 11, 0, &viafb_bpp1) < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -1969,6 +1973,8 @@ static int __init viafb_setup(void)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
} else if (!strncmp(this_opt, "viafb_active_dev=", 17)) {
|
} else if (!strncmp(this_opt, "viafb_active_dev=", 17)) {
|
||||||
viafb_active_dev = kstrdup(this_opt + 17, GFP_KERNEL);
|
viafb_active_dev = kstrdup(this_opt + 17, GFP_KERNEL);
|
||||||
|
if (!viafb_active_dev)
|
||||||
|
return -ENOMEM;
|
||||||
} else if (!strncmp(this_opt,
|
} else if (!strncmp(this_opt,
|
||||||
"viafb_display_hardware_layout=", 30)) {
|
"viafb_display_hardware_layout=", 30)) {
|
||||||
if (kstrtoint(this_opt + 30, 0,
|
if (kstrtoint(this_opt + 30, 0,
|
||||||
|
@ -1995,8 +2001,12 @@ static int __init viafb_setup(void)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
} else if (!strncmp(this_opt, "viafb_lcd_port=", 15)) {
|
} else if (!strncmp(this_opt, "viafb_lcd_port=", 15)) {
|
||||||
viafb_lcd_port = kstrdup(this_opt + 15, GFP_KERNEL);
|
viafb_lcd_port = kstrdup(this_opt + 15, GFP_KERNEL);
|
||||||
|
if (!viafb_lcd_port)
|
||||||
|
return -ENOMEM;
|
||||||
} else if (!strncmp(this_opt, "viafb_dvi_port=", 15)) {
|
} else if (!strncmp(this_opt, "viafb_dvi_port=", 15)) {
|
||||||
viafb_dvi_port = kstrdup(this_opt + 15, GFP_KERNEL);
|
viafb_dvi_port = kstrdup(this_opt + 15, GFP_KERNEL);
|
||||||
|
if (!viafb_dvi_port)
|
||||||
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -770,12 +770,18 @@ out:
|
||||||
fb_dealloc_cmap(&info->cmap);
|
fb_dealloc_cmap(&info->cmap);
|
||||||
kfree(info->pseudo_palette);
|
kfree(info->pseudo_palette);
|
||||||
}
|
}
|
||||||
if (remapped_fbuf != NULL)
|
if (remapped_fbuf != NULL) {
|
||||||
iounmap(remapped_fbuf);
|
iounmap(remapped_fbuf);
|
||||||
if (remapped_regs != NULL)
|
remapped_fbuf = NULL;
|
||||||
|
}
|
||||||
|
if (remapped_regs != NULL) {
|
||||||
iounmap(remapped_regs);
|
iounmap(remapped_regs);
|
||||||
if (remapped_base != NULL)
|
remapped_regs = NULL;
|
||||||
|
}
|
||||||
|
if (remapped_base != NULL) {
|
||||||
iounmap(remapped_base);
|
iounmap(remapped_base);
|
||||||
|
remapped_base = NULL;
|
||||||
|
}
|
||||||
if (info)
|
if (info)
|
||||||
framebuffer_release(info);
|
framebuffer_release(info);
|
||||||
return err;
|
return err;
|
||||||
|
@ -795,8 +801,11 @@ static int w100fb_remove(struct platform_device *pdev)
|
||||||
fb_dealloc_cmap(&info->cmap);
|
fb_dealloc_cmap(&info->cmap);
|
||||||
|
|
||||||
iounmap(remapped_base);
|
iounmap(remapped_base);
|
||||||
|
remapped_base = NULL;
|
||||||
iounmap(remapped_regs);
|
iounmap(remapped_regs);
|
||||||
|
remapped_regs = NULL;
|
||||||
iounmap(remapped_fbuf);
|
iounmap(remapped_fbuf);
|
||||||
|
remapped_fbuf = NULL;
|
||||||
|
|
||||||
framebuffer_release(info);
|
framebuffer_release(info);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue