Commit b1c0ec89 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'davinci-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci

* 'davinci-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci:
  DaVinci: DM365: Add the device_enable for the DaVinci Keyscan
  davinci: enable ARCH_HAS_HOLES_MEMORYMODEL for DaVinci
  davinci: da8xx/omap-l1: mark RTC as a wakeup source
  davinci: cp_intc: provide set_wake function
  Davinci VPFE Capture: Take i2c adapter id through platform data
parents 642a74e7 c92b29ec
...@@ -688,6 +688,7 @@ config ARCH_DAVINCI ...@@ -688,6 +688,7 @@ config ARCH_DAVINCI
select HAVE_IDE select HAVE_IDE
select COMMON_CLKDEV select COMMON_CLKDEV
select GENERIC_ALLOCATOR select GENERIC_ALLOCATOR
select ARCH_HAS_HOLES_MEMORYMODEL
help help
Support for TI's DaVinci platform. Support for TI's DaVinci platform.
......
...@@ -236,6 +236,7 @@ static struct vpfe_subdev_info vpfe_sub_devs[] = { ...@@ -236,6 +236,7 @@ static struct vpfe_subdev_info vpfe_sub_devs[] = {
static struct vpfe_config vpfe_cfg = { static struct vpfe_config vpfe_cfg = {
.num_subdevs = ARRAY_SIZE(vpfe_sub_devs), .num_subdevs = ARRAY_SIZE(vpfe_sub_devs),
.i2c_adapter_id = 1,
.sub_devs = vpfe_sub_devs, .sub_devs = vpfe_sub_devs,
.card_name = "DM355 EVM", .card_name = "DM355 EVM",
.ccdc = "DM355 CCDC", .ccdc = "DM355 CCDC",
......
...@@ -192,7 +192,11 @@ static struct davinci_i2c_platform_data i2c_pdata = { ...@@ -192,7 +192,11 @@ static struct davinci_i2c_platform_data i2c_pdata = {
.bus_delay = 0 /* usec */, .bus_delay = 0 /* usec */,
}; };
#ifdef CONFIG_KEYBOARD_DAVINCI static int dm365evm_keyscan_enable(struct device *dev)
{
return davinci_cfg_reg(DM365_KEYSCAN);
}
static unsigned short dm365evm_keymap[] = { static unsigned short dm365evm_keymap[] = {
KEY_KP2, KEY_KP2,
KEY_LEFT, KEY_LEFT,
...@@ -214,6 +218,7 @@ static unsigned short dm365evm_keymap[] = { ...@@ -214,6 +218,7 @@ static unsigned short dm365evm_keymap[] = {
}; };
static struct davinci_ks_platform_data dm365evm_ks_data = { static struct davinci_ks_platform_data dm365evm_ks_data = {
.device_enable = dm365evm_keyscan_enable,
.keymap = dm365evm_keymap, .keymap = dm365evm_keymap,
.keymapsize = ARRAY_SIZE(dm365evm_keymap), .keymapsize = ARRAY_SIZE(dm365evm_keymap),
.rep = 1, .rep = 1,
...@@ -222,7 +227,6 @@ static struct davinci_ks_platform_data dm365evm_ks_data = { ...@@ -222,7 +227,6 @@ static struct davinci_ks_platform_data dm365evm_ks_data = {
.interval = 0x2, .interval = 0x2,
.matrix_type = DAVINCI_KEYSCAN_MATRIX_4X4, .matrix_type = DAVINCI_KEYSCAN_MATRIX_4X4,
}; };
#endif
static int cpld_mmc_get_cd(int module) static int cpld_mmc_get_cd(int module)
{ {
...@@ -511,10 +515,7 @@ static __init void dm365_evm_init(void) ...@@ -511,10 +515,7 @@ static __init void dm365_evm_init(void)
dm365_init_asp(&dm365_evm_snd_data); dm365_init_asp(&dm365_evm_snd_data);
dm365_init_rtc(); dm365_init_rtc();
#ifdef CONFIG_KEYBOARD_DAVINCI
dm365_init_ks(&dm365evm_ks_data); dm365_init_ks(&dm365evm_ks_data);
#endif
} }
static __init void dm365_evm_irq_init(void) static __init void dm365_evm_irq_init(void)
......
...@@ -247,6 +247,7 @@ static struct vpfe_subdev_info vpfe_sub_devs[] = { ...@@ -247,6 +247,7 @@ static struct vpfe_subdev_info vpfe_sub_devs[] = {
static struct vpfe_config vpfe_cfg = { static struct vpfe_config vpfe_cfg = {
.num_subdevs = ARRAY_SIZE(vpfe_sub_devs), .num_subdevs = ARRAY_SIZE(vpfe_sub_devs),
.i2c_adapter_id = 1,
.sub_devs = vpfe_sub_devs, .sub_devs = vpfe_sub_devs,
.card_name = "DM6446 EVM", .card_name = "DM6446 EVM",
.ccdc = "DM6446 CCDC", .ccdc = "DM6446 CCDC",
......
...@@ -81,12 +81,23 @@ static int cp_intc_set_irq_type(unsigned int irq, unsigned int flow_type) ...@@ -81,12 +81,23 @@ static int cp_intc_set_irq_type(unsigned int irq, unsigned int flow_type)
return 0; return 0;
} }
/*
* Faking this allows us to to work with suspend functions of
* generic drivers which call {enable|disable}_irq_wake for
* wake up interrupt sources (eg RTC on DA850).
*/
static int cp_intc_set_wake(unsigned int irq, unsigned int on)
{
return 0;
}
static struct irq_chip cp_intc_irq_chip = { static struct irq_chip cp_intc_irq_chip = {
.name = "cp_intc", .name = "cp_intc",
.ack = cp_intc_ack_irq, .ack = cp_intc_ack_irq,
.mask = cp_intc_mask_irq, .mask = cp_intc_mask_irq,
.unmask = cp_intc_unmask_irq, .unmask = cp_intc_unmask_irq,
.set_type = cp_intc_set_irq_type, .set_type = cp_intc_set_irq_type,
.set_wake = cp_intc_set_wake,
}; };
void __init cp_intc_init(void __iomem *base, unsigned short num_irq, void __init cp_intc_init(void __iomem *base, unsigned short num_irq,
......
...@@ -481,11 +481,18 @@ static struct platform_device da8xx_rtc_device = { ...@@ -481,11 +481,18 @@ static struct platform_device da8xx_rtc_device = {
int da8xx_register_rtc(void) int da8xx_register_rtc(void)
{ {
int ret;
/* Unlock the rtc's registers */ /* Unlock the rtc's registers */
__raw_writel(0x83e70b13, IO_ADDRESS(DA8XX_RTC_BASE + 0x6c)); __raw_writel(0x83e70b13, IO_ADDRESS(DA8XX_RTC_BASE + 0x6c));
__raw_writel(0x95a4f1e0, IO_ADDRESS(DA8XX_RTC_BASE + 0x70)); __raw_writel(0x95a4f1e0, IO_ADDRESS(DA8XX_RTC_BASE + 0x70));
return platform_device_register(&da8xx_rtc_device); ret = platform_device_register(&da8xx_rtc_device);
if (!ret)
/* Atleast on DA850, RTC is a wakeup source */
device_init_wakeup(&da8xx_rtc_device.dev, true);
return ret;
} }
static struct resource da8xx_cpuidle_resources[] = { static struct resource da8xx_cpuidle_resources[] = {
......
...@@ -993,7 +993,6 @@ void __init dm365_init_asp(struct snd_platform_data *pdata) ...@@ -993,7 +993,6 @@ void __init dm365_init_asp(struct snd_platform_data *pdata)
void __init dm365_init_ks(struct davinci_ks_platform_data *pdata) void __init dm365_init_ks(struct davinci_ks_platform_data *pdata)
{ {
davinci_cfg_reg(DM365_KEYSCAN);
dm365_ks_device.dev.platform_data = pdata; dm365_ks_device.dev.platform_data = pdata;
platform_device_register(&dm365_ks_device); platform_device_register(&dm365_ks_device);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment