Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 117569
b: refs/heads/master
c: d921455
h: refs/heads/master
i:
  117567: 309c637
v: v3
  • Loading branch information
Haavard Skinnemoen committed Oct 23, 2008
1 parent 7f3bc77 commit d654ba1
Show file tree
Hide file tree
Showing 20 changed files with 6,020 additions and 4 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: e82c6106b04b85879d802bbbeaed30d9b10a92e2
refs/heads/master: d9214556b11a8d18ff588e60824c12041d30f791
12 changes: 10 additions & 2 deletions trunk/arch/avr32/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,19 @@ config BOARD_ATSTK1000
config BOARD_ATNGW100
bool "ATNGW100 Network Gateway"
select CPU_AT32AP7000

config BOARD_FAVR_32
bool "Favr-32 LCD-board"
select CPU_AT32AP7000

config BOARD_MIMC200
bool "MIMC200 CPU board"
select CPU_AT32AP7000
endchoice

if BOARD_ATSTK1000
source "arch/avr32/boards/atstk1000/Kconfig"
endif
source "arch/avr32/boards/atngw100/Kconfig"
source "arch/avr32/boards/favr-32/Kconfig"

choice
prompt "Boot loader type"
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/avr32/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ head-y += arch/avr32/kernel/head.o
core-y += $(machdirs)
core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/
core-$(CONFIG_BOARD_ATNGW100) += arch/avr32/boards/atngw100/
core-$(CONFIG_BOARD_FAVR_32) += arch/avr32/boards/favr-32/
core-$(CONFIG_BOARD_MIMC200) += arch/avr32/boards/mimc200/
core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
core-y += arch/avr32/kernel/
core-y += arch/avr32/mm/
Expand Down
35 changes: 35 additions & 0 deletions trunk/arch/avr32/boards/atngw100/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# NGW100 customization

if BOARD_ATNGW100

config BOARD_ATNGW100_EVKLCD10X
bool "Add support for EVKLCD10X addon board"
help
This enables support for the EVKLCD100 (QVGA) or EVKLCD101 (VGA)
addon board for the NGW100. By enabling this the LCD controller and
AC97 controller is added as platform devices.

This choice disables the detect pin and the write-protect pin for the
MCI platform device, since it conflicts with the LCD platform device.
The MCI pins can be reenabled by editing the "add device function" but
this may break the setup for other displays that use these pins.

Choose 'Y' here if you have a EVKLCD100/101 connected to the NGW100.

choice
prompt "LCD panel resolution on EVKLCD10X"
depends on BOARD_ATNGW100_EVKLCD10X
default BOARD_ATNGW100_EVKLCD10X_VGA

config BOARD_ATNGW100_EVKLCD10X_QVGA
bool "QVGA (320x240)"

config BOARD_ATNGW100_EVKLCD10X_VGA
bool "VGA (640x480)"

config BOARD_ATNGW100_EVKLCD10X_POW_QVGA
bool "Powertip QVGA (320x240)"

endchoice

endif # BOARD_ATNGW100
3 changes: 2 additions & 1 deletion trunk/arch/avr32/boards/atngw100/Makefile
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
obj-y += setup.o flash.o
obj-y += setup.o flash.o
obj-$(CONFIG_BOARD_ATNGW100_EVKLCD10X) += evklcd10x.o
155 changes: 155 additions & 0 deletions trunk/arch/avr32/boards/atngw100/evklcd10x.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
/*
* Board-specific setup code for the ATEVKLCD10X addon board to the ATNGW100
* Network Gateway
*
* Copyright (C) 2008 Atmel Corporation
*
* 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/init.h>
#include <linux/linkage.h>
#include <linux/fb.h>
#include <linux/platform_device.h>

#include <video/atmel_lcdc.h>

#include <asm/setup.h>

#include <mach/at32ap700x.h>
#include <mach/board.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,
.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,

.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
},
};

static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
.manufacturer = "KYO",
.monitor = "TCG057VGLAD",
.modedb = tcg057vglad_modes,
.modedb_len = ARRAY_SIZE(tcg057vglad_modes),
.hfmin = 19948,
.hfmax = 31478,
.vfmin = 50,
.vfmax = 67,
.dclkmax = 28330000,
};

static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
.default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
| ATMEL_LCDC_MEMOR_BIG),
.default_monspecs = &atevklcd10x_default_monspecs,
.guard_time = 2,
};
#elif CONFIG_BOARD_ATNGW100_EVKLCD10X_QVGA
static struct fb_videomode __initdata tcg057qvlad_modes[] = {
{
.name = "320x240 @ 60",
.refresh = 60,
.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,

.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
},
};

static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
.manufacturer = "KYO",
.monitor = "TCG057QVLAD",
.modedb = tcg057qvlad_modes,
.modedb_len = ARRAY_SIZE(tcg057qvlad_modes),
.hfmin = 19948,
.hfmax = 31478,
.vfmin = 50,
.vfmax = 67,
.dclkmax = 7000000,
};

static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
.default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
| ATMEL_LCDC_MEMOR_BIG),
.default_monspecs = &atevklcd10x_default_monspecs,
.guard_time = 2,
};
#elif CONFIG_BOARD_ATNGW100_EVKLCD10X_POW_QVGA
static struct fb_videomode __initdata ph320240t_modes[] = {
{
.name = "320x240 @ 60",
.refresh = 60,
.xres = 320, .yres = 240,
.pixclock = KHZ2PICOS(6300),

.left_margin = 38, .right_margin = 20,
.upper_margin = 15, .lower_margin = 5,
.hsync_len = 30, .vsync_len = 3,

.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
},
};

static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
.manufacturer = "POW",
.monitor = "PH320240T",
.modedb = ph320240t_modes,
.modedb_len = ARRAY_SIZE(ph320240t_modes),
.hfmin = 14400,
.hfmax = 21600,
.vfmin = 50,
.vfmax = 90,
.dclkmax = 6400000,
};

static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
.default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
| ATMEL_LCDC_MEMOR_BIG),
.default_monspecs = &atevklcd10x_default_monspecs,
.guard_time = 2,
};
#endif

static int __init atevklcd10x_init(void)
{
at32_add_device_ac97c(0, &ac97c0_data);

at32_add_device_lcdc(0, &atevklcd10x_lcdc_data,
fbmem_start, fbmem_size, 1);
return 0;
}
postcore_initcall(atevklcd10x_init);
5 changes: 5 additions & 0 deletions trunk/arch/avr32/boards/atngw100/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,13 @@ 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
},
};

Expand Down
22 changes: 22 additions & 0 deletions trunk/arch/avr32/boards/favr-32/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Favr-32 customization

if BOARD_FAVR_32

config BOARD_FAVR32_ABDAC_RATE
int "DAC target rate"
default 44100
range 32000 50000
help
Specify the target rate the internal DAC should try to match. This
will use PLL1 to generate a frequency as close as possible to this
rate.

Must be within the range 32000 to 50000, which should be suitable to
generate most other frequencies in power of 2 steps.

Ex:
48000 will also suit 24000 and 12000
44100 will also suit 22050 and 11025
32000 will also suit 16000 and 8000

endif # BOARD_FAVR_32
1 change: 1 addition & 0 deletions trunk/arch/avr32/boards/favr-32/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
obj-y += setup.o flash.o
98 changes: 98 additions & 0 deletions trunk/arch/avr32/boards/favr-32/flash.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/*
* Favr-32 board-specific flash initialization
*
* Copyright (C) 2008 Atmel Corporation
*
* 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/init.h>
#include <linux/platform_device.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/physmap.h>

#include <asm/arch/smc.h>

static struct smc_timing flash_timing __initdata = {
.ncs_read_setup = 0,
.nrd_setup = 40,
.ncs_write_setup = 0,
.nwe_setup = 10,

.ncs_read_pulse = 80,
.nrd_pulse = 40,
.ncs_write_pulse = 65,
.nwe_pulse = 55,

.read_cycle = 120,
.write_cycle = 120,
};

static struct smc_config flash_config __initdata = {
.bus_width = 2,
.nrd_controlled = 1,
.nwe_controlled = 1,
.byte_write = 1,
};

static struct mtd_partition flash_parts[] = {
{
.name = "u-boot",
.offset = 0x00000000,
.size = 0x00020000, /* 128 KiB */
.mask_flags = MTD_WRITEABLE,
},
{
.name = "root",
.offset = 0x00020000,
.size = 0x007d0000,
},
{
.name = "env",
.offset = 0x007f0000,
.size = 0x00010000,
.mask_flags = MTD_WRITEABLE,
},
};

static struct physmap_flash_data flash_data = {
.width = 2,
.nr_parts = ARRAY_SIZE(flash_parts),
.parts = flash_parts,
};

static struct resource flash_resource = {
.start = 0x00000000,
.end = 0x007fffff,
.flags = IORESOURCE_MEM,
};

static struct platform_device flash_device = {
.name = "physmap-flash",
.id = 0,
.resource = &flash_resource,
.num_resources = 1,
.dev = {
.platform_data = &flash_data,
},
};

/* This needs to be called after the SMC has been initialized */
static int __init favr32_flash_init(void)
{
int ret;

smc_set_timing(&flash_config, &flash_timing);
ret = smc_set_configuration(0, &flash_config);
if (ret < 0) {
printk(KERN_ERR "Favr-32: failed to set NOR flash timing\n");
return ret;
}

platform_device_register(&flash_device);

return 0;
}
device_initcall(favr32_flash_init);
Loading

0 comments on commit d654ba1

Please sign in to comment.