[ARM] 5094/1: pcm990: Add framebuffer and backlight support
PCM990 boards can be assembled with either a Sharp STN or a NEC TFT LCD. This patch adds support for these displays and for the backlight, using the pwm_bl driver. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
85847a360f
commit
c0f7edb309
|
@ -149,6 +149,22 @@ choice
|
|||
|
||||
config MACH_PCM990_BASEBOARD
|
||||
bool "PHYTEC PCM-990 development board"
|
||||
select HAVE_PWM
|
||||
|
||||
endchoice
|
||||
|
||||
choice
|
||||
prompt "display on pcm990"
|
||||
depends on MACH_PCM990_BASEBOARD
|
||||
|
||||
config PCM990_DISPLAY_SHARP
|
||||
bool "sharp lq084v1dg21 stn display"
|
||||
|
||||
config PCM990_DISPLAY_NEC
|
||||
bool "nec nl6448bc20_18d tft display"
|
||||
|
||||
config PCM990_DISPLAY_NONE
|
||||
bool "no display"
|
||||
|
||||
endchoice
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/ide.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
|
||||
#include <media/soc_camera.h>
|
||||
|
||||
|
@ -36,9 +37,99 @@
|
|||
#include <asm/arch/mmc.h>
|
||||
#include <asm/arch/ohci.h>
|
||||
#include <asm/arch/pcm990_baseboard.h>
|
||||
#include <asm/arch/pxafb.h>
|
||||
|
||||
#include "devices.h"
|
||||
|
||||
/*
|
||||
* The PCM-990 development baseboard uses PCM-027's hardeware in the
|
||||
* pcm990_lcd_power - control power supply to the LCD
|
||||
* @on: 0 = switch off, 1 = switch on
|
||||
*
|
||||
* Called by the pxafb driver
|
||||
*/
|
||||
#ifndef CONFIG_PCM990_DISPLAY_NONE
|
||||
static void pcm990_lcd_power(int on, struct fb_var_screeninfo *var)
|
||||
{
|
||||
if (on) {
|
||||
/* enable LCD-Latches
|
||||
* power on LCD
|
||||
*/
|
||||
__PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG3) =
|
||||
PCM990_CTRL_LCDPWR + PCM990_CTRL_LCDON;
|
||||
} else {
|
||||
/* disable LCD-Latches
|
||||
* power off LCD
|
||||
*/
|
||||
__PCM990_CTRL_REG(PCM990_CTRL_PHYS + PCM990_CTRL_REG3) = 0x00;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PCM990_DISPLAY_SHARP)
|
||||
static struct pxafb_mode_info fb_info_sharp_lq084v1dg21 = {
|
||||
.pixclock = 28000,
|
||||
.xres = 640,
|
||||
.yres = 480,
|
||||
.bpp = 16,
|
||||
.hsync_len = 20,
|
||||
.left_margin = 103,
|
||||
.right_margin = 47,
|
||||
.vsync_len = 6,
|
||||
.upper_margin = 28,
|
||||
.lower_margin = 5,
|
||||
.sync = 0,
|
||||
.cmap_greyscale = 0,
|
||||
};
|
||||
|
||||
static struct pxafb_mach_info pcm990_fbinfo __initdata = {
|
||||
.modes = &fb_info_sharp_lq084v1dg21,
|
||||
.num_modes = 1,
|
||||
.lccr0 = LCCR0_PAS,
|
||||
.lccr3 = LCCR3_PCP,
|
||||
.pxafb_lcd_power = pcm990_lcd_power,
|
||||
};
|
||||
#elif defined(CONFIG_PCM990_DISPLAY_NEC)
|
||||
struct pxafb_mode_info fb_info_nec_nl6448bc20_18d = {
|
||||
.pixclock = 39720,
|
||||
.xres = 640,
|
||||
.yres = 480,
|
||||
.bpp = 16,
|
||||
.hsync_len = 32,
|
||||
.left_margin = 16,
|
||||
.right_margin = 48,
|
||||
.vsync_len = 2,
|
||||
.upper_margin = 12,
|
||||
.lower_margin = 17,
|
||||
.sync = 0,
|
||||
.cmap_greyscale = 0,
|
||||
};
|
||||
|
||||
static struct pxafb_mach_info pcm990_fbinfo __initdata = {
|
||||
.modes = &fb_info_nec_nl6448bc20_18d,
|
||||
.num_modes = 1,
|
||||
.lccr0 = LCCR0_Act,
|
||||
.lccr3 = LCCR3_PixFlEdg,
|
||||
.pxafb_lcd_power = pcm990_lcd_power,
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct platform_pwm_backlight_data pcm990_backlight_data = {
|
||||
.pwm_id = 0,
|
||||
.max_brightness = 1023,
|
||||
.dft_brightness = 1023,
|
||||
.pwm_period_ns = 78770,
|
||||
};
|
||||
|
||||
static struct platform_device pcm990_backlight_device = {
|
||||
.name = "pwm-backlight",
|
||||
.dev = {
|
||||
.parent = &pxa27x_device_pwm0.dev,
|
||||
.platform_data = &pcm990_backlight_data,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* The PCM-990 development baseboard uses PCM-027's hardware in the
|
||||
* following way:
|
||||
*
|
||||
* - LCD support is in use
|
||||
|
@ -393,6 +484,12 @@ void __init pcm990_baseboard_init(void)
|
|||
/* register CPLD's IRQ controller */
|
||||
pcm990_init_irq();
|
||||
|
||||
#ifndef CONFIG_PCM990_DISPLAY_NONE
|
||||
set_pxa_fb_info(&pcm990_fbinfo);
|
||||
#endif
|
||||
pxa_gpio_mode(GPIO16_PWM0_MD);
|
||||
platform_device_register(&pcm990_backlight_device);
|
||||
|
||||
platform_device_register(&pxa27x_device_ac97);
|
||||
|
||||
/* MMC */
|
||||
|
|
Loading…
Reference in New Issue