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 --- |