Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 8775
b: refs/heads/master
c: 9fc7896
h: refs/heads/master
i:
  8773: 125eec4
  8771: 41ffe64
  8767: 67dce80
v: v3
  • Loading branch information
Richard Purdie authored and Linus Torvalds committed Sep 13, 2005
1 parent 8de4603 commit 50ce866
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 50a5de44821352354a3ee804e2c7cbfee5a81c06
refs/heads/master: 9fc7896b62b48714fafecf9266d9dc14c1cd6e33
132 changes: 118 additions & 14 deletions trunk/arch/arm/mach-pxa/corgi_lcd.c
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
/*
* linux/drivers/video/w100fb.c
*
* Corgi LCD Specific Code for ATI Imageon w100 (Wallaby)
* Corgi/Spitz LCD Specific Code
*
* Copyright (C) 2005 Richard Purdie
*
* Connectivity:
* Corgi - LCD to ATI Imageon w100 (Wallaby)
* Spitz - LCD to PXA Framebuffer
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
Expand All @@ -14,9 +18,17 @@
#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/module.h>
#include <asm/mach-types.h>
#include <asm/arch/akita.h>
#include <asm/arch/corgi.h>
#include <asm/arch/hardware.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/sharpsl.h>
#include <asm/arch/spitz.h>
#include <asm/hardware/scoop.h>
#include <asm/mach/sharpsl_param.h>
#include <video/w100fb.h>
#include "generic.h"

/* Register Addresses */
#define RESCTL_ADRS 0x00
Expand Down Expand Up @@ -134,10 +146,10 @@ static void lcdtg_set_common_voltage(u8 base_data, u8 data)
}

/* Set Phase Adjuct */
static void lcdtg_set_phadadj(struct w100fb_par *par)
static void lcdtg_set_phadadj(int mode)
{
int adj;
switch(par->xres) {
switch(mode) {
case 480:
case 640:
/* Setting for VGA */
Expand All @@ -161,7 +173,7 @@ static void lcdtg_set_phadadj(struct w100fb_par *par)

static int lcd_inited;

static void lcdtg_hw_init(struct w100fb_par *par)
static void lcdtg_hw_init(int mode)
{
if (!lcd_inited) {
int comadj;
Expand Down Expand Up @@ -215,7 +227,7 @@ static void lcdtg_hw_init(struct w100fb_par *par)
corgi_ssp_lcdtg_send(PICTRL_ADRS, 0);

/* Set Phase Adjuct */
lcdtg_set_phadadj(par);
lcdtg_set_phadadj(mode);

/* Initialize for Input Signals from ATI */
corgi_ssp_lcdtg_send(POLCTRL_ADRS, POLCTRL_SYNC_POL_RISE | POLCTRL_EN_POL_RISE
Expand All @@ -224,10 +236,10 @@ static void lcdtg_hw_init(struct w100fb_par *par)

lcd_inited=1;
} else {
lcdtg_set_phadadj(par);
lcdtg_set_phadadj(mode);
}

switch(par->xres) {
switch(mode) {
case 480:
case 640:
/* Set Lcd Resolution (VGA) */
Expand All @@ -242,7 +254,7 @@ static void lcdtg_hw_init(struct w100fb_par *par)
}
}

static void lcdtg_suspend(struct w100fb_par *par)
static void lcdtg_suspend(void)
{
/* 60Hz x 2 frame = 16.7msec x 2 = 33.4 msec */
mdelay(34);
Expand Down Expand Up @@ -276,15 +288,30 @@ static void lcdtg_suspend(struct w100fb_par *par)
lcd_inited = 0;
}

static struct w100_tg_info corgi_lcdtg_info = {
.change=lcdtg_hw_init,
.suspend=lcdtg_suspend,
.resume=lcdtg_hw_init,
};

/*
* Corgi w100 Frame Buffer Device
*/
#ifdef CONFIG_PXA_SHARP_C7xx

#include <video/w100fb.h>

static void w100_lcdtg_suspend(struct w100fb_par *par)
{
lcdtg_suspend();
}

static void w100_lcdtg_init(struct w100fb_par *par)
{
lcdtg_hw_init(par->xres);
}


static struct w100_tg_info corgi_lcdtg_info = {
.change = w100_lcdtg_init,
.suspend = w100_lcdtg_suspend,
.resume = w100_lcdtg_init,
};

static struct w100_mem_info corgi_fb_mem = {
.ext_cntl = 0x00040003,
Expand Down Expand Up @@ -394,3 +421,80 @@ struct platform_device corgifb_device = {
},

};
#endif


/*
* Spitz PXA Frame Buffer Device
*/
#ifdef CONFIG_PXA_SHARP_Cxx00

#include <asm/arch/pxafb.h>

void spitz_lcd_power(int on)
{
if (on)
lcdtg_hw_init(480);
else
lcdtg_suspend();
}

#endif


/*
* Corgi/Spitz Touchscreen to LCD interface
*/
static unsigned long (*get_hsync_time)(struct device *dev);

static void inline sharpsl_wait_sync(int gpio)
{
while((GPLR(gpio) & GPIO_bit(gpio)) == 0);
while((GPLR(gpio) & GPIO_bit(gpio)) != 0);
}

#ifdef CONFIG_PXA_SHARP_C7xx
unsigned long corgi_get_hsync_len(void)
{
if (!get_hsync_time)
get_hsync_time = symbol_get(w100fb_get_hsynclen);
if (!get_hsync_time)
return 0;

return get_hsync_time(&corgifb_device.dev);
}

void corgi_put_hsync(void)
{
if (get_hsync_time)
symbol_put(w100fb_get_hsynclen);
}

void corgi_wait_hsync(void)
{
sharpsl_wait_sync(CORGI_GPIO_HSYNC);
}
#endif

#ifdef CONFIG_PXA_SHARP_Cxx00
unsigned long spitz_get_hsync_len(void)
{
if (!get_hsync_time)
get_hsync_time = symbol_get(pxafb_get_hsync_time);
if (!get_hsync_time)
return 0;

return pxafb_get_hsync_time(&pxafb_device.dev);
}

void spitz_put_hsync(void)
{
if (get_hsync_time)
symbol_put(pxafb_get_hsync_time);
}

void spitz_wait_hsync(void)
{
sharpsl_wait_sync(SPITZ_GPIO_HSYNC);
}
#endif
11 changes: 11 additions & 0 deletions trunk/arch/arm/mach-pxa/sharpsl.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,14 @@ struct corgissp_machinfo {
};

void corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo);

/*
* SharpSL Touchscreen Driver
*/

unsigned long corgi_get_hsync_len(void);
unsigned long spitz_get_hsync_len(void);
void corgi_put_hsync(void);
void spitz_put_hsync(void);
void corgi_wait_hsync(void);
void spitz_wait_hsync(void);
10 changes: 10 additions & 0 deletions trunk/include/asm-arm/arch-pxa/sharpsl.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,13 @@ void corgi_ssp_ads7846_unlock(void);
void corgi_ssp_lcdtg_send (unsigned char adrs, unsigned char data);
void corgi_ssp_blduty_set(int duty);
int corgi_ssp_max1111_get(unsigned long data);

/*
* SharpSL Touchscreen Driver
*/

struct corgits_machinfo {
unsigned long (*get_hsync_len)(void);
void (*put_hsync)(void);
void (*wait_hsync)(void);
};

0 comments on commit 50ce866

Please sign in to comment.