forked from luck/tmp_suning_uos_patched
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: (27 commits) omap4: Fix ULPI PHY init for ES1.0 SDP omap3: beaglexm: fix power on of DVI omap3: igep3: Add omap_reserve functionality omap3: beaglexm: fix DVI reset GPIO omap3: beaglexm: fix EHCI power up GPIO dir omap3: igep2: Add keypad support omap3: igep3: Fix IGEP module second MMC channel power supply omap3: igep3: Add USB EHCI support for IGEP module omap3: clocks: Fix build error 'CK_3430ES2' undeclared here arm: omap4: pandaboard: turn on PHY reference clock at init omap2plus: prm: Trvial build break fix for undefined reference to 'omap2_prm_read_mod_reg' omap2plus: voltage: Trivial linking fix for 'EINVAL' undeclared omap2plus: voltage: Trivial linking fix 'undefined reference' omap2plus: voltage: Trivial warning fix 'no return statement' omap2plus: clockdomain: Trivial fix for build break because of clktrctrl_mask arm: omap: gpio: don't access irq_desc array directly omap2+: pm_bus: make functions used as pointers as static OMAP: GPIO: fix _set_gpio_triggering() for OMAP2+ OMAP2+: TWL: include pm header for init protos OMAP2+: TWL: make conversion routines static ... Fix up conflicts in arch/arm/mach-omap2/board-omap3beagle.c ("DVI reset GPIO" vs "use generic DPI panel driver")
This commit is contained in:
commit
ec08bdb148
@ -554,6 +554,7 @@ static void __init omap_sfh7741prox_init(void)
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
static struct omap_board_mux board_mux[] __initdata = {
|
||||
OMAP4_MUX(USBB2_ULPITLL_CLK, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
#else
|
||||
@ -576,11 +577,12 @@ static void __init omap_4430sdp_init(void)
|
||||
omap4_twl6030_hsmmc_init(mmc);
|
||||
|
||||
/* Power on the ULPI PHY */
|
||||
if (gpio_is_valid(OMAP4SDP_MDM_PWR_EN_GPIO)) {
|
||||
/* FIXME: Assumes pad is already muxed for GPIO mode */
|
||||
gpio_request(OMAP4SDP_MDM_PWR_EN_GPIO, "USBB1 PHY VMDM_3V3");
|
||||
status = gpio_request(OMAP4SDP_MDM_PWR_EN_GPIO, "USBB1 PHY VMDM_3V3");
|
||||
if (status)
|
||||
pr_err("%s: Could not get USBB1 PHY GPIO\n", __func__);
|
||||
else
|
||||
gpio_direction_output(OMAP4SDP_MDM_PWR_EN_GPIO, 1);
|
||||
}
|
||||
|
||||
usb_ehci_init(&ehci_pdata);
|
||||
usb_musb_init(&musb_board_data);
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <linux/io.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/input.h>
|
||||
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
@ -541,6 +542,37 @@ static struct twl4030_codec_data igep2_codec_data = {
|
||||
.audio = &igep2_audio_data,
|
||||
};
|
||||
|
||||
static int igep2_keymap[] = {
|
||||
KEY(0, 0, KEY_LEFT),
|
||||
KEY(0, 1, KEY_RIGHT),
|
||||
KEY(0, 2, KEY_A),
|
||||
KEY(0, 3, KEY_B),
|
||||
KEY(1, 0, KEY_DOWN),
|
||||
KEY(1, 1, KEY_UP),
|
||||
KEY(1, 2, KEY_E),
|
||||
KEY(1, 3, KEY_F),
|
||||
KEY(2, 0, KEY_ENTER),
|
||||
KEY(2, 1, KEY_I),
|
||||
KEY(2, 2, KEY_J),
|
||||
KEY(2, 3, KEY_K),
|
||||
KEY(3, 0, KEY_M),
|
||||
KEY(3, 1, KEY_N),
|
||||
KEY(3, 2, KEY_O),
|
||||
KEY(3, 3, KEY_P)
|
||||
};
|
||||
|
||||
static struct matrix_keymap_data igep2_keymap_data = {
|
||||
.keymap = igep2_keymap,
|
||||
.keymap_size = ARRAY_SIZE(igep2_keymap),
|
||||
};
|
||||
|
||||
static struct twl4030_keypad_data igep2_keypad_pdata = {
|
||||
.keymap_data = &igep2_keymap_data,
|
||||
.rows = 4,
|
||||
.cols = 4,
|
||||
.rep = 1,
|
||||
};
|
||||
|
||||
static struct twl4030_platform_data igep2_twldata = {
|
||||
.irq_base = TWL4030_IRQ_BASE,
|
||||
.irq_end = TWL4030_IRQ_END,
|
||||
@ -549,6 +581,7 @@ static struct twl4030_platform_data igep2_twldata = {
|
||||
.usb = &igep2_usb_data,
|
||||
.codec = &igep2_codec_data,
|
||||
.gpio = &igep2_twl4030_gpio_pdata,
|
||||
.keypad = &igep2_keypad_pdata,
|
||||
.vmmc1 = &igep2_vmmc1,
|
||||
.vpll2 = &igep2_vpll2,
|
||||
.vio = &igep2_vio,
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
#include <linux/i2c/twl.h>
|
||||
#include <linux/mmc/host.h>
|
||||
|
||||
@ -43,7 +44,7 @@
|
||||
#define IGEP3_GPIO_WIFI_NRESET 139
|
||||
#define IGEP3_GPIO_BT_NRESET 137
|
||||
|
||||
#define IGEP3_GPIO_USBH_NRESET 115
|
||||
#define IGEP3_GPIO_USBH_NRESET 183
|
||||
|
||||
|
||||
#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
|
||||
@ -103,7 +104,7 @@ static struct platform_device igep3_onenand_device = {
|
||||
},
|
||||
};
|
||||
|
||||
void __init igep3_flash_init(void)
|
||||
static void __init igep3_flash_init(void)
|
||||
{
|
||||
u8 cs = 0;
|
||||
u8 onenandcs = GPMC_CS_NUM + 1;
|
||||
@ -137,12 +138,11 @@ void __init igep3_flash_init(void)
|
||||
}
|
||||
|
||||
#else
|
||||
void __init igep3_flash_init(void) {}
|
||||
static void __init igep3_flash_init(void) {}
|
||||
#endif
|
||||
|
||||
static struct regulator_consumer_supply igep3_vmmc1_supply = {
|
||||
.supply = "vmmc",
|
||||
};
|
||||
static struct regulator_consumer_supply igep3_vmmc1_supply =
|
||||
REGULATOR_SUPPLY("vmmc", "mmci-omap-hs.0");
|
||||
|
||||
/* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */
|
||||
static struct regulator_init_data igep3_vmmc1 = {
|
||||
@ -159,6 +159,52 @@ static struct regulator_init_data igep3_vmmc1 = {
|
||||
.consumer_supplies = &igep3_vmmc1_supply,
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply igep3_vio_supply =
|
||||
REGULATOR_SUPPLY("vmmc_aux", "mmci-omap-hs.1");
|
||||
|
||||
static struct regulator_init_data igep3_vio = {
|
||||
.constraints = {
|
||||
.min_uV = 1800000,
|
||||
.max_uV = 1800000,
|
||||
.apply_uV = 1,
|
||||
.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 = &igep3_vio_supply,
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply igep3_vmmc2_supply =
|
||||
REGULATOR_SUPPLY("vmmc", "mmci-omap-hs.1");
|
||||
|
||||
static struct regulator_init_data igep3_vmmc2 = {
|
||||
.constraints = {
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL,
|
||||
.always_on = 1,
|
||||
},
|
||||
.num_consumer_supplies = 1,
|
||||
.consumer_supplies = &igep3_vmmc2_supply,
|
||||
};
|
||||
|
||||
static struct fixed_voltage_config igep3_vwlan = {
|
||||
.supply_name = "vwlan",
|
||||
.microvolts = 3300000,
|
||||
.gpio = -EINVAL,
|
||||
.enabled_at_boot = 1,
|
||||
.init_data = &igep3_vmmc2,
|
||||
};
|
||||
|
||||
static struct platform_device igep3_vwlan_device = {
|
||||
.name = "reg-fixed-voltage",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &igep3_vwlan,
|
||||
},
|
||||
};
|
||||
|
||||
static struct omap2_hsmmc_info mmc[] = {
|
||||
[0] = {
|
||||
.mmc = 1,
|
||||
@ -254,12 +300,6 @@ static int igep3_twl4030_gpio_setup(struct device *dev,
|
||||
mmc[0].gpio_cd = gpio + 0;
|
||||
omap2_hsmmc_init(mmc);
|
||||
|
||||
/*
|
||||
* link regulators to MMC adapters ... we "know" the
|
||||
* regulators will be set up only *after* we return.
|
||||
*/
|
||||
igep3_vmmc1_supply.dev = mmc[0].dev;
|
||||
|
||||
/* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */
|
||||
#if !defined(CONFIG_LEDS_GPIO) && !defined(CONFIG_LEDS_GPIO_MODULE)
|
||||
if ((gpio_request(gpio+TWL4030_GPIO_MAX+1, "gpio-led:green:d1") == 0)
|
||||
@ -287,6 +327,10 @@ static struct twl4030_usb_data igep3_twl4030_usb_data = {
|
||||
.usb_mode = T2_USB_MODE_ULPI,
|
||||
};
|
||||
|
||||
static struct platform_device *igep3_devices[] __initdata = {
|
||||
&igep3_vwlan_device,
|
||||
};
|
||||
|
||||
static void __init igep3_init_irq(void)
|
||||
{
|
||||
omap2_init_common_infrastructure();
|
||||
@ -303,6 +347,7 @@ static struct twl4030_platform_data igep3_twl4030_pdata = {
|
||||
.usb = &igep3_twl4030_usb_data,
|
||||
.gpio = &igep3_twl4030_gpio_pdata,
|
||||
.vmmc1 = &igep3_vmmc1,
|
||||
.vio = &igep3_vio,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata igep3_i2c_boardinfo[] = {
|
||||
@ -363,8 +408,20 @@ static void __init igep3_wifi_bt_init(void)
|
||||
void __init igep3_wifi_bt_init(void) {}
|
||||
#endif
|
||||
|
||||
static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
|
||||
.port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
||||
.port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
|
||||
.port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
|
||||
|
||||
.phy_reset = true,
|
||||
.reset_gpio_port[0] = -EINVAL,
|
||||
.reset_gpio_port[1] = IGEP3_GPIO_USBH_NRESET,
|
||||
.reset_gpio_port[2] = -EINVAL,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
static struct omap_board_mux board_mux[] __initdata = {
|
||||
OMAP3_MUX(I2C2_SDA, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
#endif
|
||||
@ -375,9 +432,10 @@ static void __init igep3_init(void)
|
||||
|
||||
/* Register I2C busses and drivers */
|
||||
igep3_i2c_init();
|
||||
|
||||
platform_add_devices(igep3_devices, ARRAY_SIZE(igep3_devices));
|
||||
omap_serial_init();
|
||||
usb_musb_init(&musb_board_data);
|
||||
usb_ehci_init(&ehci_pdata);
|
||||
|
||||
igep3_flash_init();
|
||||
igep3_leds_init();
|
||||
@ -392,6 +450,7 @@ static void __init igep3_init(void)
|
||||
|
||||
MACHINE_START(IGEP0030, "IGEP OMAP3 module")
|
||||
.boot_params = 0x80000100,
|
||||
.reserve = omap_reserve,
|
||||
.map_io = omap3_map_io,
|
||||
.init_irq = igep3_init_irq,
|
||||
.init_machine = igep3_init,
|
||||
|
@ -207,7 +207,7 @@ static struct omap_dss_device beagle_dvi_device = {
|
||||
.driver_name = "generic_dpi_panel",
|
||||
.data = &dvi_panel,
|
||||
.phy.dpi.data_lines = 24,
|
||||
.reset_gpio = 170,
|
||||
.reset_gpio = -EINVAL,
|
||||
};
|
||||
|
||||
static struct omap_dss_device beagle_tv_device = {
|
||||
@ -279,6 +279,8 @@ static struct gpio_led gpio_leds[];
|
||||
static int beagle_twl_gpio_setup(struct device *dev,
|
||||
unsigned gpio, unsigned ngpio)
|
||||
{
|
||||
int r;
|
||||
|
||||
if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
|
||||
mmc[0].gpio_wp = -EINVAL;
|
||||
} else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) ||
|
||||
@ -299,17 +301,63 @@ static int beagle_twl_gpio_setup(struct device *dev,
|
||||
/* REVISIT: need ehci-omap hooks for external VBUS
|
||||
* power switch and overcurrent detect
|
||||
*/
|
||||
if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
|
||||
r = gpio_request(gpio + 1, "EHCI_nOC");
|
||||
if (!r) {
|
||||
r = gpio_direction_input(gpio + 1);
|
||||
if (r)
|
||||
gpio_free(gpio + 1);
|
||||
}
|
||||
if (r)
|
||||
pr_err("%s: unable to configure EHCI_nOC\n", __func__);
|
||||
}
|
||||
|
||||
gpio_request(gpio + 1, "EHCI_nOC");
|
||||
gpio_direction_input(gpio + 1);
|
||||
|
||||
/* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
|
||||
/*
|
||||
* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
|
||||
* high / others active low)
|
||||
*/
|
||||
gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
|
||||
gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
|
||||
if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
|
||||
gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
|
||||
else
|
||||
gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
|
||||
|
||||
/* DVI reset GPIO is different between beagle revisions */
|
||||
if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
|
||||
beagle_dvi_device.reset_gpio = 129;
|
||||
else
|
||||
beagle_dvi_device.reset_gpio = 170;
|
||||
|
||||
/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
|
||||
gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
|
||||
|
||||
/*
|
||||
* gpio + 1 on Xm controls the TFP410's enable line (active low)
|
||||
* gpio + 2 control varies depending on the board rev as follows:
|
||||
* P7/P8 revisions(prototype): Camera EN
|
||||
* A2+ revisions (production): LDO (supplies DVI, serial, led blocks)
|
||||
*/
|
||||
if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
|
||||
r = gpio_request(gpio + 1, "nDVI_PWR_EN");
|
||||
if (!r) {
|
||||
r = gpio_direction_output(gpio + 1, 0);
|
||||
if (r)
|
||||
gpio_free(gpio + 1);
|
||||
}
|
||||
if (r)
|
||||
pr_err("%s: unable to configure nDVI_PWR_EN\n",
|
||||
__func__);
|
||||
r = gpio_request(gpio + 2, "DVI_LDO_EN");
|
||||
if (!r) {
|
||||
r = gpio_direction_output(gpio + 2, 1);
|
||||
if (r)
|
||||
gpio_free(gpio + 2);
|
||||
}
|
||||
if (r)
|
||||
pr_err("%s: unable to configure DVI_LDO_EN\n",
|
||||
__func__);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/gpio.h>
|
||||
@ -95,7 +96,16 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
|
||||
static void __init omap4_ehci_init(void)
|
||||
{
|
||||
int ret;
|
||||
struct clk *phy_ref_clk;
|
||||
|
||||
/* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */
|
||||
phy_ref_clk = clk_get(NULL, "auxclk3_ck");
|
||||
if (IS_ERR(phy_ref_clk)) {
|
||||
pr_err("Cannot request auxclk3\n");
|
||||
goto error1;
|
||||
}
|
||||
clk_set_rate(phy_ref_clk, 19200000);
|
||||
clk_enable(phy_ref_clk);
|
||||
|
||||
/* disable the power to the usb hub prior to init */
|
||||
ret = gpio_request(GPIO_HUB_POWER, "hub_power");
|
||||
|
@ -192,7 +192,7 @@ static struct platform_device omap_vwlan_device = {
|
||||
},
|
||||
};
|
||||
|
||||
struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
|
||||
static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
|
||||
.irq = OMAP_GPIO_IRQ(OMAP_ZOOM_WLAN_IRQ_GPIO),
|
||||
/* ZOOM ref clock is 26 MHz */
|
||||
.board_ref_clock = 1,
|
||||
@ -286,7 +286,7 @@ static int zoom_twl_gpio_setup(struct device *dev,
|
||||
}
|
||||
|
||||
/* EXTMUTE callback function */
|
||||
void zoom2_set_hs_extmute(int mute)
|
||||
static void zoom2_set_hs_extmute(int mute)
|
||||
{
|
||||
gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute);
|
||||
}
|
||||
|
@ -3286,7 +3286,7 @@ static struct omap_clk omap3xxx_clks[] = {
|
||||
CLK(NULL, "cpefuse_fck", &cpefuse_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
|
||||
CLK(NULL, "ts_fck", &ts_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
|
||||
CLK(NULL, "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
|
||||
CLK("ehci-omap.0", "usbtll_fck", &usbtll_fck, CK_3430ES2 | CK_AM35XX),
|
||||
CLK("ehci-omap.0", "usbtll_fck", &usbtll_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
|
||||
CLK("omap-mcbsp.1", "prcm_fck", &core_96m_fck, CK_3XXX),
|
||||
CLK("omap-mcbsp.5", "prcm_fck", &core_96m_fck, CK_3XXX),
|
||||
CLK(NULL, "core_96m_fck", &core_96m_fck, CK_3XXX),
|
||||
|
@ -103,9 +103,7 @@ struct clockdomain {
|
||||
const char *name;
|
||||
struct powerdomain *ptr;
|
||||
} pwrdm;
|
||||
#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
|
||||
const u16 clktrctrl_mask;
|
||||
#endif
|
||||
const u8 flags;
|
||||
const u8 dep_bit;
|
||||
const u8 prcm_partition;
|
||||
|
@ -978,7 +978,7 @@ static int __init omap2_init_devices(void)
|
||||
arch_initcall(omap2_init_devices);
|
||||
|
||||
#if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE)
|
||||
struct omap_device_pm_latency omap_wdt_latency[] = {
|
||||
static struct omap_device_pm_latency omap_wdt_latency[] = {
|
||||
[0] = {
|
||||
.deactivate_func = omap_device_idle_hwmods,
|
||||
.activate_func = omap_device_enable_hwmods,
|
||||
|
@ -893,7 +893,7 @@ static struct omap_mux * __init omap_mux_list_add(
|
||||
return NULL;
|
||||
|
||||
m = &entry->mux;
|
||||
memcpy(m, src, sizeof(struct omap_mux_entry));
|
||||
entry->mux = *src;
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
if (omap_mux_copy_names(src, m)) {
|
||||
|
@ -703,7 +703,7 @@ static struct omap_mux __initdata omap3_muxmodes[] = {
|
||||
* Signals different on CBC package compared to the superset
|
||||
*/
|
||||
#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_OMAP_PACKAGE_CBC)
|
||||
struct omap_mux __initdata omap3_cbc_subset[] = {
|
||||
static struct omap_mux __initdata omap3_cbc_subset[] = {
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
#else
|
||||
@ -721,7 +721,7 @@ struct omap_mux __initdata omap3_cbc_subset[] = {
|
||||
*/
|
||||
#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \
|
||||
&& defined(CONFIG_OMAP_PACKAGE_CBC)
|
||||
struct omap_ball __initdata omap3_cbc_ball[] = {
|
||||
static struct omap_ball __initdata omap3_cbc_ball[] = {
|
||||
_OMAP3_BALLENTRY(CAM_D0, "ae16", NULL),
|
||||
_OMAP3_BALLENTRY(CAM_D1, "ae15", NULL),
|
||||
_OMAP3_BALLENTRY(CAM_D10, "d25", NULL),
|
||||
|
@ -544,7 +544,7 @@ static struct omap_mux __initdata omap4_core_muxmodes[] = {
|
||||
*/
|
||||
#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \
|
||||
&& defined(CONFIG_OMAP_PACKAGE_CBL)
|
||||
struct omap_ball __initdata omap4_core_cbl_ball[] = {
|
||||
static struct omap_ball __initdata omap4_core_cbl_ball[] = {
|
||||
_OMAP4_BALLENTRY(GPMC_AD0, "c12", NULL),
|
||||
_OMAP4_BALLENTRY(GPMC_AD1, "d12", NULL),
|
||||
_OMAP4_BALLENTRY(GPMC_AD2, "c13", NULL),
|
||||
@ -1262,7 +1262,7 @@ static struct omap_mux __initdata omap4_es2_core_muxmodes[] = {
|
||||
*/
|
||||
#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \
|
||||
&& defined(CONFIG_OMAP_PACKAGE_CBS)
|
||||
struct omap_ball __initdata omap4_core_cbs_ball[] = {
|
||||
static struct omap_ball __initdata omap4_core_cbs_ball[] = {
|
||||
_OMAP4_BALLENTRY(GPMC_AD0, "c12", NULL),
|
||||
_OMAP4_BALLENTRY(GPMC_AD1, "d12", NULL),
|
||||
_OMAP4_BALLENTRY(GPMC_AD2, "c13", NULL),
|
||||
@ -1546,7 +1546,7 @@ static struct omap_mux __initdata omap4_wkup_muxmodes[] = {
|
||||
*/
|
||||
#if defined(CONFIG_OMAP_MUX) && defined(CONFIG_DEBUG_FS) \
|
||||
&& defined(CONFIG_OMAP_PACKAGE_CBL)
|
||||
struct omap_ball __initdata omap4_wkup_cbl_cbs_ball[] = {
|
||||
static struct omap_ball __initdata omap4_wkup_cbl_cbs_ball[] = {
|
||||
_OMAP4_BALLENTRY(SIM_IO, "h4", NULL),
|
||||
_OMAP4_BALLENTRY(SIM_CLK, "j2", NULL),
|
||||
_OMAP4_BALLENTRY(SIM_RESET, "g2", NULL),
|
||||
|
@ -20,6 +20,8 @@
|
||||
|
||||
#include <plat/voltage.h>
|
||||
|
||||
#include "pm.h"
|
||||
|
||||
#define OMAP3_SRI2C_SLAVE_ADDR 0x12
|
||||
#define OMAP3_VDD_MPU_SR_CONTROL_REG 0x00
|
||||
#define OMAP3_VDD_CORE_SR_CONTROL_REG 0x01
|
||||
@ -60,17 +62,17 @@ static u8 smps_offset;
|
||||
|
||||
#define REG_SMPS_OFFSET 0xE0
|
||||
|
||||
unsigned long twl4030_vsel_to_uv(const u8 vsel)
|
||||
static unsigned long twl4030_vsel_to_uv(const u8 vsel)
|
||||
{
|
||||
return (((vsel * 125) + 6000)) * 100;
|
||||
}
|
||||
|
||||
u8 twl4030_uv_to_vsel(unsigned long uv)
|
||||
static u8 twl4030_uv_to_vsel(unsigned long uv)
|
||||
{
|
||||
return DIV_ROUND_UP(uv - 600000, 12500);
|
||||
}
|
||||
|
||||
unsigned long twl6030_vsel_to_uv(const u8 vsel)
|
||||
static unsigned long twl6030_vsel_to_uv(const u8 vsel)
|
||||
{
|
||||
/*
|
||||
* In TWL6030 depending on the value of SMPS_OFFSET
|
||||
@ -102,7 +104,7 @@ unsigned long twl6030_vsel_to_uv(const u8 vsel)
|
||||
return ((((vsel - 1) * 125) + 6000)) * 100;
|
||||
}
|
||||
|
||||
u8 twl6030_uv_to_vsel(unsigned long uv)
|
||||
static u8 twl6030_uv_to_vsel(unsigned long uv)
|
||||
{
|
||||
/*
|
||||
* In TWL6030 depending on the value of SMPS_OFFSET
|
||||
|
@ -20,7 +20,7 @@
|
||||
#include <plat/omap-pm.h>
|
||||
|
||||
#ifdef CONFIG_PM_RUNTIME
|
||||
int omap_pm_runtime_suspend(struct device *dev)
|
||||
static int omap_pm_runtime_suspend(struct device *dev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
int r, ret = 0;
|
||||
@ -37,7 +37,7 @@ int omap_pm_runtime_suspend(struct device *dev)
|
||||
return ret;
|
||||
};
|
||||
|
||||
int omap_pm_runtime_resume(struct device *dev)
|
||||
static int omap_pm_runtime_resume(struct device *dev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
int r;
|
||||
|
@ -228,7 +228,67 @@
|
||||
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
/*
|
||||
* Stub omap2xxx/omap3xxx functions so that common files
|
||||
* continue to build when custom builds are used
|
||||
*/
|
||||
#if defined(CONFIG_ARCH_OMAP4) && !(defined(CONFIG_ARCH_OMAP2) || \
|
||||
defined(CONFIG_ARCH_OMAP3))
|
||||
static inline u32 omap2_prm_read_mod_reg(s16 module, u16 idx)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
return 0;
|
||||
}
|
||||
static inline void omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
}
|
||||
static inline u32 omap2_prm_rmw_mod_reg_bits(u32 mask, u32 bits,
|
||||
s16 module, s16 idx)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
return 0;
|
||||
}
|
||||
static inline u32 omap2_prm_set_mod_reg_bits(u32 bits, s16 module, s16 idx)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
return 0;
|
||||
}
|
||||
static inline u32 omap2_prm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
return 0;
|
||||
}
|
||||
static inline u32 omap2_prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
return 0;
|
||||
}
|
||||
static inline int omap2_prm_is_hardreset_asserted(s16 prm_mod, u8 shift)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
return 0;
|
||||
}
|
||||
static inline int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
return 0;
|
||||
}
|
||||
static inline int omap2_prm_deassert_hardreset(s16 prm_mod, u8 shift)
|
||||
{
|
||||
WARN(1, "prm: omap2xxx/omap3xxx specific function and "
|
||||
"not suppose to be used on omap4\n");
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
/* Power/reset management domain register get/set */
|
||||
extern u32 omap2_prm_read_mod_reg(s16 module, u16 idx);
|
||||
extern void omap2_prm_write_mod_reg(u32 val, s16 module, u16 idx);
|
||||
@ -242,6 +302,7 @@ extern int omap2_prm_is_hardreset_asserted(s16 prm_mod, u8 shift);
|
||||
extern int omap2_prm_assert_hardreset(s16 prm_mod, u8 shift);
|
||||
extern int omap2_prm_deassert_hardreset(s16 prm_mod, u8 shift);
|
||||
|
||||
#endif /* CONFIG_ARCH_OMAP4 */
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <plat/voltage.h>
|
||||
|
||||
#include "control.h"
|
||||
#include "pm.h"
|
||||
|
||||
static bool sr_enable_on_init;
|
||||
|
||||
|
@ -13,6 +13,8 @@
|
||||
|
||||
#include <plat/omap_hwmod.h>
|
||||
|
||||
#include "wd_timer.h"
|
||||
|
||||
/*
|
||||
* In order to avoid any assumptions from bootloader regarding WDT
|
||||
* settings, WDT module is reset during init. This enables the watchdog
|
||||
|
@ -644,7 +644,7 @@ config ARM_THUMBEE
|
||||
|
||||
config SWP_EMULATE
|
||||
bool "Emulate SWP/SWPB instructions"
|
||||
depends on CPU_V7
|
||||
depends on CPU_V7 && !CPU_V6
|
||||
select HAVE_PROC_CPU if PROC_FS
|
||||
default y if SMP
|
||||
help
|
||||
|
@ -718,7 +718,7 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
|
||||
case METHOD_GPIO_24XX:
|
||||
case METHOD_GPIO_44XX:
|
||||
set_24xx_gpio_triggering(bank, gpio, trigger);
|
||||
break;
|
||||
return 0;
|
||||
#endif
|
||||
default:
|
||||
goto bad;
|
||||
@ -756,8 +756,10 @@ static int gpio_irq_type(unsigned irq, unsigned type)
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type);
|
||||
if (retval == 0) {
|
||||
irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK;
|
||||
irq_desc[irq].status |= type;
|
||||
struct irq_desc *d = irq_to_desc(irq);
|
||||
|
||||
d->status &= ~IRQ_TYPE_SENSE_MASK;
|
||||
d->status |= type;
|
||||
}
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
|
||||
@ -1671,7 +1673,9 @@ static void __init omap_gpio_chip_init(struct gpio_bank *bank)
|
||||
|
||||
for (j = bank->virtual_irq_start;
|
||||
j < bank->virtual_irq_start + bank_width; j++) {
|
||||
lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class);
|
||||
struct irq_desc *d = irq_to_desc(j);
|
||||
|
||||
lockdep_set_class(&d->lock, &gpio_lock_class);
|
||||
set_irq_chip_data(j, bank);
|
||||
if (bank_is_mpuio(bank))
|
||||
set_irq_chip(j, &mpuio_irq_chip);
|
||||
|
@ -14,6 +14,8 @@
|
||||
#ifndef __ARCH_ARM_MACH_OMAP2_VOLTAGE_H
|
||||
#define __ARCH_ARM_MACH_OMAP2_VOLTAGE_H
|
||||
|
||||
#include <linux/err.h>
|
||||
|
||||
#define VOLTSCALE_VPFORCEUPDATE 1
|
||||
#define VOLTSCALE_VCBYPASS 2
|
||||
|
||||
@ -65,9 +67,6 @@ struct voltagedomain {
|
||||
char *name;
|
||||
};
|
||||
|
||||
/* API to get the voltagedomain pointer */
|
||||
struct voltagedomain *omap_voltage_domain_lookup(char *name);
|
||||
|
||||
/**
|
||||
* struct omap_volt_data - Omap voltage specific data.
|
||||
* @voltage_nominal: The possible voltage value in uV
|
||||
@ -131,16 +130,26 @@ int omap_voltage_register_pmic(struct voltagedomain *voltdm,
|
||||
struct omap_volt_pmic_info *pmic_info);
|
||||
void omap_change_voltscale_method(struct voltagedomain *voltdm,
|
||||
int voltscale_method);
|
||||
/* API to get the voltagedomain pointer */
|
||||
struct voltagedomain *omap_voltage_domain_lookup(char *name);
|
||||
|
||||
int omap_voltage_late_init(void);
|
||||
#else
|
||||
static inline int omap_voltage_register_pmic(struct voltagedomain *voltdm,
|
||||
struct omap_volt_pmic_info *pmic_info) {}
|
||||
struct omap_volt_pmic_info *pmic_info)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline void omap_change_voltscale_method(struct voltagedomain *voltdm,
|
||||
int voltscale_method) {}
|
||||
static inline int omap_voltage_late_init(void)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline struct voltagedomain *omap_voltage_domain_lookup(char *name)
|
||||
{
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user