Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87fc94d5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'avr32-arch' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:
  avr32: add hardware handshake support to atmel_serial
  avr32: add RTS/CTS/CLK pin selection for the USARTs
  Add RTC support for Merisc boards
  avr32: at32ap700x: setup DMA for AC97C in the machine code
  avr32: at32ap700x: setup DMA for ABDAC in the machine code
  Add Merisc board support
  avr32: use gpio_is_valid() to check USBA vbus_pin I/O line
  atmel-usba-udc: use gpio_is_valid() to check vbus_pin I/O line
  avr32: fix timing LCD parameters for EVKLCD10X boards
  avr32: use GPIO line PB15 on EVKLCD10x boards for backlight
  avr32: configure MCI detect and write protect pins for EVKLCD10x boards
  avr32: set pin mask to alternative 18 bpp for EVKLCD10x boards
  avr32: add pin mask for 18-bit color on the LCD controller
  avr32: fix 15-bit LCDC pin mask to use MSB lines
parents 3516c6a8 8e706c4d
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -144,6 +144,19 @@ config BOARD_FAVR_32
	bool "Favr-32 LCD-board"
	select CPU_AT32AP7000

config BOARD_MERISC
	bool "Merisc board"
	select CPU_AT32AP7000
	help
	  Merisc is the family name for a range of AVR32-based boards.

	  The boards are designed to be used in a man-machine
	  interfacing environment, utilizing a touch-based graphical
	  user interface. They host a vast range of I/O peripherals as
	  well as a large SDRAM & Flash memory bank.

	  For more information see: http://www.martinsson.se/merisc

config BOARD_MIMC200
	bool "MIMC200 CPU board"
	select CPU_AT32AP7000
@@ -153,6 +166,7 @@ source "arch/avr32/boards/atstk1000/Kconfig"
source "arch/avr32/boards/atngw100/Kconfig"
source "arch/avr32/boards/hammerhead/Kconfig"
source "arch/avr32/boards/favr-32/Kconfig"
source "arch/avr32/boards/merisc/Kconfig"

choice
	prompt "Boot loader type"
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/
core-$(CONFIG_BOARD_ATNGW100)		+= arch/avr32/boards/atngw100/
core-$(CONFIG_BOARD_HAMMERHEAD)		+= arch/avr32/boards/hammerhead/
core-$(CONFIG_BOARD_FAVR_32)		+= arch/avr32/boards/favr-32/
core-$(CONFIG_BOARD_MERISC)		+= arch/avr32/boards/merisc/
core-$(CONFIG_BOARD_MIMC200)		+= arch/avr32/boards/mimc200/
core-$(CONFIG_LOADER_U_BOOT)		+= arch/avr32/boot/u-boot/
core-y					+= arch/avr32/kernel/
+34 −16
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@

#include <linux/init.h>
#include <linux/linkage.h>
#include <linux/gpio.h>
#include <linux/fb.h>
#include <linux/platform_device.h>

@@ -19,26 +20,26 @@
#include <asm/setup.h>

#include <mach/at32ap700x.h>
#include <mach/portmux.h>
#include <mach/board.h>

#include <sound/atmel-ac97c.h>

static struct ac97c_platform_data __initdata ac97c0_data = {
	.dma_rx_periph_id	= 3,
	.dma_tx_periph_id	= 4,
	.dma_controller_id	= 0,
	.reset_pin = GPIO_PIN_PB(19),
};

#ifdef CONFIG_BOARD_ATNGW100_EVKLCD10X_VGA
static struct fb_videomode __initdata tcg057vglad_modes[] = {
	{
		.name		= "640x480 @ 60",
		.refresh	= 60,
		.name		= "640x480 @ 50",
		.refresh	= 50,
		.xres		= 640,		.yres		= 480,
		.pixclock	= KHZ2PICOS(25180),

		.left_margin	= 64,		.right_margin	= 31,
		.upper_margin	= 34,		.lower_margin	= 2,
		.hsync_len	= 96,		.vsync_len	= 4,
		.left_margin	= 64,		.right_margin	= 96,
		.upper_margin	= 34,		.lower_margin	= 11,
		.hsync_len	= 64,		.vsync_len	= 15,

		.sync		= 0,
		.vmode		= FB_VMODE_NONINTERLACED,
@@ -69,14 +70,14 @@ static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
#elif CONFIG_BOARD_ATNGW100_EVKLCD10X_QVGA
static struct fb_videomode __initdata tcg057qvlad_modes[] = {
	{
		.name		= "320x240 @ 60",
		.refresh	= 60,
		.name		= "320x240 @ 50",
		.refresh	= 50,
		.xres		= 320,		.yres		= 240,
		.pixclock	= KHZ2PICOS(6300),

		.left_margin	= 52,		.right_margin	= 28,
		.upper_margin	= 7,		.lower_margin	= 2,
		.hsync_len	= 96,		.vsync_len	= 4,
		.left_margin	= 34,		.right_margin	= 46,
		.upper_margin	= 7,		.lower_margin	= 15,
		.hsync_len	= 64,		.vsync_len	= 12,

		.sync		= 0,
		.vmode		= FB_VMODE_NONINTERLACED,
@@ -144,12 +145,29 @@ static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
};
#endif

static void atevklcd10x_lcdc_power_control(int on)
{
	gpio_set_value(GPIO_PIN_PB(15), on);
}

static int __init atevklcd10x_init(void)
{
	at32_add_device_ac97c(0, &ac97c0_data);
	/* PB15 is connected to the enable line on the boost regulator
	 * controlling the backlight for the LCD panel.
	 */
	at32_select_gpio(GPIO_PIN_PB(15), AT32_GPIOF_OUTPUT);
	gpio_request(GPIO_PIN_PB(15), "backlight");
	gpio_direction_output(GPIO_PIN_PB(15), 0);

	atevklcd10x_lcdc_data.atmel_lcdfb_power_control =
		atevklcd10x_lcdc_power_control;

	at32_add_device_lcdc(0, &atevklcd10x_lcdc_data,
			fbmem_start, fbmem_size, 1);
			fbmem_start, fbmem_size,
			ATMEL_LCDC_ALT_18BIT | ATMEL_LCDC_PE_DVAL);

	at32_add_device_ac97c(0, &ac97c0_data, AC97C_BOTH);

	return 0;
}
postcore_initcall(atevklcd10x_init);
+1 −6
Original line number Diff line number Diff line
@@ -56,13 +56,8 @@ static struct spi_board_info spi0_board_info[] __initdata = {
static struct mci_platform_data __initdata mci0_data = {
	.slot[0] = {
		.bus_width	= 4,
#ifndef CONFIG_BOARD_ATNGW100_EVKLCD10X
		.detect_pin	= GPIO_PIN_PC(25),
		.wp_pin		= GPIO_PIN_PE(0),
#else
		.detect_pin	= GPIO_PIN_NONE,
		.wp_pin		= GPIO_PIN_NONE,
#endif
	},
};

@@ -123,7 +118,7 @@ static void __init set_hw_addr(struct platform_device *pdev)

void __init setup_board(void)
{
	at32_map_usart(1, 0);	/* USART 1: /dev/ttyS0, DB9 */
	at32_map_usart(1, 0, 0);	/* USART 1: /dev/ttyS0, DB9 */
	at32_setup_serial_console(0);
}

+3 −3
Original line number Diff line number Diff line
@@ -252,12 +252,12 @@ static void __init atstk1002_setup_extdac(void)
void __init setup_board(void)
{
#ifdef	CONFIG_BOARD_ATSTK100X_SW2_CUSTOM
	at32_map_usart(0, 1);	/* USART 0/B: /dev/ttyS1, IRDA */
	at32_map_usart(0, 1, 0);	/* USART 0/B: /dev/ttyS1, IRDA */
#else
	at32_map_usart(1, 0);	/* USART 1/A: /dev/ttyS0, DB9 */
	at32_map_usart(1, 0, 0);	/* USART 1/A: /dev/ttyS0, DB9 */
#endif
	/* USART 2/unused: expansion connector */
	at32_map_usart(3, 2);	/* USART 3/C: /dev/ttyS2, DB9 */
	at32_map_usart(3, 2, 0);	/* USART 3/C: /dev/ttyS2, DB9 */

	at32_setup_serial_console(0);
}
Loading