arm-soc: bug fixes for 3.9-rc6
Some important bug fixes that came in over the last 10 days, mostly mvebu and imx: - Multiple regressions on i.mx following the conversion of the clock code, hopefully the last we are seeing of those. - a regression in the mvebu irq handling code - An incorrect register offset in the rewritten s3c24xx irq code. - Two bugs in setting up the iomega_ix2_200 machine - Turning on an extra bus clock on imx - A MAINTAINERS file entry for Roland Stigge -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIVAwUAUWbTVmCrR//JCVInAQKnAA/6AnxY2FRgtR/XuDTBkaJ/VUObbYBbsnRW uvO9DRYzACIy9f4bAOtg8SIB29Zt/tqJCnqj6nG4tbTn3dqQZXSaKktwQB8e9Q3j +ttiq4an9CFfl4/9hxTfwadg1G9coUND1774Y4qv3csHYbyd5jBLLx7MEfevQ1ry lmzDIQRnf4j4tp3q1d2kZ3sh9O09f+V2Hxnle0JySOsXt3NrfMOQdR6PYt3ZbsyO mhuXLsSmHk/5J4rrZD6OuThlZzDEat22gjK/HbBTa/OyVqdYyHMsOWf4O2HR0MGs FBqg2dcTap8s/lHQ0jId0Zvt31e4OgLs00ehD7V2ZYeQjG/d2PYrvDaGuFY6kIir eNUhAozWTF5FmOe/LJ46waUC7HoYsHqrSkFWcvGWLjLXvQT6G5jie5/lpp9yfq4G Ou2RTG+tJ+jiPnsk7E3+Z4/YQXyDhIxvo94xF+kSR3zWgJIKjFjgQ41pSql97tMa 5AQ7eJgWsmPfsVvIIxnRYAMV3/4jfJq2gM4BviA6OjZ8nHUWNXukLIHPtcADCYYQ J0jSbFBX7qCd6UtDDo9t/YvAcLM34FUFsqGP4BjBLZe4XAkI6aVkz6jAE5amEUVm 1HgTfE5U1QI5u0TgXbaEYii6lbgcLM9Lsdl0wFsXjvXI9rdIfzJYByeV4Mx5J1dB V4D42xojJWE= =J404 -----END PGP SIGNATURE----- Merge tag 'arm-soc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull ARM SoC bug fixes from Arnd Bergmann: "A little later during the week than the last few pull requests, since there was very little that came in before 3.9-rc6. At least things have calmed down again here. Some important bug fixes that came in over the last 10 days, mostly mvebu and imx: - Multiple regressions on i.mx following the conversion of the clock code, hopefully the last we are seeing of those. - a regression in the mvebu irq handling code - An incorrect register offset in the rewritten s3c24xx irq code. - Two bugs in setting up the iomega_ix2_200 machine - Turning on an extra bus clock on imx - A MAINTAINERS file entry for Roland Stigge" * tag 'arm-soc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: arm: mvebu: Fix the irq map function in SMP mode Fix GE0/GE1 init on ix2-200 as GE0 has no PHY ARM: S3C24XX: Fix interrupt pending register offset of the EINT controller ARM: S3C24XX: Correct NR_IRQS definition for s3c2440 ARM i.MX6: Fix ldb_di clock selection ARM: imx: provide twd clock lookup from device tree ARM: imx35 Bugfix admux clock ARM: clk-imx35: Bugfix iomux clock ARM: mxs: Slow down the I2C clock speed MAINTAINERS: Add maintainer for LPC32xx ARM: Kirkwood: Fix typo in the definition of ix2-200 rebuild LED
This commit is contained in:
commit
ce6fbaf160
|
@ -4941,6 +4941,12 @@ W: logfs.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: fs/logfs/
|
F: fs/logfs/
|
||||||
|
|
||||||
|
LPC32XX MACHINE SUPPORT
|
||||||
|
M: Roland Stigge <stigge@antcom.de>
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
S: Maintained
|
||||||
|
F: arch/arm/mach-lpc32xx/
|
||||||
|
|
||||||
LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
|
LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
|
||||||
M: Nagalakshmi Nandigama <Nagalakshmi.Nandigama@lsi.com>
|
M: Nagalakshmi Nandigama <Nagalakshmi.Nandigama@lsi.com>
|
||||||
M: Sreekanth Reddy <Sreekanth.Reddy@lsi.com>
|
M: Sreekanth Reddy <Sreekanth.Reddy@lsi.com>
|
||||||
|
|
|
@ -152,7 +152,6 @@
|
||||||
i2c0: i2c@80058000 {
|
i2c0: i2c@80058000 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c0_pins_a>;
|
pinctrl-0 = <&i2c0_pins_a>;
|
||||||
clock-frequency = <400000>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
sgtl5000: codec@0a {
|
sgtl5000: codec@0a {
|
||||||
|
|
|
@ -70,7 +70,6 @@
|
||||||
i2c0: i2c@80058000 {
|
i2c0: i2c@80058000 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c0_pins_a>;
|
pinctrl-0 = <&i2c0_pins_a>;
|
||||||
clock-frequency = <400000>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
rtc: rtc@51 {
|
rtc: rtc@51 {
|
||||||
|
|
|
@ -91,6 +91,7 @@
|
||||||
compatible = "arm,cortex-a9-twd-timer";
|
compatible = "arm,cortex-a9-twd-timer";
|
||||||
reg = <0x00a00600 0x20>;
|
reg = <0x00a00600 0x20>;
|
||||||
interrupts = <1 13 0xf01>;
|
interrupts = <1 13 0xf01>;
|
||||||
|
clocks = <&clks 15>;
|
||||||
};
|
};
|
||||||
|
|
||||||
L2: l2-cache@00a02000 {
|
L2: l2-cache@00a02000 {
|
||||||
|
|
|
@ -96,11 +96,11 @@
|
||||||
marvell,function = "gpio";
|
marvell,function = "gpio";
|
||||||
};
|
};
|
||||||
pmx_led_rebuild_brt_ctrl_1: pmx-led-rebuild-brt-ctrl-1 {
|
pmx_led_rebuild_brt_ctrl_1: pmx-led-rebuild-brt-ctrl-1 {
|
||||||
marvell,pins = "mpp44";
|
marvell,pins = "mpp46";
|
||||||
marvell,function = "gpio";
|
marvell,function = "gpio";
|
||||||
};
|
};
|
||||||
pmx_led_rebuild_brt_ctrl_2: pmx-led-rebuild-brt-ctrl-2 {
|
pmx_led_rebuild_brt_ctrl_2: pmx-led-rebuild-brt-ctrl-2 {
|
||||||
marvell,pins = "mpp45";
|
marvell,pins = "mpp47";
|
||||||
marvell,function = "gpio";
|
marvell,function = "gpio";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -157,14 +157,14 @@
|
||||||
gpios = <&gpio0 16 0>;
|
gpios = <&gpio0 16 0>;
|
||||||
linux,default-trigger = "default-on";
|
linux,default-trigger = "default-on";
|
||||||
};
|
};
|
||||||
health_led1 {
|
rebuild_led {
|
||||||
|
label = "status:white:rebuild_led";
|
||||||
|
gpios = <&gpio1 4 0>;
|
||||||
|
};
|
||||||
|
health_led {
|
||||||
label = "status:red:health_led";
|
label = "status:red:health_led";
|
||||||
gpios = <&gpio1 5 0>;
|
gpios = <&gpio1 5 0>;
|
||||||
};
|
};
|
||||||
health_led2 {
|
|
||||||
label = "status:white:health_led";
|
|
||||||
gpios = <&gpio1 4 0>;
|
|
||||||
};
|
|
||||||
backup_led {
|
backup_led {
|
||||||
label = "status:blue:backup_led";
|
label = "status:blue:backup_led";
|
||||||
gpios = <&gpio0 15 0>;
|
gpios = <&gpio0 15 0>;
|
||||||
|
|
|
@ -257,6 +257,7 @@ int __init mx35_clocks_init(void)
|
||||||
clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0");
|
clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0");
|
||||||
clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0");
|
clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0");
|
||||||
clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0");
|
clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0");
|
||||||
|
clk_register_clkdev(clk[admux_gate], "audmux", NULL);
|
||||||
|
|
||||||
clk_prepare_enable(clk[spba_gate]);
|
clk_prepare_enable(clk[spba_gate]);
|
||||||
clk_prepare_enable(clk[gpio1_gate]);
|
clk_prepare_enable(clk[gpio1_gate]);
|
||||||
|
@ -265,6 +266,7 @@ int __init mx35_clocks_init(void)
|
||||||
clk_prepare_enable(clk[iim_gate]);
|
clk_prepare_enable(clk[iim_gate]);
|
||||||
clk_prepare_enable(clk[emi_gate]);
|
clk_prepare_enable(clk[emi_gate]);
|
||||||
clk_prepare_enable(clk[max_gate]);
|
clk_prepare_enable(clk[max_gate]);
|
||||||
|
clk_prepare_enable(clk[iomuxc_gate]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SCC is needed to boot via mmc after a watchdog reset. The clock code
|
* SCC is needed to boot via mmc after a watchdog reset. The clock code
|
||||||
|
|
|
@ -115,7 +115,7 @@ static const char *gpu2d_core_sels[] = { "axi", "pll3_usb_otg", "pll2_pfd0_352m"
|
||||||
static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", };
|
static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", };
|
||||||
static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd9_720m", };
|
static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd9_720m", };
|
||||||
static const char *ipu_sels[] = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", };
|
static const char *ipu_sels[] = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", };
|
||||||
static const char *ldb_di_sels[] = { "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_pfd1_540m", };
|
static const char *ldb_di_sels[] = { "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_usb_otg", };
|
||||||
static const char *ipu_di_pre_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", };
|
static const char *ipu_di_pre_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", };
|
||||||
static const char *ipu1_di0_sels[] = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
|
static const char *ipu1_di0_sels[] = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
|
||||||
static const char *ipu1_di1_sels[] = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
|
static const char *ipu1_di1_sels[] = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
|
||||||
|
@ -443,7 +443,6 @@ int __init mx6q_clocks_init(void)
|
||||||
|
|
||||||
clk_register_clkdev(clk[gpt_ipg], "ipg", "imx-gpt.0");
|
clk_register_clkdev(clk[gpt_ipg], "ipg", "imx-gpt.0");
|
||||||
clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0");
|
clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0");
|
||||||
clk_register_clkdev(clk[twd], NULL, "smp_twd");
|
|
||||||
clk_register_clkdev(clk[cko1_sel], "cko1_sel", NULL);
|
clk_register_clkdev(clk[cko1_sel], "cko1_sel", NULL);
|
||||||
clk_register_clkdev(clk[ahb], "ahb", NULL);
|
clk_register_clkdev(clk[ahb], "ahb", NULL);
|
||||||
clk_register_clkdev(clk[cko1], "cko1", NULL);
|
clk_register_clkdev(clk[cko1], "cko1", NULL);
|
||||||
|
|
|
@ -20,10 +20,15 @@ static struct mv643xx_eth_platform_data iomega_ix2_200_ge00_data = {
|
||||||
.duplex = DUPLEX_FULL,
|
.duplex = DUPLEX_FULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct mv643xx_eth_platform_data iomega_ix2_200_ge01_data = {
|
||||||
|
.phy_addr = MV643XX_ETH_PHY_ADDR(11),
|
||||||
|
};
|
||||||
|
|
||||||
void __init iomega_ix2_200_init(void)
|
void __init iomega_ix2_200_init(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Basic setup. Needs to be called early.
|
* Basic setup. Needs to be called early.
|
||||||
*/
|
*/
|
||||||
kirkwood_ge01_init(&iomega_ix2_200_ge00_data);
|
kirkwood_ge00_init(&iomega_ix2_200_ge00_data);
|
||||||
|
kirkwood_ge01_init(&iomega_ix2_200_ge01_data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,6 @@ static struct irq_domain *armada_370_xp_mpic_domain;
|
||||||
*/
|
*/
|
||||||
static void armada_370_xp_irq_mask(struct irq_data *d)
|
static void armada_370_xp_irq_mask(struct irq_data *d)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
irq_hw_number_t hwirq = irqd_to_hwirq(d);
|
irq_hw_number_t hwirq = irqd_to_hwirq(d);
|
||||||
|
|
||||||
if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ)
|
if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ)
|
||||||
|
@ -70,15 +69,10 @@ static void armada_370_xp_irq_mask(struct irq_data *d)
|
||||||
else
|
else
|
||||||
writel(hwirq, per_cpu_int_base +
|
writel(hwirq, per_cpu_int_base +
|
||||||
ARMADA_370_XP_INT_SET_MASK_OFFS);
|
ARMADA_370_XP_INT_SET_MASK_OFFS);
|
||||||
#else
|
|
||||||
writel(irqd_to_hwirq(d),
|
|
||||||
per_cpu_int_base + ARMADA_370_XP_INT_SET_MASK_OFFS);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void armada_370_xp_irq_unmask(struct irq_data *d)
|
static void armada_370_xp_irq_unmask(struct irq_data *d)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
irq_hw_number_t hwirq = irqd_to_hwirq(d);
|
irq_hw_number_t hwirq = irqd_to_hwirq(d);
|
||||||
|
|
||||||
if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ)
|
if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ)
|
||||||
|
@ -87,10 +81,6 @@ static void armada_370_xp_irq_unmask(struct irq_data *d)
|
||||||
else
|
else
|
||||||
writel(hwirq, per_cpu_int_base +
|
writel(hwirq, per_cpu_int_base +
|
||||||
ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
|
ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
|
||||||
#else
|
|
||||||
writel(irqd_to_hwirq(d),
|
|
||||||
per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
@ -146,7 +136,11 @@ static int armada_370_xp_mpic_irq_map(struct irq_domain *h,
|
||||||
unsigned int virq, irq_hw_number_t hw)
|
unsigned int virq, irq_hw_number_t hw)
|
||||||
{
|
{
|
||||||
armada_370_xp_irq_mask(irq_get_irq_data(virq));
|
armada_370_xp_irq_mask(irq_get_irq_data(virq));
|
||||||
writel(hw, main_int_base + ARMADA_370_XP_INT_SET_ENABLE_OFFS);
|
if (hw != ARMADA_370_XP_TIMER0_PER_CPU_IRQ)
|
||||||
|
writel(hw, per_cpu_int_base +
|
||||||
|
ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
|
||||||
|
else
|
||||||
|
writel(hw, main_int_base + ARMADA_370_XP_INT_SET_ENABLE_OFFS);
|
||||||
irq_set_status_flags(virq, IRQ_LEVEL);
|
irq_set_status_flags(virq, IRQ_LEVEL);
|
||||||
|
|
||||||
if (hw == ARMADA_370_XP_TIMER0_PER_CPU_IRQ) {
|
if (hw == ARMADA_370_XP_TIMER0_PER_CPU_IRQ) {
|
||||||
|
|
|
@ -188,10 +188,8 @@
|
||||||
|
|
||||||
#if defined(CONFIG_CPU_S3C2416)
|
#if defined(CONFIG_CPU_S3C2416)
|
||||||
#define NR_IRQS (IRQ_S3C2416_I2S1 + 1)
|
#define NR_IRQS (IRQ_S3C2416_I2S1 + 1)
|
||||||
#elif defined(CONFIG_CPU_S3C2443)
|
|
||||||
#define NR_IRQS (IRQ_S3C2443_AC97+1)
|
|
||||||
#else
|
#else
|
||||||
#define NR_IRQS (IRQ_S3C2440_AC97+1)
|
#define NR_IRQS (IRQ_S3C2443_AC97 + 1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* compatibility define. */
|
/* compatibility define. */
|
||||||
|
|
|
@ -500,7 +500,7 @@ struct s3c_irq_intc *s3c24xx_init_intc(struct device_node *np,
|
||||||
base = (void *)0xfd000000;
|
base = (void *)0xfd000000;
|
||||||
|
|
||||||
intc->reg_mask = base + 0xa4;
|
intc->reg_mask = base + 0xa4;
|
||||||
intc->reg_pending = base + 0x08;
|
intc->reg_pending = base + 0xa8;
|
||||||
irq_num = 20;
|
irq_num = 20;
|
||||||
irq_start = S3C2410_IRQ(32);
|
irq_start = S3C2410_IRQ(32);
|
||||||
irq_offset = 4;
|
irq_offset = 4;
|
||||||
|
|
Loading…
Reference in New Issue