Skip to content

Commit e6694d9

Browse files
committed
Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC fixes from Olof Johansson: "These are a little later than I planned on since I got caught up with handling merges for 3.11 most of the week. Another week, another batch of fixes for arm-soc platforms. Again, nothing controversial. A few more than would be ideal, but all are valid fixes. In particular the prima2 panic patch is critical since it fixes a problem where multiplatform kernels panic on all but prima2 hardware." * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: SAMSUNG: pm: Adjust for pinctrl- and DT-enabled platforms ARM: prima2: fix incorrect panic usage arm: mvebu: armada-xp-{gp,openblocks-ax3-4}: specify PCIe range ARM: Kirkwood: handle mv88f6282 cpu in __kirkwood_variant(). ARM: omap3: clock: fix wrong container_of in clock36xx.c ARM: dts: OMAP5: Fix missing PWM capability to timer nodes ARM: dts: omap4-panda|sdp: Fix mux for twl6030 IRQ pin and msecure line ARM: dts: AM33xx: Fix properties on gpmc node arm: omap2: fix AM33xx hwmod infos for UART2 ARM: OMAP3: Fix iva2_pwrdm settings for 3703
2 parents 596fa9e + 323226b commit e6694d9

File tree

13 files changed

+96
-29
lines changed

13 files changed

+96
-29
lines changed

arch/arm/boot/dts/am33xx.dtsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,8 @@
409409
ti,hwmods = "gpmc";
410410
reg = <0x50000000 0x2000>;
411411
interrupts = <100>;
412-
num-cs = <7>;
413-
num-waitpins = <2>;
412+
gpmc,num-cs = <7>;
413+
gpmc,num-waitpins = <2>;
414414
#address-cells = <2>;
415415
#size-cells = <1>;
416416
status = "disabled";

arch/arm/boot/dts/armada-xp-gp.dts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@
3939
};
4040

4141
soc {
42-
ranges = <0 0 0xd0000000 0x100000
43-
0xf0000000 0 0xf0000000 0x1000000>;
42+
ranges = <0 0 0xd0000000 0x100000 /* Internal registers 1MiB */
43+
0xe0000000 0 0xe0000000 0x8100000 /* PCIe */
44+
0xf0000000 0 0xf0000000 0x1000000 /* Device Bus, NOR 16MiB */>;
4445

4546
internal-regs {
4647
serial@12000 {

arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@
2727
};
2828

2929
soc {
30-
ranges = <0 0 0xd0000000 0x100000
31-
0xf0000000 0 0xf0000000 0x8000000>;
30+
ranges = <0 0 0xd0000000 0x100000 /* Internal registers 1MiB */
31+
0xe0000000 0 0xe0000000 0x8100000 /* PCIe */
32+
0xf0000000 0 0xf0000000 0x8000000 /* Device Bus, NOR 128MiB */>;
3233

3334
internal-regs {
3435
serial@12000 {

arch/arm/boot/dts/omap4-panda-common.dtsi

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,36 @@
5656
};
5757
};
5858

59+
&omap4_pmx_wkup {
60+
pinctrl-names = "default";
61+
pinctrl-0 = <
62+
&twl6030_wkup_pins
63+
>;
64+
65+
twl6030_wkup_pins: pinmux_twl6030_wkup_pins {
66+
pinctrl-single,pins = <
67+
0x14 0x2 /* fref_clk0_out.sys_drm_msecure OUTPUT | MODE2 */
68+
>;
69+
};
70+
};
71+
5972
&omap4_pmx_core {
6073
pinctrl-names = "default";
6174
pinctrl-0 = <
75+
&twl6030_pins
6276
&twl6040_pins
6377
&mcpdm_pins
6478
&mcbsp1_pins
6579
&dss_hdmi_pins
6680
&tpd12s015_pins
6781
>;
6882

83+
twl6030_pins: pinmux_twl6030_pins {
84+
pinctrl-single,pins = <
85+
0x15e 0x4118 /* sys_nirq1.sys_nirq1 OMAP_WAKEUP_EN | INPUT_PULLUP | MODE0 */
86+
>;
87+
};
88+
6989
twl6040_pins: pinmux_twl6040_pins {
7090
pinctrl-single,pins = <
7191
0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */

arch/arm/boot/dts/omap4-sdp.dts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,23 @@
142142
};
143143
};
144144

145+
&omap4_pmx_wkup {
146+
pinctrl-names = "default";
147+
pinctrl-0 = <
148+
&twl6030_wkup_pins
149+
>;
150+
151+
twl6030_wkup_pins: pinmux_twl6030_wkup_pins {
152+
pinctrl-single,pins = <
153+
0x14 0x2 /* fref_clk0_out.sys_drm_msecure OUTPUT | MODE2 */
154+
>;
155+
};
156+
};
157+
145158
&omap4_pmx_core {
146159
pinctrl-names = "default";
147160
pinctrl-0 = <
161+
&twl6030_pins
148162
&twl6040_pins
149163
&mcpdm_pins
150164
&dmic_pins
@@ -179,6 +193,12 @@
179193
>;
180194
};
181195

196+
twl6030_pins: pinmux_twl6030_pins {
197+
pinctrl-single,pins = <
198+
0x15e 0x4118 /* sys_nirq1.sys_nirq1 OMAP_WAKEUP_EN | INPUT_PULLUP | MODE0 */
199+
>;
200+
};
201+
182202
twl6040_pins: pinmux_twl6040_pins {
183203
pinctrl-single,pins = <
184204
0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */

arch/arm/boot/dts/omap5.dtsi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,7 @@
538538
interrupts = <0 41 0x4>;
539539
ti,hwmods = "timer5";
540540
ti,timer-dsp;
541+
ti,timer-pwm;
541542
};
542543

543544
timer6: timer@4013a000 {
@@ -574,13 +575,15 @@
574575
reg = <0x4803e000 0x80>;
575576
interrupts = <0 45 0x4>;
576577
ti,hwmods = "timer9";
578+
ti,timer-pwm;
577579
};
578580

579581
timer10: timer@48086000 {
580582
compatible = "ti,omap5430-timer";
581583
reg = <0x48086000 0x80>;
582584
interrupts = <0 46 0x4>;
583585
ti,hwmods = "timer10";
586+
ti,timer-pwm;
584587
};
585588

586589
timer11: timer@48088000 {

arch/arm/mach-kirkwood/mpp.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ static unsigned int __init kirkwood_variant(void)
2222

2323
kirkwood_pcie_id(&dev, &rev);
2424

25-
if ((dev == MV88F6281_DEV_ID && rev >= MV88F6281_REV_A0) ||
26-
(dev == MV88F6282_DEV_ID))
25+
if (dev == MV88F6281_DEV_ID && rev >= MV88F6281_REV_A0)
2726
return MPP_F6281_MASK;
27+
if (dev == MV88F6282_DEV_ID)
28+
return MPP_F6282_MASK;
2829
if (dev == MV88F6192_DEV_ID && rev >= MV88F6192_REV_A0)
2930
return MPP_F6192_MASK;
3031
if (dev == MV88F6180_DEV_ID)

arch/arm/mach-omap2/clock36xx.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@
2020

2121
#include <linux/kernel.h>
2222
#include <linux/clk.h>
23+
#include <linux/clk-provider.h>
2324
#include <linux/io.h>
2425

2526
#include "clock.h"
2627
#include "clock36xx.h"
27-
28+
#define to_clk_divider(_hw) container_of(_hw, struct clk_divider, hw)
2829

2930
/**
3031
* omap36xx_pwrdn_clk_enable_with_hsdiv_restore - enable clocks suffering
@@ -39,29 +40,28 @@
3940
*/
4041
int omap36xx_pwrdn_clk_enable_with_hsdiv_restore(struct clk_hw *clk)
4142
{
42-
struct clk_hw_omap *parent;
43+
struct clk_divider *parent;
4344
struct clk_hw *parent_hw;
44-
u32 dummy_v, orig_v, clksel_shift;
45+
u32 dummy_v, orig_v;
4546
int ret;
4647

4748
/* Clear PWRDN bit of HSDIVIDER */
4849
ret = omap2_dflt_clk_enable(clk);
4950

5051
parent_hw = __clk_get_hw(__clk_get_parent(clk->clk));
51-
parent = to_clk_hw_omap(parent_hw);
52+
parent = to_clk_divider(parent_hw);
5253

5354
/* Restore the dividers */
5455
if (!ret) {
55-
clksel_shift = __ffs(parent->clksel_mask);
56-
orig_v = __raw_readl(parent->clksel_reg);
56+
orig_v = __raw_readl(parent->reg);
5757
dummy_v = orig_v;
5858

5959
/* Write any other value different from the Read value */
60-
dummy_v ^= (1 << clksel_shift);
61-
__raw_writel(dummy_v, parent->clksel_reg);
60+
dummy_v ^= (1 << parent->shift);
61+
__raw_writel(dummy_v, parent->reg);
6262

6363
/* Write the original divider */
64-
__raw_writel(orig_v, parent->clksel_reg);
64+
__raw_writel(orig_v, parent->reg);
6565
}
6666

6767
return ret;

arch/arm/mach-omap2/omap_hwmod_33xx_data.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2007,6 +2007,13 @@ static struct omap_hwmod am33xx_uart1_hwmod = {
20072007
},
20082008
};
20092009

2010+
/* uart2 */
2011+
static struct omap_hwmod_dma_info uart2_edma_reqs[] = {
2012+
{ .name = "tx", .dma_req = 28, },
2013+
{ .name = "rx", .dma_req = 29, },
2014+
{ .dma_req = -1 }
2015+
};
2016+
20102017
static struct omap_hwmod_irq_info am33xx_uart2_irqs[] = {
20112018
{ .irq = 73 + OMAP_INTC_START, },
20122019
{ .irq = -1 },
@@ -2018,7 +2025,7 @@ static struct omap_hwmod am33xx_uart2_hwmod = {
20182025
.clkdm_name = "l4ls_clkdm",
20192026
.flags = HWMOD_SWSUP_SIDLE_ACT,
20202027
.mpu_irqs = am33xx_uart2_irqs,
2021-
.sdma_reqs = uart1_edma_reqs,
2028+
.sdma_reqs = uart2_edma_reqs,
20222029
.main_clk = "dpll_per_m2_div4_ck",
20232030
.prcm = {
20242031
.omap4 = {

arch/arm/mach-omap2/pm34xx.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,8 +546,10 @@ static void __init prcm_setup_regs(void)
546546
/* Clear any pending PRCM interrupts */
547547
omap2_prm_write_mod_reg(0, OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
548548

549-
if (omap3_has_iva())
550-
omap3_iva_idle();
549+
/*
550+
* We need to idle iva2_pwrdm even on am3703 with no iva2.
551+
*/
552+
omap3_iva_idle();
551553

552554
omap3_d2d_idle();
553555
}

arch/arm/mach-prima2/pm.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,10 @@ static int __init sirfsoc_of_pwrc_init(void)
101101
struct device_node *np;
102102

103103
np = of_find_matching_node(NULL, pwrc_ids);
104-
if (!np)
105-
panic("unable to find compatible pwrc node in dtb\n");
104+
if (!np) {
105+
pr_err("unable to find compatible sirf pwrc node in dtb\n");
106+
return -ENOENT;
107+
}
106108

107109
/*
108110
* pwrc behind rtciobrg is not located in memory space

arch/arm/mach-prima2/rstc.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@ static int __init sirfsoc_of_rstc_init(void)
2828
struct device_node *np;
2929

3030
np = of_find_matching_node(NULL, rstc_ids);
31-
if (!np)
32-
panic("unable to find compatible rstc node in dtb\n");
31+
if (!np) {
32+
pr_err("unable to find compatible sirf rstc node in dtb\n");
33+
return -ENOENT;
34+
}
3335

3436
sirfsoc_rstc_base = of_iomap(np, 0);
3537
if (!sirfsoc_rstc_base)

arch/arm/plat-samsung/pm.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <linux/suspend.h>
1717
#include <linux/errno.h>
1818
#include <linux/delay.h>
19+
#include <linux/of.h>
1920
#include <linux/serial_core.h>
2021
#include <linux/io.h>
2122

@@ -261,7 +262,8 @@ static int s3c_pm_enter(suspend_state_t state)
261262
* require a full power-cycle)
262263
*/
263264

264-
if (!any_allowed(s3c_irqwake_intmask, s3c_irqwake_intallow) &&
265+
if (!of_have_populated_dt() &&
266+
!any_allowed(s3c_irqwake_intmask, s3c_irqwake_intallow) &&
265267
!any_allowed(s3c_irqwake_eintmask, s3c_irqwake_eintallow)) {
266268
printk(KERN_ERR "%s: No wake-up sources!\n", __func__);
267269
printk(KERN_ERR "%s: Aborting sleep\n", __func__);
@@ -270,8 +272,11 @@ static int s3c_pm_enter(suspend_state_t state)
270272

271273
/* save all necessary core registers not covered by the drivers */
272274

273-
samsung_pm_save_gpios();
274-
samsung_pm_saved_gpios();
275+
if (!of_have_populated_dt()) {
276+
samsung_pm_save_gpios();
277+
samsung_pm_saved_gpios();
278+
}
279+
275280
s3c_pm_save_uarts();
276281
s3c_pm_save_core();
277282

@@ -310,8 +315,11 @@ static int s3c_pm_enter(suspend_state_t state)
310315

311316
s3c_pm_restore_core();
312317
s3c_pm_restore_uarts();
313-
samsung_pm_restore_gpios();
314-
s3c_pm_restored_gpios();
318+
319+
if (!of_have_populated_dt()) {
320+
samsung_pm_restore_gpios();
321+
s3c_pm_restored_gpios();
322+
}
315323

316324
s3c_pm_debug_init();
317325

0 commit comments

Comments
 (0)