Source
36
36
rtc_events = RTC_IRQF | RTC_AF;
37
37
else
38
38
rtc_events = 0;
39
39
40
40
rtc_update_irq(pcap_rtc->rtc, 1, rtc_events);
41
41
return IRQ_HANDLED;
42
42
}
43
43
44
44
static int pcap_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
45
45
{
46
-
struct platform_device *pdev = to_platform_device(dev);
47
-
struct pcap_rtc *pcap_rtc = platform_get_drvdata(pdev);
46
+
struct pcap_rtc *pcap_rtc = dev_get_drvdata(dev);
48
47
struct rtc_time *tm = &alrm->time;
49
48
unsigned long secs;
50
49
u32 tod; /* time of day, seconds since midnight */
51
50
u32 days; /* days since 1/1/1970 */
52
51
53
52
ezx_pcap_read(pcap_rtc->pcap, PCAP_REG_RTC_TODA, &tod);
54
53
secs = tod & PCAP_RTC_TOD_MASK;
55
54
56
55
ezx_pcap_read(pcap_rtc->pcap, PCAP_REG_RTC_DAYA, &days);
57
56
secs += (days & PCAP_RTC_DAY_MASK) * SEC_PER_DAY;
58
57
59
58
rtc_time_to_tm(secs, tm);
60
59
61
60
return 0;
62
61
}
63
62
64
63
static int pcap_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
65
64
{
66
-
struct platform_device *pdev = to_platform_device(dev);
67
-
struct pcap_rtc *pcap_rtc = platform_get_drvdata(pdev);
65
+
struct pcap_rtc *pcap_rtc = dev_get_drvdata(dev);
68
66
struct rtc_time *tm = &alrm->time;
69
67
unsigned long secs;
70
68
u32 tod, days;
71
69
72
70
rtc_tm_to_time(tm, &secs);
73
71
74
72
tod = secs % SEC_PER_DAY;
75
73
ezx_pcap_write(pcap_rtc->pcap, PCAP_REG_RTC_TODA, tod);
76
74
77
75
days = secs / SEC_PER_DAY;
78
76
ezx_pcap_write(pcap_rtc->pcap, PCAP_REG_RTC_DAYA, days);
79
77
80
78
return 0;
81
79
}
82
80
83
81
static int pcap_rtc_read_time(struct device *dev, struct rtc_time *tm)
84
82
{
85
-
struct platform_device *pdev = to_platform_device(dev);
86
-
struct pcap_rtc *pcap_rtc = platform_get_drvdata(pdev);
83
+
struct pcap_rtc *pcap_rtc = dev_get_drvdata(dev);
87
84
unsigned long secs;
88
85
u32 tod, days;
89
86
90
87
ezx_pcap_read(pcap_rtc->pcap, PCAP_REG_RTC_TOD, &tod);
91
88
secs = tod & PCAP_RTC_TOD_MASK;
92
89
93
90
ezx_pcap_read(pcap_rtc->pcap, PCAP_REG_RTC_DAY, &days);
94
91
secs += (days & PCAP_RTC_DAY_MASK) * SEC_PER_DAY;
95
92
96
93
rtc_time_to_tm(secs, tm);
97
94
98
95
return 0;
99
96
}
100
97
101
98
static int pcap_rtc_set_mmss(struct device *dev, unsigned long secs)
102
99
{
103
-
struct platform_device *pdev = to_platform_device(dev);
104
-
struct pcap_rtc *pcap_rtc = platform_get_drvdata(pdev);
100
+
struct pcap_rtc *pcap_rtc = dev_get_drvdata(dev);
105
101
u32 tod, days;
106
102
107
103
tod = secs % SEC_PER_DAY;
108
104
ezx_pcap_write(pcap_rtc->pcap, PCAP_REG_RTC_TOD, tod);
109
105
110
106
days = secs / SEC_PER_DAY;
111
107
ezx_pcap_write(pcap_rtc->pcap, PCAP_REG_RTC_DAY, days);
112
108
113
109
return 0;
114
110
}
115
111
116
112
static int pcap_rtc_irq_enable(struct device *dev, int pirq, unsigned int en)
117
113
{
118
-
struct platform_device *pdev = to_platform_device(dev);
119
-
struct pcap_rtc *pcap_rtc = platform_get_drvdata(pdev);
114
+
struct pcap_rtc *pcap_rtc = dev_get_drvdata(dev);
120
115
121
116
if (en)
122
117
enable_irq(pcap_to_irq(pcap_rtc->pcap, pirq));
123
118
else
124
119
disable_irq(pcap_to_irq(pcap_rtc->pcap, pirq));
125
120
126
121
return 0;
127
122
}
128
123
129
124
static int pcap_rtc_alarm_irq_enable(struct device *dev, unsigned int en)