History

Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC bug fixes from Olof Johansson: "Mostly Renesas and Atmel bugfixes this time, targeting boot and build problems. A couple of patches for gemini and kirkwood as well. On a whole nothing very controversial." * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: gemini: fix the gemini build ARM: shmobile: armadillo800eva: enable rw rootfs mount ARM: Kirkwood: Fix 'SZ_1M' undeclared here for db88f6281-bp-setup.c ARM: shmobile: mackerel: fixup usb module order ARM: shmobile: armadillo800eva: fixup: sound card detection order ARM: shmobile: marzen: fixup smsc911x id for regulator ARM: at91/feature-removal-schedule: delay at91_mci removal ARM: mach-shmobile: armadillo800eva: Enable power button as wakeup source ARM: mach-shmobile: armadillo800eva: Fix GPIO buttons descriptions ARM: at91/dts: remove partial parameter in at91sam9g25ek.dts ARM: at91/clock: fix PLLA overclock warning ARM: at91: fix rtc-at91sam9 irq issue due to sparse irq support ARM: at91: fix system timer irq issue due to sparse irq support ARM: shmobile: sh73a0: fixup RELOC_BASE of intca_irq_pins_desc

Linus Torvalds committed 14 years ago

Commit eeea3ac2 parents c7c6bf1 e829c6617 files · +73 −27Browse files

Unified · Split

17 files
  1. Documentation/feature-removal-schedule.txt +1 −1
  2. arch/arm/boot/dts/at91sam9g25ek.dts +1 −1
  3. arch/arm/configs/armadillo800eva_defconfig +1 −1
  4. arch/arm/mach-at91/at91rm9200_time.c +1 −1
  5. arch/arm/mach-at91/at91sam9260_devices.c +5 −1
  6. arch/arm/mach-at91/at91sam9261_devices.c +5 −1
  7. arch/arm/mach-at91/at91sam9263_devices.c +8 −2
  8. arch/arm/mach-at91/at91sam9g45_devices.c +5 −1
  9. arch/arm/mach-at91/at91sam9rl_devices.c +5 −1
  10. arch/arm/mach-at91/clock.c +12 −0
  11. arch/arm/mach-gemini/irq.c +1 −0
  12. arch/arm/mach-kirkwood/db88f6281-bp-setup.c +1 −0
  13. arch/arm/mach-shmobile/board-armadillo800eva.c +7 −6
  14. arch/arm/mach-shmobile/board-mackerel.c +2 −1
  15. arch/arm/mach-shmobile/board-marzen.c +1 −1
  16. arch/arm/mach-shmobile/intc-sh73a0.c +2 −2
  17. drivers/rtc/rtc-at91sam9.c +15 −7
Documentation/feature-removal-schedule.txt+1−1
@@ -579,7 +579,7 @@ Why: KVM tracepoints provide mostly equivalent information in a much more · 578 unmodified lines
579579 ----------------------------
580580
581581 What: at91-mci driver ("CONFIG_MMC_AT91")
582−When: 3.7
582+When: 3.8
583583 Why: There are two mci drivers: at91-mci and atmel-mci. The PDC support
584584 was added to atmel-mci as a first step to support more chips.
585585 Then at91-mci was kept only for old IP versions (on at91rm9200 and
arch/arm/boot/dts/at91sam9g25ek.dts+1−1
@@ -15,7 +15,7 @@ · 14 unmodified lines
1515 compatible = "atmel,at91sam9g25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9";
1616
1717 chosen {
18− bootargs = "128M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs";
18+ bootargs = "console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs";
1919 };
2020
2121 ahb {
arch/arm/configs/armadillo800eva_defconfig+1−1
@@ -33,7 +33,7 @@ CONFIG_AEABI=y · 32 unmodified lines
3333 CONFIG_FORCE_MAX_ZONEORDER=13
3434 CONFIG_ZBOOT_ROM_TEXT=0x0
3535 CONFIG_ZBOOT_ROM_BSS=0x0
36−CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096"
36+CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096 rw"
3737 CONFIG_CMDLINE_FORCE=y
3838 CONFIG_KEXEC=y
3939 CONFIG_VFP=y
arch/arm/mach-at91/at91rm9200_time.c+1−1
@@ -197,7 +197,7 @@ void __init at91rm9200_timer_init(void) · 196 unmodified lines
197197 at91_st_read(AT91_ST_SR);
198198
199199 /* Make IRQs happen for the system timer */
200− setup_irq(AT91_ID_SYS, &at91rm9200_timer_irq);
200+ setup_irq(NR_IRQS_LEGACY + AT91_ID_SYS, &at91rm9200_timer_irq);
201201
202202 /* The 32KiHz "Slow Clock" (tick every 30517.58 nanoseconds) is used
203203 * directly for the clocksource and all clockevents, after adjusting
arch/arm/mach-at91/at91sam9260_devices.c+5−1
@@ -726,6 +726,8 @@ static struct resource rtt_resources[] = { · 725 unmodified lines
726726 .flags = IORESOURCE_MEM,
727727 }, {
728728 .flags = IORESOURCE_MEM,
729+ }, {
730+ .flags = IORESOURCE_IRQ,
729731 },
730732 };
731733
@@ -744,10 +746,12 @@ static void __init at91_add_device_rtt_rtc(void) · 12 unmodified lines
744746 * The second resource is needed:
745747 * GPBR will serve as the storage for RTC time offset
746748 */
747− at91sam9260_rtt_device.num_resources = 2;
749+ at91sam9260_rtt_device.num_resources = 3;
748750 rtt_resources[1].start = AT91SAM9260_BASE_GPBR +
749751 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR;
750752 rtt_resources[1].end = rtt_resources[1].start + 3;
753+ rtt_resources[2].start = NR_IRQS_LEGACY + AT91_ID_SYS;
754+ rtt_resources[2].end = NR_IRQS_LEGACY + AT91_ID_SYS;
751755 }
752756 #else
753757 static void __init at91_add_device_rtt_rtc(void)
arch/arm/mach-at91/at91sam9261_devices.c+5−1
@@ -609,6 +609,8 @@ static struct resource rtt_resources[] = { · 608 unmodified lines
609609 .flags = IORESOURCE_MEM,
610610 }, {
611611 .flags = IORESOURCE_MEM,
612+ }, {
613+ .flags = IORESOURCE_IRQ,
612614 }
613615 };
614616
@@ -626,10 +628,12 @@ static void __init at91_add_device_rtt_rtc(void) · 11 unmodified lines
626628 * The second resource is needed:
627629 * GPBR will serve as the storage for RTC time offset
628630 */
629− at91sam9261_rtt_device.num_resources = 2;
631+ at91sam9261_rtt_device.num_resources = 3;
630632 rtt_resources[1].start = AT91SAM9261_BASE_GPBR +
631633 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR;
632634 rtt_resources[1].end = rtt_resources[1].start + 3;
635+ rtt_resources[2].start = NR_IRQS_LEGACY + AT91_ID_SYS;
636+ rtt_resources[2].end = NR_IRQS_LEGACY + AT91_ID_SYS;
633637 }
634638 #else
635639 static void __init at91_add_device_rtt_rtc(void)
arch/arm/mach-at91/at91sam9263_devices.c+8−2
@@ -990,6 +990,8 @@ static struct resource rtt0_resources[] = { · 989 unmodified lines
990990 .flags = IORESOURCE_MEM,
991991 }, {
992992 .flags = IORESOURCE_MEM,
993+ }, {
994+ .flags = IORESOURCE_IRQ,
993995 }
994996 };
995997
@@ -1006,6 +1008,8 @@ static struct resource rtt1_resources[] = { · 10 unmodified lines
10061008 .flags = IORESOURCE_MEM,
10071009 }, {
10081010 .flags = IORESOURCE_MEM,
1011+ }, {
1012+ .flags = IORESOURCE_IRQ,
10091013 }
10101014 };
10111015
@@ -1027,14 +1031,14 @@ static void __init at91_add_device_rtt_rtc(void) · 15 unmodified lines
10271031 * The second resource is needed only for the chosen RTT:
10281032 * GPBR will serve as the storage for RTC time offset
10291033 */
1030− at91sam9263_rtt0_device.num_resources = 2;
1034+ at91sam9263_rtt0_device.num_resources = 3;
10311035 at91sam9263_rtt1_device.num_resources = 1;
10321036 pdev = &at91sam9263_rtt0_device;
10331037 r = rtt0_resources;
10341038 break;
10351039 case 1:
10361040 at91sam9263_rtt0_device.num_resources = 1;
1037− at91sam9263_rtt1_device.num_resources = 2;
1041+ at91sam9263_rtt1_device.num_resources = 3;
10381042 pdev = &at91sam9263_rtt1_device;
10391043 r = rtt1_resources;
10401044 break;
@@ -1047,6 +1051,8 @@ static void __init at91_add_device_rtt_rtc(void) · 6 unmodified lines
10471051 pdev->name = "rtc-at91sam9";
10481052 r[1].start = AT91SAM9263_BASE_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR;
10491053 r[1].end = r[1].start + 3;
1054+ r[2].start = NR_IRQS_LEGACY + AT91_ID_SYS;
1055+ r[2].end = NR_IRQS_LEGACY + AT91_ID_SYS;
10501056 }
10511057 #else
10521058 static void __init at91_add_device_rtt_rtc(void)
arch/arm/mach-at91/at91sam9g45_devices.c+5−1
@@ -1293,6 +1293,8 @@ static struct resource rtt_resources[] = { · 1292 unmodified lines
12931293 .flags = IORESOURCE_MEM,
12941294 }, {
12951295 .flags = IORESOURCE_MEM,
1296+ }, {
1297+ .flags = IORESOURCE_IRQ,
12961298 }
12971299 };
12981300
@@ -1310,10 +1312,12 @@ static void __init at91_add_device_rtt_rtc(void) · 11 unmodified lines
13101312 * The second resource is needed:
13111313 * GPBR will serve as the storage for RTC time offset
13121314 */
1313− at91sam9g45_rtt_device.num_resources = 2;
1315+ at91sam9g45_rtt_device.num_resources = 3;
13141316 rtt_resources[1].start = AT91SAM9G45_BASE_GPBR +
13151317 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR;
13161318 rtt_resources[1].end = rtt_resources[1].start + 3;
1319+ rtt_resources[2].start = NR_IRQS_LEGACY + AT91_ID_SYS;
1320+ rtt_resources[2].end = NR_IRQS_LEGACY + AT91_ID_SYS;
13171321 }
13181322 #else
13191323 static void __init at91_add_device_rtt_rtc(void)
arch/arm/mach-at91/at91sam9rl_devices.c+5−1
@@ -688,6 +688,8 @@ static struct resource rtt_resources[] = { · 687 unmodified lines
688688 .flags = IORESOURCE_MEM,
689689 }, {
690690 .flags = IORESOURCE_MEM,
691+ }, {
692+ .flags = IORESOURCE_IRQ,
691693 }
692694 };
693695
@@ -705,10 +707,12 @@ static void __init at91_add_device_rtt_rtc(void) · 11 unmodified lines
705707 * The second resource is needed:
706708 * GPBR will serve as the storage for RTC time offset
707709 */
708− at91sam9rl_rtt_device.num_resources = 2;
710+ at91sam9rl_rtt_device.num_resources = 3;
709711 rtt_resources[1].start = AT91SAM9RL_BASE_GPBR +
710712 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR;
711713 rtt_resources[1].end = rtt_resources[1].start + 3;
714+ rtt_resources[2].start = NR_IRQS_LEGACY + AT91_ID_SYS;
715+ rtt_resources[2].end = NR_IRQS_LEGACY + AT91_ID_SYS;
712716 }
713717 #else
714718 static void __init at91_add_device_rtt_rtc(void)
arch/arm/mach-at91/clock.c+12−0
@@ -63,6 +63,12 @@ EXPORT_SYMBOL_GPL(at91_pmc_base); · 62 unmodified lines
6363
6464 #define cpu_has_300M_plla() (cpu_is_at91sam9g10())
6565
66+#define cpu_has_240M_plla() (cpu_is_at91sam9261() \
67+ || cpu_is_at91sam9263() \
68+ || cpu_is_at91sam9rl())
69+
70+#define cpu_has_210M_plla() (cpu_is_at91sam9260())
71+
6672 #define cpu_has_pllb() (!(cpu_is_at91sam9rl() \
6773 || cpu_is_at91sam9g45() \
6874 || cpu_is_at91sam9x5() \
@@ -706,6 +712,12 @@ static int __init at91_pmc_init(unsigned long main_clock) · 637 unmodified lines
706712 } else if (cpu_has_800M_plla()) {
707713 if (plla.rate_hz > 800000000)
708714 pll_overclock = true;
715+ } else if (cpu_has_240M_plla()) {
716+ if (plla.rate_hz > 240000000)
717+ pll_overclock = true;
718+ } else if (cpu_has_210M_plla()) {
719+ if (plla.rate_hz > 210000000)
720+ pll_overclock = true;
709721 } else {
710722 if (plla.rate_hz > 209000000)
711723 pll_overclock = true;
arch/arm/mach-gemini/irq.c+1−0
@@ -17,6 +17,7 @@ · 16 unmodified lines
1717 #include <linux/sched.h>
1818 #include <asm/irq.h>
1919 #include <asm/mach/irq.h>
20+#include <asm/system_misc.h>
2021 #include <mach/hardware.h>
2122
2223 #define IRQ_SOURCE(base_addr) (base_addr + 0x00)
arch/arm/mach-kirkwood/db88f6281-bp-setup.c+1−0
@@ -10,6 +10,7 @@ · 9 unmodified lines
1010
1111 #include <linux/kernel.h>
1212 #include <linux/init.h>
13+#include <linux/sizes.h>
1314 #include <linux/platform_device.h>
1415 #include <linux/mtd/partitions.h>
1516 #include <linux/ata_platform.h>
arch/arm/mach-shmobile/board-armadillo800eva.c+7−6
@@ -520,13 +520,14 @@ static struct platform_device hdmi_lcdc_device = { · 519 unmodified lines
520520 };
521521
522522 /* GPIO KEY */
523−#define GPIO_KEY(c, g, d) { .code = c, .gpio = g, .desc = d, .active_low = 1 }
523+#define GPIO_KEY(c, g, d, ...) \
524+ { .code = c, .gpio = g, .desc = d, .active_low = 1, __VA_ARGS__ }
524525
525526 static struct gpio_keys_button gpio_buttons[] = {
526− GPIO_KEY(KEY_POWER, GPIO_PORT99, "SW1"),
527− GPIO_KEY(KEY_BACK, GPIO_PORT100, "SW2"),
528− GPIO_KEY(KEY_MENU, GPIO_PORT97, "SW3"),
529− GPIO_KEY(KEY_HOME, GPIO_PORT98, "SW4"),
527+ GPIO_KEY(KEY_POWER, GPIO_PORT99, "SW3", .wakeup = 1),
528+ GPIO_KEY(KEY_BACK, GPIO_PORT100, "SW4"),
529+ GPIO_KEY(KEY_MENU, GPIO_PORT97, "SW5"),
530+ GPIO_KEY(KEY_HOME, GPIO_PORT98, "SW6"),
530531 };
531532
532533 static struct gpio_keys_platform_data gpio_key_info = {
@@ -901,8 +902,8 @@ static struct platform_device *eva_devices[] __initdata = { · 368 unmodified lines
901902 &camera_device,
902903 &ceu0_device,
903904 &fsi_device,
904− &fsi_hdmi_device,
905905 &fsi_wm8978_device,
906+ &fsi_hdmi_device,
906907 };
907908
908909 static void __init eva_clock_init(void)
arch/arm/mach-shmobile/board-mackerel.c+2−1
@@ -695,6 +695,7 @@ static struct platform_device usbhs0_device = { · 694 unmodified lines
695695 * - J30 "open"
696696 * - modify usbhs1_get_id() USBHS_HOST -> USBHS_GADGET
697697 * - add .get_vbus = usbhs_get_vbus in usbhs1_private
698+ * - check usbhs0_device(pio)/usbhs1_device(irq) order in mackerel_devices.
698699 */
699700 #define IRQ8 evt2irq(0x0300)
700701 #define USB_PHY_MODE (1 << 4)
@@ -1325,8 +1326,8 @@ static struct platform_device *mackerel_devices[] __initdata = { · 624 unmodified lines
13251326 &nor_flash_device,
13261327 &smc911x_device,
13271328 &lcdc_device,
1328− &usbhs1_device,
13291329 &usbhs0_device,
1330+ &usbhs1_device,
13301331 &leds_device,
13311332 &fsi_device,
13321333 &fsi_ak4643_device,
arch/arm/mach-shmobile/board-marzen.c+1−1
@@ -67,7 +67,7 @@ static struct smsc911x_platform_config smsc911x_platdata = { · 66 unmodified lines
6767
6868 static struct platform_device eth_device = {
6969 .name = "smsc911x",
70− .id = 0,
70+ .id = -1,
7171 .dev = {
7272 .platform_data = &smsc911x_platdata,
7373 },
arch/arm/mach-shmobile/intc-sh73a0.c+2−2
@@ -259,9 +259,9 @@ static int sh73a0_set_wake(struct irq_data *data, unsigned int on) · 258 unmodified lines
259259 return 0; /* always allow wakeup */
260260 }
261261
262−#define RELOC_BASE 0x1000
262+#define RELOC_BASE 0x1200
263263
264−/* INTCA IRQ pins at INTCS + 0x1000 to make space for GIC+INTC handling */
264+/* INTCA IRQ pins at INTCS + RELOC_BASE to make space for GIC+INTC handling */
265265 #define INTCS_VECT_RELOC(n, vect) INTCS_VECT((n), (vect) + RELOC_BASE)
266266
267267 INTC_IRQ_PINS_32(intca_irq_pins, 0xe6900000,
drivers/rtc/rtc-at91sam9.c+15−7
@@ -58,6 +58,7 @@ struct sam9_rtc { · 57 unmodified lines
5858 struct rtc_device *rtcdev;
5959 u32 imr;
6060 void __iomem *gpbr;
61+ int irq;
6162 };
6263
6364 #define rtt_readl(rtc, field) \
@@ -292,7 +293,7 @@ static int __devinit at91_rtc_probe(struct platform_device *pdev) · 228 unmodified lines
292293 {
293294 struct resource *r, *r_gpbr;
294295 struct sam9_rtc *rtc;
295− int ret;
296+ int ret, irq;
296297 u32 mr;
297298
298299 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -302,10 +303,18 @@ static int __devinit at91_rtc_probe(struct platform_device *pdev) · 3 unmodified lines
302303 return -ENODEV;
303304 }
304305
306+ irq = platform_get_irq(pdev, 0);
307+ if (irq < 0) {
308+ dev_err(&pdev->dev, "failed to get interrupt resource\n");
309+ return irq;
310+ }
311+
305312 rtc = kzalloc(sizeof *rtc, GFP_KERNEL);
306313 if (!rtc)
307314 return -ENOMEM;
308315
316+ rtc->irq = irq;
317+
309318 /* platform setup code should have handled this; sigh */
310319 if (!device_can_wakeup(&pdev->dev))
311320 device_init_wakeup(&pdev->dev, 1);
@@ -345,11 +354,10 @@ static int __devinit at91_rtc_probe(struct platform_device *pdev) · 33 unmodified lines
345354 }
346355
347356 /* register irq handler after we know what name we'll use */
348− ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt,
349− IRQF_SHARED,
357+ ret = request_irq(rtc->irq, at91_rtc_interrupt, IRQF_SHARED,
350358 dev_name(&rtc->rtcdev->dev), rtc);
351359 if (ret) {
352− dev_dbg(&pdev->dev, "can't share IRQ %d?\n", AT91_ID_SYS);
360+ dev_dbg(&pdev->dev, "can't share IRQ %d?\n", rtc->irq);
353361 rtc_device_unregister(rtc->rtcdev);
354362 goto fail_register;
355363 }
@@ -386,7 +394,7 @@ static int __devexit at91_rtc_remove(struct platform_device *pdev) · 30 unmodified lines
386394
387395 /* disable all interrupts */
388396 rtt_writel(rtc, MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN));
389− free_irq(AT91_ID_SYS, rtc);
397+ free_irq(rtc->irq, rtc);
390398
391399 rtc_device_unregister(rtc->rtcdev);
392400
@@ -423,7 +431,7 @@ static int at91_rtc_suspend(struct platform_device *pdev, · 30 unmodified lines
423431 rtc->imr = mr & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN);
424432 if (rtc->imr) {
425433 if (device_may_wakeup(&pdev->dev) && (mr & AT91_RTT_ALMIEN)) {
426− enable_irq_wake(AT91_ID_SYS);
434+ enable_irq_wake(rtc->irq);
427435 /* don't let RTTINC cause wakeups */
428436 if (mr & AT91_RTT_RTTINCIEN)
429437 rtt_writel(rtc, MR, mr & ~AT91_RTT_RTTINCIEN);
@@ -441,7 +449,7 @@ static int at91_rtc_resume(struct platform_device *pdev) · 11 unmodified lines
441449
442450 if (rtc->imr) {
443451 if (device_may_wakeup(&pdev->dev))
444− disable_irq_wake(AT91_ID_SYS);
452+ disable_irq_wake(rtc->irq);
445453 mr = rtt_readl(rtc, MR);
446454 rtt_writel(rtc, MR, mr | rtc->imr);
447455 }