Merge branch 'omap-for-v3.8/fixes-for-merge-window' into omap-for-v3.8/fixes-for-merge-window-v2
This commit is contained in:
commit
2cb85a7bd2
|
@ -107,6 +107,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
|
||||||
omap3-evm.dtb \
|
omap3-evm.dtb \
|
||||||
omap3-tobi.dtb \
|
omap3-tobi.dtb \
|
||||||
omap4-panda.dtb \
|
omap4-panda.dtb \
|
||||||
|
omap4-panda-a4.dtb \
|
||||||
omap4-panda-es.dtb \
|
omap4-panda-es.dtb \
|
||||||
omap4-var-som.dtb \
|
omap4-var-som.dtb \
|
||||||
omap4-sdp.dtb \
|
omap4-sdp.dtb \
|
||||||
|
|
|
@ -15,6 +15,6 @@
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x80000000 0x84000000>; /* 64 MB */
|
reg = <0x80000000 0x4000000>; /* 64 MB */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,6 +26,8 @@ config SOC_HAS_OMAP2_SDRC
|
||||||
|
|
||||||
config SOC_HAS_REALTIME_COUNTER
|
config SOC_HAS_REALTIME_COUNTER
|
||||||
bool "Real time free running counter"
|
bool "Real time free running counter"
|
||||||
|
depends on SOC_OMAP5
|
||||||
|
default y
|
||||||
|
|
||||||
config ARCH_OMAP2
|
config ARCH_OMAP2
|
||||||
bool "TI OMAP2"
|
bool "TI OMAP2"
|
||||||
|
@ -79,7 +81,6 @@ config SOC_OMAP5
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
select CPU_V7
|
select CPU_V7
|
||||||
select HAVE_SMP
|
select HAVE_SMP
|
||||||
select SOC_HAS_REALTIME_COUNTER
|
|
||||||
select COMMON_CLK
|
select COMMON_CLK
|
||||||
|
|
||||||
comment "OMAP Core Type"
|
comment "OMAP Core Type"
|
||||||
|
|
|
@ -157,6 +157,7 @@ static struct omap_dss_device sdp3430_lcd_device = {
|
||||||
|
|
||||||
static struct tfp410_platform_data dvi_panel = {
|
static struct tfp410_platform_data dvi_panel = {
|
||||||
.power_down_gpio = -1,
|
.power_down_gpio = -1,
|
||||||
|
.i2c_bus_num = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct omap_dss_device sdp3430_dvi_device = {
|
static struct omap_dss_device sdp3430_dvi_device = {
|
||||||
|
|
|
@ -208,6 +208,7 @@ static struct omap_dss_device am3517_evm_tv_device = {
|
||||||
|
|
||||||
static struct tfp410_platform_data dvi_panel = {
|
static struct tfp410_platform_data dvi_panel = {
|
||||||
.power_down_gpio = -1,
|
.power_down_gpio = -1,
|
||||||
|
.i2c_bus_num = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct omap_dss_device am3517_evm_dvi_device = {
|
static struct omap_dss_device am3517_evm_dvi_device = {
|
||||||
|
|
|
@ -241,6 +241,7 @@ static struct omap_dss_device cm_t35_lcd_device = {
|
||||||
|
|
||||||
static struct tfp410_platform_data dvi_panel = {
|
static struct tfp410_platform_data dvi_panel = {
|
||||||
.power_down_gpio = CM_T35_DVI_EN_GPIO,
|
.power_down_gpio = CM_T35_DVI_EN_GPIO,
|
||||||
|
.i2c_bus_num = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct omap_dss_device cm_t35_dvi_device = {
|
static struct omap_dss_device cm_t35_dvi_device = {
|
||||||
|
|
|
@ -141,6 +141,7 @@ static struct omap_dss_device devkit8000_lcd_device = {
|
||||||
|
|
||||||
static struct tfp410_platform_data dvi_panel = {
|
static struct tfp410_platform_data dvi_panel = {
|
||||||
.power_down_gpio = -1,
|
.power_down_gpio = -1,
|
||||||
|
.i2c_bus_num = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct omap_dss_device devkit8000_dvi_device = {
|
static struct omap_dss_device devkit8000_dvi_device = {
|
||||||
|
|
|
@ -27,14 +27,12 @@
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/input/matrix_keypad.h>
|
#include <linux/input/matrix_keypad.h>
|
||||||
#include <linux/mfd/menelaus.h>
|
#include <linux/mfd/menelaus.h>
|
||||||
|
#include <linux/omap-dma.h>
|
||||||
|
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
#include <linux/omap-dma.h>
|
|
||||||
#include <plat/debug-devices.h>
|
|
||||||
|
|
||||||
#include <video/omapdss.h>
|
#include <video/omapdss.h>
|
||||||
#include <video/omap-panel-generic-dpi.h>
|
#include <video/omap-panel-generic-dpi.h>
|
||||||
|
|
||||||
|
@ -42,11 +40,9 @@
|
||||||
#include "mux.h"
|
#include "mux.h"
|
||||||
#include "control.h"
|
#include "control.h"
|
||||||
#include "gpmc.h"
|
#include "gpmc.h"
|
||||||
|
#include "gpmc-smc91x.h"
|
||||||
|
|
||||||
#define H4_FLASH_CS 0
|
#define H4_FLASH_CS 0
|
||||||
#define H4_SMC91X_CS 1
|
|
||||||
|
|
||||||
#define H4_ETHR_GPIO_IRQ 92
|
|
||||||
|
|
||||||
#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE)
|
#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE)
|
||||||
static const uint32_t board_matrix_keys[] = {
|
static const uint32_t board_matrix_keys[] = {
|
||||||
|
@ -250,71 +246,31 @@ static u32 is_gpmc_muxed(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void __init h4_init_debug(void)
|
#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91x_MODULE)
|
||||||
|
|
||||||
|
static struct omap_smc91x_platform_data board_smc91x_data = {
|
||||||
|
.cs = 1,
|
||||||
|
.gpio_irq = 92,
|
||||||
|
.flags = GPMC_TIMINGS_SMC91C96 | IORESOURCE_IRQ_LOWLEVEL,
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __init board_smc91x_init(void)
|
||||||
{
|
{
|
||||||
int eth_cs;
|
|
||||||
unsigned long cs_mem_base;
|
|
||||||
unsigned int muxed, rate;
|
|
||||||
struct clk *gpmc_fck;
|
|
||||||
|
|
||||||
eth_cs = H4_SMC91X_CS;
|
|
||||||
|
|
||||||
gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */
|
|
||||||
if (IS_ERR(gpmc_fck)) {
|
|
||||||
WARN_ON(1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
clk_prepare_enable(gpmc_fck);
|
|
||||||
rate = clk_get_rate(gpmc_fck);
|
|
||||||
clk_disable_unprepare(gpmc_fck);
|
|
||||||
clk_put(gpmc_fck);
|
|
||||||
|
|
||||||
if (is_gpmc_muxed())
|
if (is_gpmc_muxed())
|
||||||
muxed = 0x200;
|
board_smc91x_data.flags |= GPMC_MUX_ADD_DATA;
|
||||||
else
|
|
||||||
muxed = 0;
|
|
||||||
|
|
||||||
/* Make sure CS1 timings are correct */
|
omap_mux_init_gpio(board_smc91x_data.gpio_irq, OMAP_PIN_INPUT);
|
||||||
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1,
|
gpmc_smc91x_init(&board_smc91x_data);
|
||||||
0x00011000 | muxed);
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
udelay(100);
|
|
||||||
|
|
||||||
omap_mux_init_gpio(92, 0);
|
|
||||||
if (debug_card_init(cs_mem_base, H4_ETHR_GPIO_IRQ) < 0)
|
|
||||||
gpmc_cs_free(eth_cs);
|
|
||||||
|
|
||||||
out:
|
|
||||||
clk_disable_unprepare(gpmc_fck);
|
|
||||||
clk_put(gpmc_fck);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static inline void board_smc91x_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static void __init h4_init_flash(void)
|
static void __init h4_init_flash(void)
|
||||||
{
|
{
|
||||||
unsigned long base;
|
unsigned long base;
|
||||||
|
@ -371,6 +327,7 @@ static void __init omap_h4_init(void)
|
||||||
omap_serial_init();
|
omap_serial_init();
|
||||||
omap_sdrc_init(NULL, NULL);
|
omap_sdrc_init(NULL, NULL);
|
||||||
h4_init_flash();
|
h4_init_flash();
|
||||||
|
board_smc91x_init();
|
||||||
|
|
||||||
omap_display_init(&h4_dss_data);
|
omap_display_init(&h4_dss_data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -240,6 +240,7 @@ static struct omap_dss_device omap3_evm_tv_device = {
|
||||||
|
|
||||||
static struct tfp410_platform_data dvi_panel = {
|
static struct tfp410_platform_data dvi_panel = {
|
||||||
.power_down_gpio = OMAP3EVM_DVI_PANEL_EN_GPIO,
|
.power_down_gpio = OMAP3EVM_DVI_PANEL_EN_GPIO,
|
||||||
|
.i2c_bus_num = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct omap_dss_device omap3_evm_dvi_device = {
|
static struct omap_dss_device omap3_evm_dvi_device = {
|
||||||
|
|
|
@ -118,6 +118,7 @@ static struct omap_dss_device omap3_stalker_tv_device = {
|
||||||
|
|
||||||
static struct tfp410_platform_data dvi_panel = {
|
static struct tfp410_platform_data dvi_panel = {
|
||||||
.power_down_gpio = DSS_ENABLE_GPIO,
|
.power_down_gpio = DSS_ENABLE_GPIO,
|
||||||
|
.i2c_bus_num = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct omap_dss_device omap3_stalker_dvi_device = {
|
static struct omap_dss_device omap3_stalker_dvi_device = {
|
||||||
|
|
|
@ -135,10 +135,7 @@ static int __init _omap_mux_init_gpio(struct omap_mux_partition *partition,
|
||||||
|
|
||||||
old_mode = omap_mux_read(partition, gpio_mux->reg_offset);
|
old_mode = omap_mux_read(partition, gpio_mux->reg_offset);
|
||||||
mux_mode = val & ~(OMAP_MUX_NR_MODES - 1);
|
mux_mode = val & ~(OMAP_MUX_NR_MODES - 1);
|
||||||
if (partition->flags & OMAP_MUX_GPIO_IN_MODE3)
|
mux_mode |= partition->gpio;
|
||||||
mux_mode |= OMAP_MUX_MODE3;
|
|
||||||
else
|
|
||||||
mux_mode |= OMAP_MUX_MODE4;
|
|
||||||
pr_debug("%s: Setting signal %s.gpio%i 0x%04x -> 0x%04x\n", __func__,
|
pr_debug("%s: Setting signal %s.gpio%i 0x%04x -> 0x%04x\n", __func__,
|
||||||
gpio_mux->muxnames[0], gpio, old_mode, mux_mode);
|
gpio_mux->muxnames[0], gpio, old_mode, mux_mode);
|
||||||
omap_mux_write(partition, mux_mode, gpio_mux->reg_offset);
|
omap_mux_write(partition, mux_mode, gpio_mux->reg_offset);
|
||||||
|
@ -800,7 +797,7 @@ int __init omap_mux_late_init(void)
|
||||||
struct omap_mux *m = &e->mux;
|
struct omap_mux *m = &e->mux;
|
||||||
u16 mode = omap_mux_read(partition, m->reg_offset);
|
u16 mode = omap_mux_read(partition, m->reg_offset);
|
||||||
|
|
||||||
if (OMAP_MODE_GPIO(mode))
|
if (OMAP_MODE_GPIO(partition, mode))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
#ifndef CONFIG_DEBUG_FS
|
#ifndef CONFIG_DEBUG_FS
|
||||||
|
@ -1065,7 +1062,7 @@ static void __init omap_mux_init_list(struct omap_mux_partition *partition,
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
/* Skip pins that are not muxed as GPIO by bootloader */
|
/* Skip pins that are not muxed as GPIO by bootloader */
|
||||||
if (!OMAP_MODE_GPIO(omap_mux_read(partition,
|
if (!OMAP_MODE_GPIO(partition, omap_mux_read(partition,
|
||||||
superset->reg_offset))) {
|
superset->reg_offset))) {
|
||||||
superset++;
|
superset++;
|
||||||
continue;
|
continue;
|
||||||
|
@ -1132,6 +1129,7 @@ int __init omap_mux_init(const char *name, u32 flags,
|
||||||
|
|
||||||
partition->name = name;
|
partition->name = name;
|
||||||
partition->flags = flags;
|
partition->flags = flags;
|
||||||
|
partition->gpio = flags & OMAP_MUX_MODE7;
|
||||||
partition->size = mux_size;
|
partition->size = mux_size;
|
||||||
partition->phys = mux_pbase;
|
partition->phys = mux_pbase;
|
||||||
partition->base = ioremap(mux_pbase, mux_size);
|
partition->base = ioremap(mux_pbase, mux_size);
|
||||||
|
|
|
@ -58,7 +58,8 @@
|
||||||
#define OMAP_PIN_OFF_INPUT_PULLDOWN (OMAP_OFF_EN | OMAP_OFF_PULL_EN)
|
#define OMAP_PIN_OFF_INPUT_PULLDOWN (OMAP_OFF_EN | OMAP_OFF_PULL_EN)
|
||||||
#define OMAP_PIN_OFF_WAKEUPENABLE OMAP_WAKEUP_EN
|
#define OMAP_PIN_OFF_WAKEUPENABLE OMAP_WAKEUP_EN
|
||||||
|
|
||||||
#define OMAP_MODE_GPIO(x) (((x) & OMAP_MUX_MODE7) == OMAP_MUX_MODE4)
|
#define OMAP_MODE_GPIO(partition, x) (((x) & OMAP_MUX_MODE7) == \
|
||||||
|
partition->gpio)
|
||||||
#define OMAP_MODE_UART(x) (((x) & OMAP_MUX_MODE7) == OMAP_MUX_MODE0)
|
#define OMAP_MODE_UART(x) (((x) & OMAP_MUX_MODE7) == OMAP_MUX_MODE0)
|
||||||
|
|
||||||
/* Flags for omapX_mux_init */
|
/* Flags for omapX_mux_init */
|
||||||
|
@ -79,13 +80,20 @@
|
||||||
/*
|
/*
|
||||||
* omap_mux_init flags definition:
|
* omap_mux_init flags definition:
|
||||||
*
|
*
|
||||||
|
* OMAP_GPIO_MUX_MODE, bits 0-2: gpio muxing mode, same like pad control
|
||||||
|
* register which includes values from 0-7.
|
||||||
* OMAP_MUX_REG_8BIT: Ensure that access to padconf is done in 8 bits.
|
* OMAP_MUX_REG_8BIT: Ensure that access to padconf is done in 8 bits.
|
||||||
* The default value is 16 bits.
|
* The default value is 16 bits.
|
||||||
* OMAP_MUX_GPIO_IN_MODE3: The GPIO is selected in mode3.
|
|
||||||
* The default is mode4.
|
|
||||||
*/
|
*/
|
||||||
#define OMAP_MUX_REG_8BIT (1 << 0)
|
#define OMAP_MUX_GPIO_IN_MODE0 OMAP_MUX_MODE0
|
||||||
#define OMAP_MUX_GPIO_IN_MODE3 (1 << 1)
|
#define OMAP_MUX_GPIO_IN_MODE1 OMAP_MUX_MODE1
|
||||||
|
#define OMAP_MUX_GPIO_IN_MODE2 OMAP_MUX_MODE2
|
||||||
|
#define OMAP_MUX_GPIO_IN_MODE3 OMAP_MUX_MODE3
|
||||||
|
#define OMAP_MUX_GPIO_IN_MODE4 OMAP_MUX_MODE4
|
||||||
|
#define OMAP_MUX_GPIO_IN_MODE5 OMAP_MUX_MODE5
|
||||||
|
#define OMAP_MUX_GPIO_IN_MODE6 OMAP_MUX_MODE6
|
||||||
|
#define OMAP_MUX_GPIO_IN_MODE7 OMAP_MUX_MODE7
|
||||||
|
#define OMAP_MUX_REG_8BIT (1 << 3)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct omap_board_data - board specific device data
|
* struct omap_board_data - board specific device data
|
||||||
|
@ -105,6 +113,7 @@ struct omap_board_data {
|
||||||
* struct mux_partition - contain partition related information
|
* struct mux_partition - contain partition related information
|
||||||
* @name: name of the current partition
|
* @name: name of the current partition
|
||||||
* @flags: flags specific to this partition
|
* @flags: flags specific to this partition
|
||||||
|
* @gpio: gpio mux mode
|
||||||
* @phys: physical address
|
* @phys: physical address
|
||||||
* @size: partition size
|
* @size: partition size
|
||||||
* @base: virtual address after ioremap
|
* @base: virtual address after ioremap
|
||||||
|
@ -114,6 +123,7 @@ struct omap_board_data {
|
||||||
struct omap_mux_partition {
|
struct omap_mux_partition {
|
||||||
const char *name;
|
const char *name;
|
||||||
u32 flags;
|
u32 flags;
|
||||||
|
u32 gpio;
|
||||||
u32 phys;
|
u32 phys;
|
||||||
u32 size;
|
u32 size;
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
|
|
|
@ -2053,7 +2053,7 @@ int __init omap3_mux_init(struct omap_board_mux *board_subset, int flags)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return omap_mux_init("core", 0,
|
return omap_mux_init("core", OMAP_MUX_GPIO_IN_MODE4,
|
||||||
OMAP3_CONTROL_PADCONF_MUX_PBASE,
|
OMAP3_CONTROL_PADCONF_MUX_PBASE,
|
||||||
OMAP3_CONTROL_PADCONF_MUX_SIZE,
|
OMAP3_CONTROL_PADCONF_MUX_SIZE,
|
||||||
omap3_muxmodes, package_subset, board_subset,
|
omap3_muxmodes, package_subset, board_subset,
|
||||||
|
|
|
@ -27,8 +27,7 @@
|
||||||
#include <linux/pm_runtime.h>
|
#include <linux/pm_runtime.h>
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
#include <linux/omap-dma.h>
|
#include <linux/omap-dma.h>
|
||||||
|
#include <linux/platform_data/serial-omap.h>
|
||||||
#include <plat/omap-serial.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "omap_hwmod.h"
|
#include "omap_hwmod.h"
|
||||||
|
|
|
@ -190,7 +190,7 @@ static struct device_node * __init omap_get_timer_dt(struct of_device_id *match,
|
||||||
* kernel registering these devices remove them dynamically from the device
|
* kernel registering these devices remove them dynamically from the device
|
||||||
* tree on boot.
|
* tree on boot.
|
||||||
*/
|
*/
|
||||||
void __init omap_dmtimer_init(void)
|
static void __init omap_dmtimer_init(void)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ void __init omap_dmtimer_init(void)
|
||||||
*
|
*
|
||||||
* Get the timer errata flags that are specific to the OMAP device being used.
|
* Get the timer errata flags that are specific to the OMAP device being used.
|
||||||
*/
|
*/
|
||||||
u32 __init omap_dm_timer_get_errata(void)
|
static u32 __init omap_dm_timer_get_errata(void)
|
||||||
{
|
{
|
||||||
if (cpu_is_omap24xx())
|
if (cpu_is_omap24xx())
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -392,7 +392,7 @@ static struct of_device_id omap_counter_match[] __initdata = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Setup free-running counter for clocksource */
|
/* Setup free-running counter for clocksource */
|
||||||
static int __init omap2_sync32k_clocksource_init(void)
|
static int __init __maybe_unused omap2_sync32k_clocksource_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct device_node *np = NULL;
|
struct device_node *np = NULL;
|
||||||
|
|
|
@ -508,6 +508,10 @@ void __init usbhs_init(const struct usbhs_omap_board_data *pdata)
|
||||||
if (cpu_is_omap34xx()) {
|
if (cpu_is_omap34xx()) {
|
||||||
setup_ehci_io_mux(pdata->port_mode);
|
setup_ehci_io_mux(pdata->port_mode);
|
||||||
setup_ohci_io_mux(pdata->port_mode);
|
setup_ohci_io_mux(pdata->port_mode);
|
||||||
|
|
||||||
|
if (omap_rev() <= OMAP3430_REV_ES2_1)
|
||||||
|
usbhs_data.single_ulpi_bypass = true;
|
||||||
|
|
||||||
} else if (cpu_is_omap44xx()) {
|
} else if (cpu_is_omap44xx()) {
|
||||||
setup_4430ehci_io_mux(pdata->port_mode);
|
setup_4430ehci_io_mux(pdata->port_mode);
|
||||||
setup_4430ohci_io_mux(pdata->port_mode);
|
setup_4430ohci_io_mux(pdata->port_mode);
|
||||||
|
|
|
@ -11,7 +11,6 @@ obj- :=
|
||||||
# omap_device support (OMAP2+ only at the moment)
|
# omap_device support (OMAP2+ only at the moment)
|
||||||
|
|
||||||
obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
|
obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
|
||||||
obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
|
|
||||||
obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
|
obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
|
||||||
i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
|
i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
|
||||||
obj-y += $(i2c-omap-m) $(i2c-omap-y)
|
obj-y += $(i2c-omap-m) $(i2c-omap-y)
|
||||||
|
|
|
@ -1,92 +0,0 @@
|
||||||
/*
|
|
||||||
* linux/arch/arm/plat-omap/debug-devices.c
|
|
||||||
*
|
|
||||||
* Copyright (C) 2005 Nokia Corporation
|
|
||||||
* Modified from mach-omap2/board-h4.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/gpio.h>
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/io.h>
|
|
||||||
#include <linux/smc91x.h>
|
|
||||||
|
|
||||||
#include <plat/debug-devices.h>
|
|
||||||
|
|
||||||
/* Many OMAP development platforms reuse the same "debug board"; these
|
|
||||||
* platforms include H2, H3, H4, and Perseus2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static struct smc91x_platdata smc91x_info = {
|
|
||||||
.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
|
|
||||||
.leda = RPC_LED_100_10,
|
|
||||||
.ledb = RPC_LED_TX_RX,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct resource smc91x_resources[] = {
|
|
||||||
[0] = {
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
[1] = {
|
|
||||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device smc91x_device = {
|
|
||||||
.name = "smc91x",
|
|
||||||
.id = -1,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &smc91x_info,
|
|
||||||
},
|
|
||||||
.num_resources = ARRAY_SIZE(smc91x_resources),
|
|
||||||
.resource = smc91x_resources,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct resource led_resources[] = {
|
|
||||||
[0] = {
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device led_device = {
|
|
||||||
.name = "omap_dbg_led",
|
|
||||||
.id = -1,
|
|
||||||
.num_resources = ARRAY_SIZE(led_resources),
|
|
||||||
.resource = led_resources,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device *debug_devices[] __initdata = {
|
|
||||||
&smc91x_device,
|
|
||||||
&led_device,
|
|
||||||
/* ps2 kbd + mouse ports */
|
|
||||||
/* 4 extra uarts */
|
|
||||||
/* 6 input dip switches */
|
|
||||||
/* 8 output pins */
|
|
||||||
};
|
|
||||||
|
|
||||||
int __init debug_card_init(u32 addr, unsigned gpio)
|
|
||||||
{
|
|
||||||
int status;
|
|
||||||
|
|
||||||
smc91x_resources[0].start = addr + 0x300;
|
|
||||||
smc91x_resources[0].end = addr + 0x30f;
|
|
||||||
|
|
||||||
smc91x_resources[1].start = gpio_to_irq(gpio);
|
|
||||||
smc91x_resources[1].end = gpio_to_irq(gpio);
|
|
||||||
|
|
||||||
status = gpio_request(gpio, "SMC91x irq");
|
|
||||||
if (status < 0) {
|
|
||||||
printk(KERN_ERR "GPIO%d unavailable for smc91x IRQ\n", gpio);
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
gpio_direction_input(gpio);
|
|
||||||
|
|
||||||
led_resources[0].start = addr;
|
|
||||||
led_resources[0].end = addr + SZ_4K - 1;
|
|
||||||
|
|
||||||
return platform_add_devices(debug_devices, ARRAY_SIZE(debug_devices));
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
/* for TI reference platforms sharing the same debug card */
|
|
||||||
extern int debug_card_init(u32 addr, unsigned gpio);
|
|
|
@ -25,7 +25,6 @@
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
#include <plat/cpu.h>
|
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/platform_data/usb-omap.h>
|
#include <linux/platform_data/usb-omap.h>
|
||||||
#include <linux/pm_runtime.h>
|
#include <linux/pm_runtime.h>
|
||||||
|
@ -384,7 +383,7 @@ static void omap_usbhs_init(struct device *dev)
|
||||||
reg &= ~OMAP_UHH_HOSTCONFIG_P3_CONNECT_STATUS;
|
reg &= ~OMAP_UHH_HOSTCONFIG_P3_CONNECT_STATUS;
|
||||||
|
|
||||||
/* Bypass the TLL module for PHY mode operation */
|
/* Bypass the TLL module for PHY mode operation */
|
||||||
if (cpu_is_omap3430() && (omap_rev() <= OMAP3430_REV_ES2_1)) {
|
if (pdata->single_ulpi_bypass) {
|
||||||
dev_dbg(dev, "OMAP3 ES version <= ES2.1\n");
|
dev_dbg(dev, "OMAP3 ES version <= ES2.1\n");
|
||||||
if (is_ehci_phy_mode(pdata->port_mode[0]) ||
|
if (is_ehci_phy_mode(pdata->port_mode[0]) ||
|
||||||
is_ehci_phy_mode(pdata->port_mode[1]) ||
|
is_ehci_phy_mode(pdata->port_mode[1]) ||
|
||||||
|
|
|
@ -41,8 +41,7 @@
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
#include <linux/pinctrl/consumer.h>
|
#include <linux/pinctrl/consumer.h>
|
||||||
|
#include <linux/platform_data/serial-omap.h>
|
||||||
#include <plat/omap-serial.h>
|
|
||||||
|
|
||||||
#define OMAP_MAX_HSUART_PORTS 6
|
#define OMAP_MAX_HSUART_PORTS 6
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,9 @@ struct usbhs_omap_platform_data {
|
||||||
|
|
||||||
struct ehci_hcd_omap_platform_data *ehci_data;
|
struct ehci_hcd_omap_platform_data *ehci_data;
|
||||||
struct ohci_hcd_omap_platform_data *ohci_data;
|
struct ohci_hcd_omap_platform_data *ohci_data;
|
||||||
|
|
||||||
|
/* OMAP3 <= ES2.1 have a single ulpi bypass control bit */
|
||||||
|
unsigned single_ulpi_bypass:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -28,7 +28,7 @@ struct omap_dss_device;
|
||||||
* @power_down_gpio: gpio number for PD pin (or -1 if not available)
|
* @power_down_gpio: gpio number for PD pin (or -1 if not available)
|
||||||
*/
|
*/
|
||||||
struct tfp410_platform_data {
|
struct tfp410_platform_data {
|
||||||
u16 i2c_bus_num;
|
int i2c_bus_num;
|
||||||
int power_down_gpio;
|
int power_down_gpio;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue