提交 67ef6265 编写于 作者: L Linus Torvalds

Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC fixes from Kevin Hilman:
 - MSM: GPIO fixes (includes old code removal)
 - OMAP: earlyprintk regression, AM33xx cpgmac PM regression
 - OMAP5: urgent fix for potentially harmful voltage regulator values
 - Renesas: gpio-keys fix, fix SD card detection, fix shdma calculation
   error
 - STi: critical SMP boot fix
 - tegra: DTS fix for usb-phy
 - a couple MAINTAINERS updates

(Arnd is on paternity leave, Kevin is stepping up to help arm-soc
maintenance)

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  MAINTAINERS: add TI Keystone ARM platform
  MAINTAINERS: delete Srinidhi from ux500
  ARM: tegra: enable ULPI phy on Colibri T20
  ARM: STi: remove sti_secondary_start from INIT section.
  ARM: STi: Fix cpu nodes with correct device_type.
  ARM: shmobile: lager: do not annotate gpio_buttons as __initdata
  ARM: shmobile: BOCK-W: fix SDHI0 PFC settings
  shdma: fixup sh_dmae_get_partial() calculation error
  ARM: OMAP2+: hwmod: AM335x: fix cpgmac address space
  ARM: OMAP2+: hwmod: rt address space index for DT
  ARM: OMAP2+: Sync hwmod state with the pm_runtime and omap_device state
  ARM: OMAP2+: Avoid idling memory controllers with no drivers
  ARM: OMAP2+: hwmod: Fix a crash in _setup_reset() with DEBUG_LL
  ARM: dts: omap5-uevm: update optional/unused regulator configurations
  ARM: dts: omap5-uevm: fix regulator configurations mandatory for SoC
  ARM: dts: omap5-uevm: document regulator signals used on the actual board
  ARM: msm: Consolidate gpiomux for older architectures
  ARM: shmobile: armadillo800eva: Don't request GPIO 166 in board code
  ARM: msm: dts: Fix the gpio register address for msm8960
...@@ -965,6 +965,12 @@ M: Lennert Buytenhek <kernel@wantstofly.org> ...@@ -965,6 +965,12 @@ M: Lennert Buytenhek <kernel@wantstofly.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
ARM/TEXAS INSTRUMENT KEYSTONE ARCHITECTURE
M: Santosh Shilimkar <santosh.shilimkar@ti.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained
F: arch/arm/mach-keystone/
ARM/LOGICPD PXA270 MACHINE SUPPORT ARM/LOGICPD PXA270 MACHINE SUPPORT
M: Lennert Buytenhek <kernel@wantstofly.org> M: Lennert Buytenhek <kernel@wantstofly.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
...@@ -1259,7 +1265,6 @@ F: drivers/rtc/rtc-coh901331.c ...@@ -1259,7 +1265,6 @@ F: drivers/rtc/rtc-coh901331.c
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git
ARM/Ux500 ARM ARCHITECTURE ARM/Ux500 ARM ARCHITECTURE
M: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
M: Linus Walleij <linus.walleij@linaro.org> M: Linus Walleij <linus.walleij@linaro.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
cpu-offset = <0x80000>; cpu-offset = <0x80000>;
}; };
msmgpio: gpio@fd510000 { msmgpio: gpio@800000 {
compatible = "qcom,msm-gpio"; compatible = "qcom,msm-gpio";
gpio-controller; gpio-controller;
#gpio-cells = <2>; #gpio-cells = <2>;
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
interrupts = <0 32 0x4>; interrupts = <0 32 0x4>;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
reg = <0xfd510000 0x4000>; reg = <0x800000 0x4000>;
}; };
serial@16440000 { serial@16440000 {
......
...@@ -235,7 +235,7 @@ ...@@ -235,7 +235,7 @@
}; };
&mmc1 { &mmc1 {
vmmc-supply = <&vmmcsd_fixed>; vmmc-supply = <&ldo9_reg>;
bus-width = <4>; bus-width = <4>;
}; };
...@@ -282,6 +282,7 @@ ...@@ -282,6 +282,7 @@
regulators { regulators {
smps123_reg: smps123 { smps123_reg: smps123 {
/* VDD_OPP_MPU */
regulator-name = "smps123"; regulator-name = "smps123";
regulator-min-microvolt = < 600000>; regulator-min-microvolt = < 600000>;
regulator-max-microvolt = <1500000>; regulator-max-microvolt = <1500000>;
...@@ -290,6 +291,7 @@ ...@@ -290,6 +291,7 @@
}; };
smps45_reg: smps45 { smps45_reg: smps45 {
/* VDD_OPP_MM */
regulator-name = "smps45"; regulator-name = "smps45";
regulator-min-microvolt = < 600000>; regulator-min-microvolt = < 600000>;
regulator-max-microvolt = <1310000>; regulator-max-microvolt = <1310000>;
...@@ -298,6 +300,7 @@ ...@@ -298,6 +300,7 @@
}; };
smps6_reg: smps6 { smps6_reg: smps6 {
/* VDD_DDR3 - over VDD_SMPS6 */
regulator-name = "smps6"; regulator-name = "smps6";
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>; regulator-max-microvolt = <1200000>;
...@@ -306,6 +309,7 @@ ...@@ -306,6 +309,7 @@
}; };
smps7_reg: smps7 { smps7_reg: smps7 {
/* VDDS_1v8_OMAP over VDDS_1v8_MAIN */
regulator-name = "smps7"; regulator-name = "smps7";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
...@@ -314,6 +318,7 @@ ...@@ -314,6 +318,7 @@
}; };
smps8_reg: smps8 { smps8_reg: smps8 {
/* VDD_OPP_CORE */
regulator-name = "smps8"; regulator-name = "smps8";
regulator-min-microvolt = < 600000>; regulator-min-microvolt = < 600000>;
regulator-max-microvolt = <1310000>; regulator-max-microvolt = <1310000>;
...@@ -322,15 +327,15 @@ ...@@ -322,15 +327,15 @@
}; };
smps9_reg: smps9 { smps9_reg: smps9 {
/* VDDA_2v1_AUD over VDD_2v1 */
regulator-name = "smps9"; regulator-name = "smps9";
regulator-min-microvolt = <2100000>; regulator-min-microvolt = <2100000>;
regulator-max-microvolt = <2100000>; regulator-max-microvolt = <2100000>;
regulator-always-on;
regulator-boot-on;
ti,smps-range = <0x80>; ti,smps-range = <0x80>;
}; };
smps10_reg: smps10 { smps10_reg: smps10 {
/* VBUS_5V_OTG */
regulator-name = "smps10"; regulator-name = "smps10";
regulator-min-microvolt = <5000000>; regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>; regulator-max-microvolt = <5000000>;
...@@ -339,38 +344,40 @@ ...@@ -339,38 +344,40 @@
}; };
ldo1_reg: ldo1 { ldo1_reg: ldo1 {
/* VDDAPHY_CAM: vdda_csiport */
regulator-name = "ldo1"; regulator-name = "ldo1";
regulator-min-microvolt = <2800000>; regulator-min-microvolt = <1500000>;
regulator-max-microvolt = <2800000>; regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
}; };
ldo2_reg: ldo2 { ldo2_reg: ldo2 {
/* VCC_2V8_DISP: Does not go anywhere */
regulator-name = "ldo2"; regulator-name = "ldo2";
regulator-min-microvolt = <2900000>; regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2900000>; regulator-max-microvolt = <2800000>;
regulator-always-on; /* Unused */
regulator-boot-on; status = "disabled";
}; };
ldo3_reg: ldo3 { ldo3_reg: ldo3 {
/* VDDAPHY_MDM: vdda_lli */
regulator-name = "ldo3"; regulator-name = "ldo3";
regulator-min-microvolt = <3000000>; regulator-min-microvolt = <1500000>;
regulator-max-microvolt = <3000000>; regulator-max-microvolt = <1500000>;
regulator-always-on;
regulator-boot-on; regulator-boot-on;
/* Only if Modem is used */
status = "disabled";
}; };
ldo4_reg: ldo4 { ldo4_reg: ldo4 {
/* VDDAPHY_DISP: vdda_dsiport/hdmi */
regulator-name = "ldo4"; regulator-name = "ldo4";
regulator-min-microvolt = <2200000>; regulator-min-microvolt = <1500000>;
regulator-max-microvolt = <2200000>; regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
}; };
ldo5_reg: ldo5 { ldo5_reg: ldo5 {
/* VDDA_1V8_PHY: usb/sata/hdmi.. */
regulator-name = "ldo5"; regulator-name = "ldo5";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
...@@ -379,38 +386,43 @@ ...@@ -379,38 +386,43 @@
}; };
ldo6_reg: ldo6 { ldo6_reg: ldo6 {
/* VDDS_1V2_WKUP: hsic/ldo_emu_wkup */
regulator-name = "ldo6"; regulator-name = "ldo6";
regulator-min-microvolt = <1500000>; regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1500000>; regulator-max-microvolt = <1200000>;
regulator-always-on; regulator-always-on;
regulator-boot-on; regulator-boot-on;
}; };
ldo7_reg: ldo7 { ldo7_reg: ldo7 {
/* VDD_VPP: vpp1 */
regulator-name = "ldo7"; regulator-name = "ldo7";
regulator-min-microvolt = <1500000>; regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <1500000>; regulator-max-microvolt = <2000000>;
regulator-always-on; /* Only for efuse reprograming! */
regulator-boot-on; status = "disabled";
}; };
ldo8_reg: ldo8 { ldo8_reg: ldo8 {
/* VDD_3v0: Does not go anywhere */
regulator-name = "ldo8"; regulator-name = "ldo8";
regulator-min-microvolt = <1500000>; regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <1500000>; regulator-max-microvolt = <3000000>;
regulator-always-on;
regulator-boot-on; regulator-boot-on;
/* Unused */
status = "disabled";
}; };
ldo9_reg: ldo9 { ldo9_reg: ldo9 {
/* VCC_DV_SDIO: vdds_sdcard */
regulator-name = "ldo9"; regulator-name = "ldo9";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3000000>;
regulator-always-on;
regulator-boot-on; regulator-boot-on;
}; };
ldoln_reg: ldoln { ldoln_reg: ldoln {
/* VDDA_1v8_REF: vdds_osc/mm_l4per.. */
regulator-name = "ldoln"; regulator-name = "ldoln";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
...@@ -419,12 +431,20 @@ ...@@ -419,12 +431,20 @@
}; };
ldousb_reg: ldousb { ldousb_reg: ldousb {
/* VDDA_3V_USB: VDDA_USBHS33 */
regulator-name = "ldousb"; regulator-name = "ldousb";
regulator-min-microvolt = <3250000>; regulator-min-microvolt = <3250000>;
regulator-max-microvolt = <3250000>; regulator-max-microvolt = <3250000>;
regulator-always-on; regulator-always-on;
regulator-boot-on; regulator-boot-on;
}; };
regen3_reg: regen3 {
/* REGEN3 controls LDO9 supply to card */
regulator-name = "regen3";
regulator-always-on;
regulator-boot-on;
};
}; };
}; };
}; };
......
...@@ -6,10 +6,12 @@ ...@@ -6,10 +6,12 @@
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
cpu@0 { cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a9"; compatible = "arm,cortex-a9";
reg = <0>; reg = <0>;
}; };
cpu@1 { cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a9"; compatible = "arm,cortex-a9";
reg = <1>; reg = <1>;
}; };
......
...@@ -457,6 +457,7 @@ ...@@ -457,6 +457,7 @@
}; };
usb-phy@c5004000 { usb-phy@c5004000 {
status = "okay";
nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO(V, 1) nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO(V, 1)
GPIO_ACTIVE_LOW>; GPIO_ACTIVE_LOW>;
}; };
......
...@@ -121,8 +121,7 @@ config MSM_SMD ...@@ -121,8 +121,7 @@ config MSM_SMD
bool bool
config MSM_GPIOMUX config MSM_GPIOMUX
depends on !(ARCH_MSM8X60 || ARCH_MSM8960) bool
bool "MSM V1 TLMM GPIOMUX architecture"
help help
Support for MSM V1 TLMM GPIOMUX architecture. Support for MSM V1 TLMM GPIOMUX architecture.
......
/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
#include <linux/kernel.h>
#include "gpiomux.h"
#include "proc_comm.h"
void __msm_gpiomux_write(unsigned gpio, gpiomux_config_t val)
{
unsigned tlmm_config = (val & ~GPIOMUX_CTL_MASK) |
((gpio & 0x3ff) << 4);
unsigned tlmm_disable = 0;
int rc;
rc = msm_proc_comm(PCOM_RPC_GPIO_TLMM_CONFIG_EX,
&tlmm_config, &tlmm_disable);
if (rc)
pr_err("%s: unexpected proc_comm failure %d: %08x %08x\n",
__func__, rc, tlmm_config, tlmm_disable);
}
...@@ -73,16 +73,6 @@ extern struct msm_gpiomux_config msm_gpiomux_configs[GPIOMUX_NGPIOS]; ...@@ -73,16 +73,6 @@ extern struct msm_gpiomux_config msm_gpiomux_configs[GPIOMUX_NGPIOS];
int msm_gpiomux_write(unsigned gpio, int msm_gpiomux_write(unsigned gpio,
gpiomux_config_t active, gpiomux_config_t active,
gpiomux_config_t suspended); gpiomux_config_t suspended);
/* Architecture-internal function for use by the framework only.
* This function can assume the following:
* - the gpio value has passed a bounds-check
* - the gpiomux spinlock has been obtained
*
* This function is not for public consumption. External users
* should use msm_gpiomux_write.
*/
void __msm_gpiomux_write(unsigned gpio, gpiomux_config_t val);
#else #else
static inline int msm_gpiomux_write(unsigned gpio, static inline int msm_gpiomux_write(unsigned gpio,
gpiomux_config_t active, gpiomux_config_t active,
......
...@@ -129,6 +129,7 @@ static int omap_device_build_from_dt(struct platform_device *pdev) ...@@ -129,6 +129,7 @@ static int omap_device_build_from_dt(struct platform_device *pdev)
struct device_node *node = pdev->dev.of_node; struct device_node *node = pdev->dev.of_node;
const char *oh_name; const char *oh_name;
int oh_cnt, i, ret = 0; int oh_cnt, i, ret = 0;
bool device_active = false;
oh_cnt = of_property_count_strings(node, "ti,hwmods"); oh_cnt = of_property_count_strings(node, "ti,hwmods");
if (oh_cnt <= 0) { if (oh_cnt <= 0) {
...@@ -152,6 +153,8 @@ static int omap_device_build_from_dt(struct platform_device *pdev) ...@@ -152,6 +153,8 @@ static int omap_device_build_from_dt(struct platform_device *pdev)
goto odbfd_exit1; goto odbfd_exit1;
} }
hwmods[i] = oh; hwmods[i] = oh;
if (oh->flags & HWMOD_INIT_NO_IDLE)
device_active = true;
} }
od = omap_device_alloc(pdev, hwmods, oh_cnt); od = omap_device_alloc(pdev, hwmods, oh_cnt);
...@@ -172,6 +175,11 @@ static int omap_device_build_from_dt(struct platform_device *pdev) ...@@ -172,6 +175,11 @@ static int omap_device_build_from_dt(struct platform_device *pdev)
pdev->dev.pm_domain = &omap_device_pm_domain; pdev->dev.pm_domain = &omap_device_pm_domain;
if (device_active) {
omap_device_enable(pdev);
pm_runtime_set_active(&pdev->dev);
}
odbfd_exit1: odbfd_exit1:
kfree(hwmods); kfree(hwmods);
odbfd_exit: odbfd_exit:
...@@ -842,6 +850,7 @@ static int __init omap_device_late_idle(struct device *dev, void *data) ...@@ -842,6 +850,7 @@ static int __init omap_device_late_idle(struct device *dev, void *data)
{ {
struct platform_device *pdev = to_platform_device(dev); struct platform_device *pdev = to_platform_device(dev);
struct omap_device *od = to_omap_device(pdev); struct omap_device *od = to_omap_device(pdev);
int i;
if (!od) if (!od)
return 0; return 0;
...@@ -850,6 +859,15 @@ static int __init omap_device_late_idle(struct device *dev, void *data) ...@@ -850,6 +859,15 @@ static int __init omap_device_late_idle(struct device *dev, void *data)
* If omap_device state is enabled, but has no driver bound, * If omap_device state is enabled, but has no driver bound,
* idle it. * idle it.
*/ */
/*
* Some devices (like memory controllers) are always kept
* enabled, and should not be idled even with no drivers.
*/
for (i = 0; i < od->hwmods_cnt; i++)
if (od->hwmods[i]->flags & HWMOD_INIT_NO_IDLE)
return 0;
if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) { if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) {
if (od->_state == OMAP_DEVICE_STATE_ENABLED) { if (od->_state == OMAP_DEVICE_STATE_ENABLED) {
dev_warn(dev, "%s: enabled but no driver. Idling\n", dev_warn(dev, "%s: enabled but no driver. Idling\n",
......
...@@ -2386,7 +2386,7 @@ static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data) ...@@ -2386,7 +2386,7 @@ static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
np = of_dev_hwmod_lookup(of_find_node_by_name(NULL, "ocp"), oh); np = of_dev_hwmod_lookup(of_find_node_by_name(NULL, "ocp"), oh);
if (np) if (np)
va_start = of_iomap(np, 0); va_start = of_iomap(np, oh->mpu_rt_idx);
} else { } else {
va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start); va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
} }
......
...@@ -95,6 +95,54 @@ extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type3; ...@@ -95,6 +95,54 @@ extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type3;
#define MODULEMODE_HWCTRL 1 #define MODULEMODE_HWCTRL 1
#define MODULEMODE_SWCTRL 2 #define MODULEMODE_SWCTRL 2
#define DEBUG_OMAP2UART1_FLAGS 0
#define DEBUG_OMAP2UART2_FLAGS 0
#define DEBUG_OMAP2UART3_FLAGS 0
#define DEBUG_OMAP3UART3_FLAGS 0
#define DEBUG_OMAP3UART4_FLAGS 0
#define DEBUG_OMAP4UART3_FLAGS 0
#define DEBUG_OMAP4UART4_FLAGS 0
#define DEBUG_TI81XXUART1_FLAGS 0
#define DEBUG_TI81XXUART2_FLAGS 0
#define DEBUG_TI81XXUART3_FLAGS 0
#define DEBUG_AM33XXUART1_FLAGS 0
#define DEBUG_OMAPUART_FLAGS (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET)
#if defined(CONFIG_DEBUG_OMAP2UART1)
#undef DEBUG_OMAP2UART1_FLAGS
#define DEBUG_OMAP2UART1_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_OMAP2UART2)
#undef DEBUG_OMAP2UART2_FLAGS
#define DEBUG_OMAP2UART2_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_OMAP2UART3)
#undef DEBUG_OMAP2UART3_FLAGS
#define DEBUG_OMAP2UART3_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_OMAP3UART3)
#undef DEBUG_OMAP3UART3_FLAGS
#define DEBUG_OMAP3UART3_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_OMAP3UART4)
#undef DEBUG_OMAP3UART4_FLAGS
#define DEBUG_OMAP3UART4_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_OMAP4UART3)
#undef DEBUG_OMAP4UART3_FLAGS
#define DEBUG_OMAP4UART3_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_OMAP4UART4)
#undef DEBUG_OMAP4UART4_FLAGS
#define DEBUG_OMAP4UART4_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_TI81XXUART1)
#undef DEBUG_TI81XXUART1_FLAGS
#define DEBUG_TI81XXUART1_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_TI81XXUART2)
#undef DEBUG_TI81XXUART2_FLAGS
#define DEBUG_TI81XXUART2_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_TI81XXUART3)
#undef DEBUG_TI81XXUART3_FLAGS
#define DEBUG_TI81XXUART3_FLAGS DEBUG_OMAPUART_FLAGS
#elif defined(CONFIG_DEBUG_AM33XXUART1)
#undef DEBUG_AM33XXUART1_FLAGS
#define DEBUG_AM33XXUART1_FLAGS DEBUG_OMAPUART_FLAGS
#endif
/** /**
* struct omap_hwmod_mux_info - hwmod specific mux configuration * struct omap_hwmod_mux_info - hwmod specific mux configuration
...@@ -568,6 +616,7 @@ struct omap_hwmod_link { ...@@ -568,6 +616,7 @@ struct omap_hwmod_link {
* @voltdm: pointer to voltage domain (filled in at runtime) * @voltdm: pointer to voltage domain (filled in at runtime)
* @dev_attr: arbitrary device attributes that can be passed to the driver * @dev_attr: arbitrary device attributes that can be passed to the driver
* @_sysc_cache: internal-use hwmod flags * @_sysc_cache: internal-use hwmod flags
* @mpu_rt_idx: index of device address space for register target (for DT boot)
* @_mpu_rt_va: cached register target start address (internal use) * @_mpu_rt_va: cached register target start address (internal use)
* @_mpu_port: cached MPU register target slave (internal use) * @_mpu_port: cached MPU register target slave (internal use)
* @opt_clks_cnt: number of @opt_clks * @opt_clks_cnt: number of @opt_clks
...@@ -617,6 +666,7 @@ struct omap_hwmod { ...@@ -617,6 +666,7 @@ struct omap_hwmod {
struct list_head node; struct list_head node;
struct omap_hwmod_ocp_if *_mpu_port; struct omap_hwmod_ocp_if *_mpu_port;
u16 flags; u16 flags;
u8 mpu_rt_idx;
u8 response_lat; u8 response_lat;
u8 rst_lines_cnt; u8 rst_lines_cnt;
u8 opt_clks_cnt; u8 opt_clks_cnt;
......
...@@ -512,7 +512,7 @@ struct omap_hwmod omap2xxx_uart1_hwmod = { ...@@ -512,7 +512,7 @@ struct omap_hwmod omap2xxx_uart1_hwmod = {
.mpu_irqs = omap2_uart1_mpu_irqs, .mpu_irqs = omap2_uart1_mpu_irqs,
.sdma_reqs = omap2_uart1_sdma_reqs, .sdma_reqs = omap2_uart1_sdma_reqs,
.main_clk = "uart1_fck", .main_clk = "uart1_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_OMAP2UART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
...@@ -532,7 +532,7 @@ struct omap_hwmod omap2xxx_uart2_hwmod = { ...@@ -532,7 +532,7 @@ struct omap_hwmod omap2xxx_uart2_hwmod = {
.mpu_irqs = omap2_uart2_mpu_irqs, .mpu_irqs = omap2_uart2_mpu_irqs,
.sdma_reqs = omap2_uart2_sdma_reqs, .sdma_reqs = omap2_uart2_sdma_reqs,
.main_clk = "uart2_fck", .main_clk = "uart2_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_OMAP2UART2_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
...@@ -552,7 +552,7 @@ struct omap_hwmod omap2xxx_uart3_hwmod = { ...@@ -552,7 +552,7 @@ struct omap_hwmod omap2xxx_uart3_hwmod = {
.mpu_irqs = omap2_uart3_mpu_irqs, .mpu_irqs = omap2_uart3_mpu_irqs,
.sdma_reqs = omap2_uart3_sdma_reqs, .sdma_reqs = omap2_uart3_sdma_reqs,
.main_clk = "uart3_fck", .main_clk = "uart3_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_OMAP2UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
......
...@@ -562,6 +562,7 @@ static struct omap_hwmod am33xx_cpgmac0_hwmod = { ...@@ -562,6 +562,7 @@ static struct omap_hwmod am33xx_cpgmac0_hwmod = {
.clkdm_name = "cpsw_125mhz_clkdm", .clkdm_name = "cpsw_125mhz_clkdm",
.flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY), .flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
.main_clk = "cpsw_125mhz_gclk", .main_clk = "cpsw_125mhz_gclk",
.mpu_rt_idx = 1,
.prcm = { .prcm = {
.omap4 = { .omap4 = {
.clkctrl_offs = AM33XX_CM_PER_CPGMAC0_CLKCTRL_OFFSET, .clkctrl_offs = AM33XX_CM_PER_CPGMAC0_CLKCTRL_OFFSET,
...@@ -1512,7 +1513,7 @@ static struct omap_hwmod am33xx_uart1_hwmod = { ...@@ -1512,7 +1513,7 @@ static struct omap_hwmod am33xx_uart1_hwmod = {
.name = "uart1", .name = "uart1",
.class = &uart_class, .class = &uart_class,
.clkdm_name = "l4_wkup_clkdm", .clkdm_name = "l4_wkup_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_AM33XXUART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
.main_clk = "dpll_per_m2_div4_wkupdm_ck", .main_clk = "dpll_per_m2_div4_wkupdm_ck",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
......
...@@ -490,7 +490,7 @@ static struct omap_hwmod omap3xxx_uart1_hwmod = { ...@@ -490,7 +490,7 @@ static struct omap_hwmod omap3xxx_uart1_hwmod = {
.mpu_irqs = omap2_uart1_mpu_irqs, .mpu_irqs = omap2_uart1_mpu_irqs,
.sdma_reqs = omap2_uart1_sdma_reqs, .sdma_reqs = omap2_uart1_sdma_reqs,
.main_clk = "uart1_fck", .main_clk = "uart1_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_TI81XXUART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
...@@ -509,7 +509,7 @@ static struct omap_hwmod omap3xxx_uart2_hwmod = { ...@@ -509,7 +509,7 @@ static struct omap_hwmod omap3xxx_uart2_hwmod = {
.mpu_irqs = omap2_uart2_mpu_irqs, .mpu_irqs = omap2_uart2_mpu_irqs,
.sdma_reqs = omap2_uart2_sdma_reqs, .sdma_reqs = omap2_uart2_sdma_reqs,
.main_clk = "uart2_fck", .main_clk = "uart2_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_TI81XXUART2_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
...@@ -528,7 +528,8 @@ static struct omap_hwmod omap3xxx_uart3_hwmod = { ...@@ -528,7 +528,8 @@ static struct omap_hwmod omap3xxx_uart3_hwmod = {
.mpu_irqs = omap2_uart3_mpu_irqs, .mpu_irqs = omap2_uart3_mpu_irqs,
.sdma_reqs = omap2_uart3_sdma_reqs, .sdma_reqs = omap2_uart3_sdma_reqs,
.main_clk = "uart3_fck", .main_clk = "uart3_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_OMAP3UART3_FLAGS | DEBUG_TI81XXUART3_FLAGS |
HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = OMAP3430_PER_MOD, .module_offs = OMAP3430_PER_MOD,
...@@ -558,7 +559,7 @@ static struct omap_hwmod omap36xx_uart4_hwmod = { ...@@ -558,7 +559,7 @@ static struct omap_hwmod omap36xx_uart4_hwmod = {
.mpu_irqs = uart4_mpu_irqs, .mpu_irqs = uart4_mpu_irqs,
.sdma_reqs = uart4_sdma_reqs, .sdma_reqs = uart4_sdma_reqs,
.main_clk = "uart4_fck", .main_clk = "uart4_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_OMAP3UART4_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = OMAP3430_PER_MOD, .module_offs = OMAP3430_PER_MOD,
......
...@@ -2858,8 +2858,7 @@ static struct omap_hwmod omap44xx_uart3_hwmod = { ...@@ -2858,8 +2858,7 @@ static struct omap_hwmod omap44xx_uart3_hwmod = {
.name = "uart3", .name = "uart3",
.class = &omap44xx_uart_hwmod_class, .class = &omap44xx_uart_hwmod_class,
.clkdm_name = "l4_per_clkdm", .clkdm_name = "l4_per_clkdm",
.flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET | .flags = DEBUG_OMAP4UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
HWMOD_SWSUP_SIDLE_ACT,
.main_clk = "func_48m_fclk", .main_clk = "func_48m_fclk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
...@@ -2875,7 +2874,7 @@ static struct omap_hwmod omap44xx_uart4_hwmod = { ...@@ -2875,7 +2874,7 @@ static struct omap_hwmod omap44xx_uart4_hwmod = {
.name = "uart4", .name = "uart4",
.class = &omap44xx_uart_hwmod_class, .class = &omap44xx_uart_hwmod_class,
.clkdm_name = "l4_per_clkdm", .clkdm_name = "l4_per_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT, .flags = DEBUG_OMAP4UART4_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
.main_clk = "func_48m_fclk", .main_clk = "func_48m_fclk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
......
...@@ -1375,7 +1375,7 @@ static struct omap_hwmod omap54xx_uart3_hwmod = { ...@@ -1375,7 +1375,7 @@ static struct omap_hwmod omap54xx_uart3_hwmod = {
.name = "uart3", .name = "uart3",
.class = &omap54xx_uart_hwmod_class, .class = &omap54xx_uart_hwmod_class,
.clkdm_name = "l4per_clkdm", .clkdm_name = "l4per_clkdm",
.flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, .flags = DEBUG_OMAP4UART3_FLAGS,
.main_clk = "func_48m_fclk", .main_clk = "func_48m_fclk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
...@@ -1391,6 +1391,7 @@ static struct omap_hwmod omap54xx_uart4_hwmod = { ...@@ -1391,6 +1391,7 @@ static struct omap_hwmod omap54xx_uart4_hwmod = {
.name = "uart4", .name = "uart4",
.class = &omap54xx_uart_hwmod_class, .class = &omap54xx_uart_hwmod_class,
.clkdm_name = "l4per_clkdm", .clkdm_name = "l4per_clkdm",
.flags = DEBUG_OMAP4UART4_FLAGS,
.main_clk = "func_48m_fclk", .main_clk = "func_48m_fclk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
......
...@@ -208,17 +208,6 @@ static int __init omap_serial_early_init(void) ...@@ -208,17 +208,6 @@ static int __init omap_serial_early_init(void)
pr_info("%s used as console in debug mode: uart%d clocks will not be gated", pr_info("%s used as console in debug mode: uart%d clocks will not be gated",
uart_name, uart->num); uart_name, uart->num);
} }
/*
* omap-uart can be used for earlyprintk logs
* So if omap-uart is used as console then prevent
* uart reset and idle to get logs from omap-uart
* until uart console driver is available to take
* care for console messages.
* Idling or resetting omap-uart while printing logs
* early boot logs can stall the boot-up.
*/
oh->flags |= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET;
} }
} while (1); } while (1);
......
...@@ -1162,9 +1162,6 @@ static void __init eva_init(void) ...@@ -1162,9 +1162,6 @@ static void __init eva_init(void)
gpio_request_one(61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */ gpio_request_one(61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */
gpio_request_one(202, GPIOF_OUT_INIT_LOW, NULL); /* LCD0_LED_CONT */ gpio_request_one(202, GPIOF_OUT_INIT_LOW, NULL); /* LCD0_LED_CONT */
/* Touchscreen */
gpio_request_one(166, GPIOF_OUT_INIT_HIGH, NULL); /* TP_RST_B */
/* GETHER */ /* GETHER */
gpio_request_one(18, GPIOF_OUT_INIT_HIGH, NULL); /* PHY_RST */ gpio_request_one(18, GPIOF_OUT_INIT_HIGH, NULL); /* PHY_RST */
......
...@@ -167,7 +167,13 @@ static const struct pinctrl_map bockw_pinctrl_map[] = { ...@@ -167,7 +167,13 @@ static const struct pinctrl_map bockw_pinctrl_map[] = {
"usb1", "usb1"), "usb1", "usb1"),
/* SDHI0 */ /* SDHI0 */
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778", PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
"sdhi0", "sdhi0"), "sdhi0_data4", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
"sdhi0_ctrl", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
"sdhi0_cd", "sdhi0"),
PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
"sdhi0_wp", "sdhi0"),
}; };
#define FPGA 0x18200000 #define FPGA 0x18200000
......
...@@ -59,7 +59,7 @@ static __initdata struct gpio_led_platform_data lager_leds_pdata = { ...@@ -59,7 +59,7 @@ static __initdata struct gpio_led_platform_data lager_leds_pdata = {
#define GPIO_KEY(c, g, d, ...) \ #define GPIO_KEY(c, g, d, ...) \
{ .code = c, .gpio = g, .desc = d, .active_low = 1 } { .code = c, .gpio = g, .desc = d, .active_low = 1 }
static __initdata struct gpio_keys_button gpio_buttons[] = { static struct gpio_keys_button gpio_buttons[] = {
GPIO_KEY(KEY_4, RCAR_GP_PIN(1, 28), "SW2-pin4"), GPIO_KEY(KEY_4, RCAR_GP_PIN(1, 28), "SW2-pin4"),
GPIO_KEY(KEY_3, RCAR_GP_PIN(1, 26), "SW2-pin3"), GPIO_KEY(KEY_3, RCAR_GP_PIN(1, 26), "SW2-pin3"),
GPIO_KEY(KEY_2, RCAR_GP_PIN(1, 24), "SW2-pin2"), GPIO_KEY(KEY_2, RCAR_GP_PIN(1, 24), "SW2-pin2"),
......
...@@ -16,8 +16,6 @@ ...@@ -16,8 +16,6 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/init.h> #include <linux/init.h>
__INIT
/* /*
* ST specific entry point for secondary CPUs. This provides * ST specific entry point for secondary CPUs. This provides
* a "holding pen" into which all secondary cores are held until we're * a "holding pen" into which all secondary cores are held until we're
......
...@@ -400,8 +400,8 @@ static size_t sh_dmae_get_partial(struct shdma_chan *schan, ...@@ -400,8 +400,8 @@ static size_t sh_dmae_get_partial(struct shdma_chan *schan,
shdma_chan); shdma_chan);
struct sh_dmae_desc *sh_desc = container_of(sdesc, struct sh_dmae_desc *sh_desc = container_of(sdesc,
struct sh_dmae_desc, shdma_desc); struct sh_dmae_desc, shdma_desc);
return (sh_desc->hw.tcr - sh_dmae_readl(sh_chan, TCR)) << return sh_desc->hw.tcr -
sh_chan->xmit_shift; (sh_dmae_readl(sh_chan, TCR) << sh_chan->xmit_shift);
} }
/* Called from error IRQ or NMI */ /* Called from error IRQ or NMI */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册