Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (39 commits) omap: delete unused bootloader tag variables omap: Devkit8000: Remove unused pins omap: Devkit8000: Change position of init calls omap: Devkit8000: Remove unnecessary include file omap: Devkit8000: Fix typo in pin name omap: Devkit8000: Add missing package selection omap: Devkit8000: Fix typo in supplies n8x0_defconfig: remove CONFIG_NILFS2_FS override omap: board-sdp-flash.c: Fix typos in debug output omap4: Fix McBSP4 base address omap: rx51_defconfig: Remove CONFIG_SYSFS_DEPRECATED*=y options omap: rx51_defconfig: Remove duplicate phonet omap: fix a gpmc nand problem AM3517: initialize i2c subsystem after mux subsystem omap: remove one of the define of INT_34XX_BENCH_MPU_EMUL omap: fix the compile error if CONFIG_MTD_NAND_OMAP2 is notenabled OMAP4: Clocks: Change SPI Instance Names omap: Devkit8000: Fix wrong usb port on Devkit8000 OMAP4: Fix for CONTROL register Base OMAP4-HSMMC: FIX for MMC5 Controller IRQ Base ...
This commit is contained in:
commit
17282b9855
arch/arm
configs
mach-omap1
mach-omap2
Kconfigboard-3630sdp.cboard-am3517evm.cboard-devkit8000.cboard-igep0020.cboard-n8x0.cboard-sdp-flash.cboard-zoom-debugboard.cboard-zoom-peripherals.cclock3xxx_data.cclock44xx_data.cclockdomain.cdevices.cgpmc-nand.c
include/mach
omap-headsmp.Somap44xx-smc.Somap_hwmod.cpowerdomain.cprcm.cserial.cplat-omap
@ -1058,7 +1058,6 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
|
|||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
# CONFIG_SYSV_FS is not set
|
# CONFIG_SYSV_FS is not set
|
||||||
# CONFIG_UFS_FS is not set
|
# CONFIG_UFS_FS is not set
|
||||||
# CONFIG_NILFS2_FS is not set
|
|
||||||
CONFIG_NETWORK_FILESYSTEMS=y
|
CONFIG_NETWORK_FILESYSTEMS=y
|
||||||
# CONFIG_NFS_FS is not set
|
# CONFIG_NFS_FS is not set
|
||||||
# CONFIG_NFSD is not set
|
# CONFIG_NFSD is not set
|
||||||
|
@ -661,7 +661,7 @@ CONFIG_DEVKMEM=y
|
|||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=32
|
CONFIG_SERIAL_8250_NR_UARTS=32
|
||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=1
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
CONFIG_SERIAL_8250_EXTENDED=y
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
|
@ -680,7 +680,7 @@ CONFIG_DEVKMEM=y
|
|||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=32
|
CONFIG_SERIAL_8250_NR_UARTS=32
|
||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=1
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
CONFIG_SERIAL_8250_EXTENDED=y
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
|
@ -59,8 +59,6 @@ CONFIG_FAIR_GROUP_SCHED=y
|
|||||||
CONFIG_USER_SCHED=y
|
CONFIG_USER_SCHED=y
|
||||||
# CONFIG_CGROUP_SCHED is not set
|
# CONFIG_CGROUP_SCHED is not set
|
||||||
# CONFIG_CGROUPS is not set
|
# CONFIG_CGROUPS is not set
|
||||||
CONFIG_SYSFS_DEPRECATED=y
|
|
||||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
|
||||||
# CONFIG_RELAY is not set
|
# CONFIG_RELAY is not set
|
||||||
# CONFIG_NAMESPACES is not set
|
# CONFIG_NAMESPACES is not set
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
@ -480,7 +478,6 @@ CONFIG_BT_HIDP=m
|
|||||||
# CONFIG_BT_HCIBFUSB is not set
|
# CONFIG_BT_HCIBFUSB is not set
|
||||||
# CONFIG_BT_HCIVHCI is not set
|
# CONFIG_BT_HCIVHCI is not set
|
||||||
# CONFIG_AF_RXRPC is not set
|
# CONFIG_AF_RXRPC is not set
|
||||||
# CONFIG_PHONET is not set
|
|
||||||
CONFIG_WIRELESS=y
|
CONFIG_WIRELESS=y
|
||||||
CONFIG_CFG80211=y
|
CONFIG_CFG80211=y
|
||||||
# CONFIG_CFG80211_REG_DEBUG is not set
|
# CONFIG_CFG80211_REG_DEBUG is not set
|
||||||
|
@ -68,12 +68,6 @@ struct sys_timer omap_timer;
|
|||||||
* ---------------------------------------------------------------------------
|
* ---------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP16XX)
|
|
||||||
#define TIMER_32K_SYNCHRONIZED 0xfffbc410
|
|
||||||
#else
|
|
||||||
#error OMAP 32KHz timer does not currently work on 15XX!
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* 16xx specific defines */
|
/* 16xx specific defines */
|
||||||
#define OMAP1_32K_TIMER_BASE 0xfffb9000
|
#define OMAP1_32K_TIMER_BASE 0xfffb9000
|
||||||
#define OMAP1_32K_TIMER_CR 0x08
|
#define OMAP1_32K_TIMER_CR 0x08
|
||||||
@ -150,15 +144,6 @@ static struct clock_event_device clockevent_32k_timer = {
|
|||||||
.set_mode = omap_32k_timer_set_mode,
|
.set_mode = omap_32k_timer_set_mode,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* The 32KHz synchronized timer is an additional timer on 16xx.
|
|
||||||
* It is always running.
|
|
||||||
*/
|
|
||||||
static inline unsigned long omap_32k_sync_timer_read(void)
|
|
||||||
{
|
|
||||||
return omap_readl(TIMER_32K_SYNCHRONIZED);
|
|
||||||
}
|
|
||||||
|
|
||||||
static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id)
|
static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
struct clock_event_device *evt = &clockevent_32k_timer;
|
struct clock_event_device *evt = &clockevent_32k_timer;
|
||||||
|
@ -61,6 +61,8 @@ config MACH_OMAP3_BEAGLE
|
|||||||
config MACH_DEVKIT8000
|
config MACH_DEVKIT8000
|
||||||
bool "DEVKIT8000 board"
|
bool "DEVKIT8000 board"
|
||||||
depends on ARCH_OMAP3
|
depends on ARCH_OMAP3
|
||||||
|
select OMAP_PACKAGE_CUS
|
||||||
|
select OMAP_MUX
|
||||||
|
|
||||||
config MACH_OMAP_LDP
|
config MACH_OMAP_LDP
|
||||||
bool "OMAP3 LDP board"
|
bool "OMAP3 LDP board"
|
||||||
|
@ -96,6 +96,7 @@ static struct omap_board_mux board_mux[] __initdata = {
|
|||||||
static void __init omap_sdp_init(void)
|
static void __init omap_sdp_init(void)
|
||||||
{
|
{
|
||||||
omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
|
omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
|
||||||
|
omap_serial_init();
|
||||||
zoom_peripherals_init();
|
zoom_peripherals_init();
|
||||||
board_smc91x_init();
|
board_smc91x_init();
|
||||||
enable_board_wakeup_source();
|
enable_board_wakeup_source();
|
||||||
|
@ -294,9 +294,9 @@ static struct omap_board_mux board_mux[] __initdata = {
|
|||||||
|
|
||||||
static void __init am3517_evm_init(void)
|
static void __init am3517_evm_init(void)
|
||||||
{
|
{
|
||||||
am3517_evm_i2c_init();
|
|
||||||
|
|
||||||
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
||||||
|
|
||||||
|
am3517_evm_i2c_init();
|
||||||
platform_add_devices(am3517_evm_devices,
|
platform_add_devices(am3517_evm_devices,
|
||||||
ARRAY_SIZE(am3517_evm_devices));
|
ARRAY_SIZE(am3517_evm_devices));
|
||||||
|
|
||||||
|
@ -50,7 +50,6 @@
|
|||||||
#include <linux/input/matrix_keypad.h>
|
#include <linux/input/matrix_keypad.h>
|
||||||
#include <linux/spi/spi.h>
|
#include <linux/spi/spi.h>
|
||||||
#include <linux/spi/ads7846.h>
|
#include <linux/spi/ads7846.h>
|
||||||
#include <linux/usb/otg.h>
|
|
||||||
#include <linux/dm9000.h>
|
#include <linux/dm9000.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
|
||||||
@ -269,20 +268,6 @@ static int devkit8000_twl_gpio_setup(struct device *dev,
|
|||||||
devkit8000_vmmc1_supply.dev = mmc[0].dev;
|
devkit8000_vmmc1_supply.dev = mmc[0].dev;
|
||||||
devkit8000_vsim_supply.dev = mmc[0].dev;
|
devkit8000_vsim_supply.dev = mmc[0].dev;
|
||||||
|
|
||||||
/* REVISIT: need ehci-omap hooks for external VBUS
|
|
||||||
* power switch and overcurrent detect
|
|
||||||
*/
|
|
||||||
|
|
||||||
gpio_request(gpio + 1, "EHCI_nOC");
|
|
||||||
gpio_direction_input(gpio + 1);
|
|
||||||
|
|
||||||
/* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
|
|
||||||
gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
|
|
||||||
gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
|
|
||||||
|
|
||||||
/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
|
|
||||||
gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,7 +288,7 @@ static struct regulator_consumer_supply devkit8000_vpll2_supplies[] = {
|
|||||||
.dev = &devkit8000_lcd_device.dev,
|
.dev = &devkit8000_lcd_device.dev,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.supply = "vdss_dsi",
|
.supply = "vdds_dsi",
|
||||||
.dev = &devkit8000_dss_device.dev,
|
.dev = &devkit8000_dss_device.dev,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -639,17 +624,21 @@ static struct omap_musb_board_data musb_board_data = {
|
|||||||
static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
|
static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
|
||||||
|
|
||||||
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
|
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
|
||||||
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
|
.port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
||||||
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
||||||
|
|
||||||
.phy_reset = true,
|
.phy_reset = true,
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
.reset_gpio_port[0] = -EINVAL,
|
||||||
.reset_gpio_port[1] = 147,
|
.reset_gpio_port[1] = -EINVAL,
|
||||||
.reset_gpio_port[2] = -EINVAL
|
.reset_gpio_port[2] = -EINVAL
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init devkit8000_init(void)
|
static void __init devkit8000_init(void)
|
||||||
{
|
{
|
||||||
|
omap_serial_init();
|
||||||
|
|
||||||
|
omap_dm9000_init();
|
||||||
|
|
||||||
devkit8000_i2c_init();
|
devkit8000_i2c_init();
|
||||||
platform_add_devices(devkit8000_devices,
|
platform_add_devices(devkit8000_devices,
|
||||||
ARRAY_SIZE(devkit8000_devices));
|
ARRAY_SIZE(devkit8000_devices));
|
||||||
@ -659,25 +648,15 @@ static void __init devkit8000_init(void)
|
|||||||
spi_register_board_info(devkit8000_spi_board_info,
|
spi_register_board_info(devkit8000_spi_board_info,
|
||||||
ARRAY_SIZE(devkit8000_spi_board_info));
|
ARRAY_SIZE(devkit8000_spi_board_info));
|
||||||
|
|
||||||
omap_serial_init();
|
|
||||||
|
|
||||||
omap_dm9000_init();
|
|
||||||
|
|
||||||
devkit8000_ads7846_init();
|
devkit8000_ads7846_init();
|
||||||
|
|
||||||
omap_mux_init_gpio(170, OMAP_PIN_INPUT);
|
|
||||||
|
|
||||||
gpio_request(170, "DVI_nPD");
|
|
||||||
/* REVISIT leave DVI powered down until it's needed ... */
|
|
||||||
gpio_direction_output(170, true);
|
|
||||||
|
|
||||||
usb_musb_init(&musb_board_data);
|
usb_musb_init(&musb_board_data);
|
||||||
usb_ehci_init(&ehci_pdata);
|
usb_ehci_init(&ehci_pdata);
|
||||||
devkit8000_flash_init();
|
devkit8000_flash_init();
|
||||||
|
|
||||||
/* Ensure SDRC pins are mux'd for self-refresh */
|
/* Ensure SDRC pins are mux'd for self-refresh */
|
||||||
omap_mux_init_signal("sdr_cke0", OMAP_PIN_OUTPUT);
|
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
|
||||||
omap_mux_init_signal("sdr_cke1", OMAP_PIN_OUTPUT);
|
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init devkit8000_map_io(void)
|
static void __init devkit8000_map_io(void)
|
||||||
|
@ -458,13 +458,13 @@ static struct omap_musb_board_data musb_board_data = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
|
static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
|
||||||
.port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
|
||||||
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
|
.port_mode[1] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
||||||
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
||||||
|
|
||||||
.phy_reset = true,
|
.phy_reset = true,
|
||||||
.reset_gpio_port[0] = -EINVAL,
|
.reset_gpio_port[0] = IGEP2_GPIO_USBH_NRESET,
|
||||||
.reset_gpio_port[1] = IGEP2_GPIO_USBH_NRESET,
|
.reset_gpio_port[1] = -EINVAL,
|
||||||
.reset_gpio_port[2] = -EINVAL,
|
.reset_gpio_port[2] = -EINVAL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ static void __init n8x0_onenand_init(void) {}
|
|||||||
*/
|
*/
|
||||||
#define N8X0_SLOT_SWITCH_GPIO 96
|
#define N8X0_SLOT_SWITCH_GPIO 96
|
||||||
#define N810_EMMC_VSD_GPIO 23
|
#define N810_EMMC_VSD_GPIO 23
|
||||||
#define NN810_EMMC_VIO_GPIO 9
|
#define N810_EMMC_VIO_GPIO 9
|
||||||
|
|
||||||
static int n8x0_mmc_switch_slot(struct device *dev, int slot)
|
static int n8x0_mmc_switch_slot(struct device *dev, int slot)
|
||||||
{
|
{
|
||||||
@ -304,10 +304,10 @@ static void n810_set_power_emmc(struct device *dev,
|
|||||||
if (power_on) {
|
if (power_on) {
|
||||||
gpio_set_value(N810_EMMC_VSD_GPIO, 1);
|
gpio_set_value(N810_EMMC_VSD_GPIO, 1);
|
||||||
msleep(1);
|
msleep(1);
|
||||||
gpio_set_value(NN810_EMMC_VIO_GPIO, 1);
|
gpio_set_value(N810_EMMC_VIO_GPIO, 1);
|
||||||
msleep(1);
|
msleep(1);
|
||||||
} else {
|
} else {
|
||||||
gpio_set_value(NN810_EMMC_VIO_GPIO, 0);
|
gpio_set_value(N810_EMMC_VIO_GPIO, 0);
|
||||||
msleep(50);
|
msleep(50);
|
||||||
gpio_set_value(N810_EMMC_VSD_GPIO, 0);
|
gpio_set_value(N810_EMMC_VSD_GPIO, 0);
|
||||||
msleep(50);
|
msleep(50);
|
||||||
@ -468,7 +468,7 @@ static void n8x0_mmc_cleanup(struct device *dev)
|
|||||||
|
|
||||||
if (machine_is_nokia_n810()) {
|
if (machine_is_nokia_n810()) {
|
||||||
gpio_free(N810_EMMC_VSD_GPIO);
|
gpio_free(N810_EMMC_VSD_GPIO);
|
||||||
gpio_free(NN810_EMMC_VIO_GPIO);
|
gpio_free(N810_EMMC_VIO_GPIO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,7 +529,7 @@ void __init n8x0_mmc_init(void)
|
|||||||
|
|
||||||
err = gpio_request(N8X0_SLOT_SWITCH_GPIO, "MMC slot switch");
|
err = gpio_request(N8X0_SLOT_SWITCH_GPIO, "MMC slot switch");
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return;
|
||||||
|
|
||||||
gpio_direction_output(N8X0_SLOT_SWITCH_GPIO, 0);
|
gpio_direction_output(N8X0_SLOT_SWITCH_GPIO, 0);
|
||||||
|
|
||||||
@ -537,17 +537,17 @@ void __init n8x0_mmc_init(void)
|
|||||||
err = gpio_request(N810_EMMC_VSD_GPIO, "MMC slot 2 Vddf");
|
err = gpio_request(N810_EMMC_VSD_GPIO, "MMC slot 2 Vddf");
|
||||||
if (err) {
|
if (err) {
|
||||||
gpio_free(N8X0_SLOT_SWITCH_GPIO);
|
gpio_free(N8X0_SLOT_SWITCH_GPIO);
|
||||||
return err;
|
return;
|
||||||
}
|
}
|
||||||
gpio_direction_output(N810_EMMC_VSD_GPIO, 0);
|
gpio_direction_output(N810_EMMC_VSD_GPIO, 0);
|
||||||
|
|
||||||
err = gpio_request(NN810_EMMC_VIO_GPIO, "MMC slot 2 Vdd");
|
err = gpio_request(N810_EMMC_VIO_GPIO, "MMC slot 2 Vdd");
|
||||||
if (err) {
|
if (err) {
|
||||||
gpio_free(N8X0_SLOT_SWITCH_GPIO);
|
gpio_free(N8X0_SLOT_SWITCH_GPIO);
|
||||||
gpio_free(N810_EMMC_VSD_GPIO);
|
gpio_free(N810_EMMC_VSD_GPIO);
|
||||||
return err;
|
return;
|
||||||
}
|
}
|
||||||
gpio_direction_output(NN810_EMMC_VIO_GPIO, 0);
|
gpio_direction_output(N810_EMMC_VIO_GPIO, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
mmc_data[0] = &mmc1_data;
|
mmc_data[0] = &mmc1_data;
|
||||||
|
@ -253,7 +253,7 @@ void __init sdp_flash_init(struct flash_partitions sdp_partition_info[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (norcs > GPMC_CS_NUM)
|
if (norcs > GPMC_CS_NUM)
|
||||||
printk(KERN_INFO "OneNAND: Unable to find configuration "
|
printk(KERN_INFO "NOR: Unable to find configuration "
|
||||||
"in GPMC\n");
|
"in GPMC\n");
|
||||||
else
|
else
|
||||||
board_nor_init(sdp_partition_info[0], norcs);
|
board_nor_init(sdp_partition_info[0], norcs);
|
||||||
|
@ -96,7 +96,7 @@ static struct plat_serial8250_port serial_platform_data[] = {
|
|||||||
|
|
||||||
static struct platform_device zoom_debugboard_serial_device = {
|
static struct platform_device zoom_debugboard_serial_device = {
|
||||||
.name = "serial8250",
|
.name = "serial8250",
|
||||||
.id = 3,
|
.id = PLAT8250_DEV_PLATFORM,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = serial_platform_data,
|
.platform_data = serial_platform_data,
|
||||||
},
|
},
|
||||||
|
@ -280,7 +280,6 @@ static void enable_board_wakeup_source(void)
|
|||||||
void __init zoom_peripherals_init(void)
|
void __init zoom_peripherals_init(void)
|
||||||
{
|
{
|
||||||
omap_i2c_init();
|
omap_i2c_init();
|
||||||
omap_serial_init();
|
|
||||||
usb_musb_init(&musb_board_data);
|
usb_musb_init(&musb_board_data);
|
||||||
enable_board_wakeup_source();
|
enable_board_wakeup_source();
|
||||||
}
|
}
|
||||||
|
@ -895,7 +895,7 @@ static struct clk dpll4_m4x2_ck = {
|
|||||||
.ops = &clkops_omap2_dflt_wait,
|
.ops = &clkops_omap2_dflt_wait,
|
||||||
.parent = &dpll4_m4_ck,
|
.parent = &dpll4_m4_ck,
|
||||||
.enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
|
.enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
|
||||||
.enable_bit = OMAP3430_PWRDN_CAM_SHIFT,
|
.enable_bit = OMAP3430_PWRDN_DSS1_SHIFT,
|
||||||
.flags = INVERT_ENABLE,
|
.flags = INVERT_ENABLE,
|
||||||
.clkdm_name = "dpll4_clkdm",
|
.clkdm_name = "dpll4_clkdm",
|
||||||
.recalc = &omap3_clkoutx2_recalc,
|
.recalc = &omap3_clkoutx2_recalc,
|
||||||
|
@ -2671,10 +2671,10 @@ static struct omap_clk omap44xx_clks[] = {
|
|||||||
CLK("omap-mcbsp.2", "ick", &dummy_ck, CK_443X),
|
CLK("omap-mcbsp.2", "ick", &dummy_ck, CK_443X),
|
||||||
CLK("omap-mcbsp.3", "ick", &dummy_ck, CK_443X),
|
CLK("omap-mcbsp.3", "ick", &dummy_ck, CK_443X),
|
||||||
CLK("omap-mcbsp.4", "ick", &dummy_ck, CK_443X),
|
CLK("omap-mcbsp.4", "ick", &dummy_ck, CK_443X),
|
||||||
CLK("omap-mcspi.1", "ick", &dummy_ck, CK_443X),
|
CLK("omap2_mcspi.1", "ick", &dummy_ck, CK_443X),
|
||||||
CLK("omap-mcspi.2", "ick", &dummy_ck, CK_443X),
|
CLK("omap2_mcspi.2", "ick", &dummy_ck, CK_443X),
|
||||||
CLK("omap-mcspi.3", "ick", &dummy_ck, CK_443X),
|
CLK("omap2_mcspi.3", "ick", &dummy_ck, CK_443X),
|
||||||
CLK("omap-mcspi.4", "ick", &dummy_ck, CK_443X),
|
CLK("omap2_mcspi.4", "ick", &dummy_ck, CK_443X),
|
||||||
CLK(NULL, "uart1_ick", &dummy_ck, CK_443X),
|
CLK(NULL, "uart1_ick", &dummy_ck, CK_443X),
|
||||||
CLK(NULL, "uart2_ick", &dummy_ck, CK_443X),
|
CLK(NULL, "uart2_ick", &dummy_ck, CK_443X),
|
||||||
CLK(NULL, "uart3_ick", &dummy_ck, CK_443X),
|
CLK(NULL, "uart3_ick", &dummy_ck, CK_443X),
|
||||||
|
@ -240,7 +240,7 @@ static void _omap2_clkdm_set_hwsup(struct clockdomain *clkdm, int enable)
|
|||||||
bits = OMAP24XX_CLKSTCTRL_ENABLE_AUTO;
|
bits = OMAP24XX_CLKSTCTRL_ENABLE_AUTO;
|
||||||
else
|
else
|
||||||
bits = OMAP24XX_CLKSTCTRL_DISABLE_AUTO;
|
bits = OMAP24XX_CLKSTCTRL_DISABLE_AUTO;
|
||||||
} else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
|
} else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
|
||||||
if (enable)
|
if (enable)
|
||||||
bits = OMAP34XX_CLKSTCTRL_ENABLE_AUTO;
|
bits = OMAP34XX_CLKSTCTRL_ENABLE_AUTO;
|
||||||
else
|
else
|
||||||
@ -812,7 +812,7 @@ int omap2_clkdm_sleep(struct clockdomain *clkdm)
|
|||||||
cm_set_mod_reg_bits(OMAP24XX_FORCESTATE,
|
cm_set_mod_reg_bits(OMAP24XX_FORCESTATE,
|
||||||
clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
|
clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
|
||||||
|
|
||||||
} else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
|
} else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
|
||||||
|
|
||||||
u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP <<
|
u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP <<
|
||||||
__ffs(clkdm->clktrctrl_mask));
|
__ffs(clkdm->clktrctrl_mask));
|
||||||
@ -856,7 +856,7 @@ int omap2_clkdm_wakeup(struct clockdomain *clkdm)
|
|||||||
cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE,
|
cm_clear_mod_reg_bits(OMAP24XX_FORCESTATE,
|
||||||
clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
|
clkdm->pwrdm.ptr->prcm_offs, OMAP2_PM_PWSTCTRL);
|
||||||
|
|
||||||
} else if (cpu_is_omap34xx() | cpu_is_omap44xx()) {
|
} else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
|
||||||
|
|
||||||
u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP <<
|
u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP <<
|
||||||
__ffs(clkdm->clktrctrl_mask));
|
__ffs(clkdm->clktrctrl_mask));
|
||||||
|
@ -726,7 +726,7 @@ void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data,
|
|||||||
if (!cpu_is_omap44xx())
|
if (!cpu_is_omap44xx())
|
||||||
return;
|
return;
|
||||||
base = OMAP4_MMC5_BASE + OMAP4_MMC_REG_OFFSET;
|
base = OMAP4_MMC5_BASE + OMAP4_MMC_REG_OFFSET;
|
||||||
irq = OMAP44XX_IRQ_MMC4;
|
irq = OMAP44XX_IRQ_MMC5;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
|
@ -39,6 +39,9 @@ static int omap2_nand_gpmc_retime(void)
|
|||||||
struct gpmc_timings t;
|
struct gpmc_timings t;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
if (!gpmc_nand_data->gpmc_t)
|
||||||
|
return 0;
|
||||||
|
|
||||||
memset(&t, 0, sizeof(t));
|
memset(&t, 0, sizeof(t));
|
||||||
t.sync_clk = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->sync_clk);
|
t.sync_clk = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->sync_clk);
|
||||||
t.cs_on = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->cs_on);
|
t.cs_on = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->cs_on);
|
||||||
|
@ -52,7 +52,7 @@ omap_irq_base: .word 0
|
|||||||
|
|
||||||
mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision
|
mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision
|
||||||
and \tmp, \tmp, #0x000f0000 @ only check architecture
|
and \tmp, \tmp, #0x000f0000 @ only check architecture
|
||||||
cmp \tmp, #0x00060000 @ is v6?
|
cmp \tmp, #0x00070000 @ is v6?
|
||||||
beq 2400f @ found v6 so it's omap24xx
|
beq 2400f @ found v6 so it's omap24xx
|
||||||
mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision
|
mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision
|
||||||
and \tmp, \tmp, #0x000000f0 @ check cortex 8 or 9
|
and \tmp, \tmp, #0x000000f0 @ check cortex 8 or 9
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
ENTRY(omap_secondary_startup)
|
ENTRY(omap_secondary_startup)
|
||||||
hold: ldr r12,=0x103
|
hold: ldr r12,=0x103
|
||||||
dsb
|
dsb
|
||||||
smc @ read from AuxCoreBoot0
|
smc #0 @ read from AuxCoreBoot0
|
||||||
mov r0, r0, lsr #9
|
mov r0, r0, lsr #9
|
||||||
mrc p15, 0, r4, c0, c0, 5
|
mrc p15, 0, r4, c0, c0, 5
|
||||||
and r4, r4, #0x0f
|
and r4, r4, #0x0f
|
||||||
@ -52,7 +52,7 @@ ENTRY(omap_modify_auxcoreboot0)
|
|||||||
stmfd sp!, {r1-r12, lr}
|
stmfd sp!, {r1-r12, lr}
|
||||||
ldr r12, =0x104
|
ldr r12, =0x104
|
||||||
dsb
|
dsb
|
||||||
smc
|
smc #0
|
||||||
ldmfd sp!, {r1-r12, pc}
|
ldmfd sp!, {r1-r12, pc}
|
||||||
END(omap_modify_auxcoreboot0)
|
END(omap_modify_auxcoreboot0)
|
||||||
|
|
||||||
@ -60,6 +60,6 @@ ENTRY(omap_auxcoreboot_addr)
|
|||||||
stmfd sp!, {r2-r12, lr}
|
stmfd sp!, {r2-r12, lr}
|
||||||
ldr r12, =0x105
|
ldr r12, =0x105
|
||||||
dsb
|
dsb
|
||||||
smc
|
smc #0
|
||||||
ldmfd sp!, {r2-r12, pc}
|
ldmfd sp!, {r2-r12, pc}
|
||||||
END(omap_auxcoreboot_addr)
|
END(omap_auxcoreboot_addr)
|
||||||
|
@ -27,6 +27,6 @@ ENTRY(omap_smc1)
|
|||||||
mov r12, r0
|
mov r12, r0
|
||||||
mov r0, r1
|
mov r0, r1
|
||||||
dsb
|
dsb
|
||||||
smc
|
smc #0
|
||||||
ldmfd sp!, {r2-r12, pc}
|
ldmfd sp!, {r2-r12, pc}
|
||||||
END(omap_smc1)
|
END(omap_smc1)
|
||||||
|
@ -1511,6 +1511,9 @@ struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh)
|
|||||||
c = oh->slaves[oh->_mpu_port_index]->_clk;
|
c = oh->slaves[oh->_mpu_port_index]->_clk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!c->clkdm)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
return c->clkdm->pwrdm.ptr;
|
return c->clkdm->pwrdm.ptr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -222,7 +222,7 @@ void pwrdm_init(struct powerdomain **pwrdm_list)
|
|||||||
{
|
{
|
||||||
struct powerdomain **p = NULL;
|
struct powerdomain **p = NULL;
|
||||||
|
|
||||||
if (cpu_is_omap24xx() | cpu_is_omap34xx()) {
|
if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
|
||||||
pwrstctrl_reg_offs = OMAP2_PM_PWSTCTRL;
|
pwrstctrl_reg_offs = OMAP2_PM_PWSTCTRL;
|
||||||
pwrstst_reg_offs = OMAP2_PM_PWSTST;
|
pwrstst_reg_offs = OMAP2_PM_PWSTST;
|
||||||
} else if (cpu_is_omap44xx()) {
|
} else if (cpu_is_omap44xx()) {
|
||||||
|
@ -123,7 +123,7 @@ struct omap3_prcm_regs prcm_context;
|
|||||||
u32 omap_prcm_get_reset_sources(void)
|
u32 omap_prcm_get_reset_sources(void)
|
||||||
{
|
{
|
||||||
/* XXX This presumably needs modification for 34XX */
|
/* XXX This presumably needs modification for 34XX */
|
||||||
if (cpu_is_omap24xx() | cpu_is_omap34xx())
|
if (cpu_is_omap24xx() || cpu_is_omap34xx())
|
||||||
return prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST) & 0x7f;
|
return prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST) & 0x7f;
|
||||||
if (cpu_is_omap44xx())
|
if (cpu_is_omap44xx())
|
||||||
return prm_read_mod_reg(WKUP_MOD, OMAP4_RM_RSTST) & 0x7f;
|
return prm_read_mod_reg(WKUP_MOD, OMAP4_RM_RSTST) & 0x7f;
|
||||||
@ -157,7 +157,7 @@ void omap_prcm_arch_reset(char mode, const char *cmd)
|
|||||||
else
|
else
|
||||||
WARN_ON(1);
|
WARN_ON(1);
|
||||||
|
|
||||||
if (cpu_is_omap24xx() | cpu_is_omap34xx())
|
if (cpu_is_omap24xx() || cpu_is_omap34xx())
|
||||||
prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs,
|
prm_set_mod_reg_bits(OMAP_RST_DPLL3, prcm_offs,
|
||||||
OMAP2_RM_RSTCTRL);
|
OMAP2_RM_RSTCTRL);
|
||||||
if (cpu_is_omap44xx())
|
if (cpu_is_omap44xx())
|
||||||
|
@ -115,7 +115,6 @@ static struct plat_serial8250_port serial_platform_data2[] = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
|
|
||||||
static struct plat_serial8250_port serial_platform_data3[] = {
|
static struct plat_serial8250_port serial_platform_data3[] = {
|
||||||
{
|
{
|
||||||
.irq = 70,
|
.irq = 70,
|
||||||
@ -128,23 +127,12 @@ static struct plat_serial8250_port serial_platform_data3[] = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void omap2_set_globals_uart4(struct omap_globals *omap2_globals)
|
|
||||||
{
|
|
||||||
serial_platform_data3[0].mapbase = omap2_globals->uart4_phys;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline void omap2_set_globals_uart4(struct omap_globals *omap2_globals)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void __init omap2_set_globals_uart(struct omap_globals *omap2_globals)
|
void __init omap2_set_globals_uart(struct omap_globals *omap2_globals)
|
||||||
{
|
{
|
||||||
serial_platform_data0[0].mapbase = omap2_globals->uart1_phys;
|
serial_platform_data0[0].mapbase = omap2_globals->uart1_phys;
|
||||||
serial_platform_data1[0].mapbase = omap2_globals->uart2_phys;
|
serial_platform_data1[0].mapbase = omap2_globals->uart2_phys;
|
||||||
serial_platform_data2[0].mapbase = omap2_globals->uart3_phys;
|
serial_platform_data2[0].mapbase = omap2_globals->uart3_phys;
|
||||||
if (cpu_is_omap3630() || cpu_is_omap44xx())
|
serial_platform_data3[0].mapbase = omap2_globals->uart4_phys;
|
||||||
omap2_set_globals_uart4(omap2_globals);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned int __serial_read_reg(struct uart_port *up,
|
static inline unsigned int __serial_read_reg(struct uart_port *up,
|
||||||
@ -550,7 +538,7 @@ static ssize_t sleep_timeout_store(struct device *dev,
|
|||||||
unsigned int value;
|
unsigned int value;
|
||||||
|
|
||||||
if (sscanf(buf, "%u", &value) != 1) {
|
if (sscanf(buf, "%u", &value) != 1) {
|
||||||
printk(KERN_ERR "sleep_timeout_store: Invalid value\n");
|
dev_err(dev, "sleep_timeout_store: Invalid value\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,27 +652,33 @@ void __init omap_serial_early_init(void)
|
|||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct plat_serial8250_port *p = dev->platform_data;
|
struct plat_serial8250_port *p = dev->platform_data;
|
||||||
|
|
||||||
|
/* Don't map zero-based physical address */
|
||||||
|
if (p->mapbase == 0) {
|
||||||
|
dev_warn(dev, "no physical address for uart#%d,"
|
||||||
|
" so skipping early_init...\n", i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Module 4KB + L4 interconnect 4KB
|
* Module 4KB + L4 interconnect 4KB
|
||||||
* Static mapping, never released
|
* Static mapping, never released
|
||||||
*/
|
*/
|
||||||
p->membase = ioremap(p->mapbase, SZ_8K);
|
p->membase = ioremap(p->mapbase, SZ_8K);
|
||||||
if (!p->membase) {
|
if (!p->membase) {
|
||||||
printk(KERN_ERR "ioremap failed for uart%i\n", i + 1);
|
dev_err(dev, "ioremap failed for uart%i\n", i + 1);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(name, "uart%d_ick", i + 1);
|
sprintf(name, "uart%d_ick", i + 1);
|
||||||
uart->ick = clk_get(NULL, name);
|
uart->ick = clk_get(NULL, name);
|
||||||
if (IS_ERR(uart->ick)) {
|
if (IS_ERR(uart->ick)) {
|
||||||
printk(KERN_ERR "Could not get uart%d_ick\n", i + 1);
|
dev_err(dev, "Could not get uart%d_ick\n", i + 1);
|
||||||
uart->ick = NULL;
|
uart->ick = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(name, "uart%d_fck", i+1);
|
sprintf(name, "uart%d_fck", i+1);
|
||||||
uart->fck = clk_get(NULL, name);
|
uart->fck = clk_get(NULL, name);
|
||||||
if (IS_ERR(uart->fck)) {
|
if (IS_ERR(uart->fck)) {
|
||||||
printk(KERN_ERR "Could not get uart%d_fck\n", i + 1);
|
dev_err(dev, "Could not get uart%d_fck\n", i + 1);
|
||||||
uart->fck = NULL;
|
uart->fck = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -727,6 +721,13 @@ void __init omap_serial_init_port(int port)
|
|||||||
pdev = &uart->pdev;
|
pdev = &uart->pdev;
|
||||||
dev = &pdev->dev;
|
dev = &pdev->dev;
|
||||||
|
|
||||||
|
/* Don't proceed if there's no clocks available */
|
||||||
|
if (unlikely(!uart->ick || !uart->fck)) {
|
||||||
|
WARN(1, "%s: can't init uart%d, no clocks available\n",
|
||||||
|
kobject_name(&dev->kobj), port);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
omap_uart_enable_clocks(uart);
|
omap_uart_enable_clocks(uart);
|
||||||
|
|
||||||
omap_uart_reset(uart);
|
omap_uart_reset(uart);
|
||||||
|
@ -44,9 +44,6 @@
|
|||||||
|
|
||||||
#define NO_LENGTH_CHECK 0xffffffff
|
#define NO_LENGTH_CHECK 0xffffffff
|
||||||
|
|
||||||
unsigned char omap_bootloader_tag[512];
|
|
||||||
int omap_bootloader_tag_len;
|
|
||||||
|
|
||||||
struct omap_board_config_kernel *omap_board_config;
|
struct omap_board_config_kernel *omap_board_config;
|
||||||
int omap_board_config_size;
|
int omap_board_config_size;
|
||||||
|
|
||||||
@ -100,10 +97,17 @@ EXPORT_SYMBOL(omap_get_var_config);
|
|||||||
|
|
||||||
#include <linux/clocksource.h>
|
#include <linux/clocksource.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* offset_32k holds the init time counter value. It is then subtracted
|
||||||
|
* from every counter read to achieve a counter that counts time from the
|
||||||
|
* kernel boot (needed for sched_clock()).
|
||||||
|
*/
|
||||||
|
static u32 offset_32k __read_mostly;
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP16XX
|
#ifdef CONFIG_ARCH_OMAP16XX
|
||||||
static cycle_t omap16xx_32k_read(struct clocksource *cs)
|
static cycle_t omap16xx_32k_read(struct clocksource *cs)
|
||||||
{
|
{
|
||||||
return omap_readl(OMAP16XX_TIMER_32K_SYNCHRONIZED);
|
return omap_readl(OMAP16XX_TIMER_32K_SYNCHRONIZED) - offset_32k;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define omap16xx_32k_read NULL
|
#define omap16xx_32k_read NULL
|
||||||
@ -112,7 +116,7 @@ static cycle_t omap16xx_32k_read(struct clocksource *cs)
|
|||||||
#ifdef CONFIG_ARCH_OMAP2420
|
#ifdef CONFIG_ARCH_OMAP2420
|
||||||
static cycle_t omap2420_32k_read(struct clocksource *cs)
|
static cycle_t omap2420_32k_read(struct clocksource *cs)
|
||||||
{
|
{
|
||||||
return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10);
|
return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10) - offset_32k;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define omap2420_32k_read NULL
|
#define omap2420_32k_read NULL
|
||||||
@ -121,7 +125,7 @@ static cycle_t omap2420_32k_read(struct clocksource *cs)
|
|||||||
#ifdef CONFIG_ARCH_OMAP2430
|
#ifdef CONFIG_ARCH_OMAP2430
|
||||||
static cycle_t omap2430_32k_read(struct clocksource *cs)
|
static cycle_t omap2430_32k_read(struct clocksource *cs)
|
||||||
{
|
{
|
||||||
return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10);
|
return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10) - offset_32k;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define omap2430_32k_read NULL
|
#define omap2430_32k_read NULL
|
||||||
@ -130,7 +134,7 @@ static cycle_t omap2430_32k_read(struct clocksource *cs)
|
|||||||
#ifdef CONFIG_ARCH_OMAP3
|
#ifdef CONFIG_ARCH_OMAP3
|
||||||
static cycle_t omap34xx_32k_read(struct clocksource *cs)
|
static cycle_t omap34xx_32k_read(struct clocksource *cs)
|
||||||
{
|
{
|
||||||
return omap_readl(OMAP3430_32KSYNCT_BASE + 0x10);
|
return omap_readl(OMAP3430_32KSYNCT_BASE + 0x10) - offset_32k;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define omap34xx_32k_read NULL
|
#define omap34xx_32k_read NULL
|
||||||
@ -139,7 +143,7 @@ static cycle_t omap34xx_32k_read(struct clocksource *cs)
|
|||||||
#ifdef CONFIG_ARCH_OMAP4
|
#ifdef CONFIG_ARCH_OMAP4
|
||||||
static cycle_t omap44xx_32k_read(struct clocksource *cs)
|
static cycle_t omap44xx_32k_read(struct clocksource *cs)
|
||||||
{
|
{
|
||||||
return omap_readl(OMAP4430_32KSYNCT_BASE + 0x10);
|
return omap_readl(OMAP4430_32KSYNCT_BASE + 0x10) - offset_32k;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define omap44xx_32k_read NULL
|
#define omap44xx_32k_read NULL
|
||||||
@ -227,6 +231,8 @@ static int __init omap_init_clocksource_32k(void)
|
|||||||
clocksource_32k.mult = clocksource_hz2mult(32768,
|
clocksource_32k.mult = clocksource_hz2mult(32768,
|
||||||
clocksource_32k.shift);
|
clocksource_32k.shift);
|
||||||
|
|
||||||
|
offset_32k = clocksource_32k.read(&clocksource_32k);
|
||||||
|
|
||||||
if (clocksource_register(&clocksource_32k))
|
if (clocksource_register(&clocksource_32k))
|
||||||
printk(err, clocksource_32k.name);
|
printk(err, clocksource_32k.name);
|
||||||
}
|
}
|
||||||
|
@ -937,6 +937,15 @@ void omap_start_dma(int lch)
|
|||||||
{
|
{
|
||||||
u32 l;
|
u32 l;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The CPC/CDAC register needs to be initialized to zero
|
||||||
|
* before starting dma transfer.
|
||||||
|
*/
|
||||||
|
if (cpu_is_omap15xx())
|
||||||
|
dma_write(0, CPC(lch));
|
||||||
|
else
|
||||||
|
dma_write(0, CDAC(lch));
|
||||||
|
|
||||||
if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) {
|
if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) {
|
||||||
int next_lch, cur_lch;
|
int next_lch, cur_lch;
|
||||||
char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT];
|
char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT];
|
||||||
|
@ -798,7 +798,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
|
|||||||
case METHOD_MPUIO:
|
case METHOD_MPUIO:
|
||||||
reg += OMAP_MPUIO_GPIO_INT_EDGE;
|
reg += OMAP_MPUIO_GPIO_INT_EDGE;
|
||||||
l = __raw_readl(reg);
|
l = __raw_readl(reg);
|
||||||
if (trigger & IRQ_TYPE_EDGE_BOTH)
|
if ((trigger & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH)
|
||||||
bank->toggle_mask |= 1 << gpio;
|
bank->toggle_mask |= 1 << gpio;
|
||||||
if (trigger & IRQ_TYPE_EDGE_RISING)
|
if (trigger & IRQ_TYPE_EDGE_RISING)
|
||||||
l |= 1 << gpio;
|
l |= 1 << gpio;
|
||||||
@ -812,7 +812,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
|
|||||||
case METHOD_GPIO_1510:
|
case METHOD_GPIO_1510:
|
||||||
reg += OMAP1510_GPIO_INT_CONTROL;
|
reg += OMAP1510_GPIO_INT_CONTROL;
|
||||||
l = __raw_readl(reg);
|
l = __raw_readl(reg);
|
||||||
if (trigger & IRQ_TYPE_EDGE_BOTH)
|
if ((trigger & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH)
|
||||||
bank->toggle_mask |= 1 << gpio;
|
bank->toggle_mask |= 1 << gpio;
|
||||||
if (trigger & IRQ_TYPE_EDGE_RISING)
|
if (trigger & IRQ_TYPE_EDGE_RISING)
|
||||||
l |= 1 << gpio;
|
l |= 1 << gpio;
|
||||||
@ -846,7 +846,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
|
|||||||
case METHOD_GPIO_7XX:
|
case METHOD_GPIO_7XX:
|
||||||
reg += OMAP7XX_GPIO_INT_CONTROL;
|
reg += OMAP7XX_GPIO_INT_CONTROL;
|
||||||
l = __raw_readl(reg);
|
l = __raw_readl(reg);
|
||||||
if (trigger & IRQ_TYPE_EDGE_BOTH)
|
if ((trigger & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH)
|
||||||
bank->toggle_mask |= 1 << gpio;
|
bank->toggle_mask |= 1 << gpio;
|
||||||
if (trigger & IRQ_TYPE_EDGE_RISING)
|
if (trigger & IRQ_TYPE_EDGE_RISING)
|
||||||
l |= 1 << gpio;
|
l |= 1 << gpio;
|
||||||
|
@ -345,8 +345,6 @@
|
|||||||
#define INT_34XX_MMC3_IRQ 94
|
#define INT_34XX_MMC3_IRQ 94
|
||||||
#define INT_34XX_GPT12_IRQ 95
|
#define INT_34XX_GPT12_IRQ 95
|
||||||
|
|
||||||
#define INT_34XX_BENCH_MPU_EMUL 3
|
|
||||||
|
|
||||||
#define INT_35XX_HECC0_IRQ 24
|
#define INT_35XX_HECC0_IRQ 24
|
||||||
#define INT_35XX_HECC1_IRQ 28
|
#define INT_35XX_HECC1_IRQ 28
|
||||||
#define INT_35XX_EMAC_C0_RXTHRESH_IRQ 67
|
#define INT_35XX_EMAC_C0_RXTHRESH_IRQ 67
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
#define OMAP44XX_MCBSP1_BASE 0x49022000
|
#define OMAP44XX_MCBSP1_BASE 0x49022000
|
||||||
#define OMAP44XX_MCBSP2_BASE 0x49024000
|
#define OMAP44XX_MCBSP2_BASE 0x49024000
|
||||||
#define OMAP44XX_MCBSP3_BASE 0x49026000
|
#define OMAP44XX_MCBSP3_BASE 0x49026000
|
||||||
#define OMAP44XX_MCBSP4_BASE 0x48074000
|
#define OMAP44XX_MCBSP4_BASE 0x48096000
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
#if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
|
||||||
|
|
||||||
|
@ -29,4 +29,11 @@ struct omap_nand_platform_data {
|
|||||||
/* size (4 KiB) for IO mapping */
|
/* size (4 KiB) for IO mapping */
|
||||||
#define NAND_IO_SIZE SZ_4K
|
#define NAND_IO_SIZE SZ_4K
|
||||||
|
|
||||||
|
#if defined(CONFIG_MTD_NAND_OMAP2) || defined(CONFIG_MTD_NAND_OMAP2_MODULE)
|
||||||
extern int gpmc_nand_init(struct omap_nand_platform_data *d);
|
extern int gpmc_nand_init(struct omap_nand_platform_data *d);
|
||||||
|
#else
|
||||||
|
static inline int gpmc_nand_init(struct omap_nand_platform_data *d)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#define OMAP4430_PRM_BASE 0x4a306000
|
#define OMAP4430_PRM_BASE 0x4a306000
|
||||||
#define OMAP44XX_GPMC_BASE 0x50000000
|
#define OMAP44XX_GPMC_BASE 0x50000000
|
||||||
#define OMAP443X_SCM_BASE 0x4a002000
|
#define OMAP443X_SCM_BASE 0x4a002000
|
||||||
#define OMAP443X_CTRL_BASE OMAP443X_SCM_BASE
|
#define OMAP443X_CTRL_BASE 0x4a100000
|
||||||
#define OMAP44XX_IC_BASE 0x48200000
|
#define OMAP44XX_IC_BASE 0x48200000
|
||||||
#define OMAP44XX_IVA_INTC_BASE 0x40000000
|
#define OMAP44XX_IVA_INTC_BASE 0x40000000
|
||||||
#define IRQ_SIR_IRQ 0x0040
|
#define IRQ_SIR_IRQ 0x0040
|
||||||
|
@ -294,8 +294,8 @@ struct omap_hwmod_class_sysconfig {
|
|||||||
u16 rev_offs;
|
u16 rev_offs;
|
||||||
u16 sysc_offs;
|
u16 sysc_offs;
|
||||||
u16 syss_offs;
|
u16 syss_offs;
|
||||||
|
u16 sysc_flags;
|
||||||
u8 idlemodes;
|
u8 idlemodes;
|
||||||
u8 sysc_flags;
|
|
||||||
u8 clockact;
|
u8 clockact;
|
||||||
struct omap_hwmod_sysc_fields *sysc_fields;
|
struct omap_hwmod_sysc_fields *sysc_fields;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user