rtc-pl030.c (e5451c8f8330e03ad3cfa16048b4daf961af434f) rtc-pl030.c (c778ec85825dc895936940072aea9fe9037db684)
1/*
2 * linux/drivers/rtc/rtc-pl030.c
3 *
4 * Copyright (C) 2000-2001 Deep Blue Solutions Ltd.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.

--- 98 unchanged lines hidden (view full) ---

107 goto err_req;
108
109 rtc = devm_kzalloc(&dev->dev, sizeof(*rtc), GFP_KERNEL);
110 if (!rtc) {
111 ret = -ENOMEM;
112 goto err_rtc;
113 }
114
1/*
2 * linux/drivers/rtc/rtc-pl030.c
3 *
4 * Copyright (C) 2000-2001 Deep Blue Solutions Ltd.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.

--- 98 unchanged lines hidden (view full) ---

107 goto err_req;
108
109 rtc = devm_kzalloc(&dev->dev, sizeof(*rtc), GFP_KERNEL);
110 if (!rtc) {
111 ret = -ENOMEM;
112 goto err_rtc;
113 }
114
115 rtc->rtc = devm_rtc_allocate_device(&dev->dev);
116 if (IS_ERR(rtc->rtc)) {
117 ret = PTR_ERR(rtc->rtc);
118 goto err_rtc;
119 }
120
121 rtc->rtc->ops = &pl030_ops;
115 rtc->base = ioremap(dev->res.start, resource_size(&dev->res));
116 if (!rtc->base) {
117 ret = -ENOMEM;
118 goto err_rtc;
119 }
120
121 __raw_writel(0, rtc->base + RTC_CR);
122 __raw_writel(0, rtc->base + RTC_EOI);
123
124 amba_set_drvdata(dev, rtc);
125
126 ret = request_irq(dev->irq[0], pl030_interrupt, 0,
127 "rtc-pl030", rtc);
128 if (ret)
129 goto err_irq;
130
122 rtc->base = ioremap(dev->res.start, resource_size(&dev->res));
123 if (!rtc->base) {
124 ret = -ENOMEM;
125 goto err_rtc;
126 }
127
128 __raw_writel(0, rtc->base + RTC_CR);
129 __raw_writel(0, rtc->base + RTC_EOI);
130
131 amba_set_drvdata(dev, rtc);
132
133 ret = request_irq(dev->irq[0], pl030_interrupt, 0,
134 "rtc-pl030", rtc);
135 if (ret)
136 goto err_irq;
137
131 rtc->rtc = rtc_device_register("pl030", &dev->dev, &pl030_ops,
132 THIS_MODULE);
133 if (IS_ERR(rtc->rtc)) {
134 ret = PTR_ERR(rtc->rtc);
138 ret = rtc_register_device(rtc->rtc);
139 if (ret)
135 goto err_reg;
140 goto err_reg;
136 }
137
138 return 0;
139
140 err_reg:
141 free_irq(dev->irq[0], rtc);
142 err_irq:
143 iounmap(rtc->base);
144 err_rtc:

--- 4 unchanged lines hidden (view full) ---

149
150static int pl030_remove(struct amba_device *dev)
151{
152 struct pl030_rtc *rtc = amba_get_drvdata(dev);
153
154 writel(0, rtc->base + RTC_CR);
155
156 free_irq(dev->irq[0], rtc);
141
142 return 0;
143
144 err_reg:
145 free_irq(dev->irq[0], rtc);
146 err_irq:
147 iounmap(rtc->base);
148 err_rtc:

--- 4 unchanged lines hidden (view full) ---

153
154static int pl030_remove(struct amba_device *dev)
155{
156 struct pl030_rtc *rtc = amba_get_drvdata(dev);
157
158 writel(0, rtc->base + RTC_CR);
159
160 free_irq(dev->irq[0], rtc);
157 rtc_device_unregister(rtc->rtc);
158 iounmap(rtc->base);
159 amba_release_regions(dev);
160
161 return 0;
162}
163
164static struct amba_id pl030_ids[] = {
165 {

--- 22 unchanged lines hidden ---
161 iounmap(rtc->base);
162 amba_release_regions(dev);
163
164 return 0;
165}
166
167static struct amba_id pl030_ids[] = {
168 {

--- 22 unchanged lines hidden ---