Merge branch 'omap3-upstream' into for-next
Conflicts: arch/arm/mach-omap2/serial.c
This commit is contained in:
commit
970a724d91
|
@ -41,6 +41,7 @@
|
|||
#include <mach/keypad.h>
|
||||
#include <mach/gpmc-smc91x.h>
|
||||
|
||||
#include "sdram-qimonda-hyb18m512160af-6.h"
|
||||
#include "mmc-twl4030.h"
|
||||
|
||||
#define CONFIG_DISABLE_HFCLK 1
|
||||
|
@ -168,7 +169,7 @@ static struct platform_device *sdp3430_devices[] __initdata = {
|
|||
|
||||
static void __init omap_3430sdp_init_irq(void)
|
||||
{
|
||||
omap2_init_common_hw(NULL);
|
||||
omap2_init_common_hw(hyb18m512160af6_sdrc_params);
|
||||
omap_init_irq();
|
||||
omap_gpio_init();
|
||||
}
|
||||
|
|
|
@ -16,11 +16,13 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/ads7846.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/i2c/twl4030.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/smsc911x.h>
|
||||
|
@ -39,6 +41,7 @@
|
|||
#include <asm/delay.h>
|
||||
#include <mach/control.h>
|
||||
#include <mach/usb.h>
|
||||
#include <mach/keypad.h>
|
||||
|
||||
#include "mmc-twl4030.h"
|
||||
|
||||
|
@ -77,8 +80,163 @@ static struct platform_device ldp_smsc911x_device = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct platform_device *ldp_devices[] __initdata = {
|
||||
&ldp_smsc911x_device,
|
||||
static int ldp_twl4030_keymap[] = {
|
||||
KEY(0, 0, KEY_1),
|
||||
KEY(1, 0, KEY_2),
|
||||
KEY(2, 0, KEY_3),
|
||||
KEY(0, 1, KEY_4),
|
||||
KEY(1, 1, KEY_5),
|
||||
KEY(2, 1, KEY_6),
|
||||
KEY(3, 1, KEY_F5),
|
||||
KEY(0, 2, KEY_7),
|
||||
KEY(1, 2, KEY_8),
|
||||
KEY(2, 2, KEY_9),
|
||||
KEY(3, 2, KEY_F6),
|
||||
KEY(0, 3, KEY_F7),
|
||||
KEY(1, 3, KEY_0),
|
||||
KEY(2, 3, KEY_F8),
|
||||
PERSISTENT_KEY(4, 5),
|
||||
KEY(4, 4, KEY_VOLUMEUP),
|
||||
KEY(5, 5, KEY_VOLUMEDOWN),
|
||||
0
|
||||
};
|
||||
|
||||
static struct twl4030_keypad_data ldp_kp_twl4030_data = {
|
||||
.rows = 6,
|
||||
.cols = 6,
|
||||
.keymap = ldp_twl4030_keymap,
|
||||
.keymapsize = ARRAY_SIZE(ldp_twl4030_keymap),
|
||||
.rep = 1,
|
||||
};
|
||||
|
||||
static struct gpio_keys_button ldp_gpio_keys_buttons[] = {
|
||||
[0] = {
|
||||
.code = KEY_ENTER,
|
||||
.gpio = 101,
|
||||
.desc = "enter sw",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
[1] = {
|
||||
.code = KEY_F1,
|
||||
.gpio = 102,
|
||||
.desc = "func 1",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
[2] = {
|
||||
.code = KEY_F2,
|
||||
.gpio = 103,
|
||||
.desc = "func 2",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
[3] = {
|
||||
.code = KEY_F3,
|
||||
.gpio = 104,
|
||||
.desc = "func 3",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
[4] = {
|
||||
.code = KEY_F4,
|
||||
.gpio = 105,
|
||||
.desc = "func 4",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
[5] = {
|
||||
.code = KEY_LEFT,
|
||||
.gpio = 106,
|
||||
.desc = "left sw",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
[6] = {
|
||||
.code = KEY_RIGHT,
|
||||
.gpio = 107,
|
||||
.desc = "right sw",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
[7] = {
|
||||
.code = KEY_UP,
|
||||
.gpio = 108,
|
||||
.desc = "up sw",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
[8] = {
|
||||
.code = KEY_DOWN,
|
||||
.gpio = 109,
|
||||
.desc = "down sw",
|
||||
.active_low = 1,
|
||||
.debounce_interval = 30,
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_keys_platform_data ldp_gpio_keys = {
|
||||
.buttons = ldp_gpio_keys_buttons,
|
||||
.nbuttons = ARRAY_SIZE(ldp_gpio_keys_buttons),
|
||||
.rep = 1,
|
||||
};
|
||||
|
||||
static struct platform_device ldp_gpio_keys_device = {
|
||||
.name = "gpio-keys",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &ldp_gpio_keys,
|
||||
},
|
||||
};
|
||||
|
||||
static int ts_gpio;
|
||||
|
||||
/**
|
||||
* @brief ads7846_dev_init : Requests & sets GPIO line for pen-irq
|
||||
*
|
||||
* @return - void. If request gpio fails then Flag KERN_ERR.
|
||||
*/
|
||||
static void ads7846_dev_init(void)
|
||||
{
|
||||
if (gpio_request(ts_gpio, "ads7846 irq") < 0) {
|
||||
printk(KERN_ERR "can't get ads746 pen down GPIO\n");
|
||||
return;
|
||||
}
|
||||
|
||||
gpio_direction_input(ts_gpio);
|
||||
omap_set_gpio_debounce(ts_gpio, 1);
|
||||
omap_set_gpio_debounce_time(ts_gpio, 0xa);
|
||||
}
|
||||
|
||||
static int ads7846_get_pendown_state(void)
|
||||
{
|
||||
return !gpio_get_value(ts_gpio);
|
||||
}
|
||||
|
||||
static struct ads7846_platform_data tsc2046_config __initdata = {
|
||||
.get_pendown_state = ads7846_get_pendown_state,
|
||||
.keep_vref_on = 1,
|
||||
};
|
||||
|
||||
static struct omap2_mcspi_device_config tsc2046_mcspi_config = {
|
||||
.turbo_mode = 0,
|
||||
.single_channel = 1, /* 0: slave, 1: master */
|
||||
};
|
||||
|
||||
static struct spi_board_info ldp_spi_board_info[] __initdata = {
|
||||
[0] = {
|
||||
/*
|
||||
* TSC2046 operates at a max freqency of 2MHz, so
|
||||
* operate slightly below at 1.5MHz
|
||||
*/
|
||||
.modalias = "ads7846",
|
||||
.bus_num = 1,
|
||||
.chip_select = 0,
|
||||
.max_speed_hz = 1500000,
|
||||
.controller_data = &tsc2046_mcspi_config,
|
||||
.irq = 0,
|
||||
.platform_data = &tsc2046_config,
|
||||
},
|
||||
};
|
||||
|
||||
static inline void __init ldp_init_smsc911x(void)
|
||||
|
@ -122,8 +280,22 @@ static struct omap_uart_config ldp_uart_config __initdata = {
|
|||
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||
};
|
||||
|
||||
static struct platform_device ldp_lcd_device = {
|
||||
.name = "ldp_lcd",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct omap_lcd_config ldp_lcd_config __initdata = {
|
||||
.ctrl_name = "internal",
|
||||
};
|
||||
|
||||
static struct omap_board_config_kernel ldp_config[] __initdata = {
|
||||
{ OMAP_TAG_UART, &ldp_uart_config },
|
||||
{ OMAP_TAG_LCD, &ldp_lcd_config },
|
||||
};
|
||||
|
||||
static struct twl4030_usb_data ldp_usb_data = {
|
||||
.usb_mode = T2_USB_MODE_ULPI,
|
||||
};
|
||||
|
||||
static struct twl4030_gpio_platform_data ldp_gpio_data = {
|
||||
|
@ -132,12 +304,39 @@ static struct twl4030_gpio_platform_data ldp_gpio_data = {
|
|||
.irq_end = TWL4030_GPIO_IRQ_END,
|
||||
};
|
||||
|
||||
static struct twl4030_madc_platform_data ldp_madc_data = {
|
||||
.irq_line = 1,
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply ldp_vmmc1_supply = {
|
||||
.supply = "vmmc",
|
||||
};
|
||||
|
||||
/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
|
||||
static struct regulator_init_data ldp_vmmc1 = {
|
||||
.constraints = {
|
||||
.min_uV = 1850000,
|
||||
.max_uV = 3150000,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL
|
||||
| REGULATOR_MODE_STANDBY,
|
||||
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
||||
| REGULATOR_CHANGE_MODE
|
||||
| REGULATOR_CHANGE_STATUS,
|
||||
},
|
||||
.num_consumer_supplies = 1,
|
||||
.consumer_supplies = &ldp_vmmc1_supply,
|
||||
};
|
||||
|
||||
static struct twl4030_platform_data ldp_twldata = {
|
||||
.irq_base = TWL4030_IRQ_BASE,
|
||||
.irq_end = TWL4030_IRQ_END,
|
||||
|
||||
/* platform_data for children goes here */
|
||||
.madc = &ldp_madc_data,
|
||||
.usb = &ldp_usb_data,
|
||||
.vmmc1 = &ldp_vmmc1,
|
||||
.gpio = &ldp_gpio_data,
|
||||
.keypad = &ldp_kp_twl4030_data,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata ldp_i2c_boardinfo[] = {
|
||||
|
@ -168,15 +367,29 @@ static struct twl4030_hsmmc_info mmc[] __initdata = {
|
|||
{} /* Terminator */
|
||||
};
|
||||
|
||||
static struct platform_device *ldp_devices[] __initdata = {
|
||||
&ldp_smsc911x_device,
|
||||
&ldp_lcd_device,
|
||||
&ldp_gpio_keys_device,
|
||||
};
|
||||
|
||||
static void __init omap_ldp_init(void)
|
||||
{
|
||||
omap_i2c_init();
|
||||
platform_add_devices(ldp_devices, ARRAY_SIZE(ldp_devices));
|
||||
omap_board_config = ldp_config;
|
||||
omap_board_config_size = ARRAY_SIZE(ldp_config);
|
||||
ts_gpio = 54;
|
||||
ldp_spi_board_info[0].irq = gpio_to_irq(ts_gpio);
|
||||
spi_register_board_info(ldp_spi_board_info,
|
||||
ARRAY_SIZE(ldp_spi_board_info));
|
||||
ads7846_dev_init();
|
||||
omap_serial_init();
|
||||
twl4030_mmc_init(mmc);
|
||||
usb_musb_init();
|
||||
|
||||
twl4030_mmc_init(mmc);
|
||||
/* link regulators to MMC adapters */
|
||||
ldp_vmmc1_supply.dev = mmc[0].dev;
|
||||
}
|
||||
|
||||
static void __init omap_ldp_map_io(void)
|
||||
|
|
|
@ -105,6 +105,8 @@ static struct platform_device omap3beagle_nand_device = {
|
|||
.resource = &omap3beagle_nand_resource,
|
||||
};
|
||||
|
||||
#include "sdram-micron-mt46h32m32lf-6.h"
|
||||
|
||||
static struct omap_uart_config omap3_beagle_uart_config __initdata = {
|
||||
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||
};
|
||||
|
@ -185,7 +187,7 @@ static int __init omap3_beagle_i2c_init(void)
|
|||
|
||||
static void __init omap3_beagle_init_irq(void)
|
||||
{
|
||||
omap2_init_common_hw(NULL);
|
||||
omap2_init_common_hw(mt46h32m32lf6_sdrc_params);
|
||||
omap_init_irq();
|
||||
#ifdef CONFIG_OMAP_32K_TIMER
|
||||
omap2_gp_clockevent_set_gptimer(12);
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <mach/mcspi.h>
|
||||
#include <mach/usb.h>
|
||||
|
||||
#include "sdram-micron-mt46h32m32lf-6.h"
|
||||
#include "mmc-twl4030.h"
|
||||
|
||||
#define OMAP3_PANDORA_TS_GPIO 94
|
||||
|
@ -118,7 +119,7 @@ static int __init omap3pandora_i2c_init(void)
|
|||
|
||||
static void __init omap3pandora_init_irq(void)
|
||||
{
|
||||
omap2_init_common_hw(NULL);
|
||||
omap2_init_common_hw(mt46h32m32lf6_sdrc_params);
|
||||
omap_init_irq();
|
||||
omap_gpio_init();
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include <mach/nand.h>
|
||||
#include <mach/usb.h>
|
||||
|
||||
#include "sdram-micron-mt46h32m32lf-6.h"
|
||||
#include "mmc-twl4030.h"
|
||||
|
||||
#define OVERO_GPIO_BT_XGATE 15
|
||||
|
@ -303,7 +304,7 @@ static int __init overo_i2c_init(void)
|
|||
|
||||
static void __init overo_init_irq(void)
|
||||
{
|
||||
omap2_init_common_hw(NULL);
|
||||
omap2_init_common_hw(mt46h32m32lf6_sdrc_params);
|
||||
omap_init_irq();
|
||||
omap_gpio_init();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* SDRC register values for the Micron MT46H32M32LF-6
|
||||
*
|
||||
* Copyright (C) 2008 Texas Instruments, Inc.
|
||||
* Copyright (C) 2008-2009 Nokia Corporation
|
||||
*
|
||||
* Paul Walmsley
|
||||
*
|
||||
* 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 ARCH_ARM_MACH_OMAP2_SDRAM_MICRON_MT46H32M32LF
|
||||
#define ARCH_ARM_MACH_OMAP2_SDRAM_MICRON_MT46H32M32LF
|
||||
|
||||
#include <mach/sdrc.h>
|
||||
|
||||
/* Micron MT46H32M32LF-6 */
|
||||
/* XXX Using ARE = 0x1 (no autorefresh burst) -- can this be changed? */
|
||||
static struct omap_sdrc_params mt46h32m32lf6_sdrc_params[] = {
|
||||
[0] = {
|
||||
.rate = 166000000,
|
||||
.actim_ctrla = 0x9a9db4c6,
|
||||
.actim_ctrlb = 0x00011217,
|
||||
.rfr_ctrl = 0x0004dc01,
|
||||
.mr = 0x00000032,
|
||||
},
|
||||
[1] = {
|
||||
.rate = 165941176,
|
||||
.actim_ctrla = 0x9a9db4c6,
|
||||
.actim_ctrlb = 0x00011217,
|
||||
.rfr_ctrl = 0x0004dc01,
|
||||
.mr = 0x00000032,
|
||||
},
|
||||
[2] = {
|
||||
.rate = 83000000,
|
||||
.actim_ctrla = 0x51512283,
|
||||
.actim_ctrlb = 0x0001120c,
|
||||
.rfr_ctrl = 0x00025501,
|
||||
.mr = 0x00000032,
|
||||
},
|
||||
[3] = {
|
||||
.rate = 82970588,
|
||||
.actim_ctrla = 0x51512283,
|
||||
.actim_ctrlb = 0x0001120c,
|
||||
.rfr_ctrl = 0x00025501,
|
||||
.mr = 0x00000032,
|
||||
},
|
||||
[4] = {
|
||||
.rate = 0
|
||||
},
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* SDRC register values for the Qimonda HYB18M512160AF-6
|
||||
*
|
||||
* Copyright (C) 2008-2009 Texas Instruments, Inc.
|
||||
* Copyright (C) 2008-2009 Nokia Corporation
|
||||
*
|
||||
* Paul Walmsley
|
||||
*
|
||||
* 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 ARCH_ARM_MACH_OMAP2_SDRAM_QIMONDA_HYB18M512160AF6
|
||||
#define ARCH_ARM_MACH_OMAP2_SDRAM_QIMONDA_HYB18M512160AF6
|
||||
|
||||
#include <mach/sdrc.h>
|
||||
|
||||
/* Qimonda HYB18M512160AF-6 */
|
||||
static struct omap_sdrc_params hyb18m512160af6_sdrc_params[] = {
|
||||
[0] = {
|
||||
.rate = 166000000,
|
||||
.actim_ctrla = 0x629db4c6,
|
||||
.actim_ctrlb = 0x00012214,
|
||||
.rfr_ctrl = 0x0004dc01,
|
||||
.mr = 0x00000032,
|
||||
},
|
||||
[1] = {
|
||||
.rate = 165941176,
|
||||
.actim_ctrla = 0x629db4c6,
|
||||
.actim_ctrlb = 0x00012214,
|
||||
.rfr_ctrl = 0x0004dc01,
|
||||
.mr = 0x00000032,
|
||||
},
|
||||
[2] = {
|
||||
.rate = 83000000,
|
||||
.actim_ctrla = 0x31512283,
|
||||
.actim_ctrlb = 0x0001220a,
|
||||
.rfr_ctrl = 0x00025501,
|
||||
.mr = 0x00000022,
|
||||
},
|
||||
[3] = {
|
||||
.rate = 82970588,
|
||||
.actim_ctrla = 0x31512283,
|
||||
.actim_ctrlb = 0x0001220a,
|
||||
.rfr_ctrl = 0x00025501,
|
||||
.mr = 0x00000022,
|
||||
},
|
||||
[4] = {
|
||||
.rate = 0
|
||||
},
|
||||
};
|
||||
|
||||
#endif
|
|
@ -469,9 +469,17 @@ static struct kobj_attribute sleep_timeout_attr =
|
|||
static inline void omap_uart_idle_init(struct omap_uart_state *uart) {}
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
static struct platform_device serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = serial_platform_data,
|
||||
},
|
||||
};
|
||||
|
||||
void __init omap_serial_init(void)
|
||||
{
|
||||
int i;
|
||||
int i, err;
|
||||
const struct omap_uart_config *info;
|
||||
char name[16];
|
||||
|
||||
|
@ -522,27 +530,14 @@ void __init omap_serial_init(void)
|
|||
omap_uart_reset(uart);
|
||||
omap_uart_idle_init(uart);
|
||||
}
|
||||
}
|
||||
|
||||
static struct platform_device serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = serial_platform_data,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init omap_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = platform_device_register(&serial_device);
|
||||
err = platform_device_register(&serial_device);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
if (!ret)
|
||||
ret = sysfs_create_file(&serial_device.dev.kobj,
|
||||
if (!err)
|
||||
err = sysfs_create_file(&serial_device.dev.kobj,
|
||||
&sleep_timeout_attr.attr);
|
||||
#endif
|
||||
return ret;
|
||||
|
||||
}
|
||||
arch_initcall(omap_init);
|
||||
|
||||
|
|
|
@ -33,7 +33,11 @@ struct omap_kp_platform_data {
|
|||
#define GROUP_3 (3 << 16)
|
||||
#define GROUP_MASK GROUP_3
|
||||
|
||||
#define KEY_PERSISTENT 0x00800000
|
||||
#define KEYNUM_MASK 0x00EFFFFF
|
||||
#define KEY(col, row, val) (((col) << 28) | ((row) << 24) | (val))
|
||||
#define PERSISTENT_KEY(col, row) (((col) << 28) | ((row) << 24) | \
|
||||
KEY_PERSISTENT)
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -31,13 +31,9 @@
|
|||
|
||||
#define L4_34XX_BASE 0x48000000
|
||||
#define L4_WK_34XX_BASE 0x48300000
|
||||
#define L4_WK_OMAP_BASE L4_WK_34XX_BASE
|
||||
#define L4_PER_34XX_BASE 0x49000000
|
||||
#define L4_PER_OMAP_BASE L4_PER_34XX_BASE
|
||||
#define L4_EMU_34XX_BASE 0x54000000
|
||||
#define L4_EMU_BASE L4_EMU_34XX_BASE
|
||||
#define L3_34XX_BASE 0x68000000
|
||||
#define L3_OMAP_BASE L3_34XX_BASE
|
||||
|
||||
#define OMAP3430_32KSYNCT_BASE 0x48320000
|
||||
#define OMAP3430_CM_BASE 0x48004800
|
||||
|
|
Loading…
Reference in New Issue