diff options
| -rw-r--r-- | Documentation/feature-removal-schedule.txt | 2 | ||||
| -rw-r--r-- | arch/arm/boot/dts/at91sam9g25ek.dts | 2 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91rm9200_time.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9260_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9261_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9263_devices.c | 10 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9g45_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9rl_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/clock.c | 12 | ||||
| -rw-r--r-- | drivers/rtc/rtc-at91sam9.c | 22 |
10 files changed, 58 insertions, 16 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index afaff312bf41..f4d8c7105fcd 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
| @@ -579,7 +579,7 @@ Why: KVM tracepoints provide mostly equivalent information in a much more | |||
| 579 | ---------------------------- | 579 | ---------------------------- |
| 580 | 580 | ||
| 581 | What: at91-mci driver ("CONFIG_MMC_AT91") | 581 | What: at91-mci driver ("CONFIG_MMC_AT91") |
| 582 | When: 3.7 | 582 | When: 3.8 |
| 583 | Why: There are two mci drivers: at91-mci and atmel-mci. The PDC support | 583 | Why: There are two mci drivers: at91-mci and atmel-mci. The PDC support |
| 584 | was added to atmel-mci as a first step to support more chips. | 584 | was added to atmel-mci as a first step to support more chips. |
| 585 | Then at91-mci was kept only for old IP versions (on at91rm9200 and | 585 | Then at91-mci was kept only for old IP versions (on at91rm9200 and |
diff --git a/arch/arm/boot/dts/at91sam9g25ek.dts b/arch/arm/boot/dts/at91sam9g25ek.dts index 7829a4d0cb22..96514c134e54 100644 --- a/arch/arm/boot/dts/at91sam9g25ek.dts +++ b/arch/arm/boot/dts/at91sam9g25ek.dts | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | compatible = "atmel,at91sam9g25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; | 15 | compatible = "atmel,at91sam9g25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; |
| 16 | 16 | ||
| 17 | chosen { | 17 | 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"; |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
| 21 | ahb { | 21 | ahb { |
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c index 104ca40d8d18..aaa443b48c91 100644 --- a/arch/arm/mach-at91/at91rm9200_time.c +++ b/arch/arm/mach-at91/at91rm9200_time.c | |||
| @@ -197,7 +197,7 @@ void __init at91rm9200_timer_init(void) | |||
| 197 | at91_st_read(AT91_ST_SR); | 197 | at91_st_read(AT91_ST_SR); |
| 198 | 198 | ||
| 199 | /* Make IRQs happen for the system timer */ | 199 | /* 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); |
| 201 | 201 | ||
| 202 | /* The 32KiHz "Slow Clock" (tick every 30517.58 nanoseconds) is used | 202 | /* The 32KiHz "Slow Clock" (tick every 30517.58 nanoseconds) is used |
| 203 | * directly for the clocksource and all clockevents, after adjusting | 203 | * directly for the clocksource and all clockevents, after adjusting |
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index 7b9c2ba396ed..bce572a530ef 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
| @@ -726,6 +726,8 @@ static struct resource rtt_resources[] = { | |||
| 726 | .flags = IORESOURCE_MEM, | 726 | .flags = IORESOURCE_MEM, |
| 727 | }, { | 727 | }, { |
| 728 | .flags = IORESOURCE_MEM, | 728 | .flags = IORESOURCE_MEM, |
| 729 | }, { | ||
| 730 | .flags = IORESOURCE_IRQ, | ||
| 729 | }, | 731 | }, |
| 730 | }; | 732 | }; |
| 731 | 733 | ||
| @@ -744,10 +746,12 @@ static void __init at91_add_device_rtt_rtc(void) | |||
| 744 | * The second resource is needed: | 746 | * The second resource is needed: |
| 745 | * GPBR will serve as the storage for RTC time offset | 747 | * GPBR will serve as the storage for RTC time offset |
| 746 | */ | 748 | */ |
| 747 | at91sam9260_rtt_device.num_resources = 2; | 749 | at91sam9260_rtt_device.num_resources = 3; |
| 748 | rtt_resources[1].start = AT91SAM9260_BASE_GPBR + | 750 | rtt_resources[1].start = AT91SAM9260_BASE_GPBR + |
| 749 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | 751 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; |
| 750 | rtt_resources[1].end = rtt_resources[1].start + 3; | 752 | 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; | ||
| 751 | } | 755 | } |
| 752 | #else | 756 | #else |
| 753 | static void __init at91_add_device_rtt_rtc(void) | 757 | static void __init at91_add_device_rtt_rtc(void) |
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 8df5c1bdff92..bc2590d712d0 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
| @@ -609,6 +609,8 @@ static struct resource rtt_resources[] = { | |||
| 609 | .flags = IORESOURCE_MEM, | 609 | .flags = IORESOURCE_MEM, |
| 610 | }, { | 610 | }, { |
| 611 | .flags = IORESOURCE_MEM, | 611 | .flags = IORESOURCE_MEM, |
| 612 | }, { | ||
| 613 | .flags = IORESOURCE_IRQ, | ||
| 612 | } | 614 | } |
| 613 | }; | 615 | }; |
| 614 | 616 | ||
| @@ -626,10 +628,12 @@ static void __init at91_add_device_rtt_rtc(void) | |||
| 626 | * The second resource is needed: | 628 | * The second resource is needed: |
| 627 | * GPBR will serve as the storage for RTC time offset | 629 | * GPBR will serve as the storage for RTC time offset |
| 628 | */ | 630 | */ |
| 629 | at91sam9261_rtt_device.num_resources = 2; | 631 | at91sam9261_rtt_device.num_resources = 3; |
| 630 | rtt_resources[1].start = AT91SAM9261_BASE_GPBR + | 632 | rtt_resources[1].start = AT91SAM9261_BASE_GPBR + |
| 631 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | 633 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; |
| 632 | rtt_resources[1].end = rtt_resources[1].start + 3; | 634 | 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; | ||
| 633 | } | 637 | } |
| 634 | #else | 638 | #else |
| 635 | static void __init at91_add_device_rtt_rtc(void) | 639 | static void __init at91_add_device_rtt_rtc(void) |
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index eb6bbf86fb9f..9b6ca734f1a9 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
| @@ -990,6 +990,8 @@ static struct resource rtt0_resources[] = { | |||
| 990 | .flags = IORESOURCE_MEM, | 990 | .flags = IORESOURCE_MEM, |
| 991 | }, { | 991 | }, { |
| 992 | .flags = IORESOURCE_MEM, | 992 | .flags = IORESOURCE_MEM, |
| 993 | }, { | ||
| 994 | .flags = IORESOURCE_IRQ, | ||
| 993 | } | 995 | } |
| 994 | }; | 996 | }; |
| 995 | 997 | ||
| @@ -1006,6 +1008,8 @@ static struct resource rtt1_resources[] = { | |||
| 1006 | .flags = IORESOURCE_MEM, | 1008 | .flags = IORESOURCE_MEM, |
| 1007 | }, { | 1009 | }, { |
| 1008 | .flags = IORESOURCE_MEM, | 1010 | .flags = IORESOURCE_MEM, |
| 1011 | }, { | ||
| 1012 | .flags = IORESOURCE_IRQ, | ||
| 1009 | } | 1013 | } |
| 1010 | }; | 1014 | }; |
| 1011 | 1015 | ||
| @@ -1027,14 +1031,14 @@ static void __init at91_add_device_rtt_rtc(void) | |||
| 1027 | * The second resource is needed only for the chosen RTT: | 1031 | * The second resource is needed only for the chosen RTT: |
| 1028 | * GPBR will serve as the storage for RTC time offset | 1032 | * GPBR will serve as the storage for RTC time offset |
| 1029 | */ | 1033 | */ |
| 1030 | at91sam9263_rtt0_device.num_resources = 2; | 1034 | at91sam9263_rtt0_device.num_resources = 3; |
| 1031 | at91sam9263_rtt1_device.num_resources = 1; | 1035 | at91sam9263_rtt1_device.num_resources = 1; |
| 1032 | pdev = &at91sam9263_rtt0_device; | 1036 | pdev = &at91sam9263_rtt0_device; |
| 1033 | r = rtt0_resources; | 1037 | r = rtt0_resources; |
| 1034 | break; | 1038 | break; |
| 1035 | case 1: | 1039 | case 1: |
| 1036 | at91sam9263_rtt0_device.num_resources = 1; | 1040 | at91sam9263_rtt0_device.num_resources = 1; |
| 1037 | at91sam9263_rtt1_device.num_resources = 2; | 1041 | at91sam9263_rtt1_device.num_resources = 3; |
| 1038 | pdev = &at91sam9263_rtt1_device; | 1042 | pdev = &at91sam9263_rtt1_device; |
| 1039 | r = rtt1_resources; | 1043 | r = rtt1_resources; |
| 1040 | break; | 1044 | break; |
| @@ -1047,6 +1051,8 @@ static void __init at91_add_device_rtt_rtc(void) | |||
| 1047 | pdev->name = "rtc-at91sam9"; | 1051 | pdev->name = "rtc-at91sam9"; |
| 1048 | r[1].start = AT91SAM9263_BASE_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | 1052 | r[1].start = AT91SAM9263_BASE_GPBR + 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; |
| 1049 | r[1].end = r[1].start + 3; | 1053 | 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; | ||
| 1050 | } | 1056 | } |
| 1051 | #else | 1057 | #else |
| 1052 | static void __init at91_add_device_rtt_rtc(void) | 1058 | static void __init at91_add_device_rtt_rtc(void) |
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index 06073996a382..1b47319ca00b 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c | |||
| @@ -1293,6 +1293,8 @@ static struct resource rtt_resources[] = { | |||
| 1293 | .flags = IORESOURCE_MEM, | 1293 | .flags = IORESOURCE_MEM, |
| 1294 | }, { | 1294 | }, { |
| 1295 | .flags = IORESOURCE_MEM, | 1295 | .flags = IORESOURCE_MEM, |
| 1296 | }, { | ||
| 1297 | .flags = IORESOURCE_IRQ, | ||
| 1296 | } | 1298 | } |
| 1297 | }; | 1299 | }; |
| 1298 | 1300 | ||
| @@ -1310,10 +1312,12 @@ static void __init at91_add_device_rtt_rtc(void) | |||
| 1310 | * The second resource is needed: | 1312 | * The second resource is needed: |
| 1311 | * GPBR will serve as the storage for RTC time offset | 1313 | * GPBR will serve as the storage for RTC time offset |
| 1312 | */ | 1314 | */ |
| 1313 | at91sam9g45_rtt_device.num_resources = 2; | 1315 | at91sam9g45_rtt_device.num_resources = 3; |
| 1314 | rtt_resources[1].start = AT91SAM9G45_BASE_GPBR + | 1316 | rtt_resources[1].start = AT91SAM9G45_BASE_GPBR + |
| 1315 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | 1317 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; |
| 1316 | rtt_resources[1].end = rtt_resources[1].start + 3; | 1318 | 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; | ||
| 1317 | } | 1321 | } |
| 1318 | #else | 1322 | #else |
| 1319 | static void __init at91_add_device_rtt_rtc(void) | 1323 | static void __init at91_add_device_rtt_rtc(void) |
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index f09fff932172..b3d365dadef5 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
| @@ -688,6 +688,8 @@ static struct resource rtt_resources[] = { | |||
| 688 | .flags = IORESOURCE_MEM, | 688 | .flags = IORESOURCE_MEM, |
| 689 | }, { | 689 | }, { |
| 690 | .flags = IORESOURCE_MEM, | 690 | .flags = IORESOURCE_MEM, |
| 691 | }, { | ||
| 692 | .flags = IORESOURCE_IRQ, | ||
| 691 | } | 693 | } |
| 692 | }; | 694 | }; |
| 693 | 695 | ||
| @@ -705,10 +707,12 @@ static void __init at91_add_device_rtt_rtc(void) | |||
| 705 | * The second resource is needed: | 707 | * The second resource is needed: |
| 706 | * GPBR will serve as the storage for RTC time offset | 708 | * GPBR will serve as the storage for RTC time offset |
| 707 | */ | 709 | */ |
| 708 | at91sam9rl_rtt_device.num_resources = 2; | 710 | at91sam9rl_rtt_device.num_resources = 3; |
| 709 | rtt_resources[1].start = AT91SAM9RL_BASE_GPBR + | 711 | rtt_resources[1].start = AT91SAM9RL_BASE_GPBR + |
| 710 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; | 712 | 4 * CONFIG_RTC_DRV_AT91SAM9_GPBR; |
| 711 | rtt_resources[1].end = rtt_resources[1].start + 3; | 713 | 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; | ||
| 712 | } | 716 | } |
| 713 | #else | 717 | #else |
| 714 | static void __init at91_add_device_rtt_rtc(void) | 718 | static void __init at91_add_device_rtt_rtc(void) |
diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c index de2ec6b8fea7..188c82971ebd 100644 --- a/arch/arm/mach-at91/clock.c +++ b/arch/arm/mach-at91/clock.c | |||
| @@ -63,6 +63,12 @@ EXPORT_SYMBOL_GPL(at91_pmc_base); | |||
| 63 | 63 | ||
| 64 | #define cpu_has_300M_plla() (cpu_is_at91sam9g10()) | 64 | #define cpu_has_300M_plla() (cpu_is_at91sam9g10()) |
| 65 | 65 | ||
| 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 | |||
| 66 | #define cpu_has_pllb() (!(cpu_is_at91sam9rl() \ | 72 | #define cpu_has_pllb() (!(cpu_is_at91sam9rl() \ |
| 67 | || cpu_is_at91sam9g45() \ | 73 | || cpu_is_at91sam9g45() \ |
| 68 | || cpu_is_at91sam9x5() \ | 74 | || cpu_is_at91sam9x5() \ |
| @@ -706,6 +712,12 @@ static int __init at91_pmc_init(unsigned long main_clock) | |||
| 706 | } else if (cpu_has_800M_plla()) { | 712 | } else if (cpu_has_800M_plla()) { |
| 707 | if (plla.rate_hz > 800000000) | 713 | if (plla.rate_hz > 800000000) |
| 708 | pll_overclock = true; | 714 | 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; | ||
| 709 | } else { | 721 | } else { |
| 710 | if (plla.rate_hz > 209000000) | 722 | if (plla.rate_hz > 209000000) |
| 711 | pll_overclock = true; | 723 | pll_overclock = true; |
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c index 831868904e02..1dd61f402b04 100644 --- a/drivers/rtc/rtc-at91sam9.c +++ b/drivers/rtc/rtc-at91sam9.c | |||
| @@ -58,6 +58,7 @@ struct sam9_rtc { | |||
| 58 | struct rtc_device *rtcdev; | 58 | struct rtc_device *rtcdev; |
| 59 | u32 imr; | 59 | u32 imr; |
| 60 | void __iomem *gpbr; | 60 | void __iomem *gpbr; |
| 61 | int irq; | ||
| 61 | }; | 62 | }; |
| 62 | 63 | ||
| 63 | #define rtt_readl(rtc, field) \ | 64 | #define rtt_readl(rtc, field) \ |
| @@ -292,7 +293,7 @@ static int __devinit at91_rtc_probe(struct platform_device *pdev) | |||
| 292 | { | 293 | { |
| 293 | struct resource *r, *r_gpbr; | 294 | struct resource *r, *r_gpbr; |
| 294 | struct sam9_rtc *rtc; | 295 | struct sam9_rtc *rtc; |
| 295 | int ret; | 296 | int ret, irq; |
| 296 | u32 mr; | 297 | u32 mr; |
| 297 | 298 | ||
| 298 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 299 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| @@ -302,10 +303,18 @@ static int __devinit at91_rtc_probe(struct platform_device *pdev) | |||
| 302 | return -ENODEV; | 303 | return -ENODEV; |
| 303 | } | 304 | } |
| 304 | 305 | ||
| 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 | |||
| 305 | rtc = kzalloc(sizeof *rtc, GFP_KERNEL); | 312 | rtc = kzalloc(sizeof *rtc, GFP_KERNEL); |
| 306 | if (!rtc) | 313 | if (!rtc) |
| 307 | return -ENOMEM; | 314 | return -ENOMEM; |
| 308 | 315 | ||
| 316 | rtc->irq = irq; | ||
| 317 | |||
| 309 | /* platform setup code should have handled this; sigh */ | 318 | /* platform setup code should have handled this; sigh */ |
| 310 | if (!device_can_wakeup(&pdev->dev)) | 319 | if (!device_can_wakeup(&pdev->dev)) |
| 311 | device_init_wakeup(&pdev->dev, 1); | 320 | device_init_wakeup(&pdev->dev, 1); |
| @@ -345,11 +354,10 @@ static int __devinit at91_rtc_probe(struct platform_device *pdev) | |||
| 345 | } | 354 | } |
| 346 | 355 | ||
| 347 | /* register irq handler after we know what name we'll use */ | 356 | /* register irq handler after we know what name we'll use */ |
| 348 | ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt, | 357 | ret = request_irq(rtc->irq, at91_rtc_interrupt, IRQF_SHARED, |
| 349 | IRQF_SHARED, | ||
| 350 | dev_name(&rtc->rtcdev->dev), rtc); | 358 | dev_name(&rtc->rtcdev->dev), rtc); |
| 351 | if (ret) { | 359 | 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); |
| 353 | rtc_device_unregister(rtc->rtcdev); | 361 | rtc_device_unregister(rtc->rtcdev); |
| 354 | goto fail_register; | 362 | goto fail_register; |
| 355 | } | 363 | } |
| @@ -386,7 +394,7 @@ static int __devexit at91_rtc_remove(struct platform_device *pdev) | |||
| 386 | 394 | ||
| 387 | /* disable all interrupts */ | 395 | /* disable all interrupts */ |
| 388 | rtt_writel(rtc, MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN)); | 396 | rtt_writel(rtc, MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN)); |
| 389 | free_irq(AT91_ID_SYS, rtc); | 397 | free_irq(rtc->irq, rtc); |
| 390 | 398 | ||
| 391 | rtc_device_unregister(rtc->rtcdev); | 399 | rtc_device_unregister(rtc->rtcdev); |
| 392 | 400 | ||
| @@ -423,7 +431,7 @@ static int at91_rtc_suspend(struct platform_device *pdev, | |||
| 423 | rtc->imr = mr & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN); | 431 | rtc->imr = mr & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN); |
| 424 | if (rtc->imr) { | 432 | if (rtc->imr) { |
| 425 | if (device_may_wakeup(&pdev->dev) && (mr & AT91_RTT_ALMIEN)) { | 433 | if (device_may_wakeup(&pdev->dev) && (mr & AT91_RTT_ALMIEN)) { |
| 426 | enable_irq_wake(AT91_ID_SYS); | 434 | enable_irq_wake(rtc->irq); |
| 427 | /* don't let RTTINC cause wakeups */ | 435 | /* don't let RTTINC cause wakeups */ |
| 428 | if (mr & AT91_RTT_RTTINCIEN) | 436 | if (mr & AT91_RTT_RTTINCIEN) |
| 429 | rtt_writel(rtc, MR, mr & ~AT91_RTT_RTTINCIEN); | 437 | rtt_writel(rtc, MR, mr & ~AT91_RTT_RTTINCIEN); |
| @@ -441,7 +449,7 @@ static int at91_rtc_resume(struct platform_device *pdev) | |||
| 441 | 449 | ||
| 442 | if (rtc->imr) { | 450 | if (rtc->imr) { |
| 443 | if (device_may_wakeup(&pdev->dev)) | 451 | if (device_may_wakeup(&pdev->dev)) |
| 444 | disable_irq_wake(AT91_ID_SYS); | 452 | disable_irq_wake(rtc->irq); |
| 445 | mr = rtt_readl(rtc, MR); | 453 | mr = rtt_readl(rtc, MR); |
| 446 | rtt_writel(rtc, MR, mr | rtc->imr); | 454 | rtt_writel(rtc, MR, mr | rtc->imr); |
| 447 | } | 455 | } |
