You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel
Conflicts: arch/arm/Makefile
This commit is contained in:
+63
-14
@@ -4127,6 +4127,69 @@ S: Maintained
|
||||
F: drivers/video/riva/
|
||||
F: drivers/video/nvidia/
|
||||
|
||||
OMAP SUPPORT
|
||||
P: Tony Lindgren <tony@atomide.com>
|
||||
M: tony@atomide.com
|
||||
L: linux-omap@vger.kernel.org
|
||||
W: http://www.muru.com/linux/omap/
|
||||
W: http://linux.omap.com/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git
|
||||
S: Maintained
|
||||
F: arch/arm/*omap*
|
||||
|
||||
OMAP CLOCK FRAMEWORK SUPPORT
|
||||
P: Paul Walmsley
|
||||
M: paul@pwsan.com
|
||||
L: linux-omap@vger.kernel.org
|
||||
S: Maintained
|
||||
F: arch/arm/*omap*/*clock*
|
||||
|
||||
OMAP POWER MANAGEMENT SUPPORT
|
||||
P: Kevin Hilman
|
||||
M: khilman@deeprootsystems.com
|
||||
L: linux-omap@vger.kernel.org
|
||||
S: Maintained
|
||||
F: arch/arm/*omap*/*pm*
|
||||
|
||||
OMAP AUDIO SUPPORT
|
||||
P: Jarkko Nikula
|
||||
M: jhnikula@gmail.com
|
||||
L: alsa-devel@alsa-project.org (subscribers-only)
|
||||
L: linux-omap@vger.kernel.org
|
||||
S: Maintained
|
||||
F: sound/soc/omap/
|
||||
|
||||
OMAP FRAMEBUFFER SUPPORT
|
||||
P: Imre Deak
|
||||
M: imre.deak@nokia.com
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
L: linux-omap@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/video/omap/
|
||||
|
||||
OMAP MMC SUPPORT
|
||||
P: Jarkko Lavinen
|
||||
M: jarkko.lavinen@nokia.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: linux-omap@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/mmc/host/*omap*
|
||||
|
||||
OMAP RANDOM NUMBER GENERATOR SUPPORT
|
||||
P: Deepak Saxena
|
||||
M: dsaxena@plexity.net
|
||||
S: Maintained
|
||||
F: drivers/char/hw_random/omap-rng.c
|
||||
|
||||
OMAP USB SUPPORT
|
||||
P: Felipe Balbi
|
||||
M: felipe.balbi@nokia.com
|
||||
P: David Brownell
|
||||
M: dbrownell@users.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: linux-omap@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
OMFS FILESYSTEM
|
||||
P: Bob Copeland
|
||||
M: me@bobcopeland.com
|
||||
@@ -5515,20 +5578,6 @@ F: drivers/misc/tifm*
|
||||
F: drivers/mmc/host/tifm_sd.c
|
||||
F: include/linux/tifm.h
|
||||
|
||||
TI OMAP MMC INTERFACE DRIVER
|
||||
P: Carlos Aguiar, Anderson Briglia and Syed Khasim
|
||||
M: linux-omap@vger.kernel.org
|
||||
W: http://linux.omap.com
|
||||
W: http://www.muru.com/linux/omap/
|
||||
S: Maintained
|
||||
F: drivers/mmc/host/omap.c
|
||||
|
||||
TI OMAP RANDOM NUMBER GENERATOR SUPPORT
|
||||
P: Deepak Saxena
|
||||
M: dsaxena@plexity.net
|
||||
S: Maintained
|
||||
F: drivers/char/hw_random/omap-rng.c
|
||||
|
||||
TIPC NETWORK LAYER
|
||||
P: Per Liden
|
||||
M: per.liden@ericsson.com
|
||||
|
||||
@@ -138,6 +138,7 @@ machine-$(CONFIG_ARCH_NS9XXX) := ns9xxx
|
||||
machine-$(CONFIG_ARCH_OMAP1) := omap1
|
||||
machine-$(CONFIG_ARCH_OMAP2) := omap2
|
||||
machine-$(CONFIG_ARCH_OMAP3) := omap2
|
||||
machine-$(CONFIG_ARCH_OMAP4) := omap2
|
||||
machine-$(CONFIG_ARCH_ORION5X) := orion5x
|
||||
machine-$(CONFIG_ARCH_PNX4008) := pnx4008
|
||||
machine-$(CONFIG_ARCH_PXA) := pxa
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -282,7 +282,7 @@ CONFIG_ALIGNMENT_TRAP=y
|
||||
#
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="init=/sbin/preinit ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs rw console=ttyMTD5"
|
||||
CONFIG_CMDLINE="init=/sbin/preinit ubi.mtd=rootfs root=ubi0:rootfs rootfstype=ubifs rootflags=bulk_read,no_chk_data_crc rw console=ttyMTD,log console=tty0"
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
|
||||
|
||||
@@ -46,7 +46,6 @@ config MACH_OMAP_H2
|
||||
config MACH_OMAP_H3
|
||||
bool "TI H3 Support"
|
||||
depends on ARCH_OMAP1 && ARCH_OMAP16XX
|
||||
# select GPIOEXPANDER_OMAP
|
||||
help
|
||||
TI OMAP 1710 H3 board support. Say Y here if you have such
|
||||
a board.
|
||||
|
||||
@@ -13,6 +13,10 @@ obj-$(CONFIG_OMAP_32K_TIMER) += timer32k.o
|
||||
# Power Management
|
||||
obj-$(CONFIG_PM) += pm.o sleep.o
|
||||
|
||||
# DSP
|
||||
obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox_mach.o
|
||||
mailbox_mach-objs := mailbox.o
|
||||
|
||||
led-y := leds.o
|
||||
|
||||
# Specific board support
|
||||
|
||||
@@ -33,8 +33,11 @@
|
||||
#include <mach/common.h>
|
||||
#include <mach/dsp_common.h>
|
||||
#include <mach/omapfb.h>
|
||||
#include <mach/hwa742.h>
|
||||
#include <mach/lcd_mipid.h>
|
||||
#include <mach/mmc.h>
|
||||
#include <mach/usb.h>
|
||||
#include <mach/clock.h>
|
||||
|
||||
#define ADS7846_PENDOWN_GPIO 15
|
||||
|
||||
@@ -162,6 +165,15 @@ static struct spi_board_info nokia770_spi_board_info[] __initdata = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct hwa742_platform_data nokia770_hwa742_platform_data = {
|
||||
.te_connected = 1,
|
||||
};
|
||||
|
||||
static void hwa742_dev_init(void)
|
||||
{
|
||||
clk_add_alias("hwa_sys_ck", NULL, "bclk", NULL);
|
||||
omapfb_set_ctrl_platform_data(&nokia770_hwa742_platform_data);
|
||||
}
|
||||
|
||||
/* assume no Mini-AB port */
|
||||
|
||||
@@ -370,6 +382,7 @@ static void __init omap_nokia770_init(void)
|
||||
omap_serial_init();
|
||||
omap_register_i2c_bus(1, 100, NULL, 0);
|
||||
omap_dsp_init();
|
||||
hwa742_dev_init();
|
||||
ads7846_dev_init();
|
||||
mipid_dev_init();
|
||||
omap_usb_init(&nokia770_usb_config);
|
||||
|
||||
@@ -776,7 +776,7 @@ int __init omap1_clk_init(void)
|
||||
arm_idlect1_mask = ~0;
|
||||
|
||||
for (c = omap_clks; c < omap_clks + ARRAY_SIZE(omap_clks); c++)
|
||||
clk_init_one(c->lk.clk);
|
||||
clk_preinit(c->lk.clk);
|
||||
|
||||
cpu_mask = 0;
|
||||
if (cpu_is_omap16xx())
|
||||
|
||||
@@ -53,11 +53,12 @@
|
||||
#include <mach/clock.h>
|
||||
#include <mach/sram.h>
|
||||
#include <mach/tc.h>
|
||||
#include <mach/pm.h>
|
||||
#include <mach/mux.h>
|
||||
#include <mach/dma.h>
|
||||
#include <mach/dmtimer.h>
|
||||
|
||||
#include "pm.h"
|
||||
|
||||
static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE];
|
||||
static unsigned short dsp_sleep_save[DSP_SLEEP_SAVE_SIZE];
|
||||
static unsigned short ulpd_sleep_save[ULPD_SLEEP_SAVE_SIZE];
|
||||
@@ -101,7 +102,7 @@ static void (*omap_sram_suspend)(unsigned long r0, unsigned long r1) = NULL;
|
||||
* going idle we continue to do idle even if we get
|
||||
* a clock tick interrupt . .
|
||||
*/
|
||||
void omap_pm_idle(void)
|
||||
void omap1_pm_idle(void)
|
||||
{
|
||||
extern __u32 arm_idlect1_mask;
|
||||
__u32 use_idlect1 = arm_idlect1_mask;
|
||||
@@ -222,7 +223,7 @@ static void omap_pm_wakeup_setup(void)
|
||||
#define EN_APICK 6 /* ARM_IDLECT2 */
|
||||
#define DSP_EN 1 /* ARM_RSTCT1 */
|
||||
|
||||
void omap_pm_suspend(void)
|
||||
void omap1_pm_suspend(void)
|
||||
{
|
||||
unsigned long arg0 = 0, arg1 = 0;
|
||||
|
||||
@@ -610,7 +611,7 @@ static int omap_pm_enter(suspend_state_t state)
|
||||
{
|
||||
case PM_SUSPEND_STANDBY:
|
||||
case PM_SUSPEND_MEM:
|
||||
omap_pm_suspend();
|
||||
omap1_pm_suspend();
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@@ -683,7 +684,7 @@ static int __init omap_pm_init(void)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
pm_idle = omap_pm_idle;
|
||||
pm_idle = omap1_pm_idle;
|
||||
|
||||
if (cpu_is_omap730())
|
||||
setup_irq(INT_730_WAKE_UP_REQ, &omap_wakeup_irq);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* arch/arm/plat-omap/include/mach/pm.h
|
||||
* arch/arm/mach-omap1/pm.h
|
||||
*
|
||||
* Header file for OMAP Power Management Routines
|
||||
* Header file for OMAP1 Power Management Routines
|
||||
*
|
||||
* Author: MontaVista Software, Inc.
|
||||
* support@mvista.com
|
||||
@@ -31,8 +31,8 @@
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_OMAP_PM_H
|
||||
#define __ASM_ARCH_OMAP_PM_H
|
||||
#ifndef __ARCH_ARM_MACH_OMAP1_PM_H
|
||||
#define __ARCH_ARM_MACH_OMAP1_PM_H
|
||||
|
||||
/*
|
||||
* ----------------------------------------------------------------------------
|
||||
@@ -106,8 +106,7 @@
|
||||
|
||||
#if !defined(CONFIG_ARCH_OMAP730) && \
|
||||
!defined(CONFIG_ARCH_OMAP15XX) && \
|
||||
!defined(CONFIG_ARCH_OMAP16XX) && \
|
||||
!defined(CONFIG_ARCH_OMAP24XX)
|
||||
!defined(CONFIG_ARCH_OMAP16XX)
|
||||
#warning "Power management for this processor not implemented yet"
|
||||
#endif
|
||||
|
||||
@@ -115,29 +114,27 @@
|
||||
|
||||
#include <linux/clk.h>
|
||||
|
||||
extern struct kset power_subsys;
|
||||
|
||||
extern void prevent_idle_sleep(void);
|
||||
extern void allow_idle_sleep(void);
|
||||
|
||||
extern void omap_pm_idle(void);
|
||||
extern void omap_pm_suspend(void);
|
||||
extern void omap1_pm_idle(void);
|
||||
extern void omap1_pm_suspend(void);
|
||||
|
||||
extern void omap730_cpu_suspend(unsigned short, unsigned short);
|
||||
extern void omap1510_cpu_suspend(unsigned short, unsigned short);
|
||||
extern void omap1610_cpu_suspend(unsigned short, unsigned short);
|
||||
extern void omap24xx_cpu_suspend(u32 dll_ctrl, void __iomem *sdrc_dlla_ctrl,
|
||||
void __iomem *sdrc_power);
|
||||
extern void omap730_idle_loop_suspend(void);
|
||||
extern void omap1510_idle_loop_suspend(void);
|
||||
extern void omap1610_idle_loop_suspend(void);
|
||||
extern void omap24xx_idle_loop_suspend(void);
|
||||
|
||||
extern unsigned int omap730_cpu_suspend_sz;
|
||||
extern unsigned int omap1510_cpu_suspend_sz;
|
||||
extern unsigned int omap1610_cpu_suspend_sz;
|
||||
extern unsigned int omap24xx_cpu_suspend_sz;
|
||||
extern unsigned int omap730_idle_loop_suspend_sz;
|
||||
extern unsigned int omap1510_idle_loop_suspend_sz;
|
||||
extern unsigned int omap1610_idle_loop_suspend_sz;
|
||||
extern unsigned int omap24xx_idle_loop_suspend_sz;
|
||||
|
||||
#ifdef CONFIG_OMAP_SERIAL_WAKE
|
||||
extern void omap_serial_wake_trigger(int enable);
|
||||
@@ -170,10 +167,6 @@ extern void omap_serial_wake_trigger(int enable);
|
||||
#define MPUI1610_RESTORE(x) omap_writel((mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_##x]), (x))
|
||||
#define MPUI1610_SHOW(x) mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_##x]
|
||||
|
||||
#define OMAP24XX_SAVE(x) omap24xx_sleep_save[OMAP24XX_SLEEP_SAVE_##x] = x
|
||||
#define OMAP24XX_RESTORE(x) x = omap24xx_sleep_save[OMAP24XX_SLEEP_SAVE_##x]
|
||||
#define OMAP24XX_SHOW(x) omap24xx_sleep_save[OMAP24XX_SLEEP_SAVE_##x]
|
||||
|
||||
/*
|
||||
* List of global OMAP registers to preserve.
|
||||
* More ones like CP and general purpose register values are preserved
|
||||
@@ -283,63 +276,5 @@ enum mpui1610_save_state {
|
||||
#endif
|
||||
};
|
||||
|
||||
enum omap24xx_save_state {
|
||||
OMAP24XX_SLEEP_SAVE_START = 0,
|
||||
OMAP24XX_SLEEP_SAVE_INTC_MIR0,
|
||||
OMAP24XX_SLEEP_SAVE_INTC_MIR1,
|
||||
OMAP24XX_SLEEP_SAVE_INTC_MIR2,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_MPU,
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_GFX,
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_DSP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_CLKSTCTRL_MDM,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_MPU,
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_GFX,
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_DSP,
|
||||
OMAP24XX_SLEEP_SAVE_PM_PWSTCTRL_MDM,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST1_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST2_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST3_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST4_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_GFX,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_WKUP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_CKGEN,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_DSP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_IDLEST_MDM,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE1_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE2_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE3_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE4_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE_WKUP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE_PLL,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE_DSP,
|
||||
OMAP24XX_SLEEP_SAVE_CM_AUTOIDLE_MDM,
|
||||
|
||||
OMAP24XX_SLEEP_SAVE_CM_FCLKEN1_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_FCLKEN2_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_ICLKEN1_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_ICLKEN2_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_ICLKEN3_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_CM_ICLKEN4_CORE,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO1_IRQENABLE1,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO2_IRQENABLE1,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO3_IRQENABLE1,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO4_IRQENABLE1,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO3_OE,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO4_OE,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO3_RISINGDETECT,
|
||||
OMAP24XX_SLEEP_SAVE_GPIO3_FALLINGDETECT,
|
||||
OMAP24XX_SLEEP_SAVE_CONTROL_PADCONF_SPI1_NCS2,
|
||||
OMAP24XX_SLEEP_SAVE_CONTROL_PADCONF_MCBSP1_DX,
|
||||
OMAP24XX_SLEEP_SAVE_CONTROL_PADCONF_SSI1_FLAG_TX,
|
||||
OMAP24XX_SLEEP_SAVE_CONTROL_PADCONF_SYS_NIRQW0,
|
||||
OMAP24XX_SLEEP_SAVE_SIZE
|
||||
};
|
||||
|
||||
#endif /* ASSEMBLER */
|
||||
#endif /* __ASM_ARCH_OMAP_PM_H */
|
||||
@@ -26,9 +26,6 @@
|
||||
#include <mach/mux.h>
|
||||
#include <mach/gpio.h>
|
||||
#include <mach/fpga.h>
|
||||
#ifdef CONFIG_PM
|
||||
#include <mach/pm.h>
|
||||
#endif
|
||||
|
||||
static struct clk * uart1_ck;
|
||||
static struct clk * uart2_ck;
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <mach/io.h>
|
||||
#include <mach/pm.h>
|
||||
#include "pm.h"
|
||||
|
||||
.text
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ config ARCH_OMAP3430
|
||||
select ARCH_OMAP_OTG
|
||||
|
||||
comment "OMAP Board Type"
|
||||
depends on ARCH_OMAP2 || ARCH_OMAP3
|
||||
depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP4
|
||||
|
||||
config MACH_OMAP_GENERIC
|
||||
bool "Generic OMAP board"
|
||||
@@ -56,6 +56,10 @@ config MACH_OVERO
|
||||
bool "Gumstix Overo board"
|
||||
depends on ARCH_OMAP3 && ARCH_OMAP34XX
|
||||
|
||||
config MACH_OMAP3EVM
|
||||
bool "OMAP 3530 EVM board"
|
||||
depends on ARCH_OMAP3 && ARCH_OMAP34XX
|
||||
|
||||
config MACH_OMAP3_PANDORA
|
||||
bool "OMAP3 Pandora"
|
||||
depends on ARCH_OMAP3 && ARCH_OMAP34XX
|
||||
@@ -67,3 +71,11 @@ config MACH_OMAP_3430SDP
|
||||
config MACH_NOKIA_RX51
|
||||
bool "Nokia RX-51 board"
|
||||
depends on ARCH_OMAP3 && ARCH_OMAP34XX
|
||||
|
||||
config MACH_OMAP_ZOOM2
|
||||
bool "OMAP3 Zoom2 board"
|
||||
depends on ARCH_OMAP3 && ARCH_OMAP34XX
|
||||
|
||||
config MACH_OMAP_4430SDP
|
||||
bool "OMAP 4430 SDP board"
|
||||
depends on ARCH_OMAP4
|
||||
|
||||
@@ -3,9 +3,14 @@
|
||||
#
|
||||
|
||||
# Common support
|
||||
obj-y := irq.o id.o io.o sdrc.o control.o prcm.o clock.o mux.o \
|
||||
devices.o serial.o gpmc.o timer-gp.o powerdomain.o \
|
||||
clockdomain.o
|
||||
obj-y := id.o io.o control.o mux.o devices.o serial.o gpmc.o timer-gp.o
|
||||
|
||||
omap-2-3-common = irq.o sdrc.o
|
||||
prcm-common = prcm.o powerdomain.o
|
||||
clock-common = clock.o clockdomain.o
|
||||
|
||||
obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(prcm-common) $(clock-common)
|
||||
obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(prcm-common) $(clock-common)
|
||||
|
||||
obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
|
||||
|
||||
@@ -20,8 +25,10 @@ obj-$(CONFIG_ARCH_OMAP2) += sdrc2xxx.o
|
||||
|
||||
# Power Management
|
||||
ifeq ($(CONFIG_PM),y)
|
||||
obj-y += pm.o
|
||||
obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o
|
||||
obj-$(CONFIG_ARCH_OMAP24XX) += sleep24xx.o
|
||||
obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o
|
||||
obj-$(CONFIG_PM_DEBUG) += pm-debug.o
|
||||
endif
|
||||
|
||||
# Clock framework
|
||||
@@ -45,6 +52,8 @@ obj-$(CONFIG_MACH_OMAP_LDP) += board-ldp.o \
|
||||
mmc-twl4030.o
|
||||
obj-$(CONFIG_MACH_OVERO) += board-overo.o \
|
||||
mmc-twl4030.o
|
||||
obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o \
|
||||
mmc-twl4030.o
|
||||
obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \
|
||||
mmc-twl4030.o
|
||||
obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o \
|
||||
@@ -53,8 +62,17 @@ obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o \
|
||||
obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o \
|
||||
board-rx51-peripherals.o \
|
||||
mmc-twl4030.o
|
||||
obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom2.o \
|
||||
mmc-twl4030.o \
|
||||
board-zoom-debugboard.o
|
||||
|
||||
obj-$(CONFIG_MACH_OMAP_4430SDP) += board-4430sdp.o
|
||||
|
||||
# Platform specific device init code
|
||||
ifeq ($(CONFIG_USB_MUSB_SOC),y)
|
||||
obj-y += usb-musb.o
|
||||
endif
|
||||
|
||||
onenand-$(CONFIG_MTD_ONENAND_OMAP2) := gpmc-onenand.o
|
||||
obj-y += $(onenand-m) $(onenand-y)
|
||||
|
||||
smc91x-$(CONFIG_SMC91X) := gpmc-smc91x.o
|
||||
obj-y += $(smc91x-m) $(smc91x-y)
|
||||
|
||||
@@ -36,14 +36,12 @@
|
||||
#include <mach/common.h>
|
||||
#include <mach/gpmc.h>
|
||||
#include <mach/usb.h>
|
||||
#include <mach/gpmc-smc91x.h>
|
||||
|
||||
#include "mmc-twl4030.h"
|
||||
|
||||
#define SDP2430_CS0_BASE 0x04000000
|
||||
#define SDP2430_FLASH_CS 0
|
||||
#define SDP2430_SMC91X_CS 5
|
||||
|
||||
#define SDP2430_ETHR_GPIO_IRQ 149
|
||||
#define SECONDARY_LCD_GPIO 147
|
||||
|
||||
static struct mtd_partition sdp2430_partitions[] = {
|
||||
/* bootloader (U-Boot, etc) in first sector */
|
||||
@@ -99,100 +97,53 @@ static struct platform_device sdp2430_flash_device = {
|
||||
.resource = &sdp2430_flash_resource,
|
||||
};
|
||||
|
||||
static struct resource sdp2430_smc91x_resources[] = {
|
||||
[0] = {
|
||||
.start = SDP2430_CS0_BASE,
|
||||
.end = SDP2430_CS0_BASE + SZ_64M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = OMAP_GPIO_IRQ(SDP2430_ETHR_GPIO_IRQ),
|
||||
.end = OMAP_GPIO_IRQ(SDP2430_ETHR_GPIO_IRQ),
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device sdp2430_smc91x_device = {
|
||||
.name = "smc91x",
|
||||
static struct platform_device sdp2430_lcd_device = {
|
||||
.name = "sdp2430_lcd",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(sdp2430_smc91x_resources),
|
||||
.resource = sdp2430_smc91x_resources,
|
||||
};
|
||||
|
||||
static struct platform_device *sdp2430_devices[] __initdata = {
|
||||
&sdp2430_smc91x_device,
|
||||
&sdp2430_flash_device,
|
||||
&sdp2430_lcd_device,
|
||||
};
|
||||
|
||||
static inline void __init sdp2430_init_smc91x(void)
|
||||
static struct omap_lcd_config sdp2430_lcd_config __initdata = {
|
||||
.ctrl_name = "internal",
|
||||
};
|
||||
|
||||
#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91x_MODULE)
|
||||
|
||||
static struct omap_smc91x_platform_data board_smc91x_data = {
|
||||
.cs = 5,
|
||||
.gpio_irq = 149,
|
||||
.flags = GPMC_MUX_ADD_DATA | GPMC_TIMINGS_SMC91C96 |
|
||||
IORESOURCE_IRQ_LOWLEVEL,
|
||||
|
||||
};
|
||||
|
||||
static void __init board_smc91x_init(void)
|
||||
{
|
||||
int eth_cs;
|
||||
unsigned long cs_mem_base;
|
||||
unsigned int rate;
|
||||
struct clk *gpmc_fck;
|
||||
if (omap_rev() > OMAP3430_REV_ES1_0)
|
||||
board_smc91x_data.gpio_irq = 6;
|
||||
else
|
||||
board_smc91x_data.gpio_irq = 29;
|
||||
|
||||
eth_cs = SDP2430_SMC91X_CS;
|
||||
|
||||
gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */
|
||||
if (IS_ERR(gpmc_fck)) {
|
||||
WARN_ON(1);
|
||||
return;
|
||||
}
|
||||
|
||||
clk_enable(gpmc_fck);
|
||||
rate = clk_get_rate(gpmc_fck);
|
||||
|
||||
/* Make sure CS1 timings are correct, for 2430 always muxed */
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1, 0x00011200);
|
||||
|
||||
if (rate >= 160000000) {
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f01);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080803);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1c0b1c0a);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4);
|
||||
} else if (rate >= 130000000) {
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4);
|
||||
} else { /* rate = 100000000 */
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x031A1F1F);
|
||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000003C2);
|
||||
}
|
||||
|
||||
if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) {
|
||||
printk(KERN_ERR "Failed to request GPMC mem for smc91x\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
sdp2430_smc91x_resources[0].start = cs_mem_base + 0x300;
|
||||
sdp2430_smc91x_resources[0].end = cs_mem_base + 0x30f;
|
||||
udelay(100);
|
||||
|
||||
if (gpio_request(SDP2430_ETHR_GPIO_IRQ, "SMC91x irq") < 0) {
|
||||
printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n",
|
||||
SDP2430_ETHR_GPIO_IRQ);
|
||||
gpmc_cs_free(eth_cs);
|
||||
goto out;
|
||||
}
|
||||
gpio_direction_input(SDP2430_ETHR_GPIO_IRQ);
|
||||
|
||||
out:
|
||||
clk_disable(gpmc_fck);
|
||||
clk_put(gpmc_fck);
|
||||
gpmc_smc91x_init(&board_smc91x_data);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline void board_smc91x_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void __init omap_2430sdp_init_irq(void)
|
||||
{
|
||||
omap2_init_common_hw(NULL);
|
||||
omap_init_irq();
|
||||
omap_gpio_init();
|
||||
sdp2430_init_smc91x();
|
||||
}
|
||||
|
||||
static struct omap_uart_config sdp2430_uart_config __initdata = {
|
||||
@@ -201,6 +152,7 @@ static struct omap_uart_config sdp2430_uart_config __initdata = {
|
||||
|
||||
static struct omap_board_config_kernel sdp2430_config[] = {
|
||||
{OMAP_TAG_UART, &sdp2430_uart_config},
|
||||
{OMAP_TAG_LCD, &sdp2430_lcd_config},
|
||||
};
|
||||
|
||||
|
||||
@@ -248,6 +200,8 @@ static struct twl4030_hsmmc_info mmc[] __initdata = {
|
||||
|
||||
static void __init omap_2430sdp_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
omap2430_i2c_init();
|
||||
|
||||
platform_add_devices(sdp2430_devices, ARRAY_SIZE(sdp2430_devices));
|
||||
@@ -256,6 +210,12 @@ static void __init omap_2430sdp_init(void)
|
||||
omap_serial_init();
|
||||
twl4030_mmc_init(mmc);
|
||||
usb_musb_init();
|
||||
board_smc91x_init();
|
||||
|
||||
/* Turn off secondary LCD backlight */
|
||||
ret = gpio_request(SECONDARY_LCD_GPIO, "Secondary LCD backlight");
|
||||
if (ret == 0)
|
||||
gpio_direction_output(SECONDARY_LCD_GPIO, 0);
|
||||
}
|
||||
|
||||
static void __init omap_2430sdp_map_io(void)
|
||||
|
||||
@@ -39,15 +39,13 @@
|
||||
|
||||
#include <mach/control.h>
|
||||
#include <mach/keypad.h>
|
||||
#include <mach/gpmc-smc91x.h>
|
||||
|
||||
#include "sdram-qimonda-hyb18m512160af-6.h"
|
||||
#include "mmc-twl4030.h"
|
||||
|
||||
#define CONFIG_DISABLE_HFCLK 1
|
||||
|
||||
#define SDP3430_ETHR_GPIO_IRQ_SDPV1 29
|
||||
#define SDP3430_ETHR_GPIO_IRQ_SDPV2 6
|
||||
#define SDP3430_SMC91X_CS 3
|
||||
|
||||
#define SDP3430_TS_GPIO_IRQ_SDPV1 3
|
||||
#define SDP3430_TS_GPIO_IRQ_SDPV2 2
|
||||
|
||||
@@ -56,24 +54,6 @@
|
||||
|
||||
#define TWL4030_MSECURE_GPIO 22
|
||||
|
||||
static struct resource sdp3430_smc91x_resources[] = {
|
||||
[0] = {
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = 0,
|
||||
.end = 0,
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device sdp3430_smc91x_device = {
|
||||
.name = "smc91x",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(sdp3430_smc91x_resources),
|
||||
.resource = sdp3430_smc91x_resources,
|
||||
};
|
||||
|
||||
static int sdp3430_keymap[] = {
|
||||
KEY(0, 0, KEY_LEFT),
|
||||
KEY(0, 1, KEY_RIGHT),
|
||||
@@ -184,48 +164,14 @@ static struct regulator_consumer_supply sdp3430_vdvi_supply = {
|
||||
};
|
||||
|
||||
static struct platform_device *sdp3430_devices[] __initdata = {
|
||||
&sdp3430_smc91x_device,
|
||||
&sdp3430_lcd_device,
|
||||
};
|
||||
|
||||
static inline void __init sdp3430_init_smc91x(void)
|
||||
{
|
||||
int eth_cs;
|
||||
unsigned long cs_mem_base;
|
||||
int eth_gpio = 0;
|
||||
|
||||
eth_cs = SDP3430_SMC91X_CS;
|
||||
|
||||
if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) {
|
||||
printk(KERN_ERR "Failed to request GPMC mem for smc91x\n");
|
||||
return;
|
||||
}
|
||||
|
||||
sdp3430_smc91x_resources[0].start = cs_mem_base + 0x300;
|
||||
sdp3430_smc91x_resources[0].end = cs_mem_base + 0x30f;
|
||||
udelay(100);
|
||||
|
||||
if (omap_rev() > OMAP3430_REV_ES1_0)
|
||||
eth_gpio = SDP3430_ETHR_GPIO_IRQ_SDPV2;
|
||||
else
|
||||
eth_gpio = SDP3430_ETHR_GPIO_IRQ_SDPV1;
|
||||
|
||||
sdp3430_smc91x_resources[1].start = gpio_to_irq(eth_gpio);
|
||||
|
||||
if (gpio_request(eth_gpio, "SMC91x irq") < 0) {
|
||||
printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n",
|
||||
eth_gpio);
|
||||
return;
|
||||
}
|
||||
gpio_direction_input(eth_gpio);
|
||||
}
|
||||
|
||||
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();
|
||||
sdp3430_init_smc91x();
|
||||
}
|
||||
|
||||
static struct omap_uart_config sdp3430_uart_config __initdata = {
|
||||
@@ -506,6 +452,32 @@ static int __init omap3430_i2c_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
|
||||
|
||||
static struct omap_smc91x_platform_data board_smc91x_data = {
|
||||
.cs = 3,
|
||||
.flags = GPMC_MUX_ADD_DATA | GPMC_TIMINGS_SMC91C96 |
|
||||
IORESOURCE_IRQ_LOWLEVEL,
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
gpmc_smc91x_init(&board_smc91x_data);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline void board_smc91x_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void __init omap_3430sdp_init(void)
|
||||
{
|
||||
omap3430_i2c_init();
|
||||
@@ -522,6 +494,7 @@ static void __init omap_3430sdp_init(void)
|
||||
ads7846_dev_init();
|
||||
omap_serial_init();
|
||||
usb_musb_init();
|
||||
board_smc91x_init();
|
||||
}
|
||||
|
||||
static void __init omap_3430sdp_map_io(void)
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Board support file for OMAP4430 SDP.
|
||||
*
|
||||
* Copyright (C) 2009 Texas Instruments
|
||||
*
|
||||
* Author: Santosh Shilimkar <santosh.shilimkar@ti.com>
|
||||
*
|
||||
* Based on mach-omap2/board-3430sdp.c
|
||||
*
|
||||
* 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/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/board.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/control.h>
|
||||
#include <mach/timer-gp.h>
|
||||
#include <asm/hardware/gic.h>
|
||||
|
||||
static struct platform_device sdp4430_lcd_device = {
|
||||
.name = "sdp4430_lcd",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct platform_device *sdp4430_devices[] __initdata = {
|
||||
&sdp4430_lcd_device,
|
||||
};
|
||||
|
||||
static struct omap_uart_config sdp4430_uart_config __initdata = {
|
||||
.enabled_uarts = (1 << 0) | (1 << 1) | (1 << 2),
|
||||
};
|
||||
|
||||
static struct omap_lcd_config sdp4430_lcd_config __initdata = {
|
||||
.ctrl_name = "internal",
|
||||
};
|
||||
|
||||
static struct omap_board_config_kernel sdp4430_config[] __initdata = {
|
||||
{ OMAP_TAG_UART, &sdp4430_uart_config },
|
||||
{ OMAP_TAG_LCD, &sdp4430_lcd_config },
|
||||
};
|
||||
|
||||
static void __init gic_init_irq(void)
|
||||
{
|
||||
gic_dist_init(0, IO_ADDRESS(OMAP44XX_GIC_DIST_BASE), 29);
|
||||
gic_cpu_init(0, IO_ADDRESS(OMAP44XX_GIC_CPU_BASE));
|
||||
}
|
||||
|
||||
static void __init omap_4430sdp_init_irq(void)
|
||||
{
|
||||
omap2_init_common_hw(NULL);
|
||||
#ifdef CONFIG_OMAP_32K_TIMER
|
||||
omap2_gp_clockevent_set_gptimer(1);
|
||||
#endif
|
||||
gic_init_irq();
|
||||
omap_gpio_init();
|
||||
}
|
||||
|
||||
|
||||
static void __init omap_4430sdp_init(void)
|
||||
{
|
||||
platform_add_devices(sdp4430_devices, ARRAY_SIZE(sdp4430_devices));
|
||||
omap_board_config = sdp4430_config;
|
||||
omap_board_config_size = ARRAY_SIZE(sdp4430_config);
|
||||
omap_serial_init();
|
||||
}
|
||||
|
||||
static void __init omap_4430sdp_map_io(void)
|
||||
{
|
||||
omap2_set_globals_443x();
|
||||
omap2_map_common_io();
|
||||
}
|
||||
|
||||
MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
|
||||
/* Maintainer: Santosh Shilimkar - Texas Instruments Inc */
|
||||
.phys_io = 0x48000000,
|
||||
.io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
|
||||
.boot_params = 0x80000100,
|
||||
.map_io = omap_4430sdp_map_io,
|
||||
.init_irq = omap_4430sdp_init_irq,
|
||||
.init_machine = omap_4430sdp_init,
|
||||
.timer = &omap_timer,
|
||||
MACHINE_END
|
||||
@@ -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)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user