Merge branch 'devel-misc' into omap-for-linus
This commit is contained in:
@@ -122,11 +122,7 @@ static struct omap_smc91x_platform_data board_smc91x_data = {
|
||||
|
||||
static void __init board_smc91x_init(void)
|
||||
{
|
||||
if (omap_rev() > OMAP3430_REV_ES1_0)
|
||||
board_smc91x_data.gpio_irq = 6;
|
||||
else
|
||||
board_smc91x_data.gpio_irq = 29;
|
||||
|
||||
omap_mux_init_gpio(149, OMAP_PIN_INPUT);
|
||||
gpmc_smc91x_init(&board_smc91x_data);
|
||||
}
|
||||
|
||||
|
@@ -33,6 +33,7 @@
|
||||
#include <linux/i2c/twl.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/id.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
@@ -556,6 +557,9 @@ static struct platform_device omap_dm9000_dev = {
|
||||
|
||||
static void __init omap_dm9000_init(void)
|
||||
{
|
||||
unsigned char *eth_addr = omap_dm9000_platdata.dev_addr;
|
||||
struct omap_die_id odi;
|
||||
|
||||
if (gpio_request(OMAP_DM9000_GPIO_IRQ, "dm9000 irq") < 0) {
|
||||
printk(KERN_ERR "Failed to request GPIO%d for dm9000 IRQ\n",
|
||||
OMAP_DM9000_GPIO_IRQ);
|
||||
@@ -563,6 +567,16 @@ static void __init omap_dm9000_init(void)
|
||||
}
|
||||
|
||||
gpio_direction_input(OMAP_DM9000_GPIO_IRQ);
|
||||
|
||||
/* init the mac address using DIE id */
|
||||
omap_get_die_id(&odi);
|
||||
|
||||
eth_addr[0] = 0x02; /* locally administered */
|
||||
eth_addr[1] = odi.id_1 & 0xff;
|
||||
eth_addr[2] = (odi.id_0 & 0xff000000) >> 24;
|
||||
eth_addr[3] = (odi.id_0 & 0x00ff0000) >> 16;
|
||||
eth_addr[4] = (odi.id_0 & 0x0000ff00) >> 8;
|
||||
eth_addr[5] = (odi.id_0 & 0x000000ff);
|
||||
}
|
||||
|
||||
static struct platform_device *devkit8000_devices[] __initdata = {
|
||||
|
@@ -166,9 +166,26 @@ static struct platform_device overo_smsc911x_device = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device overo_smsc911x2_device = {
|
||||
.name = "smsc911x",
|
||||
.id = 1,
|
||||
.num_resources = ARRAY_SIZE(overo_smsc911x2_resources),
|
||||
.resource = overo_smsc911x2_resources,
|
||||
.dev = {
|
||||
.platform_data = &overo_smsc911x_config,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *smsc911x_devices[] = {
|
||||
&overo_smsc911x_device,
|
||||
&overo_smsc911x2_device,
|
||||
};
|
||||
|
||||
static inline void __init overo_init_smsc911x(void)
|
||||
{
|
||||
unsigned long cs_mem_base;
|
||||
unsigned long cs_mem_base, cs_mem_base2;
|
||||
|
||||
/* set up first smsc911x chip */
|
||||
|
||||
if (gpmc_cs_request(OVERO_SMSC911X_CS, SZ_16M, &cs_mem_base) < 0) {
|
||||
printk(KERN_ERR "Failed request for GPMC mem for smsc911x\n");
|
||||
@@ -189,7 +206,28 @@ static inline void __init overo_init_smsc911x(void)
|
||||
overo_smsc911x_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X_GPIO);
|
||||
overo_smsc911x_resources[1].end = 0;
|
||||
|
||||
platform_device_register(&overo_smsc911x_device);
|
||||
/* set up second smsc911x chip */
|
||||
|
||||
if (gpmc_cs_request(OVERO_SMSC911X2_CS, SZ_16M, &cs_mem_base2) < 0) {
|
||||
printk(KERN_ERR "Failed request for GPMC mem for smsc911x2\n");
|
||||
return;
|
||||
}
|
||||
|
||||
overo_smsc911x2_resources[0].start = cs_mem_base2 + 0x0;
|
||||
overo_smsc911x2_resources[0].end = cs_mem_base2 + 0xff;
|
||||
|
||||
if ((gpio_request(OVERO_SMSC911X2_GPIO, "SMSC911X2 IRQ") == 0) &&
|
||||
(gpio_direction_input(OVERO_SMSC911X2_GPIO) == 0)) {
|
||||
gpio_export(OVERO_SMSC911X2_GPIO, 0);
|
||||
} else {
|
||||
printk(KERN_ERR "could not obtain gpio for SMSC911X2 IRQ\n");
|
||||
return;
|
||||
}
|
||||
|
||||
overo_smsc911x2_resources[1].start = OMAP_GPIO_IRQ(OVERO_SMSC911X2_GPIO);
|
||||
overo_smsc911x2_resources[1].end = 0;
|
||||
|
||||
platform_add_devices(smsc911x_devices, ARRAY_SIZE(smsc911x_devices));
|
||||
}
|
||||
|
||||
#else
|
||||
|
@@ -185,6 +185,10 @@ static void __init rx51_add_gpio_keys(void)
|
||||
#endif /* CONFIG_KEYBOARD_GPIO || CONFIG_KEYBOARD_GPIO_MODULE */
|
||||
|
||||
static int board_keymap[] = {
|
||||
/*
|
||||
* Note that KEY(x, 8, KEY_XXX) entries represent "entrire row
|
||||
* connected to the ground" matrix state.
|
||||
*/
|
||||
KEY(0, 0, KEY_Q),
|
||||
KEY(0, 1, KEY_O),
|
||||
KEY(0, 2, KEY_P),
|
||||
@@ -192,6 +196,7 @@ static int board_keymap[] = {
|
||||
KEY(0, 4, KEY_BACKSPACE),
|
||||
KEY(0, 6, KEY_A),
|
||||
KEY(0, 7, KEY_S),
|
||||
|
||||
KEY(1, 0, KEY_W),
|
||||
KEY(1, 1, KEY_D),
|
||||
KEY(1, 2, KEY_F),
|
||||
@@ -200,6 +205,7 @@ static int board_keymap[] = {
|
||||
KEY(1, 5, KEY_J),
|
||||
KEY(1, 6, KEY_K),
|
||||
KEY(1, 7, KEY_L),
|
||||
|
||||
KEY(2, 0, KEY_E),
|
||||
KEY(2, 1, KEY_DOT),
|
||||
KEY(2, 2, KEY_UP),
|
||||
@@ -207,6 +213,8 @@ static int board_keymap[] = {
|
||||
KEY(2, 5, KEY_Z),
|
||||
KEY(2, 6, KEY_X),
|
||||
KEY(2, 7, KEY_C),
|
||||
KEY(2, 8, KEY_F9),
|
||||
|
||||
KEY(3, 0, KEY_R),
|
||||
KEY(3, 1, KEY_V),
|
||||
KEY(3, 2, KEY_B),
|
||||
@@ -215,20 +223,23 @@ static int board_keymap[] = {
|
||||
KEY(3, 5, KEY_SPACE),
|
||||
KEY(3, 6, KEY_SPACE),
|
||||
KEY(3, 7, KEY_LEFT),
|
||||
|
||||
KEY(4, 0, KEY_T),
|
||||
KEY(4, 1, KEY_DOWN),
|
||||
KEY(4, 2, KEY_RIGHT),
|
||||
KEY(4, 4, KEY_LEFTCTRL),
|
||||
KEY(4, 5, KEY_RIGHTALT),
|
||||
KEY(4, 6, KEY_LEFTSHIFT),
|
||||
KEY(4, 8, KEY_F10),
|
||||
|
||||
KEY(5, 0, KEY_Y),
|
||||
KEY(5, 8, KEY_F11),
|
||||
|
||||
KEY(6, 0, KEY_U),
|
||||
|
||||
KEY(7, 0, KEY_I),
|
||||
KEY(7, 1, KEY_F7),
|
||||
KEY(7, 2, KEY_F8),
|
||||
KEY(0xff, 2, KEY_F9),
|
||||
KEY(0xff, 4, KEY_F10),
|
||||
KEY(0xff, 5, KEY_F11),
|
||||
};
|
||||
|
||||
static struct matrix_keymap_data board_map_data = {
|
||||
|
@@ -25,6 +25,8 @@
|
||||
#include <plat/control.h>
|
||||
#include <plat/cpu.h>
|
||||
|
||||
#include <mach/id.h>
|
||||
|
||||
static struct omap_chip_id omap_chip;
|
||||
static unsigned int omap_revision;
|
||||
|
||||
@@ -102,30 +104,36 @@ static struct omap_id omap_ids[] __initdata = {
|
||||
static void __iomem *tap_base;
|
||||
static u16 tap_prod_id;
|
||||
|
||||
void __init omap24xx_check_revision(void)
|
||||
void omap_get_die_id(struct omap_die_id *odi)
|
||||
{
|
||||
odi->id_0 = read_tap_reg(OMAP_TAP_DIE_ID_0);
|
||||
odi->id_1 = read_tap_reg(OMAP_TAP_DIE_ID_1);
|
||||
odi->id_2 = read_tap_reg(OMAP_TAP_DIE_ID_2);
|
||||
odi->id_3 = read_tap_reg(OMAP_TAP_DIE_ID_3);
|
||||
}
|
||||
|
||||
static void __init omap24xx_check_revision(void)
|
||||
{
|
||||
int i, j;
|
||||
u32 idcode, prod_id;
|
||||
u16 hawkeye;
|
||||
u8 dev_type, rev;
|
||||
struct omap_die_id odi;
|
||||
|
||||
idcode = read_tap_reg(OMAP_TAP_IDCODE);
|
||||
prod_id = read_tap_reg(tap_prod_id);
|
||||
hawkeye = (idcode >> 12) & 0xffff;
|
||||
rev = (idcode >> 28) & 0x0f;
|
||||
dev_type = (prod_id >> 16) & 0x0f;
|
||||
omap_get_die_id(&odi);
|
||||
|
||||
pr_debug("OMAP_TAP_IDCODE 0x%08x REV %i HAWKEYE 0x%04x MANF %03x\n",
|
||||
idcode, rev, hawkeye, (idcode >> 1) & 0x7ff);
|
||||
pr_debug("OMAP_TAP_DIE_ID_0: 0x%08x\n",
|
||||
read_tap_reg(OMAP_TAP_DIE_ID_0));
|
||||
pr_debug("OMAP_TAP_DIE_ID_0: 0x%08x\n", odi.id_0);
|
||||
pr_debug("OMAP_TAP_DIE_ID_1: 0x%08x DEV_REV: %i\n",
|
||||
read_tap_reg(OMAP_TAP_DIE_ID_1),
|
||||
(read_tap_reg(OMAP_TAP_DIE_ID_1) >> 28) & 0xf);
|
||||
pr_debug("OMAP_TAP_DIE_ID_2: 0x%08x\n",
|
||||
read_tap_reg(OMAP_TAP_DIE_ID_2));
|
||||
pr_debug("OMAP_TAP_DIE_ID_3: 0x%08x\n",
|
||||
read_tap_reg(OMAP_TAP_DIE_ID_3));
|
||||
odi.id_1, (odi.id_1 >> 28) & 0xf);
|
||||
pr_debug("OMAP_TAP_DIE_ID_2: 0x%08x\n", odi.id_2);
|
||||
pr_debug("OMAP_TAP_DIE_ID_3: 0x%08x\n", odi.id_3);
|
||||
pr_debug("OMAP_TAP_PROD_ID_0: 0x%08x DEV_TYPE: %i\n",
|
||||
prod_id, dev_type);
|
||||
|
||||
@@ -164,7 +172,7 @@ void __init omap24xx_check_revision(void)
|
||||
omap3_features |= OMAP3_HAS_ ##feat; \
|
||||
}
|
||||
|
||||
void __init omap3_check_features(void)
|
||||
static void __init omap3_check_features(void)
|
||||
{
|
||||
u32 status;
|
||||
|
||||
@@ -179,6 +187,8 @@ void __init omap3_check_features(void)
|
||||
OMAP3_CHECK_FEATURE(status, ISP);
|
||||
if (cpu_is_omap3630())
|
||||
omap3_features |= OMAP3_HAS_192MHZ_CLK;
|
||||
if (!cpu_is_omap3505() && !cpu_is_omap3517())
|
||||
omap3_features |= OMAP3_HAS_IO_WAKEUP;
|
||||
|
||||
/*
|
||||
* TODO: Get additional info (where applicable)
|
||||
@@ -186,7 +196,7 @@ void __init omap3_check_features(void)
|
||||
*/
|
||||
}
|
||||
|
||||
void __init omap3_check_revision(void)
|
||||
static void __init omap3_check_revision(void)
|
||||
{
|
||||
u32 cpuid, idcode;
|
||||
u16 hawkeye;
|
||||
@@ -267,7 +277,7 @@ void __init omap3_check_revision(void)
|
||||
}
|
||||
}
|
||||
|
||||
void __init omap4_check_revision(void)
|
||||
static void __init omap4_check_revision(void)
|
||||
{
|
||||
u32 idcode;
|
||||
u16 hawkeye;
|
||||
@@ -297,7 +307,7 @@ void __init omap4_check_revision(void)
|
||||
if (omap3_has_ ##feat()) \
|
||||
printk(#feat" ");
|
||||
|
||||
void __init omap3_cpuinfo(void)
|
||||
static void __init omap3_cpuinfo(void)
|
||||
{
|
||||
u8 rev = GET_OMAP_REVISION();
|
||||
char cpu_name[16], cpu_rev[16];
|
||||
|
22
arch/arm/mach-omap2/include/mach/id.h
Normal file
22
arch/arm/mach-omap2/include/mach/id.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* OMAP2 CPU identification code
|
||||
*
|
||||
* Copyright (C) 2010 Kan-Ru Chen <kanru@0xlab.org>
|
||||
*
|
||||
* 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 OMAP2_ARCH_ID_H
|
||||
#define OMAP2_ARCH_ID_H
|
||||
|
||||
struct omap_die_id {
|
||||
u32 id_0;
|
||||
u32 id_1;
|
||||
u32 id_2;
|
||||
u32 id_3;
|
||||
};
|
||||
|
||||
void omap_get_die_id(struct omap_die_id *odi);
|
||||
|
||||
#endif
|
@@ -385,8 +385,9 @@ void omap_sram_idle(void)
|
||||
/* Enable IO-PAD and IO-CHAIN wakeups */
|
||||
per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
|
||||
core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
|
||||
if (per_next_state < PWRDM_POWER_ON ||
|
||||
core_next_state < PWRDM_POWER_ON) {
|
||||
if (omap3_has_io_wakeup() && \
|
||||
(per_next_state < PWRDM_POWER_ON ||
|
||||
core_next_state < PWRDM_POWER_ON)) {
|
||||
prm_set_mod_reg_bits(OMAP3430_EN_IO_MASK, WKUP_MOD, PM_WKEN);
|
||||
omap3_enable_io_chain();
|
||||
}
|
||||
@@ -479,7 +480,7 @@ void omap_sram_idle(void)
|
||||
}
|
||||
|
||||
/* Disable IO-PAD and IO-CHAIN wakeup */
|
||||
if (core_next_state < PWRDM_POWER_ON) {
|
||||
if (omap3_has_io_wakeup() && core_next_state < PWRDM_POWER_ON) {
|
||||
prm_clear_mod_reg_bits(OMAP3430_EN_IO_MASK, WKUP_MOD, PM_WKEN);
|
||||
omap3_disable_io_chain();
|
||||
}
|
||||
|
Reference in New Issue
Block a user