You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
(1) |
Apr
(104) |
May
(81) |
Jun
(248) |
Jul
(133) |
Aug
(33) |
Sep
(53) |
Oct
(82) |
Nov
(166) |
Dec
(71) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(121) |
Feb
(42) |
Mar
(39) |
Apr
(84) |
May
(87) |
Jun
(58) |
Jul
(97) |
Aug
(130) |
Sep
(32) |
Oct
(139) |
Nov
(108) |
Dec
(216) |
2003 |
Jan
(299) |
Feb
(136) |
Mar
(392) |
Apr
(141) |
May
(137) |
Jun
(107) |
Jul
(94) |
Aug
(262) |
Sep
(300) |
Oct
(216) |
Nov
(72) |
Dec
(94) |
2004 |
Jan
(174) |
Feb
(192) |
Mar
(215) |
Apr
(314) |
May
(319) |
Jun
(293) |
Jul
(205) |
Aug
(161) |
Sep
(192) |
Oct
(226) |
Nov
(308) |
Dec
(89) |
2005 |
Jan
(127) |
Feb
(269) |
Mar
(588) |
Apr
(106) |
May
(77) |
Jun
(77) |
Jul
(161) |
Aug
(239) |
Sep
(86) |
Oct
(112) |
Nov
(153) |
Dec
(145) |
2006 |
Jan
(87) |
Feb
(57) |
Mar
(129) |
Apr
(109) |
May
(102) |
Jun
(232) |
Jul
(97) |
Aug
(69) |
Sep
(67) |
Oct
(69) |
Nov
(214) |
Dec
(82) |
2007 |
Jan
(133) |
Feb
(307) |
Mar
(121) |
Apr
(171) |
May
(229) |
Jun
(156) |
Jul
(185) |
Aug
(160) |
Sep
(122) |
Oct
(130) |
Nov
(78) |
Dec
(27) |
2008 |
Jan
(105) |
Feb
(137) |
Mar
(146) |
Apr
(148) |
May
(239) |
Jun
(208) |
Jul
(157) |
Aug
(244) |
Sep
(119) |
Oct
(125) |
Nov
(189) |
Dec
(225) |
2009 |
Jan
(157) |
Feb
(139) |
Mar
(106) |
Apr
(130) |
May
(246) |
Jun
(189) |
Jul
(128) |
Aug
(127) |
Sep
(88) |
Oct
(86) |
Nov
(216) |
Dec
(9) |
2010 |
Jan
(5) |
Feb
|
Mar
(11) |
Apr
(31) |
May
(3) |
Jun
|
Jul
(7) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: James S. <jsi...@in...> - 2009-11-20 20:01:57
|
> > > > Paulius Zaleckas wrote: > > > > > On drivers using drm_fb_helper's in fb_ops it is not possible to > > > > > change > > > > > video mode, because of different var->pixclock evaluation: ... > > > > > > > > patch: > > > > http://www.mail-archive.com/dri...@li.../msg44369.html > > > > > > Those patches will enable fbdev apps to run properly. More patches are > > > needed if you want to support mode switching using the fbdev emulation > > > layer. I noticed my patches and yours where lost. Who do you send patches > > > too that can merge them ? > > > > y:/usr/src/git26> perl scripts/get_maintainer.pl -f > > drivers/gpu/drm/drm_fb_helper.c > > David Airlie<ai...@li...> > > Dave Airlie<ai...@re...> > > Jesse Barnes<jb...@vi...> > > Mikael Pettersson<mi...@it...> > > dri...@li... > > lin...@vg... > > > > That's accurate enough. > > > > Generally, if nothing has happened in a week, the chances that it's > > lost are very high. Resend. If you like, cc me and I'll maintain the > > patches > > and resend them for you. > > You can add Tested-by: Paulius Zaleckas <pau...@gm...> > for http://www.mail-archive.com/dri...@li.../msg44369.html > as this was preventing DirectFB from running on my Asus Eee PC 701. I tested it as well with the both my 3Dfx driver that I wrote with KMS and the nouveau driver. We just need to make sure that the patches end up in the drm-next tree or these patches will be lost when drm-next gets merged to linus tree. |
From: Paulius Z. <pau...@gm...> - 2009-11-20 19:35:09
|
On 11/20/2009 09:05 PM, Andrew Morton wrote: > On Fri, 20 Nov 2009 18:53:37 +0000 (GMT) > James Simmons<jsi...@in...> wrote: > >> >>> Paulius Zaleckas wrote: >>>> On drivers using drm_fb_helper's in fb_ops it is not possible to change >>>> video mode, because of different var->pixclock evaluation: ... >>> >>> patch: >>> http://www.mail-archive.com/dri...@li.../msg44369.html >> >> Those patches will enable fbdev apps to run properly. More patches are >> needed if you want to support mode switching using the fbdev emulation >> layer. I noticed my patches and yours where lost. Who do you send patches >> too that can merge them ? > > y:/usr/src/git26> perl scripts/get_maintainer.pl -f drivers/gpu/drm/drm_fb_helper.c > David Airlie<ai...@li...> > Dave Airlie<ai...@re...> > Jesse Barnes<jb...@vi...> > Mikael Pettersson<mi...@it...> > dri...@li... > lin...@vg... > > That's accurate enough. > > Generally, if nothing has happened in a week, the chances that it's > lost are very high. Resend. If you like, cc me and I'll maintain the patches > and resend them for you. You can add Tested-by: Paulius Zaleckas <pau...@gm...> for http://www.mail-archive.com/dri...@li.../msg44369.html as this was preventing DirectFB from running on my Asus Eee PC 701. While at this patch maybe you should fix that spelling issue as well. > cheers, > lkml resendbot. |
From: Andrew M. <ak...@li...> - 2009-11-20 19:06:14
|
On Fri, 20 Nov 2009 18:53:37 +0000 (GMT) James Simmons <jsi...@in...> wrote: > > > Paulius Zaleckas wrote: > > > On drivers using drm_fb_helper's in fb_ops it is not possible to change > > > video mode, because of different var->pixclock evaluation: ... > > > > patch: > > http://www.mail-archive.com/dri...@li.../msg44369.html > > Those patches will enable fbdev apps to run properly. More patches are > needed if you want to support mode switching using the fbdev emulation > layer. I noticed my patches and yours where lost. Who do you send patches > too that can merge them ? y:/usr/src/git26> perl scripts/get_maintainer.pl -f drivers/gpu/drm/drm_fb_helper.c David Airlie <ai...@li...> Dave Airlie <ai...@re...> Jesse Barnes <jb...@vi...> Mikael Pettersson <mi...@it...> dri...@li... lin...@vg... That's accurate enough. Generally, if nothing has happened in a week, the chances that it's lost are very high. Resend. If you like, cc me and I'll maintain the patches and resend them for you. cheers, lkml resendbot. |
From: James S. <jsi...@in...> - 2009-11-20 18:53:52
|
> Paulius Zaleckas wrote: > > On drivers using drm_fb_helper's in fb_ops it is not possible to change > > video mode, because of different var->pixclock evaluation: ... > > patch: > http://www.mail-archive.com/dri...@li.../msg44369.html Those patches will enable fbdev apps to run properly. More patches are needed if you want to support mode switching using the fbdev emulation layer. I noticed my patches and yours where lost. Who do you send patches too that can merge them ? |
From: Daniel W. <dw...@fi...> - 2009-11-20 18:40:19
|
On Fri, 2009-11-20 at 12:39 +0100, Pavel Machek wrote: > Allow user to select MSM framebuffer support in Kconfig. > > Signed-off-by: Pavel Machek <pa...@uc...> > Ok, applied. All four patches should be in -next .. Also could you send patches to dw...@co... from now on? Daniel |
From: Clemens L. <cl...@la...> - 2009-11-20 15:55:20
|
Paulius Zaleckas wrote: > On drivers using drm_fb_helper's in fb_ops it is not possible to change > video mode, because of different var->pixclock evaluation: ... patch: http://www.mail-archive.com/dri...@li.../msg44369.html > P.S. check CLCOK spelling :) This patch got lost during fb helper reorganization: http://git.kernel.org/linus/1bcbf3948876e31a8ece28597dec447611ad9c8b Regards, Clemens |
From: Paulius Z. <pau...@gm...> - 2009-11-20 13:16:41
|
Hi, On drivers using drm_fb_helper's in fb_ops it is not possible to change video mode, because of different var->pixclock evaluation: int drm_fb_helper_check_var(struct fb_var_screeninfo *var, struct fb_info *info) { [...] if (var->pixclock == -1 || !var->pixclock) return -EINVAL; [...] int drm_fb_helper_set_par(struct fb_info *info) { [...] if (var->pixclock != -1) { DRM_ERROR("PIXEL CLCOK SET\n"); return -EINVAL; } [...] One of these evaluations will fail regardless of pixclock value. P.S. check CLCOK spelling :) |
From: Pavel M. <pa...@uc...> - 2009-11-20 11:39:34
|
Allow user to select MSM framebuffer support in Kconfig. Signed-off-by: Pavel Machek <pa...@uc...> diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 188e1ba..b3e05e4 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -2127,7 +2127,7 @@ config FB_PRE_INIT_FB the bootloader. config FB_MSM - tristate + tristate "MSM Framebuffer support" depends on FB && ARCH_MSM select FB_CFB_FILLRECT select FB_CFB_COPYAREA -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html |
From: Eric M. <eri...@gm...> - 2009-11-20 04:57:17
|
On Thu, Nov 19, 2009 at 8:38 PM, Jun Nie <nie...@gm...> wrote: > 2009/11/20 Eric Miao <eri...@gm...>: >>> + int err = 0; >>> + if (on) { >>> + if (spi_gpio_reset != -1) { >>> + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); >>> + if (err) { >>> + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); >>> + return err; >>> + } >>> + gpio_direction_output(spi_gpio_reset, 0); >>> + msleep(100); >> >> This is really a loooong delay, there any specific reason for such a long >> delay, I'm seeing this to slow down the boot up significantly? >> >> Otherwise looks OK to me, and I prefer the defconfig file change to >> be a separate patch please. >> > > Actually, This is just an example for other real products. There is no > such spi_reset pin on Aspenite , so machine info set it spi_gpio_reset > == -1. Or do you think we should delete these lines? > I see no reason for it to stay there then, please remove. |
From: Jun N. <nie...@gm...> - 2009-11-20 02:38:33
|
2009/11/20 Eric Miao <eri...@gm...>: >> + int err = 0; >> + if (on) { >> + if (spi_gpio_reset != -1) { >> + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); >> + if (err) { >> + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); >> + return err; >> + } >> + gpio_direction_output(spi_gpio_reset, 0); >> + msleep(100); > > This is really a loooong delay, there any specific reason for such a long > delay, I'm seeing this to slow down the boot up significantly? > > Otherwise looks OK to me, and I prefer the defconfig file change to > be a separate patch please. > Actually, This is just an example for other real products. There is no such spi_reset pin on Aspenite , so machine info set it spi_gpio_reset == -1. Or do you think we should delete these lines? |
From: Andrew M. <ak...@li...> - 2009-11-19 22:17:31
|
On Thu, 19 Nov 2009 18:58:01 +0100 Krzysztof Helt <krz...@po...> wrote: > From: Krzysztof Helt <krz...@wp...> > > If the i810fb driver is configured for use only predefined discrete video modes > the wrong pixclock value is used. The par->regs.pixclock value is a value from > the previous mode when a video mode is switched. It results in unreadable screen > if the old video mode has higher resolution and the new mode with the old (high) > pixclock is outside attached monitor's specs. > > Signed-off-by: Krzysztof Helt <krz...@wp...> > --- > I have noticed this testing the patch named "i810fb: Fix stack exploding". > > This patch requires my patch send to Alan Cox and Andrew Morton > named "i810fb: Fix stack exploding". > > --- drivers/video/i810/i810_dvt.c~ 2009-11-17 19:38:11.002864450 +0100 > +++ drivers/video/i810/i810_dvt.c 2009-11-19 18:48:52.518846238 +0100 Please use `patch -p1' form. That would be: --- a/drivers/video/i810/i810_dvt.c +++ a/drivers/video/i810/i810_dvt.c > @@ -233,7 +233,7 @@ static int i810fb_find_best_mode(u32 xre > void i810fb_encode_registers(const struct fb_var_screeninfo *var, > struct i810fb_par *par, u32 xres, u32 yres) > { > - u32 i_best = i810fb_find_best_mode(xres, yres, par->regs.pixclock); > + u32 i_best = i810fb_find_best_mode(xres, yres, var->pixclock); > > par->regs = std_modes[i_best]; Confused. My drivers/video/i810/i810_dvt.c is quiet different from yours: void i810fb_encode_registers(const struct fb_var_screeninfo *var, struct i810fb_par *par, u32 xres, u32 yres) { u32 diff = 0, diff_best = 0xFFFFFFFF, i = 0, i_best = 0; u8 hfl; |
From: Krzysztof H. <krz...@po...> - 2009-11-19 17:56:56
|
From: Krzysztof Helt <krz...@wp...> If the i810fb driver is configured for use only predefined discrete video modes the wrong pixclock value is used. The par->regs.pixclock value is a value from the previous mode when a video mode is switched. It results in unreadable screen if the old video mode has higher resolution and the new mode with the old (high) pixclock is outside attached monitor's specs. Signed-off-by: Krzysztof Helt <krz...@wp...> --- I have noticed this testing the patch named "i810fb: Fix stack exploding". This patch requires my patch send to Alan Cox and Andrew Morton named "i810fb: Fix stack exploding". --- drivers/video/i810/i810_dvt.c~ 2009-11-17 19:38:11.002864450 +0100 +++ drivers/video/i810/i810_dvt.c 2009-11-19 18:48:52.518846238 +0100 @@ -233,7 +233,7 @@ static int i810fb_find_best_mode(u32 xre void i810fb_encode_registers(const struct fb_var_screeninfo *var, struct i810fb_par *par, u32 xres, u32 yres) { - u32 i_best = i810fb_find_best_mode(xres, yres, par->regs.pixclock); + u32 i_best = i810fb_find_best_mode(xres, yres, var->pixclock); par->regs = std_modes[i_best]; ---------------------------------------------------------------------- Najlepsze oferty Sylwestrowe! Sprawdz >>> http://link.interia.pl/f2426 |
From: Eric M. <eri...@gm...> - 2009-11-19 16:29:55
|
> + int err = 0; > + if (on) { > + if (spi_gpio_reset != -1) { > + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); > + if (err) { > + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); > + return err; > + } > + gpio_direction_output(spi_gpio_reset, 0); > + msleep(100); This is really a loooong delay, there any specific reason for such a long delay, I'm seeing this to slow down the boot up significantly? Otherwise looks OK to me, and I prefer the defconfig file change to be a separate patch please. |
From: Russell K. - A. L. <li...@ar...> - 2009-11-19 09:13:49
|
On Thu, Nov 19, 2009 at 05:04:14PM +0800, Jun Nie wrote: > > diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c > > index dbd8cfd..15e64b4 100644 > > --- a/arch/arm/mach-mmp/ttc_dkb.c > > +++ b/arch/arm/mach-mmp/ttc_dkb.c > > @@ -14,6 +14,8 @@ > > #include <linux/mtd/mtd.h> > > #include <linux/mtd/partitions.h> > > #include <linux/mtd/onenand.h> > > +#include <linux/delay.h> > > +#include <video/pxa168fb.h> > > > > #include <asm/mach-types.h> > > #include <asm/mach/arch.h> > > @@ -21,6 +23,7 @@ > > #include <mach/addr-map.h> > > #include <mach/mfp-pxa910.h> > > #include <mach/pxa910.h> > > +#include <mach/gpio.h> linux/gpio.h please. |
From: Jun N. <nie...@gm...> - 2009-11-19 09:04:27
|
2009/11/16 Jun Nie <nie...@gm...>: > From: Jun Nie <nj...@ma...> > Date: Fri, 13 Nov 2009 15:07:45 +0800 > Subject: [PATCH] pxa: add frame buffer on pxa910 ttc_dkb platform > > Signed-off-by: Jun Nie <nj...@ma...> > --- > arch/arm/configs/pxa910_defconfig | 39 ++++++++- > arch/arm/mach-mmp/include/mach/pxa910.h | 8 ++ > arch/arm/mach-mmp/pxa910.c | 4 + > arch/arm/mach-mmp/ttc_dkb.c | 144 +++++++++++++++++++++++++++++++ > 4 files changed, 194 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/configs/pxa910_defconfig > b/arch/arm/configs/pxa910_defconfig > index 8c7e299..b9b1a85 100644 > --- a/arch/arm/configs/pxa910_defconfig > +++ b/arch/arm/configs/pxa910_defconfig > @@ -578,7 +578,34 @@ CONFIG_SSB_POSSIBLE=y > # > # CONFIG_VGASTATE is not set > # CONFIG_VIDEO_OUTPUT_CONTROL is not set > -# CONFIG_FB is not set > +CONFIG_FB=y > +# CONFIG_FIRMWARE_EDID is not set > +# CONFIG_FB_DDC is not set > +# CONFIG_FB_BOOT_VESA_SUPPORT is not set > +CONFIG_FB_CFB_FILLRECT=y > +CONFIG_FB_CFB_COPYAREA=y > +CONFIG_FB_CFB_IMAGEBLIT=y > +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set > +# CONFIG_FB_SYS_FILLRECT is not set > +# CONFIG_FB_SYS_COPYAREA is not set > +# CONFIG_FB_SYS_IMAGEBLIT is not set > +# CONFIG_FB_FOREIGN_ENDIAN is not set > +# CONFIG_FB_SYS_FOPS is not set > +# CONFIG_FB_SVGALIB is not set > +# CONFIG_FB_MACMODES is not set > +# CONFIG_FB_BACKLIGHT is not set > +# CONFIG_FB_MODE_HELPERS is not set > +# CONFIG_FB_TILEBLITTING is not set > + > +# > +# Frame buffer hardware drivers > +# > +# CONFIG_FB_S1D13XXX is not set > +CONFIG_FB_PXA168=y > +# CONFIG_FB_VIRTUAL is not set > +# CONFIG_FB_METRONOME is not set > +# CONFIG_FB_MB862XX is not set > +# CONFIG_FB_BROADSHEET is not set > # CONFIG_BACKLIGHT_LCD_SUPPORT is not set > > # > @@ -591,6 +618,16 @@ CONFIG_SSB_POSSIBLE=y > # > # CONFIG_VGA_CONSOLE is not set > CONFIG_DUMMY_CONSOLE=y > +CONFIG_FRAMEBUFFER_CONSOLE=y > +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y > +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set > +# CONFIG_FONTS is not set > +CONFIG_FONT_8x8=y > +CONFIG_FONT_8x16=y > +CONFIG_LOGO=y > +# CONFIG_LOGO_LINUX_MONO is not set > +CONFIG_LOGO_LINUX_VGA16=y > +CONFIG_LOGO_LINUX_CLUT224=y > # CONFIG_SOUND is not set > # CONFIG_HID_SUPPORT is not set > # CONFIG_USB_SUPPORT is not set > diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h > b/arch/arm/mach-mmp/include/mach/pxa910.h > index 6ae1ed7..7698793 100644 > --- a/arch/arm/mach-mmp/include/mach/pxa910.h > +++ b/arch/arm/mach-mmp/include/mach/pxa910.h > @@ -4,6 +4,7 @@ > #include <linux/i2c.h> > #include <mach/devices.h> > #include <plat/i2c.h> > +#include <video/pxa168fb.h> > > extern struct pxa_device_desc pxa910_device_uart1; > extern struct pxa_device_desc pxa910_device_uart2; > @@ -13,6 +14,7 @@ extern struct pxa_device_desc pxa910_device_pwm1; > extern struct pxa_device_desc pxa910_device_pwm2; > extern struct pxa_device_desc pxa910_device_pwm3; > extern struct pxa_device_desc pxa910_device_pwm4; > +extern struct pxa_device_desc pxa910_device_fb; > > static inline int pxa910_add_uart(int id) > { > @@ -64,4 +66,10 @@ static inline int pxa910_add_pwm(int id) > > return pxa_register_device(d, NULL, 0); > } > + > +static inline int pxa910_add_fb(struct pxa168fb_mach_info *mi) > +{ > + return pxa_register_device(&pxa910_device_fb, mi, sizeof(*mi)); > +} > + > #endif /* __ASM_MACH_PXA910_H */ > diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c > index 5882ca6..48162a0 100644 > --- a/arch/arm/mach-mmp/pxa910.c > +++ b/arch/arm/mach-mmp/pxa910.c > @@ -110,6 +110,8 @@ static APBC_CLK(pwm2, PXA910_PWM2, 1, 13000000); > static APBC_CLK(pwm3, PXA910_PWM3, 1, 13000000); > static APBC_CLK(pwm4, PXA910_PWM4, 1, 13000000); > > +static APMU_CLK(lcd, LCD, 0x003f, 312000000); > + > /* device and clock bindings */ > static struct clk_lookup pxa910_clkregs[] = { > INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL), > @@ -120,6 +122,7 @@ static struct clk_lookup pxa910_clkregs[] = { > INIT_CLKREG(&clk_pwm2, "pxa910-pwm.1", NULL), > INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), > INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), > + INIT_CLKREG(&clk_lcd, "pxa910-fb", "LCDCLK"), > }; > > static int __init pxa910_init(void) > @@ -174,3 +177,4 @@ PXA910_DEVICE(pwm1, "pxa910-pwm", 0, NONE, > 0xd401a000, 0x10); > PXA910_DEVICE(pwm2, "pxa910-pwm", 1, NONE, 0xd401a400, 0x10); > PXA910_DEVICE(pwm3, "pxa910-pwm", 2, NONE, 0xd401a800, 0x10); > PXA910_DEVICE(pwm4, "pxa910-pwm", 3, NONE, 0xd401ac00, 0x10); > +PXA910_DEVICE(fb, "pxa910-fb", -1, LCD, 0xd420b000, 0x1c8); > diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c > index dbd8cfd..15e64b4 100644 > --- a/arch/arm/mach-mmp/ttc_dkb.c > +++ b/arch/arm/mach-mmp/ttc_dkb.c > @@ -14,6 +14,8 @@ > #include <linux/mtd/mtd.h> > #include <linux/mtd/partitions.h> > #include <linux/mtd/onenand.h> > +#include <linux/delay.h> > +#include <video/pxa168fb.h> > > #include <asm/mach-types.h> > #include <asm/mach/arch.h> > @@ -21,6 +23,7 @@ > #include <mach/addr-map.h> > #include <mach/mfp-pxa910.h> > #include <mach/pxa910.h> > +#include <mach/gpio.h> > > #include "common.h" > > @@ -54,8 +57,146 @@ static unsigned long ttc_dkb_pin_config[] __initdata = { > DF_WEn_DF_WEn, > DF_REn_DF_REn, > DF_RDY0_DF_RDY0, > + > +#ifdef CONFIG_FB_PXA168 > + /* LCD */ > + GPIO81_LCD_FCLK, > + GPIO82_LCD_LCLK, > + GPIO83_LCD_PCLK, > + GPIO84_LCD_DENA, > + GPIO85_LCD_DD0, > + GPIO86_LCD_DD1, > + GPIO87_LCD_DD2, > + GPIO88_LCD_DD3, > + GPIO89_LCD_DD4, > + GPIO90_LCD_DD5, > + GPIO91_LCD_DD6, > + GPIO92_LCD_DD7, > + GPIO93_LCD_DD8, > + GPIO94_LCD_DD9, > + GPIO95_LCD_DD10, > + GPIO96_LCD_DD11, > + GPIO97_LCD_DD12, > + GPIO98_LCD_DD13, > + GPIO100_LCD_DD14, > + GPIO101_LCD_DD15, > + GPIO102_LCD_DD16, > + GPIO103_LCD_DD17, > + GPIO104_LCD_SPIDOUT, > + GPIO105_LCD_SPIDIN, > + GPIO107_LCD_CS1, > + GPIO108_LCD_DCLK, > + GPIO106_LCD_RESET, > +#endif > +}; > + > +#ifdef CONFIG_FB_PXA168 > +static u16 tpo_spi_cmdon[] = { > + 0x0801, > + 0x0800, > + 0x0200, > + 0x0304, > + 0x040e, > + 0x0903, > + 0x0b18, > + 0x0c53, > + 0x0d01, > + 0x0ee0, > + 0x0f01, > + 0x1058, > + 0x201e, > + 0x210a, > + 0x220a, > + 0x231e, > + 0x2400, > + 0x2532, > + 0x2600, > + 0x27ac, > + 0x2904, > + 0x2aa2, > + 0x2b45, > + 0x2c45, > + 0x2d15, > + 0x2e5a, > + 0x2fff, > + 0x306b, > + 0x310d, > + 0x3248, > + 0x3382, > + 0x34bd, > + 0x35e7, > + 0x3618, > + 0x3794, > + 0x3801, > + 0x395d, > + 0x3aae, > + 0x3bff, > + 0x07c9, /* auto power on */ > +}; > + > +static u16 tpo_spi_cmdoff[] = { > + 0x07d9, /* auto power off */ > +}; > + > +static int tpo_lcd_power(struct pxa168fb_info *fbi, unsigned int spi_gpio_cs, > + unsigned int spi_gpio_reset, int on) > +{ > + int err = 0; > + > + if (on) { > + if (spi_gpio_reset != -1) { > + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); > + if (err) { > + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); > + return -EIO; > + } > + gpio_direction_output(spi_gpio_reset, 0); > + msleep(100); > + gpio_set_value(spi_gpio_reset, 1); > + msleep(100); > + gpio_free(spi_gpio_reset); > + } > + return pxa168fb_spi_send(fbi, tpo_spi_cmdon, > + ARRAY_SIZE(tpo_spi_cmdon), spi_gpio_cs, 0, 40); > + } else > + return pxa168fb_spi_send(fbi, tpo_spi_cmdoff, > + ARRAY_SIZE(tpo_spi_cmdoff), spi_gpio_cs, 0, 0); > +} > + > +static struct fb_videomode video_modes[] = { > + /* lpj032l001b HVGA mode info */ > + [0] = { > + .pixclock = 100000, > + .refresh = 60, > + .xres = 320, > + .yres = 480, > + .hsync_len = 10, > + .left_margin = 15, > + .right_margin = 10, > + .vsync_len = 2, > + .upper_margin = 4, > + .lower_margin = 2, > + .sync = 0, > + }, > }; > > +static struct pxa168fb_mach_info ttc_dkb_lcd_info __initdata = { > + .id = "Base", > + .modes = video_modes, > + .num_modes = ARRAY_SIZE(video_modes), > + .pix_fmt = PIX_FMT_RGB565, > + .io_pin_allocation_mode = PIN_MODE_DUMB_18_SPI, > + .dumb_mode = DUMB_MODE_RGB666, > + .active = 1, > + .spi_ctrl = CFG_SCLKCNT(16) | CFG_TXBITS(16) | > + CFG_SPI_SEL(1) | CFG_SPI_3W4WB(1) | CFG_SPI_ENA(1), > + .spi_gpio_cs = -1, > + .spi_gpio_reset = mfp_to_gpio(MFP_PIN_GPIO106), > + .invert_pixclock = 1, > + .pxa168fb_lcd_power = tpo_lcd_power, > +}; > +#endif > + > #if defined(CONFIG_MTD_ONENAND) || defined(CONFIG_MTD_ONENAND_MODULE) > static struct mtd_partition ttc_dkb_onenand_partitions[] = { > { > @@ -123,6 +264,9 @@ static void __init ttc_dkb_init(void) > > /* on-chip devices */ > pxa910_add_uart(1); > +#ifdef CONFIG_FB_PXA168 > + pxa910_add_fb(&ttc_dkb_lcd_info); > +#endif > > /* off-chip devices */ > ttc_dkb_init_onenand(); > -- > 1.5.4.3 > rebased >From 5dc9fd01c311d4f263f8a1c67f03c569f6dd2b81 Mon Sep 17 00:00:00 2001 From: Jun Nie <nj...@ma...> Date: Tue, 17 Nov 2009 20:14:01 +0800 Subject: [PATCH] pxa: add frame buffer on pxa910 ttc_dkb platform Signed-off-by: Jun Nie <nj...@ma...> --- arch/arm/configs/pxa910_defconfig | 39 ++++++++- arch/arm/mach-mmp/include/mach/pxa910.h | 7 ++ arch/arm/mach-mmp/pxa910.c | 4 + arch/arm/mach-mmp/ttc_dkb.c | 144 +++++++++++++++++++++++++++++++ 4 files changed, 193 insertions(+), 1 deletions(-) diff --git a/arch/arm/configs/pxa910_defconfig b/arch/arm/configs/pxa910_defconfig index 8c7e299..b9b1a85 100644 --- a/arch/arm/configs/pxa910_defconfig +++ b/arch/arm/configs/pxa910_defconfig @@ -578,7 +578,34 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set -# CONFIG_FB is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_PXA168=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -591,6 +618,16 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y # CONFIG_SOUND is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h b/arch/arm/mach-mmp/include/mach/pxa910.h index 6ae1ed7..64148f2 100644 --- a/arch/arm/mach-mmp/include/mach/pxa910.h +++ b/arch/arm/mach-mmp/include/mach/pxa910.h @@ -4,6 +4,7 @@ #include <linux/i2c.h> #include <mach/devices.h> #include <plat/i2c.h> +#include <video/pxa168fb.h> extern struct pxa_device_desc pxa910_device_uart1; extern struct pxa_device_desc pxa910_device_uart2; @@ -13,6 +14,7 @@ extern struct pxa_device_desc pxa910_device_pwm1; extern struct pxa_device_desc pxa910_device_pwm2; extern struct pxa_device_desc pxa910_device_pwm3; extern struct pxa_device_desc pxa910_device_pwm4; +extern struct pxa_device_desc pxa910_device_fb; static inline int pxa910_add_uart(int id) { @@ -64,4 +66,9 @@ static inline int pxa910_add_pwm(int id) return pxa_register_device(d, NULL, 0); } + +static inline int pxa910_add_fb(struct pxa168fb_mach_info *mi) +{ + return pxa_register_device(&pxa910_device_fb, mi, sizeof(*mi)); +} #endif /* __ASM_MACH_PXA910_H */ diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c index 5882ca6..48162a0 100644 --- a/arch/arm/mach-mmp/pxa910.c +++ b/arch/arm/mach-mmp/pxa910.c @@ -110,6 +110,8 @@ static APBC_CLK(pwm2, PXA910_PWM2, 1, 13000000); static APBC_CLK(pwm3, PXA910_PWM3, 1, 13000000); static APBC_CLK(pwm4, PXA910_PWM4, 1, 13000000); +static APMU_CLK(lcd, LCD, 0x003f, 312000000); + /* device and clock bindings */ static struct clk_lookup pxa910_clkregs[] = { INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL), @@ -120,6 +122,7 @@ static struct clk_lookup pxa910_clkregs[] = { INIT_CLKREG(&clk_pwm2, "pxa910-pwm.1", NULL), INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), + INIT_CLKREG(&clk_lcd, "pxa910-fb", "LCDCLK"), }; static int __init pxa910_init(void) @@ -174,3 +177,4 @@ PXA910_DEVICE(pwm1, "pxa910-pwm", 0, NONE, 0xd401a000, 0x10); PXA910_DEVICE(pwm2, "pxa910-pwm", 1, NONE, 0xd401a400, 0x10); PXA910_DEVICE(pwm3, "pxa910-pwm", 2, NONE, 0xd401a800, 0x10); PXA910_DEVICE(pwm4, "pxa910-pwm", 3, NONE, 0xd401ac00, 0x10); +PXA910_DEVICE(fb, "pxa910-fb", -1, LCD, 0xd420b000, 0x1c8); diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c index 08cfef6..ac429cd 100644 --- a/arch/arm/mach-mmp/ttc_dkb.c +++ b/arch/arm/mach-mmp/ttc_dkb.c @@ -11,7 +11,10 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/platform_device.h> +#include <linux/delay.h> +#include <linux/gpio.h> +#include <video/pxa168fb.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <mach/addr-map.h> @@ -26,11 +29,152 @@ static unsigned long ttc_dkb_pin_config[] __initdata = { /* UART2 */ GPIO47_UART2_RXD, GPIO48_UART2_TXD, + +#ifdef CONFIG_FB_PXA168 + /* LCD */ + GPIO81_LCD_FCLK, + GPIO82_LCD_LCLK, + GPIO83_LCD_PCLK, + GPIO84_LCD_DENA, + GPIO85_LCD_DD0, + GPIO86_LCD_DD1, + GPIO87_LCD_DD2, + GPIO88_LCD_DD3, + GPIO89_LCD_DD4, + GPIO90_LCD_DD5, + GPIO91_LCD_DD6, + GPIO92_LCD_DD7, + GPIO93_LCD_DD8, + GPIO94_LCD_DD9, + GPIO95_LCD_DD10, + GPIO96_LCD_DD11, + GPIO97_LCD_DD12, + GPIO98_LCD_DD13, + GPIO100_LCD_DD14, + GPIO101_LCD_DD15, + GPIO102_LCD_DD16, + GPIO103_LCD_DD17, + GPIO104_LCD_SPIDOUT, + GPIO105_LCD_SPIDIN, + GPIO107_LCD_CS1, + GPIO108_LCD_DCLK, + GPIO106_LCD_RESET, +#endif +}; + +#ifdef CONFIG_FB_PXA168 +static u16 tpo_spi_cmdon[] = { + 0x0801, + 0x0800, + 0x0200, + 0x0304, + 0x040e, + 0x0903, + 0x0b18, + 0x0c53, + 0x0d01, + 0x0ee0, + 0x0f01, + 0x1058, + 0x201e, + 0x210a, + 0x220a, + 0x231e, + 0x2400, + 0x2532, + 0x2600, + 0x27ac, + 0x2904, + 0x2aa2, + 0x2b45, + 0x2c45, + 0x2d15, + 0x2e5a, + 0x2fff, + 0x306b, + 0x310d, + 0x3248, + 0x3382, + 0x34bd, + 0x35e7, + 0x3618, + 0x3794, + 0x3801, + 0x395d, + 0x3aae, + 0x3bff, + 0x07c9, /* auto power on */ +}; + +static u16 tpo_spi_cmdoff[] = { + 0x07d9, /* auto power off */ +}; + +static int tpo_lcd_power(struct pxa168fb_info *fbi, unsigned int spi_gpio_cs, + unsigned int spi_gpio_reset, int on) +{ + int err = 0; + + if (on) { + if (spi_gpio_reset != -1) { + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); + if (err) { + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); + return -EIO; + } + gpio_direction_output(spi_gpio_reset, 0); + msleep(100); + gpio_set_value(spi_gpio_reset, 1); + msleep(100); + gpio_free(spi_gpio_reset); + } + return pxa168fb_spi_send(fbi, tpo_spi_cmdon, + ARRAY_SIZE(tpo_spi_cmdon), spi_gpio_cs, 0, 40); + } else + return pxa168fb_spi_send(fbi, tpo_spi_cmdoff, + ARRAY_SIZE(tpo_spi_cmdoff), spi_gpio_cs, 0, 0); +} + +static struct fb_videomode video_modes[] = { + /* lpj032l001b HVGA mode info */ + [0] = { + .pixclock = 100000, + .refresh = 60, + .xres = 320, + .yres = 480, + .hsync_len = 10, + .left_margin = 15, + .right_margin = 10, + .vsync_len = 2, + .upper_margin = 4, + .lower_margin = 2, + .sync = 0, + }, +}; + +static struct pxa168fb_mach_info ttc_dkb_lcd_info __initdata = { + .id = "Base", + .modes = video_modes, + .num_modes = ARRAY_SIZE(video_modes), + .pix_fmt = PIX_FMT_RGB565, + .io_pin_allocation_mode = PIN_MODE_DUMB_18_SPI, + .dumb_mode = DUMB_MODE_RGB666, + .active = 1, + .spi_ctrl = CFG_SCLKCNT(16) | CFG_TXBITS(16) | + CFG_SPI_SEL(1) | CFG_SPI_3W4WB(1) | CFG_SPI_ENA(1), + .spi_gpio_cs = -1, + .spi_gpio_reset = mfp_to_gpio(MFP_PIN_GPIO106), + .invert_pixclock = 1, + .pxa168fb_lcd_power = tpo_lcd_power, }; +#endif static void __init ttc_dkb_init(void) { mfp_config(ARRAY_AND_SIZE(ttc_dkb_pin_config)); +#ifdef CONFIG_FB_PXA168 + pxa910_add_fb(&ttc_dkb_lcd_info); +#endif /* on-chip devices */ pxa910_add_uart(1); -- 1.5.4.3 |
From: Jun N. <nie...@gm...> - 2009-11-19 09:03:27
|
2009/11/17 Eric Miao <eri...@gm...>: > On Mon, Nov 16, 2009 at 3:34 AM, Jun Nie <nie...@gm...> wrote: >> From: Jun Nie <nj...@ma...> >> Date: Fri, 13 Nov 2009 15:12:19 +0800 >> Subject: [PATCH] pxa: add frame buffer on pxa168 aspenite platform >> >> Signed-off-by: Jun Nie <nj...@ma...> > > Hi Jun, > > All previous patches have been merged in 'topic/pxa168fb' branch for > testing purpose, and I'm having difficulties to merge these two. Could > you take a look into my tree and rebase these two? > > Note - you need only reply these two mails instead of submitting > another set of patches, and do remember to attach the patch esp. > since you are using gmail web interface, which is going to mal-form > the patch. > > Thanks. > - eric > rebased From: Jun Nie <nj...@ma...> Date: Tue, 17 Nov 2009 20:39:43 +0800 Subject: [PATCH] pxa: add frame buffer on pxa168 aspenite platform Signed-off-by: Jun Nie <nj...@ma...> --- arch/arm/configs/pxa168_defconfig | 86 +++++++++++++++++++- arch/arm/mach-mmp/aspenite.c | 136 +++++++++++++++++++++++++++++++ arch/arm/mach-mmp/include/mach/pxa168.h | 8 ++ arch/arm/mach-mmp/pxa168.c | 4 + 4 files changed, 232 insertions(+), 2 deletions(-) diff --git a/arch/arm/configs/pxa168_defconfig b/arch/arm/configs/pxa168_defconfig index db5faea..b736517 100644 --- a/arch/arm/configs/pxa168_defconfig +++ b/arch/arm/configs/pxa168_defconfig @@ -509,7 +509,49 @@ CONFIG_UNIX98_PTYS=y # CONFIG_R3964 is not set # CONFIG_RAW_DRIVER is not set # CONFIG_TCG_TPM is not set -# CONFIG_I2C is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_CHARDEV is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_DESIGNWARE is not set +CONFIG_I2C_GPIO=y +# CONFIG_I2C_OCORES is not set +CONFIG_I2C_PXA=y +# CONFIG_I2C_PXA_SLAVE is not set +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_PCF8575 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set # CONFIG_SPI is not set CONFIG_ARCH_REQUIRE_GPIOLIB=y CONFIG_GPIOLIB=y @@ -523,6 +565,9 @@ CONFIG_GPIOLIB=y # # I2C GPIO expanders: # +# CONFIG_GPIO_MAX732X is not set +CONFIG_GPIO_PCA953X=y +# CONFIG_GPIO_PCF857X is not set # # PCI GPIO expanders: @@ -578,7 +623,34 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set -# CONFIG_FB is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_FILLRECT is not set +# CONFIG_FB_CFB_COPYAREA is not set +# CONFIG_FB_CFB_IMAGEBLIT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_PXA168=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -591,6 +663,16 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y # CONFIG_SOUND is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index d1d4a0d..3bfe568 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c @@ -14,6 +14,7 @@ #include <linux/platform_device.h> #include <linux/smc91x.h> #include <linux/i2c/pca953x.h> +#include <linux/delay.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -61,6 +62,39 @@ static unsigned long common_pin_config[] __initdata = { /* UART1 */ GPIO107_UART1_RXD, GPIO108_UART1_TXD, + +#ifdef CONFIG_FB_PXA168 + /* LCD */ + GPIO56_LCD_FCLK_RD, + GPIO57_LCD_LCLK_A0, + GPIO58_LCD_PCLK_WR, + GPIO59_LCD_DENA_BIAS, + GPIO60_LCD_DD0, + GPIO61_LCD_DD1, + GPIO62_LCD_DD2, + GPIO63_LCD_DD3, + GPIO64_LCD_DD4, + GPIO65_LCD_DD5, + GPIO66_LCD_DD6, + GPIO67_LCD_DD7, + GPIO68_LCD_DD8, + GPIO69_LCD_DD9, + GPIO70_LCD_DD10, + GPIO71_LCD_DD11, + GPIO72_LCD_DD12, + GPIO73_LCD_DD13, + GPIO74_LCD_DD14, + GPIO75_LCD_DD15, + + GPIO76_LCD_DD16, + GPIO77_LCD_DD17, + GPIO78_LCD_DD18, + GPIO79_LCD_DD19, + GPIO80_LCD_DD20, + GPIO81_LCD_DD21, + GPIO82_LCD_DD22, + GPIO83_LCD_DD23, +#endif }; static struct smc91x_platdata smc91x_info = { @@ -90,6 +124,105 @@ static struct platform_device smc91x_device = { .resource = smc91x_resources, }; +#ifdef CONFIG_FB_PXA168 +static u16 tpo_spi_cmdon[] = { + 0x080F, + 0x0C5F, + 0x1017, + 0x1420, + 0x1808, + 0x1c20, + 0x2020, + 0x2420, + 0x2820, + 0x2c20, + 0x3020, + 0x3420, + 0x3810, + 0x3c10, + 0x4010, + 0x4415, + 0x48aa, + 0x4cff, + 0x5086, + 0x548d, + 0x58d4, + 0x5cfb, + 0x602e, + 0x645a, + 0x6889, + 0x6cfe, + 0x705a, + 0x749b, + 0x78c5, + 0x7cff, + 0x80f0, + 0x84f0, + 0x8808, +}; + +static u16 tpo_spi_cmdoff[] = { + 0x0c5e, /* standby */ +}; + +static int tpo_lcd_power(struct pxa168fb_info *fbi, unsigned int spi_gpio_cs, + unsigned int spi_gpio_reset, int on) +{ + int err = 0; + if (on) { + if (spi_gpio_reset != -1) { + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); + if (err) { + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); + return err; + } + gpio_direction_output(spi_gpio_reset, 0); + msleep(100); + gpio_set_value(spi_gpio_reset, 1); + msleep(100); + gpio_free(spi_gpio_reset); + } + return pxa168fb_spi_send(fbi, tpo_spi_cmdon, + ARRAY_SIZE(tpo_spi_cmdon), spi_gpio_cs, 0, 1); + } else + return pxa168fb_spi_send(fbi, tpo_spi_cmdoff, + ARRAY_SIZE(tpo_spi_cmdoff), spi_gpio_cs, 0, 1); +} + +static struct fb_videomode video_modes_aspen[] = { + [0] = { + .pixclock = 30120, + .refresh = 60, + .xres = 800, + .yres = 480, + .hsync_len = 1, + .left_margin = 215, + .right_margin = 40, + .vsync_len = 1, + .upper_margin = 34, + .lower_margin = 10, + .sync = 0, + }, +}; + +struct pxa168fb_mach_info aspenite_lcd_info __initdata = { + .id = "Base-aspen", + .modes = video_modes_aspen, + .num_modes = ARRAY_SIZE(video_modes_aspen), + .pix_fmt = PIX_FMT_RGB565, + .io_pin_allocation_mode = PIN_MODE_DUMB_24, + .dumb_mode = DUMB_MODE_RGB888, + .active = 1, + .spi_ctrl = CFG_SCLKCNT(2) | CFG_TXBITS(16) | + CFG_SPI_SEL(1) | CFG_SPI_3W4WB(1) | CFG_SPI_ENA(1), + .spi_gpio_cs = GPIO_EXT1(14), + .spi_gpio_reset = -1, + .invert_pixclock = 1, + .pxa168fb_lcd_power = tpo_lcd_power, +}; + +#endif + static struct i2c_pxa_platform_data pwri2c_info __initdata = { .use_pio = 0, }; @@ -136,6 +269,9 @@ static void __init common_init(void) pxa168_add_uart(1); pxa168_add_twsi(0, &pwri2c_info, ARRAY_AND_SIZE(aspenite_i2c_board_info)); +#ifdef CONFIG_FB_PXA168 + pxa168_add_fb(&aspenite_lcd_info); +#endif /* off-chip devices */ platform_device_register(&smc91x_device); diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h index 6bf1f0e..a2ca47b 100644 --- a/arch/arm/mach-mmp/include/mach/pxa168.h +++ b/arch/arm/mach-mmp/include/mach/pxa168.h @@ -4,6 +4,7 @@ #include <linux/i2c.h> #include <mach/devices.h> #include <plat/i2c.h> +#include <video/pxa168fb.h> extern struct pxa_device_desc pxa168_device_uart1; extern struct pxa_device_desc pxa168_device_uart2; @@ -13,6 +14,7 @@ extern struct pxa_device_desc pxa168_device_pwm1; extern struct pxa_device_desc pxa168_device_pwm2; extern struct pxa_device_desc pxa168_device_pwm3; extern struct pxa_device_desc pxa168_device_pwm4; +extern struct pxa_device_desc pxa168_device_fb; static inline int pxa168_add_uart(int id) { @@ -64,4 +66,10 @@ static inline int pxa168_add_pwm(int id) return pxa_register_device(d, NULL, 0); } + +static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi) +{ + return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi)); +} + #endif /* __ASM_MACH_PXA168_H */ diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index 71b1ae3..07a12ce 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c @@ -19,6 +19,7 @@ #include <mach/addr-map.h> #include <mach/cputype.h> #include <mach/regs-apbc.h> +#include <mach/regs-apmu.h> #include <mach/irqs.h> #include <mach/gpio.h> #include <mach/dma.h> @@ -71,6 +72,7 @@ static APBC_CLK(pwm1, PXA168_PWM1, 1, 13000000); static APBC_CLK(pwm2, PXA168_PWM2, 1, 13000000); static APBC_CLK(pwm3, PXA168_PWM3, 1, 13000000); static APBC_CLK(pwm4, PXA168_PWM4, 1, 13000000); +static APMU_CLK(lcd, LCD, 0x003f, 312000000); /* device and clock bindings */ static struct clk_lookup pxa168_clkregs[] = { @@ -82,6 +84,7 @@ static struct clk_lookup pxa168_clkregs[] = { INIT_CLKREG(&clk_pwm2, "pxa168-pwm.1", NULL), INIT_CLKREG(&clk_pwm3, "pxa168-pwm.2", NULL), INIT_CLKREG(&clk_pwm4, "pxa168-pwm.3", NULL), + INIT_CLKREG(&clk_lcd, "pxa168-fb", "LCDCLK"), }; static int __init pxa168_init(void) @@ -127,3 +130,4 @@ PXA168_DEVICE(pwm1, "pxa168-pwm", 0, NONE, 0xd401a000, 0x10); PXA168_DEVICE(pwm2, "pxa168-pwm", 1, NONE, 0xd401a400, 0x10); PXA168_DEVICE(pwm3, "pxa168-pwm", 2, NONE, 0xd401a800, 0x10); PXA168_DEVICE(pwm4, "pxa168-pwm", 3, NONE, 0xd401ac00, 0x10); +PXA168_DEVICE(fb, "pxa168-fb", -1, LCD, 0xd420b000, 0x1c8); -- 1.5.4.3 |
From: Jun N. <nie...@gm...> - 2009-11-19 09:02:15
|
2009/11/16 Jun Nie <nie...@gm...>: > From: Jun Nie <nj...@ma...> > Date: Fri, 13 Nov 2009 14:19:05 +0800 > Subject: [PATCH] pxa: add gpio expander on pxa168 aspenite platform > > Signed-off-by: Jun Nie <nj...@ma...> > --- > arch/arm/mach-mmp/aspenite.c | 46 ++++++++++++++++++++++++++++++++++++++++++ > drivers/gpio/pca953x.c | 1 + > 2 files changed, 47 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c > index 115f728..21cecfc 100644 > --- a/arch/arm/mach-mmp/aspenite.c > +++ b/arch/arm/mach-mmp/aspenite.c > @@ -16,6 +16,7 @@ > #include <linux/mtd/mtd.h> > #include <linux/mtd/partitions.h> > #include <linux/mtd/nand.h> > +#include <linux/i2c/pca953x.h> > > #include <asm/mach-types.h> > #include <asm/mach/arch.h> > @@ -24,9 +25,14 @@ > #include <mach/pxa168.h> > #include <mach/gpio.h> > #include <plat/pxa3xx_nand.h> > +#include <video/pxa168fb.h> > > #include "common.h" > > +/*used by expander max7312, 16 pins gpio expander */ > +#define GPIO_EXT0(x) (NR_BUILTIN_GPIO + (x)) > +#define GPIO_EXT1(x) (NR_BUILTIN_GPIO + 16 + (x)) > + > static unsigned long common_pin_config[] __initdata = { > /* Data Flash Interface */ > GPIO0_DFI_D15, > @@ -134,6 +140,44 @@ static void __init apn_init_nand(void) > static void __init apn_init_nand(void) {} > #endif > > +static struct i2c_pxa_platform_data pwri2c_info __initdata = { > + .use_pio = 1, > +}; > + > +#if defined(CONFIG_GPIO_PCA953X) > +/* GPIO expander max7312 could reuse PCA953X */ > +static struct pca953x_platform_data max7312_data[] = { > + /* two max7312 in system */ > + > + [0] = { > + .gpio_base = GPIO_EXT0(0), > + }, > + > + [1] = { > + .gpio_base = GPIO_EXT1(0), > + }, > +}; > +#endif > + > +static struct i2c_board_info aspenite_i2c_board_info[] = { > + > +#if defined(CONFIG_GPIO_PCA953X) > + { > + .type = "max7312", > + .addr = 0x10, /* 0x20/0x21 */ > + .irq = IRQ_GPIO(122), > + .platform_data = &max7312_data[0], > + }, > + > + { > + .type = "max7312", > + .addr = 0x20, /* 0x40/0x41 */ > + .irq = IRQ_GPIO(120), > + .platform_data = &max7312_data[1], > + }, > +#endif > +}; > + > static void __init common_init(void) > { > mfp_config(ARRAY_AND_SIZE(common_pin_config)); > @@ -142,6 +186,8 @@ static void __init common_init(void) > pxa168_add_uart(1); > > apn_init_nand(); > + pxa168_add_twsi(0, &pwri2c_info, > + ARRAY_AND_SIZE(aspenite_i2c_board_info)); > > /* off-chip devices */ > platform_device_register(&smc91x_device); > diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c > index 6a2fb3f..7822684 100644 > --- a/drivers/gpio/pca953x.c > +++ b/drivers/gpio/pca953x.c > @@ -39,6 +39,7 @@ static const struct i2c_device_id pca953x_id[] = { > { "pca9557", 8, }, > > { "max7310", 8, }, > + { "max7312", 16, }, > { "max7315", 8, }, > { "pca6107", 8, }, > { "tca6408", 8, }, > -- > 1.5.4.3 > rebased From: Jun Nie <nj...@ma...> Date: Tue, 17 Nov 2009 19:49:19 +0800 Subject: [PATCH] pxa: add gpio expander on pxa168 aspenite platform Signed-off-by: Jun Nie <nj...@ma...> --- arch/arm/mach-mmp/aspenite.c | 46 ++++++++++++++++++++++++++++++++++++++++++ drivers/gpio/pca953x.c | 1 + 2 files changed, 47 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index 4562452..cc211d2 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c @@ -13,7 +13,9 @@ #include <linux/kernel.h> #include <linux/platform_device.h> #include <linux/smc91x.h> +#include <linux/i2c/pca953x.h> +#include <video/pxa168fb.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> #include <mach/addr-map.h> @@ -23,6 +25,10 @@ #include "common.h" +/*used by expander max7312, 16 pins gpio expander */ +#define GPIO_EXT0(x) (NR_BUILTIN_GPIO + (x)) +#define GPIO_EXT1(x) (NR_BUILTIN_GPIO + 16 + (x)) + static unsigned long common_pin_config[] __initdata = { /* Data Flash Interface */ GPIO0_DFI_D15, @@ -85,12 +91,52 @@ static struct platform_device smc91x_device = { .resource = smc91x_resources, }; +static struct i2c_pxa_platform_data pwri2c_info __initdata = { + .use_pio = 1, +}; + +#if defined(CONFIG_GPIO_PCA953X) +/* GPIO expander max7312 could reuse PCA953X */ +static struct pca953x_platform_data max7312_data[] = { + /* two max7312 in system */ + + [0] = { + .gpio_base = GPIO_EXT0(0), + }, + + [1] = { + .gpio_base = GPIO_EXT1(0), + }, +}; +#endif + +static struct i2c_board_info aspenite_i2c_board_info[] = { + +#if defined(CONFIG_GPIO_PCA953X) + { + .type = "max7312", + .addr = 0x10, /* 0x20/0x21 */ + .irq = IRQ_GPIO(122), + .platform_data = &max7312_data[0], + }, + + { + .type = "max7312", + .addr = 0x20, /* 0x40/0x41 */ + .irq = IRQ_GPIO(120), + .platform_data = &max7312_data[1], + }, +#endif +}; + static void __init common_init(void) { mfp_config(ARRAY_AND_SIZE(common_pin_config)); /* on-chip devices */ pxa168_add_uart(1); + pxa168_add_twsi(0, &pwri2c_info, + ARRAY_AND_SIZE(aspenite_i2c_board_info)); /* off-chip devices */ platform_device_register(&smc91x_device); diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c index 6a2fb3f..7822684 100644 --- a/drivers/gpio/pca953x.c +++ b/drivers/gpio/pca953x.c @@ -39,6 +39,7 @@ static const struct i2c_device_id pca953x_id[] = { { "pca9557", 8, }, { "max7310", 8, }, + { "max7312", 16, }, { "max7315", 8, }, { "pca6107", 8, }, { "tca6408", 8, }, -- 1.5.4.3 |
From: Geert U. <ge...@li...> - 2009-11-18 22:20:15
|
On Sat, Oct 24, 2009 at 16:18, Krzysztof Helt <krz...@po...> wrote: > From: Krzysztof Helt <krz...@wp...> > > Add check if palette register number is in correct range > for few drivers which miss it. The regno value comes > indirectly from user space. > > Two drivers has converted check from BUG_ON() macro > to just return an error (non-zero value). > > Signed-off-by: Krzysztof Helt <krz...@wp...> > > --- > > diff --git a/drivers/video/atafb.c b/drivers/video/atafb.c > index 8cd279b..2682938 100644 > --- a/drivers/video/atafb.c > +++ b/drivers/video/atafb.c Thanks, I'll take the atafb part through the m68k tree. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li... In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds |
From: Sudhakar R. <sud...@ti...> - 2009-11-18 10:29:18
|
Following issues have been addressed on DA8XX/OMAP-L1XX: a. Screen misalignment during booting when frame buffer console is enabled. b. Driver was configured always in PSEUDOCOLOR mode. This patch dynamically configures the driver either in PSEUDOCOLOUR or TRUECOLOR mode depending on bpp. c. The RED and BLUE offsets were interchanged resulting in wrong bootup logo colour. This patch has been tested on DA830/OMAP-L137 and DA850/OMAP-L138 EVMs. Signed-off-by: Sudhakar Rajashekhara <sud...@ti...> --- drivers/video/da8xx-fb.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c index d065894..95f4e73 100644 --- a/drivers/video/da8xx-fb.c +++ b/drivers/video/da8xx-fb.c @@ -554,11 +554,11 @@ static int fb_check_var(struct fb_var_screeninfo *var, var->transp.length = 0; break; case 16: /* RGB 565 */ - var->red.offset = 0; + var->red.offset = 11; var->red.length = 5; var->green.offset = 5; var->green.length = 6; - var->blue.offset = 11; + var->blue.offset = 0; var->blue.length = 5; var->transp.offset = 0; var->transp.length = 0; @@ -591,7 +591,7 @@ static int __devexit fb_remove(struct platform_device *dev) unregister_framebuffer(info); fb_dealloc_cmap(&info->cmap); dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE, - info->screen_base, + info->screen_base - PAGE_SIZE, info->fix.smem_start); free_irq(par->irq, par); clk_disable(par->lcdc_clk); @@ -749,6 +749,7 @@ static int __init fb_probe(struct platform_device *device) (PAGE_SIZE - par->palette_sz); /* the rest of the frame buffer is pixel data */ + da8xx_fb_info->screen_base = par->v_palette_base + par->palette_sz; da8xx_fb_fix.smem_start = par->p_palette_base + par->palette_sz; da8xx_fb_fix.smem_len = par->databuf_sz - par->palette_sz; da8xx_fb_fix.line_length = (lcdc_info->width * lcd_cfg->bpp) / 8; @@ -787,6 +788,8 @@ static int __init fb_probe(struct platform_device *device) da8xx_fb_info->var = da8xx_fb_var; da8xx_fb_info->fbops = &da8xx_fb_ops; da8xx_fb_info->pseudo_palette = par->pseudo_palette; + da8xx_fb_info->fix.visual = (da8xx_fb_info->var.bits_per_pixel <= 8) ? + FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR; ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0); if (ret) @@ -825,7 +828,7 @@ err_free_irq: err_release_fb_mem: dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE, - da8xx_fb_info->screen_base, + da8xx_fb_info->screen_base - PAGE_SIZE, da8xx_fb_info->fix.smem_start); err_release_fb: -- 1.5.6 |
From: Eric M. <eri...@gm...> - 2009-11-17 06:30:15
|
On Mon, Nov 16, 2009 at 3:34 AM, Jun Nie <nie...@gm...> wrote: > From: Jun Nie <nj...@ma...> > Date: Fri, 13 Nov 2009 15:12:19 +0800 > Subject: [PATCH] pxa: add frame buffer on pxa168 aspenite platform > > Signed-off-by: Jun Nie <nj...@ma...> Hi Jun, All previous patches have been merged in 'topic/pxa168fb' branch for testing purpose, and I'm having difficulties to merge these two. Could you take a look into my tree and rebase these two? Note - you need only reply these two mails instead of submitting another set of patches, and do remember to attach the patch esp. since you are using gmail web interface, which is going to mal-form the patch. Thanks. - eric |
From: Jun N. <nie...@gm...> - 2009-11-16 09:35:17
|
From: Jun Nie <nj...@ma...> Date: Fri, 13 Nov 2009 15:07:45 +0800 Subject: [PATCH] pxa: add frame buffer on pxa910 ttc_dkb platform Signed-off-by: Jun Nie <nj...@ma...> --- arch/arm/configs/pxa910_defconfig | 39 ++++++++- arch/arm/mach-mmp/include/mach/pxa910.h | 8 ++ arch/arm/mach-mmp/pxa910.c | 4 + arch/arm/mach-mmp/ttc_dkb.c | 144 +++++++++++++++++++++++++++++++ 4 files changed, 194 insertions(+), 1 deletions(-) diff --git a/arch/arm/configs/pxa910_defconfig b/arch/arm/configs/pxa910_defconfig index 8c7e299..b9b1a85 100644 --- a/arch/arm/configs/pxa910_defconfig +++ b/arch/arm/configs/pxa910_defconfig @@ -578,7 +578,34 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set -# CONFIG_FB is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_PXA168=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -591,6 +618,16 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y # CONFIG_SOUND is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h b/arch/arm/mach-mmp/include/mach/pxa910.h index 6ae1ed7..7698793 100644 --- a/arch/arm/mach-mmp/include/mach/pxa910.h +++ b/arch/arm/mach-mmp/include/mach/pxa910.h @@ -4,6 +4,7 @@ #include <linux/i2c.h> #include <mach/devices.h> #include <plat/i2c.h> +#include <video/pxa168fb.h> extern struct pxa_device_desc pxa910_device_uart1; extern struct pxa_device_desc pxa910_device_uart2; @@ -13,6 +14,7 @@ extern struct pxa_device_desc pxa910_device_pwm1; extern struct pxa_device_desc pxa910_device_pwm2; extern struct pxa_device_desc pxa910_device_pwm3; extern struct pxa_device_desc pxa910_device_pwm4; +extern struct pxa_device_desc pxa910_device_fb; static inline int pxa910_add_uart(int id) { @@ -64,4 +66,10 @@ static inline int pxa910_add_pwm(int id) return pxa_register_device(d, NULL, 0); } + +static inline int pxa910_add_fb(struct pxa168fb_mach_info *mi) +{ + return pxa_register_device(&pxa910_device_fb, mi, sizeof(*mi)); +} + #endif /* __ASM_MACH_PXA910_H */ diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c index 5882ca6..48162a0 100644 --- a/arch/arm/mach-mmp/pxa910.c +++ b/arch/arm/mach-mmp/pxa910.c @@ -110,6 +110,8 @@ static APBC_CLK(pwm2, PXA910_PWM2, 1, 13000000); static APBC_CLK(pwm3, PXA910_PWM3, 1, 13000000); static APBC_CLK(pwm4, PXA910_PWM4, 1, 13000000); +static APMU_CLK(lcd, LCD, 0x003f, 312000000); + /* device and clock bindings */ static struct clk_lookup pxa910_clkregs[] = { INIT_CLKREG(&clk_uart1, "pxa2xx-uart.0", NULL), @@ -120,6 +122,7 @@ static struct clk_lookup pxa910_clkregs[] = { INIT_CLKREG(&clk_pwm2, "pxa910-pwm.1", NULL), INIT_CLKREG(&clk_pwm3, "pxa910-pwm.2", NULL), INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL), + INIT_CLKREG(&clk_lcd, "pxa910-fb", "LCDCLK"), }; static int __init pxa910_init(void) @@ -174,3 +177,4 @@ PXA910_DEVICE(pwm1, "pxa910-pwm", 0, NONE, 0xd401a000, 0x10); PXA910_DEVICE(pwm2, "pxa910-pwm", 1, NONE, 0xd401a400, 0x10); PXA910_DEVICE(pwm3, "pxa910-pwm", 2, NONE, 0xd401a800, 0x10); PXA910_DEVICE(pwm4, "pxa910-pwm", 3, NONE, 0xd401ac00, 0x10); +PXA910_DEVICE(fb, "pxa910-fb", -1, LCD, 0xd420b000, 0x1c8); diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c index dbd8cfd..15e64b4 100644 --- a/arch/arm/mach-mmp/ttc_dkb.c +++ b/arch/arm/mach-mmp/ttc_dkb.c @@ -14,6 +14,8 @@ #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> #include <linux/mtd/onenand.h> +#include <linux/delay.h> +#include <video/pxa168fb.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -21,6 +23,7 @@ #include <mach/addr-map.h> #include <mach/mfp-pxa910.h> #include <mach/pxa910.h> +#include <mach/gpio.h> #include "common.h" @@ -54,8 +57,146 @@ static unsigned long ttc_dkb_pin_config[] __initdata = { DF_WEn_DF_WEn, DF_REn_DF_REn, DF_RDY0_DF_RDY0, + +#ifdef CONFIG_FB_PXA168 + /* LCD */ + GPIO81_LCD_FCLK, + GPIO82_LCD_LCLK, + GPIO83_LCD_PCLK, + GPIO84_LCD_DENA, + GPIO85_LCD_DD0, + GPIO86_LCD_DD1, + GPIO87_LCD_DD2, + GPIO88_LCD_DD3, + GPIO89_LCD_DD4, + GPIO90_LCD_DD5, + GPIO91_LCD_DD6, + GPIO92_LCD_DD7, + GPIO93_LCD_DD8, + GPIO94_LCD_DD9, + GPIO95_LCD_DD10, + GPIO96_LCD_DD11, + GPIO97_LCD_DD12, + GPIO98_LCD_DD13, + GPIO100_LCD_DD14, + GPIO101_LCD_DD15, + GPIO102_LCD_DD16, + GPIO103_LCD_DD17, + GPIO104_LCD_SPIDOUT, + GPIO105_LCD_SPIDIN, + GPIO107_LCD_CS1, + GPIO108_LCD_DCLK, + GPIO106_LCD_RESET, +#endif +}; + +#ifdef CONFIG_FB_PXA168 +static u16 tpo_spi_cmdon[] = { + 0x0801, + 0x0800, + 0x0200, + 0x0304, + 0x040e, + 0x0903, + 0x0b18, + 0x0c53, + 0x0d01, + 0x0ee0, + 0x0f01, + 0x1058, + 0x201e, + 0x210a, + 0x220a, + 0x231e, + 0x2400, + 0x2532, + 0x2600, + 0x27ac, + 0x2904, + 0x2aa2, + 0x2b45, + 0x2c45, + 0x2d15, + 0x2e5a, + 0x2fff, + 0x306b, + 0x310d, + 0x3248, + 0x3382, + 0x34bd, + 0x35e7, + 0x3618, + 0x3794, + 0x3801, + 0x395d, + 0x3aae, + 0x3bff, + 0x07c9, /* auto power on */ +}; + +static u16 tpo_spi_cmdoff[] = { + 0x07d9, /* auto power off */ +}; + +static int tpo_lcd_power(struct pxa168fb_info *fbi, unsigned int spi_gpio_cs, + unsigned int spi_gpio_reset, int on) +{ + int err = 0; + + if (on) { + if (spi_gpio_reset != -1) { + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); + if (err) { + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); + return -EIO; + } + gpio_direction_output(spi_gpio_reset, 0); + msleep(100); + gpio_set_value(spi_gpio_reset, 1); + msleep(100); + gpio_free(spi_gpio_reset); + } + return pxa168fb_spi_send(fbi, tpo_spi_cmdon, + ARRAY_SIZE(tpo_spi_cmdon), spi_gpio_cs, 0, 40); + } else + return pxa168fb_spi_send(fbi, tpo_spi_cmdoff, + ARRAY_SIZE(tpo_spi_cmdoff), spi_gpio_cs, 0, 0); +} + +static struct fb_videomode video_modes[] = { + /* lpj032l001b HVGA mode info */ + [0] = { + .pixclock = 100000, + .refresh = 60, + .xres = 320, + .yres = 480, + .hsync_len = 10, + .left_margin = 15, + .right_margin = 10, + .vsync_len = 2, + .upper_margin = 4, + .lower_margin = 2, + .sync = 0, + }, }; +static struct pxa168fb_mach_info ttc_dkb_lcd_info __initdata = { + .id = "Base", + .modes = video_modes, + .num_modes = ARRAY_SIZE(video_modes), + .pix_fmt = PIX_FMT_RGB565, + .io_pin_allocation_mode = PIN_MODE_DUMB_18_SPI, + .dumb_mode = DUMB_MODE_RGB666, + .active = 1, + .spi_ctrl = CFG_SCLKCNT(16) | CFG_TXBITS(16) | + CFG_SPI_SEL(1) | CFG_SPI_3W4WB(1) | CFG_SPI_ENA(1), + .spi_gpio_cs = -1, + .spi_gpio_reset = mfp_to_gpio(MFP_PIN_GPIO106), + .invert_pixclock = 1, + .pxa168fb_lcd_power = tpo_lcd_power, +}; +#endif + #if defined(CONFIG_MTD_ONENAND) || defined(CONFIG_MTD_ONENAND_MODULE) static struct mtd_partition ttc_dkb_onenand_partitions[] = { { @@ -123,6 +264,9 @@ static void __init ttc_dkb_init(void) /* on-chip devices */ pxa910_add_uart(1); +#ifdef CONFIG_FB_PXA168 + pxa910_add_fb(&ttc_dkb_lcd_info); +#endif /* off-chip devices */ ttc_dkb_init_onenand(); -- 1.5.4.3 |
From: Jun N. <nie...@gm...> - 2009-11-16 09:35:03
|
From: Jun Nie <nj...@ma...> Date: Fri, 13 Nov 2009 15:12:19 +0800 Subject: [PATCH] pxa: add frame buffer on pxa168 aspenite platform Signed-off-by: Jun Nie <nj...@ma...> --- arch/arm/configs/pxa168_defconfig | 86 +++++++++++++++++++- arch/arm/mach-mmp/aspenite.c | 136 +++++++++++++++++++++++++++++++ arch/arm/mach-mmp/include/mach/pxa168.h | 8 ++ arch/arm/mach-mmp/pxa168.c | 3 + 4 files changed, 231 insertions(+), 2 deletions(-) diff --git a/arch/arm/configs/pxa168_defconfig b/arch/arm/configs/pxa168_defconfig index db5faea..b736517 100644 --- a/arch/arm/configs/pxa168_defconfig +++ b/arch/arm/configs/pxa168_defconfig @@ -509,7 +509,49 @@ CONFIG_UNIX98_PTYS=y # CONFIG_R3964 is not set # CONFIG_RAW_DRIVER is not set # CONFIG_TCG_TPM is not set -# CONFIG_I2C is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_CHARDEV is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_DESIGNWARE is not set +CONFIG_I2C_GPIO=y +# CONFIG_I2C_OCORES is not set +CONFIG_I2C_PXA=y +# CONFIG_I2C_PXA_SLAVE is not set +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_PCF8575 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set # CONFIG_SPI is not set CONFIG_ARCH_REQUIRE_GPIOLIB=y CONFIG_GPIOLIB=y @@ -523,6 +565,9 @@ CONFIG_GPIOLIB=y # # I2C GPIO expanders: # +# CONFIG_GPIO_MAX732X is not set +CONFIG_GPIO_PCA953X=y +# CONFIG_GPIO_PCF857X is not set # # PCI GPIO expanders: @@ -578,7 +623,34 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set -# CONFIG_FB is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_FILLRECT is not set +# CONFIG_FB_CFB_COPYAREA is not set +# CONFIG_FB_CFB_IMAGEBLIT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_PXA168=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -591,6 +663,16 @@ CONFIG_SSB_POSSIBLE=y # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y # CONFIG_SOUND is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index 21cecfc..25d7050 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c @@ -17,6 +17,7 @@ #include <linux/mtd/partitions.h> #include <linux/mtd/nand.h> #include <linux/i2c/pca953x.h> +#include <linux/delay.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -66,6 +67,39 @@ static unsigned long common_pin_config[] __initdata = { /* UART1 */ GPIO107_UART1_RXD, GPIO108_UART1_TXD, + +#ifdef CONFIG_FB_PXA168 + /* LCD */ + GPIO56_LCD_FCLK_RD, + GPIO57_LCD_LCLK_A0, + GPIO58_LCD_PCLK_WR, + GPIO59_LCD_DENA_BIAS, + GPIO60_LCD_DD0, + GPIO61_LCD_DD1, + GPIO62_LCD_DD2, + GPIO63_LCD_DD3, + GPIO64_LCD_DD4, + GPIO65_LCD_DD5, + GPIO66_LCD_DD6, + GPIO67_LCD_DD7, + GPIO68_LCD_DD8, + GPIO69_LCD_DD9, + GPIO70_LCD_DD10, + GPIO71_LCD_DD11, + GPIO72_LCD_DD12, + GPIO73_LCD_DD13, + GPIO74_LCD_DD14, + GPIO75_LCD_DD15, + + GPIO76_LCD_DD16, + GPIO77_LCD_DD17, + GPIO78_LCD_DD18, + GPIO79_LCD_DD19, + GPIO80_LCD_DD20, + GPIO81_LCD_DD21, + GPIO82_LCD_DD22, + GPIO83_LCD_DD23, +#endif }; static struct smc91x_platdata smc91x_info = { @@ -95,6 +129,105 @@ static struct platform_device smc91x_device = { .resource = smc91x_resources, }; +#ifdef CONFIG_FB_PXA168 +static u16 tpo_spi_cmdon[] = { + 0x080F, + 0x0C5F, + 0x1017, + 0x1420, + 0x1808, + 0x1c20, + 0x2020, + 0x2420, + 0x2820, + 0x2c20, + 0x3020, + 0x3420, + 0x3810, + 0x3c10, + 0x4010, + 0x4415, + 0x48aa, + 0x4cff, + 0x5086, + 0x548d, + 0x58d4, + 0x5cfb, + 0x602e, + 0x645a, + 0x6889, + 0x6cfe, + 0x705a, + 0x749b, + 0x78c5, + 0x7cff, + 0x80f0, + 0x84f0, + 0x8808, +}; + +static u16 tpo_spi_cmdoff[] = { + 0x0c5e, /* standby */ +}; + +static int tpo_lcd_power(struct pxa168fb_info *fbi, unsigned int spi_gpio_cs, + unsigned int spi_gpio_reset, int on) +{ + int err = 0; + if (on) { + if (spi_gpio_reset != -1) { + err = gpio_request(spi_gpio_reset, "TPO_LCD_SPI_RESET"); + if (err) { + printk(KERN_ERR "failed to request GPIO for TPO LCD RESET\n"); + return err; + } + gpio_direction_output(spi_gpio_reset, 0); + msleep(100); + gpio_set_value(spi_gpio_reset, 1); + msleep(100); + gpio_free(spi_gpio_reset); + } + return pxa168fb_spi_send(fbi, tpo_spi_cmdon, + ARRAY_SIZE(tpo_spi_cmdon), spi_gpio_cs, 0, 1); + } else + return pxa168fb_spi_send(fbi, tpo_spi_cmdoff, + ARRAY_SIZE(tpo_spi_cmdoff), spi_gpio_cs, 0, 1); +} + +static struct fb_videomode video_modes_aspen[] = { + [0] = { + .pixclock = 30120, + .refresh = 60, + .xres = 800, + .yres = 480, + .hsync_len = 1, + .left_margin = 215, + .right_margin = 40, + .vsync_len = 1, + .upper_margin = 34, + .lower_margin = 10, + .sync = 0, + }, +}; + +struct pxa168fb_mach_info aspenite_lcd_info __initdata = { + .id = "Base-aspen", + .modes = video_modes_aspen, + .num_modes = ARRAY_SIZE(video_modes_aspen), + .pix_fmt = PIX_FMT_RGB565, + .io_pin_allocation_mode = PIN_MODE_DUMB_24, + .dumb_mode = DUMB_MODE_RGB888, + .active = 1, + .spi_ctrl = CFG_SCLKCNT(2) | CFG_TXBITS(16) | + CFG_SPI_SEL(1) | CFG_SPI_3W4WB(1) | CFG_SPI_ENA(1), + .spi_gpio_cs = GPIO_EXT1(14), + .spi_gpio_reset = -1, + .invert_pixclock = 1, + .pxa168fb_lcd_power = tpo_lcd_power, +}; + +#endif + #if defined(CONFIG_MTD_NAND) || defined(CONFIG_MTD_NAND_MODULE) static struct mtd_partition apn_nand_partitions[] = { { @@ -184,6 +317,9 @@ static void __init common_init(void) /* on-chip devices */ pxa168_add_uart(1); +#ifdef CONFIG_FB_PXA168 + pxa168_add_fb(&aspenite_lcd_info); +#endif apn_init_nand(); pxa168_add_twsi(0, &pwri2c_info, diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h index d117ceb..d43fb13 100644 --- a/arch/arm/mach-mmp/include/mach/pxa168.h +++ b/arch/arm/mach-mmp/include/mach/pxa168.h @@ -4,6 +4,7 @@ #include <linux/i2c.h> #include <mach/devices.h> #include <plat/i2c.h> +#include <video/pxa168fb.h> extern struct pxa_device_desc pxa168_device_uart1; extern struct pxa_device_desc pxa168_device_uart2; @@ -14,6 +15,7 @@ extern struct pxa_device_desc pxa168_device_pwm2; extern struct pxa_device_desc pxa168_device_pwm3; extern struct pxa_device_desc pxa168_device_pwm4; extern struct pxa_device_desc pxa168_device_nand; +extern struct pxa_device_desc pxa168_device_fb; static inline int pxa168_add_uart(int id) { @@ -65,4 +67,10 @@ static inline int pxa168_add_pwm(int id) return pxa_register_device(d, NULL, 0); } + +static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi) +{ + return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi)); +} + #endif /* __ASM_MACH_PXA168_H */ diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index 59b393e..8be1e46 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c @@ -74,6 +74,7 @@ static APBC_CLK(pwm3, PXA168_PWM3, 1, 13000000); static APBC_CLK(pwm4, PXA168_PWM4, 1, 13000000); static APMU_CLK(nand, NAND, 0x1db, 208000000); +static APMU_CLK(lcd, LCD, 0x003f, 312000000); /* device and clock bindings */ static struct clk_lookup pxa168_clkregs[] = { @@ -86,6 +87,7 @@ static struct clk_lookup pxa168_clkregs[] = { INIT_CLKREG(&clk_pwm2, "pxa168-pwm.1", NULL), INIT_CLKREG(&clk_pwm3, "pxa168-pwm.2", NULL), INIT_CLKREG(&clk_pwm4, "pxa168-pwm.3", NULL), + INIT_CLKREG(&clk_lcd, "pxa168-fb", "LCDCLK"), }; static int __init pxa168_init(void) @@ -132,3 +134,4 @@ PXA168_DEVICE(pwm2, "pxa168-pwm", 1, NONE, 0xd401a400, 0x10); PXA168_DEVICE(pwm3, "pxa168-pwm", 2, NONE, 0xd401a800, 0x10); PXA168_DEVICE(pwm4, "pxa168-pwm", 3, NONE, 0xd401ac00, 0x10); PXA168_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x200, 97, 99); +PXA168_DEVICE(fb, "pxa168-fb", -1, LCD, 0xd420b000, 0x1c8); -- 1.5.4.3 |
From: Jun N. <nie...@gm...> - 2009-11-16 09:35:02
|
From: Jun Nie <nj...@ma...> Date: Fri, 13 Nov 2009 14:19:05 +0800 Subject: [PATCH] pxa: add gpio expander on pxa168 aspenite platform Signed-off-by: Jun Nie <nj...@ma...> --- arch/arm/mach-mmp/aspenite.c | 46 ++++++++++++++++++++++++++++++++++++++++++ drivers/gpio/pca953x.c | 1 + 2 files changed, 47 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index 115f728..21cecfc 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c @@ -16,6 +16,7 @@ #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> #include <linux/mtd/nand.h> +#include <linux/i2c/pca953x.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -24,9 +25,14 @@ #include <mach/pxa168.h> #include <mach/gpio.h> #include <plat/pxa3xx_nand.h> +#include <video/pxa168fb.h> #include "common.h" +/*used by expander max7312, 16 pins gpio expander */ +#define GPIO_EXT0(x) (NR_BUILTIN_GPIO + (x)) +#define GPIO_EXT1(x) (NR_BUILTIN_GPIO + 16 + (x)) + static unsigned long common_pin_config[] __initdata = { /* Data Flash Interface */ GPIO0_DFI_D15, @@ -134,6 +140,44 @@ static void __init apn_init_nand(void) static void __init apn_init_nand(void) {} #endif +static struct i2c_pxa_platform_data pwri2c_info __initdata = { + .use_pio = 1, +}; + +#if defined(CONFIG_GPIO_PCA953X) +/* GPIO expander max7312 could reuse PCA953X */ +static struct pca953x_platform_data max7312_data[] = { + /* two max7312 in system */ + + [0] = { + .gpio_base = GPIO_EXT0(0), + }, + + [1] = { + .gpio_base = GPIO_EXT1(0), + }, +}; +#endif + +static struct i2c_board_info aspenite_i2c_board_info[] = { + +#if defined(CONFIG_GPIO_PCA953X) + { + .type = "max7312", + .addr = 0x10, /* 0x20/0x21 */ + .irq = IRQ_GPIO(122), + .platform_data = &max7312_data[0], + }, + + { + .type = "max7312", + .addr = 0x20, /* 0x40/0x41 */ + .irq = IRQ_GPIO(120), + .platform_data = &max7312_data[1], + }, +#endif +}; + static void __init common_init(void) { mfp_config(ARRAY_AND_SIZE(common_pin_config)); @@ -142,6 +186,8 @@ static void __init common_init(void) pxa168_add_uart(1); apn_init_nand(); + pxa168_add_twsi(0, &pwri2c_info, + ARRAY_AND_SIZE(aspenite_i2c_board_info)); /* off-chip devices */ platform_device_register(&smc91x_device); diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c index 6a2fb3f..7822684 100644 --- a/drivers/gpio/pca953x.c +++ b/drivers/gpio/pca953x.c @@ -39,6 +39,7 @@ static const struct i2c_device_id pca953x_id[] = { { "pca9557", 8, }, { "max7310", 8, }, + { "max7312", 16, }, { "max7315", 8, }, { "pca6107", 8, }, { "tca6408", 8, }, -- 1.5.4.3 |
From: Jun N. <nie...@gm...> - 2009-11-16 09:34:58
|
From: Jun Nie <nj...@ma...> Date: Tue, 10 Nov 2009 09:43:57 +0800 Subject: [PATCH] pxa: frame buffer support both pxa168 and pxa910 Signed-off-by: Jun Nie <nj...@ma...> --- drivers/video/pxa168fb.c | 6 ++++++ include/video/pxa168fb.h | 3 +++ 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/drivers/video/pxa168fb.c b/drivers/video/pxa168fb.c index 6283c16..09ada72 100644 --- a/drivers/video/pxa168fb.c +++ b/drivers/video/pxa168fb.c @@ -882,12 +882,18 @@ failed: return ret; } + static const struct platform_device_id mmpfb_id_table[] = { + {"pxa168-fb", PXA168_FB}, + {"pxa910-fb", PXA910_FB}, + }; + static struct platform_driver pxa168fb_driver = { .driver = { .name = "pxa168-fb", .owner = THIS_MODULE, }, .probe = pxa168fb_probe, + .id_table = mmpfb_id_table, }; static int __devinit pxa168fb_init(void) diff --git a/include/video/pxa168fb.h b/include/video/pxa168fb.h index 53919fe..da83c94 100644 --- a/include/video/pxa168fb.h +++ b/include/video/pxa168fb.h @@ -87,6 +87,9 @@ #define PIX_FMT_PSEUDOCOLOR 20 #define PIX_FMT_UYVY422PACK (0x1000|PIX_FMT_YUV422PACK) +#define PXA168_FB 0x0168 +#define PXA910_FB 0x0910 + /* * PXA LCD controller private state. */ -- 1.5.4.3 |
From: Jun N. <nie...@gm...> - 2009-11-16 09:34:53
|
From: Jun Nie <nj...@ma...> Date: Tue, 10 Nov 2009 15:11:36 +0800 Subject: [PATCH] pxa: delete redundant vsync/hsync revert flag var.sync can cover its function Signed-off-by: Jun Nie <nj...@ma...> --- include/video/pxa168fb.h | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/include/video/pxa168fb.h b/include/video/pxa168fb.h index 01c18bc..53919fe 100644 --- a/include/video/pxa168fb.h +++ b/include/video/pxa168fb.h @@ -143,8 +143,6 @@ struct pxa168fb_mach_info { unsigned invert_composite_blank:1; unsigned invert_pix_val_ena:1; unsigned invert_pixclock:1; - unsigned invert_vsync:1; - unsigned invert_hsync:1; unsigned panel_rbswap:1; unsigned active:1; unsigned enable_lcd:1; -- 1.5.4.3 |