Skip to content

Commit 50b4b9c

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: "Another week, another batch of fixes for arm-soc platforms. Nothing controversial here, a handful of fixes for regressions and/or serious problems across several of the platforms. Things are slowing down nicely on fix rates for 3.10" * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: exynos: add debug_ll_io_init() call in exynos_init_io() ARM: EXYNOS: uncompress - print debug messages if DEBUG_LL is defined ARM: shmobile: sh73a0: Update CMT clockevent rating to 80 sh-pfc: r8a7779: Don't group USB OVC and PENC pins ARM: mxs: icoll: Fix interrupts gpio bank 0 ARM: imx: clk-imx6q: AXI clock select index is incorrect ARM: bcm2835: override the HW UART periphid ARM: mvebu: Fix bug in coherency fabric low level init function ARM: Kirkwood: TS219: Fix crash by double PCIe instantiation ARM: ux500: Provide supplies for AUX1, AUX2 and AUX3 ARM: ux500: Only configure wake-up reasons on ux500 based platforms ARM: dts: imx: fix clocks for cspi ARM i.MX6q: fix for ldb_di_sels
2 parents 554e6e9 + 090878a commit 50b4b9c

File tree

15 files changed

+84
-49
lines changed

15 files changed

+84
-49
lines changed

arch/arm/boot/dts/bcm2835.dtsi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
reg = <0x7e201000 0x1000>;
4545
interrupts = <2 25>;
4646
clock-frequency = <3000000>;
47+
arm,primecell-periphid = <0x00241011>;
4748
};
4849

4950
gpio: gpio {

arch/arm/boot/dts/imx25.dtsi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@
141141
#size-cells = <0>;
142142
compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
143143
reg = <0x43fa4000 0x4000>;
144-
clocks = <&clks 62>;
145-
clock-names = "ipg";
144+
clocks = <&clks 62>, <&clks 62>;
145+
clock-names = "ipg", "per";
146146
interrupts = <14>;
147147
status = "disabled";
148148
};
@@ -182,8 +182,8 @@
182182
compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
183183
reg = <0x50004000 0x4000>;
184184
interrupts = <0>;
185-
clocks = <&clks 80>;
186-
clock-names = "ipg";
185+
clocks = <&clks 80>, <&clks 80>;
186+
clock-names = "ipg", "per";
187187
status = "disabled";
188188
};
189189

@@ -210,8 +210,8 @@
210210
#size-cells = <0>;
211211
compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
212212
reg = <0x50010000 0x4000>;
213-
clocks = <&clks 79>;
214-
clock-names = "ipg";
213+
clocks = <&clks 79>, <&clks 79>;
214+
clock-names = "ipg", "per";
215215
interrupts = <13>;
216216
status = "disabled";
217217
};

arch/arm/boot/dts/imx27.dtsi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@
131131
compatible = "fsl,imx27-cspi";
132132
reg = <0x1000e000 0x1000>;
133133
interrupts = <16>;
134-
clocks = <&clks 53>, <&clks 0>;
134+
clocks = <&clks 53>, <&clks 53>;
135135
clock-names = "ipg", "per";
136136
status = "disabled";
137137
};
@@ -142,7 +142,7 @@
142142
compatible = "fsl,imx27-cspi";
143143
reg = <0x1000f000 0x1000>;
144144
interrupts = <15>;
145-
clocks = <&clks 52>, <&clks 0>;
145+
clocks = <&clks 52>, <&clks 52>;
146146
clock-names = "ipg", "per";
147147
status = "disabled";
148148
};
@@ -223,7 +223,7 @@
223223
compatible = "fsl,imx27-cspi";
224224
reg = <0x10017000 0x1000>;
225225
interrupts = <6>;
226-
clocks = <&clks 51>, <&clks 0>;
226+
clocks = <&clks 51>, <&clks 51>;
227227
clock-names = "ipg", "per";
228228
status = "disabled";
229229
};

arch/arm/boot/dts/imx51.dtsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,7 @@
631631
compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
632632
reg = <0x83fc0000 0x4000>;
633633
interrupts = <38>;
634-
clocks = <&clks 55>, <&clks 0>;
634+
clocks = <&clks 55>, <&clks 55>;
635635
clock-names = "ipg", "per";
636636
status = "disabled";
637637
};

arch/arm/boot/dts/imx53.dtsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -714,7 +714,7 @@
714714
compatible = "fsl,imx53-cspi", "fsl,imx35-cspi";
715715
reg = <0x63fc0000 0x4000>;
716716
interrupts = <38>;
717-
clocks = <&clks 55>, <&clks 0>;
717+
clocks = <&clks 55>, <&clks 55>;
718718
clock-names = "ipg", "per";
719719
status = "disabled";
720720
};

arch/arm/mach-exynos/common.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,8 @@ int __init exynos_fdt_map_chipid(unsigned long node, const char *uname,
386386

387387
void __init exynos_init_io(struct map_desc *mach_desc, int size)
388388
{
389+
debug_ll_io_init();
390+
389391
#ifdef CONFIG_OF
390392
if (initial_boot_params)
391393
of_scan_flat_dt(exynos_fdt_map_chipid, NULL);

arch/arm/mach-imx/clk-imx6q.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,14 @@ static const char *periph_clk2_sels[] = { "pll3_usb_otg", "osc", "osc", "dummy",
181181
static const char *periph2_clk2_sels[] = { "pll3_usb_otg", "pll2_bus", };
182182
static const char *periph_sels[] = { "periph_pre", "periph_clk2", };
183183
static const char *periph2_sels[] = { "periph2_pre", "periph2_clk2", };
184-
static const char *axi_sels[] = { "periph", "pll2_pfd2_396m", "pll3_pfd1_540m", };
184+
static const char *axi_sels[] = { "periph", "pll2_pfd2_396m", "periph", "pll3_pfd1_540m", };
185185
static const char *audio_sels[] = { "pll4_post_div", "pll3_pfd2_508m", "pll3_pfd3_454m", "pll3_usb_otg", };
186186
static const char *gpu_axi_sels[] = { "axi", "ahb", };
187187
static const char *gpu2d_core_sels[] = { "axi", "pll3_usb_otg", "pll2_pfd0_352m", "pll2_pfd2_396m", };
188188
static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", };
189189
static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll3_pfd0_720m", };
190190
static const char *ipu_sels[] = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", };
191-
static const char *ldb_di_sels[] = { "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_usb_otg", };
191+
static const char *ldb_di_sels[] = { "pll5_video_div", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_usb_otg", };
192192
static const char *ipu_di_pre_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll5_video_div", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", };
193193
static const char *ipu1_di0_sels[] = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
194194
static const char *ipu1_di1_sels[] = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };

arch/arm/mach-kirkwood/board-ts219.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,3 @@ void __init qnap_dt_ts219_init(void)
4141

4242
pm_power_off = qnap_tsx1x_power_off;
4343
}
44-
45-
/* FIXME: Will not work with DT. Maybe use MPP40_GPIO? */
46-
static int __init ts219_pci_init(void)
47-
{
48-
if (machine_is_ts219())
49-
kirkwood_pcie_init(KW_PCIE0);
50-
51-
return 0;
52-
}
53-
subsys_initcall(ts219_pci_init);

arch/arm/mach-mvebu/coherency_ll.S

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,21 @@ ENTRY(ll_set_cpu_coherent)
3232

3333
/* Add CPU to SMP group - Atomic */
3434
add r3, r0, #ARMADA_XP_CFB_CTL_REG_OFFSET
35-
ldr r2, [r3]
35+
1:
36+
ldrex r2, [r3]
3637
orr r2, r2, r1
37-
str r2, [r3]
38+
strex r0, r2, [r3]
39+
cmp r0, #0
40+
bne 1b
3841

3942
/* Enable coherency on CPU - Atomic */
40-
add r3, r0, #ARMADA_XP_CFB_CFG_REG_OFFSET
41-
ldr r2, [r3]
43+
add r3, r3, #ARMADA_XP_CFB_CFG_REG_OFFSET
44+
1:
45+
ldrex r2, [r3]
4246
orr r2, r2, r1
43-
str r2, [r3]
47+
strex r0, r2, [r3]
48+
cmp r0, #0
49+
bne 1b
4450

4551
dsb
4652

arch/arm/mach-shmobile/setup-sh73a0.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ static struct sh_timer_config cmt10_platform_data = {
252252
.name = "CMT10",
253253
.channel_offset = 0x10,
254254
.timer_bit = 0,
255-
.clockevent_rating = 125,
255+
.clockevent_rating = 80,
256256
.clocksource_rating = 125,
257257
};
258258

arch/arm/mach-ux500/board-mop500-regulators.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ static struct ab8500_regulator_reg_init ab8500_reg_init[] = {
374374
static struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = {
375375
/* supplies to the display/camera */
376376
[AB8500_LDO_AUX1] = {
377+
.supply_regulator = "ab8500-ext-supply3",
377378
.constraints = {
378379
.name = "V-DISPLAY",
379380
.min_uV = 2800000,
@@ -387,6 +388,7 @@ static struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = {
387388
},
388389
/* supplies to the on-board eMMC */
389390
[AB8500_LDO_AUX2] = {
391+
.supply_regulator = "ab8500-ext-supply3",
390392
.constraints = {
391393
.name = "V-eMMC1",
392394
.min_uV = 1100000,
@@ -402,6 +404,7 @@ static struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = {
402404
},
403405
/* supply for VAUX3, supplies to SDcard slots */
404406
[AB8500_LDO_AUX3] = {
407+
.supply_regulator = "ab8500-ext-supply3",
405408
.constraints = {
406409
.name = "V-MMC-SD",
407410
.min_uV = 1100000,

arch/arm/mach-ux500/cpuidle.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <asm/proc-fns.h>
2222

2323
#include "db8500-regs.h"
24+
#include "id.h"
2425

2526
static atomic_t master = ATOMIC_INIT(0);
2627
static DEFINE_SPINLOCK(master_lock);
@@ -114,6 +115,9 @@ static struct cpuidle_driver ux500_idle_driver = {
114115

115116
int __init ux500_idle_init(void)
116117
{
118+
if (!(cpu_is_u8500_family() || cpu_is_ux540_family()))
119+
return -ENODEV;
120+
117121
/* Configure wake up reasons */
118122
prcmu_enable_wakeups(PRCMU_WAKEUP(ARM) | PRCMU_WAKEUP(RTC) |
119123
PRCMU_WAKEUP(ABB));

arch/arm/plat-samsung/include/plat/uncompress.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ uart_rd(unsigned int reg)
6666

6767
static void putc(int ch)
6868
{
69+
if (!config_enabled(CONFIG_DEBUG_LL))
70+
return;
71+
6972
if (uart_rd(S3C2410_UFCON) & S3C2410_UFCON_FIFOMODE) {
7073
int level;
7174

@@ -118,7 +121,12 @@ static void arch_decomp_error(const char *x)
118121
#ifdef CONFIG_S3C_BOOT_UART_FORCE_FIFO
119122
static inline void arch_enable_uart_fifo(void)
120123
{
121-
u32 fifocon = uart_rd(S3C2410_UFCON);
124+
u32 fifocon;
125+
126+
if (!config_enabled(CONFIG_DEBUG_LL))
127+
return;
128+
129+
fifocon = uart_rd(S3C2410_UFCON);
122130

123131
if (!(fifocon & S3C2410_UFCON_FIFOMODE)) {
124132
fifocon |= S3C2410_UFCON_RESETBOTH;

drivers/irqchip/irq-mxs.c

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,10 @@ asmlinkage void __exception_irq_entry icoll_handle_irq(struct pt_regs *regs)
7676
{
7777
u32 irqnr;
7878

79-
do {
80-
irqnr = __raw_readl(icoll_base + HW_ICOLL_STAT_OFFSET);
81-
if (irqnr != 0x7f) {
82-
__raw_writel(irqnr, icoll_base + HW_ICOLL_VECTOR);
83-
irqnr = irq_find_mapping(icoll_domain, irqnr);
84-
handle_IRQ(irqnr, regs);
85-
continue;
86-
}
87-
break;
88-
} while (1);
79+
irqnr = __raw_readl(icoll_base + HW_ICOLL_STAT_OFFSET);
80+
__raw_writel(irqnr, icoll_base + HW_ICOLL_VECTOR);
81+
irqnr = irq_find_mapping(icoll_domain, irqnr);
82+
handle_IRQ(irqnr, regs);
8983
}
9084

9185
static int icoll_irq_domain_map(struct irq_domain *d, unsigned int virq,

drivers/pinctrl/sh-pfc/pfc-r8a7779.c

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2357,27 +2357,48 @@ static const unsigned int sdhi3_wp_mux[] = {
23572357
};
23582358
/* - USB0 ------------------------------------------------------------------- */
23592359
static const unsigned int usb0_pins[] = {
2360-
/* OVC */
2361-
150, 154,
2360+
/* PENC */
2361+
154,
23622362
};
23632363
static const unsigned int usb0_mux[] = {
2364-
USB_OVC0_MARK, USB_PENC0_MARK,
2364+
USB_PENC0_MARK,
2365+
};
2366+
static const unsigned int usb0_ovc_pins[] = {
2367+
/* USB_OVC */
2368+
150
2369+
};
2370+
static const unsigned int usb0_ovc_mux[] = {
2371+
USB_OVC0_MARK,
23652372
};
23662373
/* - USB1 ------------------------------------------------------------------- */
23672374
static const unsigned int usb1_pins[] = {
2368-
/* OVC */
2369-
152, 155,
2375+
/* PENC */
2376+
155,
23702377
};
23712378
static const unsigned int usb1_mux[] = {
2372-
USB_OVC1_MARK, USB_PENC1_MARK,
2379+
USB_PENC1_MARK,
2380+
};
2381+
static const unsigned int usb1_ovc_pins[] = {
2382+
/* USB_OVC */
2383+
152,
2384+
};
2385+
static const unsigned int usb1_ovc_mux[] = {
2386+
USB_OVC1_MARK,
23732387
};
23742388
/* - USB2 ------------------------------------------------------------------- */
23752389
static const unsigned int usb2_pins[] = {
2376-
/* OVC, PENC */
2377-
125, 156,
2390+
/* PENC */
2391+
156,
23782392
};
23792393
static const unsigned int usb2_mux[] = {
2380-
USB_OVC2_MARK, USB_PENC2_MARK,
2394+
USB_PENC2_MARK,
2395+
};
2396+
static const unsigned int usb2_ovc_pins[] = {
2397+
/* USB_OVC */
2398+
125,
2399+
};
2400+
static const unsigned int usb2_ovc_mux[] = {
2401+
USB_OVC2_MARK,
23812402
};
23822403

23832404
static const struct sh_pfc_pin_group pinmux_groups[] = {
@@ -2501,8 +2522,11 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
25012522
SH_PFC_PIN_GROUP(sdhi3_cd),
25022523
SH_PFC_PIN_GROUP(sdhi3_wp),
25032524
SH_PFC_PIN_GROUP(usb0),
2525+
SH_PFC_PIN_GROUP(usb0_ovc),
25042526
SH_PFC_PIN_GROUP(usb1),
2527+
SH_PFC_PIN_GROUP(usb1_ovc),
25052528
SH_PFC_PIN_GROUP(usb2),
2529+
SH_PFC_PIN_GROUP(usb2_ovc),
25062530
};
25072531

25082532
static const char * const du0_groups[] = {
@@ -2683,14 +2707,17 @@ static const char * const sdhi3_groups[] = {
26832707

26842708
static const char * const usb0_groups[] = {
26852709
"usb0",
2710+
"usb0_ovc",
26862711
};
26872712

26882713
static const char * const usb1_groups[] = {
26892714
"usb1",
2715+
"usb1_ovc",
26902716
};
26912717

26922718
static const char * const usb2_groups[] = {
26932719
"usb2",
2720+
"usb2_ovc",
26942721
};
26952722

26962723
static const struct sh_pfc_function pinmux_functions[] = {

0 commit comments

Comments
 (0)