-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 191882 b: refs/heads/master c: 543cd84 h: refs/heads/master v: v3
- Loading branch information
Marek
authored and
Eric Miao
committed
May 11, 2010
1 parent
69e0c35
commit ca6be75
Showing
5 changed files
with
339 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: b637799248520d711f0fdc64666131c1c869cfbc | ||
refs/heads/master: 543cd84255f499a53d409014bc5ba71543474b05 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
/* | ||
* GPIOs and interrupts for Voipac PXA270 | ||
* | ||
* Copyright (C) 2010 | ||
* Marek Vasut <marek.vasut@gmail.com> | ||
* | ||
* 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. | ||
* | ||
*/ | ||
|
||
#ifndef _INCLUDE_VPAC270_H_ | ||
#define _INCLUDE_VPAC270_H_ | ||
|
||
#define GPIO1_VPAC270_USER_BTN 1 | ||
|
||
#define GPIO15_VPAC270_LED_ORANGE 15 | ||
|
||
#define GPIO81_VPAC270_BKL_ON 81 | ||
#define GPIO83_VPAC270_NL_ON 83 | ||
|
||
#define GPIO52_VPAC270_SD_READONLY 52 | ||
#define GPIO53_VPAC270_SD_DETECT_N 53 | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,305 @@ | ||
/* | ||
* Hardware definitions for Voipac PXA270 | ||
* | ||
* Copyright (C) 2010 | ||
* Marek Vasut <marek.vasut@gmail.com> | ||
* | ||
* 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. | ||
* | ||
*/ | ||
|
||
#include <linux/platform_device.h> | ||
#include <linux/delay.h> | ||
#include <linux/irq.h> | ||
#include <linux/gpio_keys.h> | ||
#include <linux/input.h> | ||
#include <linux/gpio.h> | ||
#include <linux/sysdev.h> | ||
#include <linux/mtd/mtd.h> | ||
#include <linux/mtd/partitions.h> | ||
#include <linux/mtd/physmap.h> | ||
|
||
#include <asm/mach-types.h> | ||
#include <asm/mach/arch.h> | ||
|
||
#include <mach/pxa27x.h> | ||
#include <mach/vpac270.h> | ||
#include <mach/mmc.h> | ||
#include <mach/pxafb.h> | ||
|
||
#include "generic.h" | ||
#include "devices.h" | ||
|
||
/****************************************************************************** | ||
* Pin configuration | ||
******************************************************************************/ | ||
static unsigned long vpac270_pin_config[] __initdata = { | ||
/* MMC */ | ||
GPIO32_MMC_CLK, | ||
GPIO92_MMC_DAT_0, | ||
GPIO109_MMC_DAT_1, | ||
GPIO110_MMC_DAT_2, | ||
GPIO111_MMC_DAT_3, | ||
GPIO112_MMC_CMD, | ||
GPIO53_GPIO, /* SD detect */ | ||
GPIO52_GPIO, /* SD r/o switch */ | ||
|
||
/* GPIO KEYS */ | ||
GPIO1_GPIO, /* USER BTN */ | ||
|
||
/* LEDs */ | ||
GPIO15_GPIO, /* orange led */ | ||
|
||
/* FFUART */ | ||
GPIO34_FFUART_RXD, | ||
GPIO39_FFUART_TXD, | ||
GPIO27_FFUART_RTS, | ||
GPIO100_FFUART_CTS, | ||
GPIO33_FFUART_DSR, | ||
GPIO40_FFUART_DTR, | ||
GPIO10_FFUART_DCD, | ||
GPIO38_FFUART_RI, | ||
|
||
/* LCD */ | ||
GPIO58_LCD_LDD_0, | ||
GPIO59_LCD_LDD_1, | ||
GPIO60_LCD_LDD_2, | ||
GPIO61_LCD_LDD_3, | ||
GPIO62_LCD_LDD_4, | ||
GPIO63_LCD_LDD_5, | ||
GPIO64_LCD_LDD_6, | ||
GPIO65_LCD_LDD_7, | ||
GPIO66_LCD_LDD_8, | ||
GPIO67_LCD_LDD_9, | ||
GPIO68_LCD_LDD_10, | ||
GPIO69_LCD_LDD_11, | ||
GPIO70_LCD_LDD_12, | ||
GPIO71_LCD_LDD_13, | ||
GPIO72_LCD_LDD_14, | ||
GPIO73_LCD_LDD_15, | ||
GPIO86_LCD_LDD_16, | ||
GPIO87_LCD_LDD_17, | ||
GPIO74_LCD_FCLK, | ||
GPIO75_LCD_LCLK, | ||
GPIO76_LCD_PCLK, | ||
GPIO77_LCD_BIAS, | ||
}; | ||
|
||
/****************************************************************************** | ||
* NOR Flash | ||
******************************************************************************/ | ||
#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE) | ||
static struct mtd_partition vpac270_partitions[] = { | ||
{ | ||
.name = "Flash", | ||
.offset = 0x00000000, | ||
.size = MTDPART_SIZ_FULL, | ||
} | ||
}; | ||
|
||
static struct physmap_flash_data vpac270_flash_data[] = { | ||
{ | ||
.width = 2, /* bankwidth in bytes */ | ||
.parts = vpac270_partitions, | ||
.nr_parts = ARRAY_SIZE(vpac270_partitions) | ||
} | ||
}; | ||
|
||
static struct resource vpac270_flash_resource = { | ||
.start = PXA_CS0_PHYS, | ||
.end = PXA_CS0_PHYS + SZ_64M - 1, | ||
.flags = IORESOURCE_MEM, | ||
}; | ||
|
||
static struct platform_device vpac270_flash = { | ||
.name = "physmap-flash", | ||
.id = 0, | ||
.resource = &vpac270_flash_resource, | ||
.num_resources = 1, | ||
.dev = { | ||
.platform_data = vpac270_flash_data, | ||
}, | ||
}; | ||
static void __init vpac270_nor_init(void) | ||
{ | ||
platform_device_register(&vpac270_flash); | ||
} | ||
#else | ||
static inline void vpac270_nor_init(void) {} | ||
#endif | ||
|
||
/****************************************************************************** | ||
* SD/MMC card controller | ||
******************************************************************************/ | ||
#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE) | ||
static struct pxamci_platform_data vpac270_mci_platform_data = { | ||
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | ||
.gpio_card_detect = GPIO53_VPAC270_SD_DETECT_N, | ||
.gpio_card_ro = GPIO52_VPAC270_SD_READONLY, | ||
.detect_delay = 20, | ||
}; | ||
|
||
static void __init vpac270_mmc_init(void) | ||
{ | ||
pxa_set_mci_info(&vpac270_mci_platform_data); | ||
} | ||
#else | ||
static inline void vpac270_mmc_init(void) {} | ||
#endif | ||
|
||
/****************************************************************************** | ||
* GPIO keys | ||
******************************************************************************/ | ||
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
static struct gpio_keys_button vpac270_pxa_buttons[] = { | ||
{KEY_POWER, GPIO1_VPAC270_USER_BTN, 0, "USER BTN"}, | ||
}; | ||
|
||
static struct gpio_keys_platform_data vpac270_pxa_keys_data = { | ||
.buttons = vpac270_pxa_buttons, | ||
.nbuttons = ARRAY_SIZE(vpac270_pxa_buttons), | ||
}; | ||
|
||
static struct platform_device vpac270_pxa_keys = { | ||
.name = "gpio-keys", | ||
.id = -1, | ||
.dev = { | ||
.platform_data = &vpac270_pxa_keys_data, | ||
}, | ||
}; | ||
|
||
static void __init vpac270_keys_init(void) | ||
{ | ||
platform_device_register(&vpac270_pxa_keys); | ||
} | ||
#else | ||
static inline void vpac270_keys_init(void) {} | ||
#endif | ||
|
||
/****************************************************************************** | ||
* LED | ||
******************************************************************************/ | ||
#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) | ||
struct gpio_led vpac270_gpio_leds[] = { | ||
{ | ||
.name = "vpac270:orange:user", | ||
.default_trigger = "none", | ||
.gpio = GPIO15_VPAC270_LED_ORANGE, | ||
.active_low = 1, | ||
} | ||
}; | ||
|
||
static struct gpio_led_platform_data vpac270_gpio_led_info = { | ||
.leds = vpac270_gpio_leds, | ||
.num_leds = ARRAY_SIZE(vpac270_gpio_leds), | ||
}; | ||
|
||
static struct platform_device vpac270_leds = { | ||
.name = "leds-gpio", | ||
.id = -1, | ||
.dev = { | ||
.platform_data = &vpac270_gpio_led_info, | ||
} | ||
}; | ||
|
||
static void __init vpac270_leds_init(void) | ||
{ | ||
platform_device_register(&vpac270_leds); | ||
} | ||
#else | ||
static inline void vpac270_leds_init(void) {} | ||
#endif | ||
|
||
/****************************************************************************** | ||
* Framebuffer | ||
******************************************************************************/ | ||
#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE) | ||
static struct pxafb_mode_info vpac270_lcd_modes[] = { | ||
{ | ||
.pixclock = 57692, | ||
.xres = 640, | ||
.yres = 480, | ||
.bpp = 32, | ||
.depth = 18, | ||
|
||
.left_margin = 144, | ||
.right_margin = 32, | ||
.upper_margin = 13, | ||
.lower_margin = 30, | ||
|
||
.hsync_len = 32, | ||
.vsync_len = 2, | ||
|
||
.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | ||
}, | ||
}; | ||
|
||
static struct pxafb_mach_info vpac270_lcd_screen = { | ||
.modes = vpac270_lcd_modes, | ||
.num_modes = ARRAY_SIZE(vpac270_lcd_modes), | ||
.lcd_conn = LCD_COLOR_TFT_18BPP, | ||
}; | ||
|
||
static void vpac270_lcd_power(int on, struct fb_var_screeninfo *info) | ||
{ | ||
gpio_set_value(GPIO81_VPAC270_BKL_ON, on); | ||
} | ||
|
||
static void __init vpac270_lcd_init(void) | ||
{ | ||
int ret; | ||
|
||
ret = gpio_request(GPIO81_VPAC270_BKL_ON, "BKL-ON"); | ||
if (ret) { | ||
pr_err("Requesting BKL-ON GPIO failed!\n"); | ||
goto err; | ||
} | ||
|
||
ret = gpio_direction_output(GPIO81_VPAC270_BKL_ON, 1); | ||
if (ret) { | ||
pr_err("Setting BKL-ON GPIO direction failed!\n"); | ||
goto err2; | ||
} | ||
|
||
vpac270_lcd_screen.pxafb_lcd_power = vpac270_lcd_power; | ||
set_pxa_fb_info(&vpac270_lcd_screen); | ||
return; | ||
|
||
err2: | ||
gpio_free(GPIO81_VPAC270_BKL_ON); | ||
err: | ||
return; | ||
} | ||
#else | ||
static inline void vpac270_lcd_init(void) {} | ||
#endif | ||
|
||
/****************************************************************************** | ||
* Machine init | ||
******************************************************************************/ | ||
static void __init vpac270_init(void) | ||
{ | ||
pxa2xx_mfp_config(ARRAY_AND_SIZE(vpac270_pin_config)); | ||
|
||
pxa_set_ffuart_info(NULL); | ||
pxa_set_btuart_info(NULL); | ||
pxa_set_stuart_info(NULL); | ||
|
||
vpac270_lcd_init(); | ||
vpac270_mmc_init(); | ||
vpac270_nor_init(); | ||
vpac270_leds_init(); | ||
vpac270_keys_init(); | ||
} | ||
|
||
MACHINE_START(VPAC270, "Voipac PXA270") | ||
.phys_io = 0x40000000, | ||
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
.boot_params = 0xa0000100, | ||
.map_io = pxa_map_io, | ||
.init_irq = pxa27x_init_irq, | ||
.timer = &pxa_timer, | ||
.init_machine = vpac270_init | ||
MACHINE_END |