login
Login
/
Register
Search
Search this site:
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2010
»
August
»
26
Re: [PATCH v2 1/1] pxa168: added initial support for TPO TD043MTEA1 LCD display on Aspenite
view
thread
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From: Haojian Zhuang
Subject:
Re: [PATCH v2 1/1] pxa168: added initial support for TPO TD043MTEA1 LCD display on Aspenite
Date: Wednesday, August 25, 2010 - 8:57 pm
2010/8/26 Mark F. Brown <mark.brown314@gmail.com>:
quoted text
> On Wed, Aug 25, 2010 at 10:26 PM, Marek Vasut <marek.vasut@gmail.com> wrote: >> Dne Čt 26. srpna 2010 04:04:52 Mark F. Brown napsal(a): >>> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com> >>> --- >>> arch/arm/mach-mmp/aspenite.c | 60 >>> +++++++++++++++++++++++++++++++ arch/arm/mach-mmp/include/mach/pxa168.h | >>> 8 ++++ >>> arch/arm/mach-mmp/pxa168.c | 4 ++ >>> drivers/video/pxa168fb.c | 4 +- >>> 4 files changed, 74 insertions(+), 2 deletions(-) >>> >>> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c >>> index 0629394..9e1bd6b 100644 >>> --- a/arch/arm/mach-mmp/aspenite.c >>> +++ b/arch/arm/mach-mmp/aspenite.c >>> @@ -23,6 +23,7 @@ >>> #include <mach/mfp-pxa168.h> >>> #include <mach/pxa168.h> >>> #include <mach/gpio.h> >>> +#include <video/pxa168fb.h> >>> >>> #include "common.h" >>> >>> @@ -66,6 +67,36 @@ static unsigned long common_pin_config[] __initdata = { >>> GPIO115_I2S_BCLK, >>> GPIO116_I2S_RXD, >>> GPIO117_I2S_TXD, >>> + >>> + /* 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, >>> }; >>> >>> static struct smc91x_platdata smc91x_info = { >>> @@ -134,6 +165,34 @@ static struct i2c_board_info aspenite_i2c_info[] >>> __initdata = { { I2C_BOARD_INFO("wm8753", 0x1b), }, >>> }; >>> >>> +static struct fb_videomode video_modes[] = { >>> + [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 = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT, >>> + }, >>> +}; >>> + >>> +struct pxa168fb_mach_info aspenite_lcd_info = { >>> + .id = "Graphic Frame", >>> + .modes = video_modes, >>> + .num_modes = ARRAY_SIZE(video_modes), >>> + .pix_fmt = PIX_FMT_RGB565, >>> + .io_pin_allocation_mode = PIN_MODE_DUMB_24, >>> + .dumb_mode = DUMB_MODE_RGB888, >>> + .active = 1, >>> + .panel_rbswap = 0, >>> + .invert_pixclock = 0, >>> +}; >>> + >>> static void __init common_init(void) >>> { >>> mfp_config(ARRAY_AND_SIZE(common_pin_config)); >>> @@ -143,6 +202,7 @@ static void __init common_init(void) >>> pxa168_add_twsi(1, NULL, ARRAY_AND_SIZE(aspenite_i2c_info)); >>> pxa168_add_ssp(1); >>> pxa168_add_nand(&aspenite_nand_info); >>> + pxa168_add_fb(&aspenite_lcd_info); >>> >>> /* off-chip devices */ >>> platform_device_register(&smc91x_device); >> >> >> >> ---------------------------------------------- >> ^--- one patch above >> SNIP, please split into two patches >> v--- another patch below >> ---------------------------------------------- >> >> >> >> >>> diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h >>> b/arch/arm/mach-mmp/include/mach/pxa168.h index 27e1bc7..220738f 100644 >>> --- a/arch/arm/mach-mmp/include/mach/pxa168.h >>> +++ b/arch/arm/mach-mmp/include/mach/pxa168.h >>> @@ -10,6 +10,7 @@ extern void __init pxa168_init_irq(void); >>> #include <mach/devices.h> >>> #include <plat/i2c.h> >>> #include <plat/pxa3xx_nand.h> >>> +#include <video/pxa168fb.h> >>> >>> extern struct pxa_device_desc pxa168_device_uart1; >>> extern struct pxa_device_desc pxa168_device_uart2; >>> @@ -25,6 +26,7 @@ extern struct pxa_device_desc pxa168_device_ssp3; >>> extern struct pxa_device_desc pxa168_device_ssp4; >>> extern struct pxa_device_desc pxa168_device_ssp5; >>> extern struct pxa_device_desc pxa168_device_nand; >>> +extern struct pxa_device_desc pxa168_device_fb; >>> >>> static inline int pxa168_add_uart(int id) >>> { >>> @@ -97,4 +99,10 @@ static inline int pxa168_add_nand(struct >>> pxa3xx_nand_platform_data *info) { >>> return pxa_register_device(&pxa168_device_nand, info, sizeof(*info)); >>> } >>> + >>> +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 652ae66..886eadb 100644 >>> --- a/arch/arm/mach-mmp/pxa168.c >>> +++ b/arch/arm/mach-mmp/pxa168.c >>> @@ -25,6 +25,7 @@ >>> #include <mach/dma.h> >>> #include <mach/devices.h> >>> #include <mach/mfp.h> >>> +#include <video/pxa168fb.h> >>> >>> #include "common.h" >>> #include "clock.h" >>> @@ -79,6 +80,7 @@ static APBC_CLK(ssp4, PXA168_SSP4, 4, 0); >>> static APBC_CLK(ssp5, PXA168_SSP5, 4, 0); >>> >>> static APMU_CLK(nand, NAND, 0x01db, 208000000); >>> +static APMU_CLK(lcd, LCD, 0x7f, 312000000); >>> >>> /* device and clock bindings */ >>> static struct clk_lookup pxa168_clkregs[] = { >>> @@ -96,6 +98,7 @@ static struct clk_lookup pxa168_clkregs[] = { >>> INIT_CLKREG(&clk_ssp4, "pxa168-ssp.3", NULL), >>> INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL), >>> INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL), >>> + INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL), >>> }; >>> >>> static int __init pxa168_init(void) >>> @@ -147,3 +150,4 @@ PXA168_DEVICE(ssp2, "pxa168-ssp", 1, SSP2, 0xd401c000, >>> 0x40, 54, 55); PXA168_DEVICE(ssp3, "pxa168-ssp", 2, SSP3, 0xd401f000, >>> 0x40, 56, 57); PXA168_DEVICE(ssp4, "pxa168-ssp", 3, SSP4, 0xd4020000, >>> 0x40, 58, 59); PXA168_DEVICE(ssp5, "pxa168-ssp", 4, SSP5, 0xd4021000, >>> 0x40, 60, 61); +PXA168_DEVICE(fb, "pxa168-fb", -1, LCD, 0xd420b000, >>> 0x1c8); >>> diff --git a/drivers/video/pxa168fb.c b/drivers/video/pxa168fb.c >>> index c91a7f7..d3e597e 100644 >>> --- a/drivers/video/pxa168fb.c >>> +++ b/drivers/video/pxa168fb.c >>> @@ -559,7 +559,7 @@ static struct fb_ops pxa168fb_ops = { >>> .fb_imageblit = cfb_imageblit, >>> }; >>> >>> -static int __init pxa168fb_init_mode(struct fb_info *info, >>> +static int pxa168fb_init_mode(struct fb_info *info, >>> struct pxa168fb_mach_info *mi) >> >> Why do you remove __init from it ? >>> { >>> struct pxa168fb_info *fbi = info->par; >>> @@ -599,7 +599,7 @@ static int __init pxa168fb_init_mode(struct fb_info >>> *info, return ret; >>> } >>> >>> -static int __init pxa168fb_probe(struct platform_device *pdev) >>> +static int pxa168fb_probe(struct platform_device *pdev) >> >> Why do you remove __init from it ? (DTTO) >>> { >>> struct pxa168fb_mach_info *mi; >>> struct fb_info *info = 0; >> >> Cheers >> > > Hi Marek, > > 1) I removed the __init because it was causing a section mismatch > warning wth this kernel. Since pxa168fb_probe() is calling > pxa168fb_init_mode(), I cannot declare pxa168fb_init_mode() as an > __init function. If pxa168fb_probe gets called after the __init > section is wiped then it will attempt to run the deleted > pxa168fb_init_mode() code. > > WARNING: vmlinux.o(.data+0x17984): Section mismatch in reference from > the variable pxa168fb_driver to the function > .init.text:pxa168fb_probe() > The variable pxa168fb_driver references > the function __init pxa168fb_probe() > If the reference is valid then annotate the > variable with __init* or __refdata (see linux/init.h) or name the variable: > *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, > > > 2) What is the logic behind the delineation between patch files? I > cannot build patch #1 without patch #2 based on how you defined the > split. I need all of it in order to function. >
Patch #2 should be the first one since it's related to framebuffer driver. The next one should be platform file. --
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[PATCH v2 1/1] pxa168: added initial support for TPO TD043 ...
, Mark F. Brown
, (Wed Aug 25, 7:04 pm)
Re: [PATCH v2 1/1] pxa168: added initial support for TPO T ...
, Marek Vasut
, (Wed Aug 25, 7:26 pm)
Re: [PATCH v2 1/1] pxa168: added initial support for TPO T ...
, Mark F. Brown
, (Wed Aug 25, 8:44 pm)
Re: [PATCH v2 1/1] pxa168: added initial support for TPO T ...
, Haojian Zhuang
, (Wed Aug 25, 8:57 pm)
Re: [PATCH v2 1/1] pxa168: added initial support for TPO T ...
, Marek Vasut
, (Wed Aug 25, 9:02 pm)
Re: [PATCH v2 1/1] pxa168: added initial support for TPO T ...
, Mark F. Brown
, (Wed Aug 25, 9:04 pm)
Navigation
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Mel Gorman
Re: [PATCH 1/4] vmstat: remove zone->lock from walk_zones_in_node
Guenter Roeck
Re: [lm-sensors] Location for thermal drivers
David Woodhouse
Re: RFC: Moving firmware blobs out of the kernel.
Siddha, Suresh B
Re: [PATCH 2.6.21 review I] [11/25] x86: default to physical mode on hotplug CPU k...
Peter Zijlstra
Re: [patch 4/6] mm: merge populate and nopage into fault (fixes nonlinear)
git-commits-head
:
Linux Kernel Mailing List
[MIPS] Fix potential latency problem due to non-atomic cpu_wait.
Linux Kernel Mailing List
USB: rename USB_SPEED_VARIABLE to USB_SPEED_WIRELESS
Linux Kernel Mailing List
lib/vsprintf.c: fix bug omitting minus sign of numbers (module_param)
Linux Kernel Mailing List
[Bluetooth] Initiate authentication during connection establishment
Linux Kernel Mailing List
[POWERPC] 4xx: Add ppc40x_defconfig
linux-netdev
:
MERCEDES
Your mail id has won 950,000.00 in the MERCEDES Benz Online Promo.for claims send:
David Miller
Re: [PATCH] xen/netfront: do not mark packets of length < MSS as GSO
David Miller
Re: skb_segment() questions
Shan Wei
[RFC PATCH net-next 2/5]IPv6:netfilter: Send an ICMPv6 "Fragment Reassembly Timeou...
Stanislaw Gruszka
[PATCH 1/4] bnx2x: use smp_mb() to keep ordering of read write operations
git
:
Nicolas Sebrecht
git-svn died of signal 11 (was "3 failures on test t9100 (svn)")
Junio C Hamano
Re: [PATCH 2/2] Add url.<base>.pushInsteadOf: URL rewriting for push only
Martin Langhoff
Re: [PATCH] GIT commit statistics.
Alexandre Julliard
[PATCH] gitweb: Put back shortlog instead of graphiclog in the project list.
Josh Triplett
[PATCH 2/2] Add url.<base>.pushInsteadOf: URL rewriting for push only
openbsd-misc
:
Taisto Qvist XX
Re: AMD GEODE LX-800 just works with kernel from install42.iso and kernelpanics wi...
Nico Meijer
Re: gOS Develop Kit with VIA pc-1 Processor Platform VIA C7-D
Andreas Bihlmaier
Re: jetway board sensors (Fintek F71805F)
admin
Drive a 2009 car from R799p/m
Antti Harri
Re: how to create a sha256 hash
Colocation donated by:
Syndicate