omap drivers: switch to standard GPIO calls

This updates most of the OMAP drivers which are in mainline to switch to
using the cross-platform GPIO calls instead of the older OMAP-specific
ones.

This is all fairly brainless/obvious stuff.  Probably the most interesting
bit is to observe that the omap-keypad code seems to now have a portable
core that could work with non-OMAP matrix keypads.  (That would improve
with hardware IRQ debouncing enabled, of course...)

Signed-off-by: David Brownell <[email protected]>
Signed-off-by: Tony Lindgren <[email protected]>
Cc: Dmitry Torokhov <[email protected]>
Cc: Antonino Daplas <[email protected]>
Cc: David Woodhouse <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
David Brownell 2008-10-15 22:03:15 -07:00 • committed by Linus Torvalds
commit 93a22f8b95
5 changed files with 75 additions and 87 deletions

View file

@ -32,43 +32,43 @@ static int innovator1610_panel_init(struct lcd_panel *panel,
{
int r = 0;
if (omap_request_gpio(14)) {
if (gpio_request(14, "lcd_en0")) {
pr_err(MODULE_NAME ": can't request GPIO 14\n");
r = -1;
goto exit;
}
if (omap_request_gpio(15)) {
if (gpio_request(15, "lcd_en1")) {
pr_err(MODULE_NAME ": can't request GPIO 15\n");
omap_free_gpio(14);
gpio_free(14);
r = -1;
goto exit;
}
/* configure GPIO(14, 15) as outputs */
omap_set_gpio_direction(14, 0);
omap_set_gpio_direction(15, 0);
gpio_direction_output(14, 0);
gpio_direction_output(15, 0);
exit:
return r;
}
static void innovator1610_panel_cleanup(struct lcd_panel *panel)
{
omap_free_gpio(15);
omap_free_gpio(14);
gpio_free(15);
gpio_free(14);
}
static int innovator1610_panel_enable(struct lcd_panel *panel)
{
/* set GPIO14 and GPIO15 high */
omap_set_gpio_dataout(14, 1);
omap_set_gpio_dataout(15, 1);
gpio_set_value(14, 1);
gpio_set_value(15, 1);
return 0;
}
static void innovator1610_panel_disable(struct lcd_panel *panel)
{
/* set GPIO13, GPIO14 and GPIO15 low */
omap_set_gpio_dataout(14, 0);
omap_set_gpio_dataout(15, 0);
gpio_set_value(14, 0);
gpio_set_value(15, 0);
}
static unsigned long innovator1610_panel_get_caps(struct lcd_panel *panel)

View file

@ -29,6 +29,7 @@
static int osk_panel_init(struct lcd_panel *panel, struct omapfb_device *fbdev)
{
/* gpio2 was allocated in board init */
return 0;
}
@ -47,11 +48,8 @@ static int osk_panel_enable(struct lcd_panel *panel)
/* Set PWL level */
omap_writeb(0xFF, OMAP_PWL_ENABLE);
/* configure GPIO2 as output */
omap_set_gpio_direction(2, 0);
/* set GPIO2 high */
omap_set_gpio_dataout(2, 1);
/* set GPIO2 high (lcd power enabled) */
gpio_set_value(2, 1);
return 0;
}
@ -65,7 +63,7 @@ static void osk_panel_disable(struct lcd_panel *panel)
omap_writeb(0x00, OMAP_PWL_CLK_ENABLE);
/* set GPIO2 low */
omap_set_gpio_dataout(2, 0);
gpio_set_value(2, 0);
}
static unsigned long osk_panel_get_caps(struct lcd_panel *panel)

View file

@ -81,21 +81,21 @@ static void epson_sendbyte(int flag, unsigned char byte)
int i, shifter = 0x80;
if (!flag)
omap_set_gpio_dataout(_A_LCD_SSC_A0, 0);
gpio_set_value(_A_LCD_SSC_A0, 0);
mdelay(2);
omap_set_gpio_dataout(A_LCD_SSC_RD, 1);
gpio_set_value(A_LCD_SSC_RD, 1);
omap_set_gpio_dataout(A_LCD_SSC_SD, flag);
gpio_set_value(A_LCD_SSC_SD, flag);
OMAP_MCBSP_WRITE(OMAP1510_MCBSP3_BASE, PCR0, 0x2200);
OMAP_MCBSP_WRITE(OMAP1510_MCBSP3_BASE, PCR0, 0x2202);
for (i = 0; i < 8; i++) {
OMAP_MCBSP_WRITE(OMAP1510_MCBSP3_BASE, PCR0, 0x2200);
omap_set_gpio_dataout(A_LCD_SSC_SD, shifter & byte);
gpio_set_value(A_LCD_SSC_SD, shifter & byte);
OMAP_MCBSP_WRITE(OMAP1510_MCBSP3_BASE, PCR0, 0x2202);
shifter >>= 1;
}
omap_set_gpio_dataout(_A_LCD_SSC_A0, 1);
gpio_set_value(_A_LCD_SSC_A0, 1);
}
static void init_system(void)
@ -107,25 +107,18 @@ static void init_system(void)
static void setup_GPIO(void)
{
/* new wave */
omap_request_gpio(A_LCD_SSC_RD);
omap_request_gpio(A_LCD_SSC_SD);
omap_request_gpio(_A_LCD_RESET);
omap_request_gpio(_A_LCD_SSC_CS);
omap_request_gpio(_A_LCD_SSC_A0);
gpio_request(A_LCD_SSC_RD, "lcd_ssc_rd");
gpio_request(A_LCD_SSC_SD, "lcd_ssc_sd");
gpio_request(_A_LCD_RESET, "lcd_reset");
gpio_request(_A_LCD_SSC_CS, "lcd_ssc_cs");
gpio_request(_A_LCD_SSC_A0, "lcd_ssc_a0");
/* set all GPIOs to output */
omap_set_gpio_direction(A_LCD_SSC_RD, 0);
omap_set_gpio_direction(A_LCD_SSC_SD, 0);
omap_set_gpio_direction(_A_LCD_RESET, 0);
omap_set_gpio_direction(_A_LCD_SSC_CS, 0);
omap_set_gpio_direction(_A_LCD_SSC_A0, 0);
/* set GPIO data */
omap_set_gpio_dataout(A_LCD_SSC_RD, 1);
omap_set_gpio_dataout(A_LCD_SSC_SD, 0);
omap_set_gpio_dataout(_A_LCD_RESET, 0);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_A0, 1);
/* set GPIOs to output, with initial data */
gpio_direction_output(A_LCD_SSC_RD, 1);
gpio_direction_output(A_LCD_SSC_SD, 0);
gpio_direction_output(_A_LCD_RESET, 0);
gpio_direction_output(_A_LCD_SSC_CS, 1);
gpio_direction_output(_A_LCD_SSC_A0, 1);
}
static void display_init(void)
@ -139,61 +132,61 @@ static void display_init(void)
mdelay(2);
/* reset LCD */
omap_set_gpio_dataout(A_LCD_SSC_SD, 1);
gpio_set_value(A_LCD_SSC_SD, 1);
epson_sendbyte(0, 0x25);
omap_set_gpio_dataout(_A_LCD_RESET, 0);
gpio_set_value(_A_LCD_RESET, 0);
mdelay(10);
omap_set_gpio_dataout(_A_LCD_RESET, 1);
gpio_set_value(_A_LCD_RESET, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 1);
mdelay(2);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD, phase 1 */
epson_sendbyte(0, 0xCA);
for (i = 0; i < 10; i++)
epson_sendbyte(1, INIT_1[i]);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 2 */
epson_sendbyte(0, 0xCB);
for (i = 0; i < 125; i++)
epson_sendbyte(1, INIT_2[i]);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 2a */
epson_sendbyte(0, 0xCC);
for (i = 0; i < 14; i++)
epson_sendbyte(1, INIT_3[i]);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 3 */
epson_sendbyte(0, 0xBC);
epson_sendbyte(1, 0x08);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 4 */
epson_sendbyte(0, 0x07);
epson_sendbyte(1, 0x05);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 5 */
epson_sendbyte(0, 0x94);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 6 */
epson_sendbyte(0, 0xC6);
epson_sendbyte(1, 0x80);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 1);
mdelay(100); /* used to be 1000 */
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 7 */
epson_sendbyte(0, 0x16);
@ -201,8 +194,8 @@ static void display_init(void)
epson_sendbyte(1, 0x00);
epson_sendbyte(1, 0xB1);
epson_sendbyte(1, 0x00);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 8 */
epson_sendbyte(0, 0x76);
@ -210,12 +203,12 @@ static void display_init(void)
epson_sendbyte(1, 0x00);
epson_sendbyte(1, 0xDB);
epson_sendbyte(1, 0x00);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 0);
/* init LCD phase 9 */
epson_sendbyte(0, 0xAF);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 1);
}
static int sx1_panel_init(struct lcd_panel *panel, struct omapfb_device *fbdev)
@ -231,18 +224,18 @@ static void sx1_panel_disable(struct lcd_panel *panel)
{
printk(KERN_INFO "SX1: LCD panel disable\n");
sx1_setmmipower(0);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 1);
epson_sendbyte(0, 0x25);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 0);
epson_sendbyte(0, 0xAE);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 1);
mdelay(100);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 0);
gpio_set_value(_A_LCD_SSC_CS, 0);
epson_sendbyte(0, 0x95);
omap_set_gpio_dataout(_A_LCD_SSC_CS, 1);
gpio_set_value(_A_LCD_SSC_CS, 1);
}
static int sx1_panel_enable(struct lcd_panel *panel)