mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-24 09:13:20 -05:00
ARM: SoC fixes for v3.11-rc
- 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 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJSAshIAAoJEFk3GJrT+8Zl3i8QAITSHEVGoksh0dgi2djlknMK HoZq35kL/tpUCzZZkt3YroQFAgCeNhnfaWoelR2I7Pvaevyu7Z0wpIigfNhnraH2 cvzlaZPZKJxW32yPWrOOJjaEaxQ8ltBIt6XUfqMusXHKPI99XV3nkj/6vuux3OXI 9ADE4lHtH2mlMjOgoP4xJb+cID1raRloXjNWz69u816/a+cujT+3ghqE9DDZY1Xo 7exYSukwaMLVFg2HpG+LbNzpZxHYD1oIR4Mww79XefMq0/7JDlb+e7DuvIhNlPAW GPZMfE98h+YPLYTVFW3rKcQCIl081IsaZRIQSupX2J2jGW6Izv16lZad5yBvLYhk TX41o4ATfpS/FAW7ahz2olhewsHvLY/5TYDjlr/ULSBWcaE5/v6Zu7H3DaZ4BFho T8WMf6pYz8Mu2fSBbkLonbt+mJBdzh1/42M0bCO469VBlls3B79efuEvhU2V+XC4 APuCd9m/Eo5Uf+1dJP0IcvHwVRPbJGH75dGnWCAVD0gkQ9cAHoinT9jqHW3gIB9o FE/yUx0w9Bq0p/7twF2xgKaBqAMzcACDWXozfY8+8gXGfoqh32WY72qUV4lUycYa 3La2pg6NeD37pVtspG9lGZg8iQJSL+WKzba3NTuZry2st+/mHP5QXQZhgtz8jzkc GHwcz+o7yQm31P17N7I+ =aecr -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
67ef626506
22 changed files with 154 additions and 110 deletions
|
@ -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
|
||||||
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 @@
|
||||||
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 @@
|
||||||
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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&mmc1 {
|
&mmc1 {
|
||||||
vmmc-supply = <&vmmcsd_fixed>;
|
vmmc-supply = <&ldo9_reg>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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 @@
|
||||||
#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 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
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
|
||||||
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.
|
||||||
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
/* 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];
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
* 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)
|
||||||
|
|
||||||
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;
|
||||||
#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 {
|
||||||
* @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 {
|
||||||
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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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)
|
||||||
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)
|
||||||
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[] = {
|
||||||
"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 = {
|
||||||
#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 @@
|
||||||
#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,
|
||||||
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 */
|
||||||
|
|
Loading…
Add table
Reference in a new issue