forked from torvalds/linux
-
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.
sh: Add support for AP-SH4A-3A board.
This adds preliminary support for the alpha project AP-SH4A-3A reference platform (SH7785 based). Additional paltform information available at: http://www.apnet.co.jp/product/superh/ap-sh4a-3a.html Signed-off-by: Paul Mundt <lethal@linux-sh.org>
- Loading branch information
Showing
5 changed files
with
286 additions
and
0 deletions.
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
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,175 @@ | ||
/* | ||
* ALPHAPROJECT AP-SH4A-3A Support. | ||
* | ||
* Copyright (C) 2010 ALPHAPROJECT Co.,Ltd. | ||
* Copyright (C) 2008 Yoshihiro Shimoda | ||
* Copyright (C) 2009 Paul Mundt | ||
* | ||
* This file is subject to the terms and conditions of the GNU General Public | ||
* License. See the file "COPYING" in the main directory of this archive | ||
* for more details. | ||
*/ | ||
#include <linux/init.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/io.h> | ||
#include <linux/mtd/physmap.h> | ||
#include <linux/smsc911x.h> | ||
#include <linux/irq.h> | ||
#include <linux/clk.h> | ||
#include <asm/machvec.h> | ||
#include <asm/sizes.h> | ||
#include <asm/clock.h> | ||
|
||
static struct mtd_partition nor_flash_partitions[] = { | ||
{ | ||
.name = "loader", | ||
.offset = 0x00000000, | ||
.size = 512 * 1024, | ||
}, | ||
{ | ||
.name = "bootenv", | ||
.offset = MTDPART_OFS_APPEND, | ||
.size = 512 * 1024, | ||
}, | ||
{ | ||
.name = "kernel", | ||
.offset = MTDPART_OFS_APPEND, | ||
.size = 4 * 1024 * 1024, | ||
}, | ||
{ | ||
.name = "data", | ||
.offset = MTDPART_OFS_APPEND, | ||
.size = MTDPART_SIZ_FULL, | ||
}, | ||
}; | ||
|
||
static struct physmap_flash_data nor_flash_data = { | ||
.width = 4, | ||
.parts = nor_flash_partitions, | ||
.nr_parts = ARRAY_SIZE(nor_flash_partitions), | ||
}; | ||
|
||
static struct resource nor_flash_resources[] = { | ||
[0] = { | ||
.start = 0x00000000, | ||
.end = 0x01000000 - 1, | ||
.flags = IORESOURCE_MEM, | ||
} | ||
}; | ||
|
||
static struct platform_device nor_flash_device = { | ||
.name = "physmap-flash", | ||
.dev = { | ||
.platform_data = &nor_flash_data, | ||
}, | ||
.num_resources = ARRAY_SIZE(nor_flash_resources), | ||
.resource = nor_flash_resources, | ||
}; | ||
|
||
static struct resource smsc911x_resources[] = { | ||
[0] = { | ||
.name = "smsc911x-memory", | ||
.start = 0xA4000000, | ||
.end = 0xA4000000 + SZ_256 - 1, | ||
.flags = IORESOURCE_MEM, | ||
}, | ||
[1] = { | ||
.name = "smsc911x-irq", | ||
.start = evt2irq(0x200), | ||
.end = evt2irq(0x200), | ||
.flags = IORESOURCE_IRQ, | ||
}, | ||
}; | ||
|
||
static struct smsc911x_platform_config smsc911x_config = { | ||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, | ||
.irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN, | ||
.flags = SMSC911X_USE_16BIT, | ||
.phy_interface = PHY_INTERFACE_MODE_MII, | ||
}; | ||
|
||
static struct platform_device smsc911x_device = { | ||
.name = "smsc911x", | ||
.id = -1, | ||
.num_resources = ARRAY_SIZE(smsc911x_resources), | ||
.resource = smsc911x_resources, | ||
.dev = { | ||
.platform_data = &smsc911x_config, | ||
}, | ||
}; | ||
|
||
static struct platform_device *apsh4a3a_devices[] __initdata = { | ||
&nor_flash_device, | ||
&smsc911x_device, | ||
}; | ||
|
||
static int __init apsh4a3a_devices_setup(void) | ||
{ | ||
return platform_add_devices(apsh4a3a_devices, | ||
ARRAY_SIZE(apsh4a3a_devices)); | ||
} | ||
device_initcall(apsh4a3a_devices_setup); | ||
|
||
static int apsh4a3a_clk_init(void) | ||
{ | ||
struct clk *clk; | ||
int ret; | ||
|
||
clk = clk_get(NULL, "extal"); | ||
if (!clk || IS_ERR(clk)) | ||
return PTR_ERR(clk); | ||
ret = clk_set_rate(clk, 33333000); | ||
clk_put(clk); | ||
|
||
return ret; | ||
} | ||
|
||
/* Initialize the board */ | ||
static void __init apsh4a3a_setup(char **cmdline_p) | ||
{ | ||
printk(KERN_INFO "Alpha Project AP-SH4A-3A support:\n"); | ||
} | ||
|
||
static void __init apsh4a3a_init_irq(void) | ||
{ | ||
plat_irq_setup_pins(IRQ_MODE_IRQ7654); | ||
} | ||
|
||
/* Return the board specific boot mode pin configuration */ | ||
static int apsh4a3a_mode_pins(void) | ||
{ | ||
int value = 0; | ||
|
||
/* These are the factory default settings of SW1 and SW2. | ||
* If you change these dip switches then you will need to | ||
* adjust the values below as well. | ||
*/ | ||
value &= ~MODE_PIN0; /* Clock Mode 16 */ | ||
value &= ~MODE_PIN1; | ||
value &= ~MODE_PIN2; | ||
value &= ~MODE_PIN3; | ||
value |= MODE_PIN4; | ||
value &= ~MODE_PIN5; /* 16-bit Area0 bus width */ | ||
value |= MODE_PIN6; /* Area 0 SRAM interface */ | ||
value |= MODE_PIN7; | ||
value |= MODE_PIN8; /* Little Endian */ | ||
value |= MODE_PIN9; /* Master Mode */ | ||
value |= MODE_PIN10; /* Crystal resonator */ | ||
value |= MODE_PIN11; /* Display Unit */ | ||
value |= MODE_PIN12; | ||
value &= ~MODE_PIN13; /* 29-bit address mode */ | ||
value |= MODE_PIN14; /* No PLL step-up */ | ||
|
||
return value; | ||
} | ||
|
||
/* | ||
* The Machine Vector | ||
*/ | ||
static struct sh_machine_vector mv_apsh4a3a __initmv = { | ||
.mv_name = "AP-SH4A-3A", | ||
.mv_setup = apsh4a3a_setup, | ||
.mv_clk_init = apsh4a3a_clk_init, | ||
.mv_init_irq = apsh4a3a_init_irq, | ||
.mv_mode_pins = apsh4a3a_mode_pins, | ||
}; |
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,102 @@ | ||
CONFIG_EXPERIMENTAL=y | ||
CONFIG_SYSVIPC=y | ||
CONFIG_BSD_PROCESS_ACCT=y | ||
CONFIG_IKCONFIG=y | ||
CONFIG_IKCONFIG_PROC=y | ||
CONFIG_LOG_BUF_SHIFT=14 | ||
CONFIG_SYSFS_DEPRECATED=y | ||
CONFIG_SYSFS_DEPRECATED_V2=y | ||
CONFIG_BLK_DEV_INITRD=y | ||
CONFIG_SLAB=y | ||
CONFIG_PROFILING=y | ||
CONFIG_MODULES=y | ||
CONFIG_MODULE_UNLOAD=y | ||
# CONFIG_BLK_DEV_BSG is not set | ||
CONFIG_CPU_SUBTYPE_SH7785=y | ||
CONFIG_MEMORY_START=0x0C000000 | ||
CONFIG_FLATMEM_MANUAL=y | ||
CONFIG_SH_STORE_QUEUES=y | ||
CONFIG_SH_APSH4A3A=y | ||
CONFIG_HIGH_RES_TIMERS=y | ||
CONFIG_KEXEC=y | ||
CONFIG_PREEMPT=y | ||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
CONFIG_NET=y | ||
CONFIG_PACKET=y | ||
CONFIG_UNIX=y | ||
CONFIG_INET=y | ||
CONFIG_IP_ADVANCED_ROUTER=y | ||
CONFIG_IP_PNP=y | ||
CONFIG_IP_PNP_DHCP=y | ||
# CONFIG_INET_LRO is not set | ||
# CONFIG_IPV6 is not set | ||
# CONFIG_WIRELESS is not set | ||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
# CONFIG_FW_LOADER is not set | ||
CONFIG_MTD=y | ||
CONFIG_MTD_CONCAT=y | ||
CONFIG_MTD_PARTITIONS=y | ||
CONFIG_MTD_CHAR=y | ||
CONFIG_MTD_BLOCK=y | ||
CONFIG_MTD_CFI=y | ||
CONFIG_MTD_CFI_AMDSTD=y | ||
CONFIG_MTD_PHYSMAP=y | ||
CONFIG_BLK_DEV_RAM=y | ||
CONFIG_BLK_DEV_RAM_SIZE=16384 | ||
CONFIG_NETDEVICES=y | ||
CONFIG_NET_ETHERNET=y | ||
CONFIG_SMSC911X=y | ||
# CONFIG_NETDEV_1000 is not set | ||
# CONFIG_NETDEV_10000 is not set | ||
# CONFIG_WLAN is not set | ||
# CONFIG_INPUT_MOUSEDEV is not set | ||
# CONFIG_INPUT_KEYBOARD is not set | ||
# CONFIG_INPUT_MOUSE is not set | ||
# CONFIG_SERIO is not set | ||
CONFIG_VT_HW_CONSOLE_BINDING=y | ||
CONFIG_SERIAL_SH_SCI=y | ||
CONFIG_SERIAL_SH_SCI_NR_UARTS=6 | ||
CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||
CONFIG_HW_RANDOM=y | ||
# CONFIG_HWMON is not set | ||
CONFIG_FB=y | ||
CONFIG_FB_SH7785FB=y | ||
CONFIG_FRAMEBUFFER_CONSOLE=y | ||
CONFIG_FONTS=y | ||
CONFIG_FONT_8x8=y | ||
CONFIG_FONT_8x16=y | ||
CONFIG_LOGO=y | ||
# CONFIG_HID_SUPPORT is not set | ||
# CONFIG_USB_SUPPORT is not set | ||
CONFIG_EXT2_FS=y | ||
CONFIG_EXT3_FS=y | ||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
CONFIG_MSDOS_FS=y | ||
CONFIG_VFAT_FS=y | ||
CONFIG_NTFS_FS=y | ||
CONFIG_NTFS_RW=y | ||
CONFIG_PROC_KCORE=y | ||
CONFIG_TMPFS=y | ||
CONFIG_JFFS2_FS=y | ||
CONFIG_CRAMFS=y | ||
CONFIG_NFS_FS=y | ||
CONFIG_NFS_V3=y | ||
CONFIG_NFS_V4=y | ||
CONFIG_CIFS=y | ||
CONFIG_NLS_DEFAULT="utf8" | ||
CONFIG_NLS_CODEPAGE_437=y | ||
CONFIG_NLS_CODEPAGE_932=y | ||
CONFIG_NLS_ASCII=y | ||
CONFIG_NLS_ISO8859_1=y | ||
CONFIG_NLS_UTF8=y | ||
# CONFIG_ENABLE_WARN_DEPRECATED is not set | ||
# CONFIG_ENABLE_MUST_CHECK is not set | ||
CONFIG_DEBUG_FS=y | ||
CONFIG_DEBUG_KERNEL=y | ||
# CONFIG_DEBUG_PREEMPT is not set | ||
# CONFIG_DEBUG_BUGVERBOSE is not set | ||
CONFIG_DEBUG_INFO=y | ||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
# CONFIG_FTRACE is not set | ||
# CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
# CONFIG_CRYPTO_HW is not set |
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 |
---|---|---|
|
@@ -62,3 +62,4 @@ ESPT SH_ESPT | |
POLARIS SH_POLARIS | ||
KFR2R09 SH_KFR2R09 | ||
ECOVEC SH_ECOVEC | ||
APSH4A3A SH_APSH4A3A |