diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-12-22 14:13:02 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-12-22 14:13:02 -0500 |
| commit | 93579aeec2093ff12b55491c655129431b63e3dd (patch) | |
| tree | fe2def1033b4aada50a27788adce9a6506183504 | |
| parent | ba8b844f1b47f003d8d0af94275dc5bc7ab9665d (diff) | |
| parent | 95fcfa70f3bc4b3b82bf582fa5b24a39bdbd23ae (diff) | |
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:
"Much smaller batch of fixes this week.
Biggest one is a revert of an OMAP display change that removed some
non-DT pinmux code that was still needed for 3.13 to get DSI displays
to work.
There's also a fix that resolves some misdescribed GPIO controller
resources on shmobile. The rest are mostly smaller fixes, a couple of
MAINTAINERS updates, etc"
* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
Revert "ARM: OMAP2+: Remove legacy mux code for display.c"
MAINTAINERS: Add keystone clock drivers
MAINTAINERS: Add keystone git tree information
ARM: s3c64xx: dt: Fix boot failure due to double clock initialization
ARM: shmobile: r8a7790: Fix GPIO resources in DTS
irqchip: renesas-intc-irqpin: Fix register bitfield shift calculation
ARM: shmobile: lager: phy fixup needs CONFIG_PHYLIB
| -rw-r--r-- | MAINTAINERS | 2 | ||||
| -rw-r--r-- | arch/arm/boot/dts/r8a7790.dtsi | 24 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/display.c | 38 | ||||
| -rw-r--r-- | arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 11 | ||||
| -rw-r--r-- | arch/arm/mach-shmobile/board-lager.c | 4 | ||||
| -rw-r--r-- | drivers/irqchip/irq-renesas-intc-irqpin.c | 8 |
6 files changed, 61 insertions, 26 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 7a015cb8fea0..d5e4ff328cc7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -1008,6 +1008,8 @@ M: Santosh Shilimkar <santosh.shilimkar@ti.com> | |||
| 1008 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) | 1008 | L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) |
| 1009 | S: Maintained | 1009 | S: Maintained |
| 1010 | F: arch/arm/mach-keystone/ | 1010 | F: arch/arm/mach-keystone/ |
| 1011 | F: drivers/clk/keystone/ | ||
| 1012 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git | ||
| 1011 | 1013 | ||
| 1012 | ARM/LOGICPD PXA270 MACHINE SUPPORT | 1014 | ARM/LOGICPD PXA270 MACHINE SUPPORT |
| 1013 | M: Lennert Buytenhek <kernel@wantstofly.org> | 1015 | M: Lennert Buytenhek <kernel@wantstofly.org> |
diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi index ee845fad939b..46e1d7ef163f 100644 --- a/arch/arm/boot/dts/r8a7790.dtsi +++ b/arch/arm/boot/dts/r8a7790.dtsi | |||
| @@ -87,9 +87,9 @@ | |||
| 87 | interrupts = <1 9 0xf04>; | 87 | interrupts = <1 9 0xf04>; |
| 88 | }; | 88 | }; |
| 89 | 89 | ||
| 90 | gpio0: gpio@ffc40000 { | 90 | gpio0: gpio@e6050000 { |
| 91 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; | 91 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; |
| 92 | reg = <0 0xffc40000 0 0x2c>; | 92 | reg = <0 0xe6050000 0 0x50>; |
| 93 | interrupt-parent = <&gic>; | 93 | interrupt-parent = <&gic>; |
| 94 | interrupts = <0 4 0x4>; | 94 | interrupts = <0 4 0x4>; |
| 95 | #gpio-cells = <2>; | 95 | #gpio-cells = <2>; |
| @@ -99,9 +99,9 @@ | |||
| 99 | interrupt-controller; | 99 | interrupt-controller; |
| 100 | }; | 100 | }; |
| 101 | 101 | ||
| 102 | gpio1: gpio@ffc41000 { | 102 | gpio1: gpio@e6051000 { |
| 103 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; | 103 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; |
| 104 | reg = <0 0xffc41000 0 0x2c>; | 104 | reg = <0 0xe6051000 0 0x50>; |
| 105 | interrupt-parent = <&gic>; | 105 | interrupt-parent = <&gic>; |
| 106 | interrupts = <0 5 0x4>; | 106 | interrupts = <0 5 0x4>; |
| 107 | #gpio-cells = <2>; | 107 | #gpio-cells = <2>; |
| @@ -111,9 +111,9 @@ | |||
| 111 | interrupt-controller; | 111 | interrupt-controller; |
| 112 | }; | 112 | }; |
| 113 | 113 | ||
| 114 | gpio2: gpio@ffc42000 { | 114 | gpio2: gpio@e6052000 { |
| 115 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; | 115 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; |
| 116 | reg = <0 0xffc42000 0 0x2c>; | 116 | reg = <0 0xe6052000 0 0x50>; |
| 117 | interrupt-parent = <&gic>; | 117 | interrupt-parent = <&gic>; |
| 118 | interrupts = <0 6 0x4>; | 118 | interrupts = <0 6 0x4>; |
| 119 | #gpio-cells = <2>; | 119 | #gpio-cells = <2>; |
| @@ -123,9 +123,9 @@ | |||
| 123 | interrupt-controller; | 123 | interrupt-controller; |
| 124 | }; | 124 | }; |
| 125 | 125 | ||
| 126 | gpio3: gpio@ffc43000 { | 126 | gpio3: gpio@e6053000 { |
| 127 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; | 127 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; |
| 128 | reg = <0 0xffc43000 0 0x2c>; | 128 | reg = <0 0xe6053000 0 0x50>; |
| 129 | interrupt-parent = <&gic>; | 129 | interrupt-parent = <&gic>; |
| 130 | interrupts = <0 7 0x4>; | 130 | interrupts = <0 7 0x4>; |
| 131 | #gpio-cells = <2>; | 131 | #gpio-cells = <2>; |
| @@ -135,9 +135,9 @@ | |||
| 135 | interrupt-controller; | 135 | interrupt-controller; |
| 136 | }; | 136 | }; |
| 137 | 137 | ||
| 138 | gpio4: gpio@ffc44000 { | 138 | gpio4: gpio@e6054000 { |
| 139 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; | 139 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; |
| 140 | reg = <0 0xffc44000 0 0x2c>; | 140 | reg = <0 0xe6054000 0 0x50>; |
| 141 | interrupt-parent = <&gic>; | 141 | interrupt-parent = <&gic>; |
| 142 | interrupts = <0 8 0x4>; | 142 | interrupts = <0 8 0x4>; |
| 143 | #gpio-cells = <2>; | 143 | #gpio-cells = <2>; |
| @@ -147,9 +147,9 @@ | |||
| 147 | interrupt-controller; | 147 | interrupt-controller; |
| 148 | }; | 148 | }; |
| 149 | 149 | ||
| 150 | gpio5: gpio@ffc45000 { | 150 | gpio5: gpio@e6055000 { |
| 151 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; | 151 | compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; |
| 152 | reg = <0 0xffc45000 0 0x2c>; | 152 | reg = <0 0xe6055000 0 0x50>; |
| 153 | interrupt-parent = <&gic>; | 153 | interrupt-parent = <&gic>; |
| 154 | interrupts = <0 9 0x4>; | 154 | interrupts = <0 9 0x4>; |
| 155 | #gpio-cells = <2>; | 155 | #gpio-cells = <2>; |
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c index 58347bb874a0..4cf165502b35 100644 --- a/arch/arm/mach-omap2/display.c +++ b/arch/arm/mach-omap2/display.c | |||
| @@ -101,13 +101,51 @@ static const struct omap_dss_hwmod_data omap4_dss_hwmod_data[] __initconst = { | |||
| 101 | { "dss_hdmi", "omapdss_hdmi", -1 }, | 101 | { "dss_hdmi", "omapdss_hdmi", -1 }, |
| 102 | }; | 102 | }; |
| 103 | 103 | ||
| 104 | static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes) | ||
| 105 | { | ||
| 106 | u32 enable_mask, enable_shift; | ||
| 107 | u32 pipd_mask, pipd_shift; | ||
| 108 | u32 reg; | ||
| 109 | |||
| 110 | if (dsi_id == 0) { | ||
| 111 | enable_mask = OMAP4_DSI1_LANEENABLE_MASK; | ||
| 112 | enable_shift = OMAP4_DSI1_LANEENABLE_SHIFT; | ||
| 113 | pipd_mask = OMAP4_DSI1_PIPD_MASK; | ||
| 114 | pipd_shift = OMAP4_DSI1_PIPD_SHIFT; | ||
| 115 | } else if (dsi_id == 1) { | ||
| 116 | enable_mask = OMAP4_DSI2_LANEENABLE_MASK; | ||
| 117 | enable_shift = OMAP4_DSI2_LANEENABLE_SHIFT; | ||
| 118 | pipd_mask = OMAP4_DSI2_PIPD_MASK; | ||
| 119 | pipd_shift = OMAP4_DSI2_PIPD_SHIFT; | ||
| 120 | } else { | ||
| 121 | return -ENODEV; | ||
| 122 | } | ||
| 123 | |||
| 124 | reg = omap4_ctrl_pad_readl(OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY); | ||
| 125 | |||
| 126 | reg &= ~enable_mask; | ||
| 127 | reg &= ~pipd_mask; | ||
| 128 | |||
| 129 | reg |= (lanes << enable_shift) & enable_mask; | ||
| 130 | reg |= (lanes << pipd_shift) & pipd_mask; | ||
| 131 | |||
| 132 | omap4_ctrl_pad_writel(reg, OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY); | ||
| 133 | |||
| 134 | return 0; | ||
| 135 | } | ||
| 136 | |||
| 104 | static int omap_dsi_enable_pads(int dsi_id, unsigned lane_mask) | 137 | static int omap_dsi_enable_pads(int dsi_id, unsigned lane_mask) |
| 105 | { | 138 | { |
| 139 | if (cpu_is_omap44xx()) | ||
| 140 | return omap4_dsi_mux_pads(dsi_id, lane_mask); | ||
| 141 | |||
| 106 | return 0; | 142 | return 0; |
| 107 | } | 143 | } |
| 108 | 144 | ||
| 109 | static void omap_dsi_disable_pads(int dsi_id, unsigned lane_mask) | 145 | static void omap_dsi_disable_pads(int dsi_id, unsigned lane_mask) |
| 110 | { | 146 | { |
| 147 | if (cpu_is_omap44xx()) | ||
| 148 | omap4_dsi_mux_pads(dsi_id, 0); | ||
| 111 | } | 149 | } |
| 112 | 150 | ||
| 113 | static int omap_dss_set_min_bus_tput(struct device *dev, unsigned long tput) | 151 | static int omap_dss_set_min_bus_tput(struct device *dev, unsigned long tput) |
diff --git a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c index 7eb9a10fc1af..2fddf38192df 100644 --- a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c +++ b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | |||
| @@ -8,8 +8,6 @@ | |||
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <linux/clk-provider.h> | ||
| 12 | #include <linux/irqchip.h> | ||
| 13 | #include <linux/of_platform.h> | 11 | #include <linux/of_platform.h> |
| 14 | 12 | ||
| 15 | #include <asm/mach/arch.h> | 13 | #include <asm/mach/arch.h> |
| @@ -48,15 +46,9 @@ static void __init s3c64xx_dt_map_io(void) | |||
| 48 | panic("SoC is not S3C64xx!"); | 46 | panic("SoC is not S3C64xx!"); |
| 49 | } | 47 | } |
| 50 | 48 | ||
| 51 | static void __init s3c64xx_dt_init_irq(void) | ||
| 52 | { | ||
| 53 | of_clk_init(NULL); | ||
| 54 | samsung_wdt_reset_of_init(); | ||
| 55 | irqchip_init(); | ||
| 56 | }; | ||
| 57 | |||
| 58 | static void __init s3c64xx_dt_init_machine(void) | 49 | static void __init s3c64xx_dt_init_machine(void) |
| 59 | { | 50 | { |
| 51 | samsung_wdt_reset_of_init(); | ||
| 60 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | 52 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
| 61 | } | 53 | } |
| 62 | 54 | ||
| @@ -79,7 +71,6 @@ DT_MACHINE_START(S3C6400_DT, "Samsung S3C64xx (Flattened Device Tree)") | |||
| 79 | /* Maintainer: Tomasz Figa <tomasz.figa@gmail.com> */ | 71 | /* Maintainer: Tomasz Figa <tomasz.figa@gmail.com> */ |
| 80 | .dt_compat = s3c64xx_dt_compat, | 72 | .dt_compat = s3c64xx_dt_compat, |
| 81 | .map_io = s3c64xx_dt_map_io, | 73 | .map_io = s3c64xx_dt_map_io, |
| 82 | .init_irq = s3c64xx_dt_init_irq, | ||
| 83 | .init_machine = s3c64xx_dt_init_machine, | 74 | .init_machine = s3c64xx_dt_init_machine, |
| 84 | .restart = s3c64xx_dt_restart, | 75 | .restart = s3c64xx_dt_restart, |
| 85 | MACHINE_END | 76 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-lager.c b/arch/arm/mach-shmobile/board-lager.c index a8d3ce646fb9..e0406fd37390 100644 --- a/arch/arm/mach-shmobile/board-lager.c +++ b/arch/arm/mach-shmobile/board-lager.c | |||
| @@ -245,7 +245,9 @@ static void __init lager_init(void) | |||
| 245 | { | 245 | { |
| 246 | lager_add_standard_devices(); | 246 | lager_add_standard_devices(); |
| 247 | 247 | ||
| 248 | phy_register_fixup_for_id("r8a7790-ether-ff:01", lager_ksz8041_fixup); | 248 | if (IS_ENABLED(CONFIG_PHYLIB)) |
| 249 | phy_register_fixup_for_id("r8a7790-ether-ff:01", | ||
| 250 | lager_ksz8041_fixup); | ||
| 249 | } | 251 | } |
| 250 | 252 | ||
| 251 | static const char * const lager_boards_compat_dt[] __initconst = { | 253 | static const char * const lager_boards_compat_dt[] __initconst = { |
diff --git a/drivers/irqchip/irq-renesas-intc-irqpin.c b/drivers/irqchip/irq-renesas-intc-irqpin.c index 82cec63a9011..3ee78f02e5d7 100644 --- a/drivers/irqchip/irq-renesas-intc-irqpin.c +++ b/drivers/irqchip/irq-renesas-intc-irqpin.c | |||
| @@ -149,8 +149,9 @@ static void intc_irqpin_read_modify_write(struct intc_irqpin_priv *p, | |||
| 149 | static void intc_irqpin_mask_unmask_prio(struct intc_irqpin_priv *p, | 149 | static void intc_irqpin_mask_unmask_prio(struct intc_irqpin_priv *p, |
| 150 | int irq, int do_mask) | 150 | int irq, int do_mask) |
| 151 | { | 151 | { |
| 152 | int bitfield_width = 4; /* PRIO assumed to have fixed bitfield width */ | 152 | /* The PRIO register is assumed to be 32-bit with fixed 4-bit fields. */ |
| 153 | int shift = (7 - irq) * bitfield_width; /* PRIO assumed to be 32-bit */ | 153 | int bitfield_width = 4; |
| 154 | int shift = 32 - (irq + 1) * bitfield_width; | ||
| 154 | 155 | ||
| 155 | intc_irqpin_read_modify_write(p, INTC_IRQPIN_REG_PRIO, | 156 | intc_irqpin_read_modify_write(p, INTC_IRQPIN_REG_PRIO, |
| 156 | shift, bitfield_width, | 157 | shift, bitfield_width, |
| @@ -159,8 +160,9 @@ static void intc_irqpin_mask_unmask_prio(struct intc_irqpin_priv *p, | |||
| 159 | 160 | ||
| 160 | static int intc_irqpin_set_sense(struct intc_irqpin_priv *p, int irq, int value) | 161 | static int intc_irqpin_set_sense(struct intc_irqpin_priv *p, int irq, int value) |
| 161 | { | 162 | { |
| 163 | /* The SENSE register is assumed to be 32-bit. */ | ||
| 162 | int bitfield_width = p->config.sense_bitfield_width; | 164 | int bitfield_width = p->config.sense_bitfield_width; |
| 163 | int shift = (7 - irq) * bitfield_width; /* SENSE assumed to be 32-bit */ | 165 | int shift = 32 - (irq + 1) * bitfield_width; |
| 164 | 166 | ||
| 165 | dev_dbg(&p->pdev->dev, "sense irq = %d, mode = %d\n", irq, value); | 167 | dev_dbg(&p->pdev->dev, "sense irq = %d, mode = %d\n", irq, value); |
| 166 | 168 | ||
