Commit d0ddf980 authored by Linus Torvalds's avatar 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 Arnd Bergmann:
 "Most of the changes this time are for incorrect device nodes in
  various ways, on on imx, berlin, exynos, ux500, uniphier, omap and
  meson.

  Chen-Yu Tsai now co-maintains mach-sunxi (Allwinner).

  Other bug fixes include
   - a partial revert of a broken tegra gpio patch
   - irq affinity for arm ccn
   - suspend on one Armada 385 machine
   - enable ZONE_DMA to avoid an OMAP crash for over 2GB RAM
   - turning on a regulator on beagleboard-x15 for HDMI
   - making the omap gpmc debug code visible
   - setup of orion network switch
   - a rare build regression for pxa"

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (22 commits)
  ARM: OMAP2+: Fix imprecise external abort caused by bogus SRAM init
  thermal: exynos: Fix register read in TMU
  ARM: OMAP2+: Fix oops with LPAE and more than 2GB of memory
  ARM: tegra: Comment out gpio-ranges properties
  ARM: dts: uniphier: fix IRQ number for devices on PH1-LD6b ref board
  drivers/perf: arm_pmu: avoid CPU device_node reference leak
  bus: arm-ccn: Fix irq affinity setting on CPU migration
  bus: arm-ccn: Handle correctly no-more-cpus case
  ARM: mvebu: correct a385-db-ap compatible string
  ARM: meson6: DTS: Fix wrong reg mapping and IRQ numbers
  MAINTAINERS: Update Allwinner entry and add new maintainer
  ARM: ux500: modify initial levelshifter status
  ARM: pxa: fix pxa3xx DFI lockup hack
  Documentation: ARM: List new omap MMC requirements
  memory: omap-gpmc: dump "before" state before first modification
  memory: omap-gpmc: Fix unselectable debug option for GPMC
  ARM: dts: am57xx-beagle-x15: set VDD_SD to always-on
  ARM: dts: Fix audio card detection on Peach boards
  ARM: EXYNOS: Fix double of_node_put() when parsing child power domains
  ARM: orion: Fix DSA platform device after mvmdio conversion
  ...
parents 2c44f4f0 55f41297
This file contains documentation for running mainline
kernel on omaps.
KERNEL NEW DEPENDENCIES
v4.3+ Update is needed for custom .config files to make sure
CONFIG_REGULATOR_PBIAS is enabled for MMC1 to work
properly.
...@@ -894,11 +894,12 @@ M: Lennert Buytenhek <kernel@wantstofly.org> ...@@ -894,11 +894,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/Allwinner A1X SoC support ARM/Allwinner sunXi SoC support
M: Maxime Ripard <maxime.ripard@free-electrons.com> M: Maxime Ripard <maxime.ripard@free-electrons.com>
M: Chen-Yu Tsai <wens@csie.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
N: sun[x4567]i N: sun[x456789]i
ARM/Allwinner SoC Clock Support ARM/Allwinner SoC Clock Support
M: Emilio López <emilio@elopez.com.ar> M: Emilio López <emilio@elopez.com.ar>
......
...@@ -402,11 +402,12 @@ smps8_reg: smps8 { ...@@ -402,11 +402,12 @@ smps8_reg: smps8 {
/* SMPS9 unused */ /* SMPS9 unused */
ldo1_reg: ldo1 { ldo1_reg: ldo1 {
/* VDD_SD */ /* VDD_SD / VDDSHV8 */
regulator-name = "ldo1"; regulator-name = "ldo1";
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
regulator-boot-on; regulator-boot-on;
regulator-always-on;
}; };
ldo2_reg: ldo2 { ldo2_reg: ldo2 {
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
/ { / {
model = "Marvell Armada 385 Access Point Development Board"; model = "Marvell Armada 385 Access Point Development Board";
compatible = "marvell,a385-db-ap", "marvell,armada385", "marvell,armada38x"; compatible = "marvell,a385-db-ap", "marvell,armada385", "marvell,armada380";
chosen { chosen {
stdout-path = "serial1:115200n8"; stdout-path = "serial1:115200n8";
......
...@@ -152,7 +152,7 @@ gic: interrupt-controller@ad1000 { ...@@ -152,7 +152,7 @@ gic: interrupt-controller@ad1000 {
}; };
usb_phy2: phy@a2f400 { usb_phy2: phy@a2f400 {
compatible = "marvell,berlin2-usb-phy"; compatible = "marvell,berlin2cd-usb-phy";
reg = <0xa2f400 0x128>; reg = <0xa2f400 0x128>;
#phy-cells = <0>; #phy-cells = <0>;
resets = <&chip_rst 0x104 14>; resets = <&chip_rst 0x104 14>;
...@@ -170,7 +170,7 @@ usb2: usb@a30000 { ...@@ -170,7 +170,7 @@ usb2: usb@a30000 {
}; };
usb_phy0: phy@b74000 { usb_phy0: phy@b74000 {
compatible = "marvell,berlin2-usb-phy"; compatible = "marvell,berlin2cd-usb-phy";
reg = <0xb74000 0x128>; reg = <0xb74000 0x128>;
#phy-cells = <0>; #phy-cells = <0>;
resets = <&chip_rst 0x104 12>; resets = <&chip_rst 0x104 12>;
...@@ -178,7 +178,7 @@ usb_phy0: phy@b74000 { ...@@ -178,7 +178,7 @@ usb_phy0: phy@b74000 {
}; };
usb_phy1: phy@b78000 { usb_phy1: phy@b78000 {
compatible = "marvell,berlin2-usb-phy"; compatible = "marvell,berlin2cd-usb-phy";
reg = <0xb78000 0x128>; reg = <0xb78000 0x128>;
#phy-cells = <0>; #phy-cells = <0>;
resets = <&chip_rst 0x104 13>; resets = <&chip_rst 0x104 13>;
......
...@@ -915,6 +915,11 @@ pmic_selb: pmic-selb { ...@@ -915,6 +915,11 @@ pmic_selb: pmic-selb {
}; };
}; };
&pmu_system_controller {
assigned-clocks = <&pmu_system_controller 0>;
assigned-clock-parents = <&clock CLK_FIN_PLL>;
};
&rtc { &rtc {
status = "okay"; status = "okay";
clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>; clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>;
......
...@@ -878,6 +878,11 @@ pmic_selb: pmic-selb { ...@@ -878,6 +878,11 @@ pmic_selb: pmic-selb {
}; };
}; };
&pmu_system_controller {
assigned-clocks = <&pmu_system_controller 0>;
assigned-clock-parents = <&clock CLK_FIN_PLL>;
};
&rtc { &rtc {
status = "okay"; status = "okay";
clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>; clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>;
......
...@@ -588,10 +588,10 @@ uart1: serial@30860000 { ...@@ -588,10 +588,10 @@ uart1: serial@30860000 {
status = "disabled"; status = "disabled";
}; };
uart2: serial@30870000 { uart2: serial@30890000 {
compatible = "fsl,imx7d-uart", compatible = "fsl,imx7d-uart",
"fsl,imx6q-uart"; "fsl,imx6q-uart";
reg = <0x30870000 0x10000>; reg = <0x30890000 0x10000>;
interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_UART2_ROOT_CLK>, clocks = <&clks IMX7D_UART2_ROOT_CLK>,
<&clks IMX7D_UART2_ROOT_CLK>; <&clks IMX7D_UART2_ROOT_CLK>;
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
/ { / {
model = "LogicPD Zoom DM3730 Torpedo Development Kit"; model = "LogicPD Zoom DM3730 Torpedo Development Kit";
compatible = "logicpd,dm3730-torpedo-devkit", "ti,omap36xx"; compatible = "logicpd,dm3730-torpedo-devkit", "ti,omap3630", "ti,omap3";
gpio_keys { gpio_keys {
compatible = "gpio-keys"; compatible = "gpio-keys";
......
...@@ -67,7 +67,7 @@ gic: interrupt-controller@c4301000 { ...@@ -67,7 +67,7 @@ gic: interrupt-controller@c4301000 {
timer@c1109940 { timer@c1109940 {
compatible = "amlogic,meson6-timer"; compatible = "amlogic,meson6-timer";
reg = <0xc1109940 0x14>; reg = <0xc1109940 0x18>;
interrupts = <0 10 1>; interrupts = <0 10 1>;
}; };
...@@ -80,36 +80,37 @@ soc { ...@@ -80,36 +80,37 @@ soc {
wdt: watchdog@c1109900 { wdt: watchdog@c1109900 {
compatible = "amlogic,meson6-wdt"; compatible = "amlogic,meson6-wdt";
reg = <0xc1109900 0x8>; reg = <0xc1109900 0x8>;
interrupts = <0 0 1>;
}; };
uart_AO: serial@c81004c0 { uart_AO: serial@c81004c0 {
compatible = "amlogic,meson-uart"; compatible = "amlogic,meson-uart";
reg = <0xc81004c0 0x14>; reg = <0xc81004c0 0x18>;
interrupts = <0 90 1>; interrupts = <0 90 1>;
clocks = <&clk81>; clocks = <&clk81>;
status = "disabled"; status = "disabled";
}; };
uart_A: serial@c81084c0 { uart_A: serial@c11084c0 {
compatible = "amlogic,meson-uart"; compatible = "amlogic,meson-uart";
reg = <0xc81084c0 0x14>; reg = <0xc11084c0 0x18>;
interrupts = <0 90 1>; interrupts = <0 26 1>;
clocks = <&clk81>; clocks = <&clk81>;
status = "disabled"; status = "disabled";
}; };
uart_B: serial@c81084dc { uart_B: serial@c11084dc {
compatible = "amlogic,meson-uart"; compatible = "amlogic,meson-uart";
reg = <0xc81084dc 0x14>; reg = <0xc11084dc 0x18>;
interrupts = <0 90 1>; interrupts = <0 75 1>;
clocks = <&clk81>; clocks = <&clk81>;
status = "disabled"; status = "disabled";
}; };
uart_C: serial@c8108700 { uart_C: serial@c1108700 {
compatible = "amlogic,meson-uart"; compatible = "amlogic,meson-uart";
reg = <0xc8108700 0x14>; reg = <0xc1108700 0x18>;
interrupts = <0 90 1>; interrupts = <0 93 1>;
clocks = <&clk81>; clocks = <&clk81>;
status = "disabled"; status = "disabled";
}; };
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
/ { / {
model = "TI OMAP37XX EVM (TMDSEVM3730)"; model = "TI OMAP37XX EVM (TMDSEVM3730)";
compatible = "ti,omap3-evm-37xx", "ti,omap36xx"; compatible = "ti,omap3-evm-37xx", "ti,omap3630", "ti,omap3";
memory { memory {
device_type = "memory"; device_type = "memory";
......
...@@ -56,7 +56,7 @@ default_hrefv60_cfg1 { ...@@ -56,7 +56,7 @@ default_hrefv60_cfg1 {
/* VMMCI level-shifter enable */ /* VMMCI level-shifter enable */
default_hrefv60_cfg2 { default_hrefv60_cfg2 {
pins = "GPIO169_D22"; pins = "GPIO169_D22";
ste,config = <&gpio_out_lo>; ste,config = <&gpio_out_hi>;
}; };
/* VMMCI level-shifter voltage select */ /* VMMCI level-shifter voltage select */
default_hrefv60_cfg3 { default_hrefv60_cfg3 {
......
...@@ -234,7 +234,9 @@ gpio: gpio@6000d000 { ...@@ -234,7 +234,9 @@ gpio: gpio@6000d000 {
gpio-controller; gpio-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupt-controller; interrupt-controller;
/*
gpio-ranges = <&pinmux 0 0 246>; gpio-ranges = <&pinmux 0 0 246>;
*/
}; };
apbmisc@70000800 { apbmisc@70000800 {
......
...@@ -258,7 +258,9 @@ gpio: gpio@0,6000d000 { ...@@ -258,7 +258,9 @@ gpio: gpio@0,6000d000 {
gpio-controller; gpio-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupt-controller; interrupt-controller;
/*
gpio-ranges = <&pinmux 0 0 251>; gpio-ranges = <&pinmux 0 0 251>;
*/
}; };
apbdma: dma@0,60020000 { apbdma: dma@0,60020000 {
......
...@@ -244,7 +244,9 @@ gpio: gpio@6000d000 { ...@@ -244,7 +244,9 @@ gpio: gpio@6000d000 {
gpio-controller; gpio-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupt-controller; interrupt-controller;
/*
gpio-ranges = <&pinmux 0 0 224>; gpio-ranges = <&pinmux 0 0 224>;
*/
}; };
apbmisc@70000800 { apbmisc@70000800 {
......
...@@ -349,7 +349,9 @@ gpio: gpio@6000d000 { ...@@ -349,7 +349,9 @@ gpio: gpio@6000d000 {
gpio-controller; gpio-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupt-controller; interrupt-controller;
/*
gpio-ranges = <&pinmux 0 0 248>; gpio-ranges = <&pinmux 0 0 248>;
*/
}; };
apbmisc@70000800 { apbmisc@70000800 {
......
...@@ -85,7 +85,7 @@ &support_card { ...@@ -85,7 +85,7 @@ &support_card {
}; };
&ethsc { &ethsc {
interrupts = <0 50 4>; interrupts = <0 52 4>;
}; };
&serial0 { &serial0 {
......
...@@ -200,15 +200,15 @@ static __init int exynos4_pm_init_power_domain(void) ...@@ -200,15 +200,15 @@ static __init int exynos4_pm_init_power_domain(void)
args.args_count = 0; args.args_count = 0;
child_domain = of_genpd_get_from_provider(&args); child_domain = of_genpd_get_from_provider(&args);
if (IS_ERR(child_domain)) if (IS_ERR(child_domain))
goto next_pd; continue;
if (of_parse_phandle_with_args(np, "power-domains", if (of_parse_phandle_with_args(np, "power-domains",
"#power-domain-cells", 0, &args) != 0) "#power-domain-cells", 0, &args) != 0)
goto next_pd; continue;
parent_domain = of_genpd_get_from_provider(&args); parent_domain = of_genpd_get_from_provider(&args);
if (IS_ERR(parent_domain)) if (IS_ERR(parent_domain))
goto next_pd; continue;
if (pm_genpd_add_subdomain(parent_domain, child_domain)) if (pm_genpd_add_subdomain(parent_domain, child_domain))
pr_warn("%s failed to add subdomain: %s\n", pr_warn("%s failed to add subdomain: %s\n",
...@@ -216,8 +216,6 @@ static __init int exynos4_pm_init_power_domain(void) ...@@ -216,8 +216,6 @@ static __init int exynos4_pm_init_power_domain(void)
else else
pr_info("%s has as child subdomain: %s.\n", pr_info("%s has as child subdomain: %s.\n",
parent_domain->name, child_domain->name); parent_domain->name, child_domain->name);
next_pd:
of_node_put(np);
} }
return 0; return 0;
......
...@@ -49,6 +49,7 @@ config SOC_OMAP5 ...@@ -49,6 +49,7 @@ config SOC_OMAP5
select OMAP_INTERCONNECT select OMAP_INTERCONNECT
select OMAP_INTERCONNECT_BARRIER select OMAP_INTERCONNECT_BARRIER
select PM_OPP if PM select PM_OPP if PM
select ZONE_DMA if ARM_LPAE
config SOC_AM33XX config SOC_AM33XX
bool "TI AM33XX" bool "TI AM33XX"
...@@ -78,6 +79,7 @@ config SOC_DRA7XX ...@@ -78,6 +79,7 @@ config SOC_DRA7XX
select OMAP_INTERCONNECT select OMAP_INTERCONNECT
select OMAP_INTERCONNECT_BARRIER select OMAP_INTERCONNECT_BARRIER
select PM_OPP if PM select PM_OPP if PM
select ZONE_DMA if ARM_LPAE
config ARCH_OMAP2PLUS config ARCH_OMAP2PLUS
bool bool
......
...@@ -106,6 +106,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") ...@@ -106,6 +106,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
MACHINE_END MACHINE_END
static const char *const omap36xx_boards_compat[] __initconst = { static const char *const omap36xx_boards_compat[] __initconst = {
"ti,omap3630",
"ti,omap36xx", "ti,omap36xx",
NULL, NULL,
}; };
...@@ -243,6 +244,9 @@ static const char *const omap5_boards_compat[] __initconst = { ...@@ -243,6 +244,9 @@ static const char *const omap5_boards_compat[] __initconst = {
}; };
DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)") DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
.dma_zone_size = SZ_2G,
#endif
.reserve = omap_reserve, .reserve = omap_reserve,
.smp = smp_ops(omap4_smp_ops), .smp = smp_ops(omap4_smp_ops),
.map_io = omap5_map_io, .map_io = omap5_map_io,
...@@ -288,6 +292,9 @@ static const char *const dra74x_boards_compat[] __initconst = { ...@@ -288,6 +292,9 @@ static const char *const dra74x_boards_compat[] __initconst = {
}; };
DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)") DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)")
#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
.dma_zone_size = SZ_2G,
#endif
.reserve = omap_reserve, .reserve = omap_reserve,
.smp = smp_ops(omap4_smp_ops), .smp = smp_ops(omap4_smp_ops),
.map_io = dra7xx_map_io, .map_io = dra7xx_map_io,
...@@ -308,6 +315,9 @@ static const char *const dra72x_boards_compat[] __initconst = { ...@@ -308,6 +315,9 @@ static const char *const dra72x_boards_compat[] __initconst = {
}; };
DT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)") DT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)")
#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
.dma_zone_size = SZ_2G,
#endif
.reserve = omap_reserve, .reserve = omap_reserve,
.map_io = dra7xx_map_io, .map_io = dra7xx_map_io,
.init_early = dra7xx_init_early, .init_early = dra7xx_init_early,
......
...@@ -559,7 +559,14 @@ static void pdata_quirks_check(struct pdata_init *quirks) ...@@ -559,7 +559,14 @@ static void pdata_quirks_check(struct pdata_init *quirks)
void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table) void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
{ {
omap_sdrc_init(NULL, NULL); /*
* We still need this for omap2420 and omap3 PM to work, others are
* using drivers/misc/sram.c already.
*/
if (of_machine_is_compatible("ti,omap2420") ||
of_machine_is_compatible("ti,omap3"))
omap_sdrc_init(NULL, NULL);
pdata_quirks_check(auxdata_quirks); pdata_quirks_check(auxdata_quirks);
of_platform_populate(NULL, omap_dt_match_table, of_platform_populate(NULL, omap_dt_match_table,
omap_auxdata_lookup, NULL); omap_auxdata_lookup, NULL);
......
...@@ -42,10 +42,6 @@ ...@@ -42,10 +42,6 @@
#define PECR_IS(n) ((1 << ((n) * 2)) << 29) #define PECR_IS(n) ((1 << ((n) * 2)) << 29)
extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int)); extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int));
#ifdef CONFIG_PM
#define ISRAM_START 0x5c000000
#define ISRAM_SIZE SZ_256K
/* /*
* NAND NFC: DFI bus arbitration subset * NAND NFC: DFI bus arbitration subset
...@@ -54,6 +50,11 @@ extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int)); ...@@ -54,6 +50,11 @@ extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int));
#define NDCR_ND_ARB_EN (1 << 12) #define NDCR_ND_ARB_EN (1 << 12)
#define NDCR_ND_ARB_CNTL (1 << 19) #define NDCR_ND_ARB_CNTL (1 << 19)
#ifdef CONFIG_PM
#define ISRAM_START 0x5c000000
#define ISRAM_SIZE SZ_256K
static void __iomem *sram; static void __iomem *sram;
static unsigned long wakeup_src; static unsigned long wakeup_src;
......
...@@ -495,7 +495,7 @@ void __init orion_ge00_switch_init(struct dsa_platform_data *d, int irq) ...@@ -495,7 +495,7 @@ void __init orion_ge00_switch_init(struct dsa_platform_data *d, int irq)
d->netdev = &orion_ge00.dev; d->netdev = &orion_ge00.dev;
for (i = 0; i < d->nr_chips; i++) for (i = 0; i < d->nr_chips; i++)
d->chip[i].host_dev = &orion_ge00_shared.dev; d->chip[i].host_dev = &orion_ge_mvmdio.dev;
orion_switch_device.dev.platform_data = d; orion_switch_device.dev.platform_data = d;
platform_device_register(&orion_switch_device); platform_device_register(&orion_switch_device);
......
...@@ -1184,11 +1184,12 @@ static int arm_ccn_pmu_cpu_notifier(struct notifier_block *nb, ...@@ -1184,11 +1184,12 @@ static int arm_ccn_pmu_cpu_notifier(struct notifier_block *nb,
if (!cpumask_test_and_clear_cpu(cpu, &dt->cpu)) if (!cpumask_test_and_clear_cpu(cpu, &dt->cpu))
break; break;
target = cpumask_any_but(cpu_online_mask, cpu); target = cpumask_any_but(cpu_online_mask, cpu);
if (target < 0) if (target >= nr_cpu_ids)
break; break;
perf_pmu_migrate_context(&dt->pmu, cpu, target); perf_pmu_migrate_context(&dt->pmu, cpu, target);
cpumask_set_cpu(target, &dt->cpu); cpumask_set_cpu(target, &dt->cpu);
WARN_ON(irq_set_affinity(ccn->irq, &dt->cpu) != 0); if (ccn->irq)
WARN_ON(irq_set_affinity(ccn->irq, &dt->cpu) != 0);
default: default:
break; break;
} }
......
...@@ -58,12 +58,18 @@ config OMAP_GPMC ...@@ -58,12 +58,18 @@ config OMAP_GPMC
memory drives like NOR, NAND, OneNAND, SRAM. memory drives like NOR, NAND, OneNAND, SRAM.
config OMAP_GPMC_DEBUG config OMAP_GPMC_DEBUG
bool bool "Enable GPMC debug output and skip reset of GPMC during init"
depends on OMAP_GPMC depends on OMAP_GPMC
help help
Enables verbose debugging mostly to decode the bootloader provided Enables verbose debugging mostly to decode the bootloader provided
timings. Enable this during development to configure devices timings. To preserve the bootloader provided timings, the reset
connected to the GPMC bus. of GPMC is skipped during init. Enable this during development to
configure devices connected to the GPMC bus.
NOTE: In addition to matching the register setup with the bootloader
you also need to match the GPMC FCLK frequency used by the
bootloader or else the GPMC timings won't be identical with the
bootloader timings.
config MVEBU_DEVBUS config MVEBU_DEVBUS
bool "Marvell EBU Device Bus Controller" bool "Marvell EBU Device Bus Controller"
......
...@@ -696,7 +696,6 @@ int gpmc_cs_set_timings(int cs, const struct gpmc_timings *t, ...@@ -696,7 +696,6 @@ int gpmc_cs_set_timings(int cs, const struct gpmc_timings *t,
int div; int div;
u32 l; u32 l;
gpmc_cs_show_timings(cs, "before gpmc_cs_set_timings");
div = gpmc_calc_divider(t->sync_clk); div = gpmc_calc_divider(t->sync_clk);
if (div < 0) if (div < 0)
return div; return div;
...@@ -1988,6 +1987,7 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, ...@@ -1988,6 +1987,7 @@ static int gpmc_probe_generic_child(struct platform_device *pdev,
if (ret < 0) if (ret < 0)
goto err; goto err;
gpmc_cs_show_timings(cs, "before gpmc_cs_program_settings");
ret = gpmc_cs_program_settings(cs, &gpmc_s); ret = gpmc_cs_program_settings(cs, &gpmc_s);
if (ret < 0) if (ret < 0)
goto err; goto err;
......
...@@ -823,9 +823,15 @@ static int of_pmu_irq_cfg(struct arm_pmu *pmu) ...@@ -823,9 +823,15 @@ static int of_pmu_irq_cfg(struct arm_pmu *pmu)
} }
/* Now look up the logical CPU number */ /* Now look up the logical CPU number */
for_each_possible_cpu(cpu) for_each_possible_cpu(cpu) {
if (dn == of_cpu_device_node_get(cpu)) struct device_node *cpu_dn;
cpu_dn = of_cpu_device_node_get(cpu);
of_node_put(cpu_dn);
if (dn == cpu_dn)
break; break;
}
if (cpu >= nr_cpu_ids) { if (cpu >= nr_cpu_ids) {
pr_warn("Failed to find logical CPU for %s\n", pr_warn("Failed to find logical CPU for %s\n",
......
...@@ -932,7 +932,7 @@ static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data, ...@@ -932,7 +932,7 @@ static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data,
if (data->soc == SOC_ARCH_EXYNOS5260) if (data->soc == SOC_ARCH_EXYNOS5260)
emul_con = EXYNOS5260_EMUL_CON; emul_con = EXYNOS5260_EMUL_CON;
if (data->soc == SOC_ARCH_EXYNOS5433) else if (data->soc == SOC_ARCH_EXYNOS5433)
emul_con = EXYNOS5433_TMU_EMUL_CON; emul_con = EXYNOS5433_TMU_EMUL_CON;
else if (data->soc == SOC_ARCH_EXYNOS7) else if (data->soc == SOC_ARCH_EXYNOS7)
emul_con = EXYNOS7_TMU_REG_EMUL_CON; emul_con = EXYNOS7_TMU_REG_EMUL_CON;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment