git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
virtio: console: Generate a kobject CHANGE event on adding 'name' attribute
[safe/jmp/linux-2.6]
/
drivers
/
rtc
/
rtc-ds1305.c
diff --git
a/drivers/rtc/rtc-ds1305.c
b/drivers/rtc/rtc-ds1305.c
index
b91d02a
..
9630e7d
100644
(file)
--- a/
drivers/rtc/rtc-ds1305.c
+++ b/
drivers/rtc/rtc-ds1305.c
@@
-114,10
+114,10
@@
static unsigned bcd2hour(u8 bcd)
hour = 12;
bcd &= ~DS1305_HR_PM;
}
hour = 12;
bcd &= ~DS1305_HR_PM;
}
- hour +=
BCD2BIN
(bcd);
+ hour +=
bcd2bin
(bcd);
return hour - 1;
}
return hour - 1;
}
- return
BCD2BIN
(bcd);
+ return
bcd2bin
(bcd);
}
static u8 hour2bcd(bool hr12, int hour)
}
static u8 hour2bcd(bool hr12, int hour)
@@
-125,11
+125,11
@@
static u8 hour2bcd(bool hr12, int hour)
if (hr12) {
hour++;
if (hour <= 12)
if (hr12) {
hour++;
if (hour <= 12)
- return DS1305_HR_12 |
BIN2BCD
(hour);
+ return DS1305_HR_12 |
bin2bcd
(hour);
hour -= 12;
hour -= 12;
- return DS1305_HR_12 | DS1305_HR_PM |
BIN2BCD
(hour);
+ return DS1305_HR_12 | DS1305_HR_PM |
bin2bcd
(hour);
}
}
- return
BIN2BCD
(hour);
+ return
bin2bcd
(hour);
}
/*----------------------------------------------------------------------*/
}
/*----------------------------------------------------------------------*/
@@
-206,13
+206,13
@@
static int ds1305_get_time(struct device *dev, struct rtc_time *time)
buf[4], buf[5], buf[6]);
/* Decode the registers */
buf[4], buf[5], buf[6]);
/* Decode the registers */
- time->tm_sec =
BCD2BIN
(buf[DS1305_SEC]);
- time->tm_min =
BCD2BIN
(buf[DS1305_MIN]);
+ time->tm_sec =
bcd2bin
(buf[DS1305_SEC]);
+ time->tm_min =
bcd2bin
(buf[DS1305_MIN]);
time->tm_hour = bcd2hour(buf[DS1305_HOUR]);
time->tm_wday = buf[DS1305_WDAY] - 1;
time->tm_hour = bcd2hour(buf[DS1305_HOUR]);
time->tm_wday = buf[DS1305_WDAY] - 1;
- time->tm_mday =
BCD2BIN
(buf[DS1305_MDAY]);
- time->tm_mon =
BCD2BIN
(buf[DS1305_MON]) - 1;
- time->tm_year =
BCD2BIN
(buf[DS1305_YEAR]) + 100;
+ time->tm_mday =
bcd2bin
(buf[DS1305_MDAY]);
+ time->tm_mon =
bcd2bin
(buf[DS1305_MON]) - 1;
+ time->tm_year =
bcd2bin
(buf[DS1305_YEAR]) + 100;
dev_vdbg(dev, "%s secs=%d, mins=%d, "
"hours=%d, mday=%d, mon=%d, year=%d, wday=%d\n",
dev_vdbg(dev, "%s secs=%d, mins=%d, "
"hours=%d, mday=%d, mon=%d, year=%d, wday=%d\n",
@@
-239,13
+239,13
@@
static int ds1305_set_time(struct device *dev, struct rtc_time *time)
/* Write registers starting at the first time/date address. */
*bp++ = DS1305_WRITE | DS1305_SEC;
/* Write registers starting at the first time/date address. */
*bp++ = DS1305_WRITE | DS1305_SEC;
- *bp++ =
BIN2BCD
(time->tm_sec);
- *bp++ =
BIN2BCD
(time->tm_min);
+ *bp++ =
bin2bcd
(time->tm_sec);
+ *bp++ =
bin2bcd
(time->tm_min);
*bp++ = hour2bcd(ds1305->hr12, time->tm_hour);
*bp++ = (time->tm_wday < 7) ? (time->tm_wday + 1) : 1;
*bp++ = hour2bcd(ds1305->hr12, time->tm_hour);
*bp++ = (time->tm_wday < 7) ? (time->tm_wday + 1) : 1;
- *bp++ =
BIN2BCD
(time->tm_mday);
- *bp++ =
BIN2BCD
(time->tm_mon + 1);
- *bp++ =
BIN2BCD
(time->tm_year - 100);
+ *bp++ =
bin2bcd
(time->tm_mday);
+ *bp++ =
bin2bcd
(time->tm_mon + 1);
+ *bp++ =
bin2bcd
(time->tm_year - 100);
dev_dbg(dev, "%s: %02x %02x %02x, %02x %02x %02x %02x\n",
"write", buf[1], buf[2], buf[3],
dev_dbg(dev, "%s: %02x %02x %02x, %02x %02x %02x %02x\n",
"write", buf[1], buf[2], buf[3],
@@
-329,8
+329,8
@@
static int ds1305_get_alarm(struct device *dev, struct rtc_wkalrm *alm)
* fill in the rest ... and also handle rollover to tomorrow when
* that's needed.
*/
* fill in the rest ... and also handle rollover to tomorrow when
* that's needed.
*/
- alm->time.tm_sec =
BCD2BIN
(buf[DS1305_SEC]);
- alm->time.tm_min =
BCD2BIN
(buf[DS1305_MIN]);
+ alm->time.tm_sec =
bcd2bin
(buf[DS1305_SEC]);
+ alm->time.tm_min =
bcd2bin
(buf[DS1305_MIN]);
alm->time.tm_hour = bcd2hour(buf[DS1305_HOUR]);
alm->time.tm_mday = -1;
alm->time.tm_mon = -1;
alm->time.tm_hour = bcd2hour(buf[DS1305_HOUR]);
alm->time.tm_mday = -1;
alm->time.tm_mon = -1;
@@
-387,8
+387,8
@@
static int ds1305_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
/* write alarm */
buf[0] = DS1305_WRITE | DS1305_ALM0(DS1305_SEC);
/* write alarm */
buf[0] = DS1305_WRITE | DS1305_ALM0(DS1305_SEC);
- buf[1 + DS1305_SEC] =
BIN2BCD
(alm->time.tm_sec);
- buf[1 + DS1305_MIN] =
BIN2BCD
(alm->time.tm_min);
+ buf[1 + DS1305_SEC] =
bin2bcd
(alm->time.tm_sec);
+ buf[1 + DS1305_MIN] =
bin2bcd
(alm->time.tm_min);
buf[1 + DS1305_HOUR] = hour2bcd(ds1305->hr12, alm->time.tm_hour);
buf[1 + DS1305_WDAY] = DS1305_ALM_DISABLE;
buf[1 + DS1305_HOUR] = hour2bcd(ds1305->hr12, alm->time.tm_hour);
buf[1 + DS1305_WDAY] = DS1305_ALM_DISABLE;
@@
-499,10
+499,7
@@
static void ds1305_work(struct work_struct *work)
if (!test_bit(FLAG_EXITING, &ds1305->flags))
enable_irq(spi->irq);
if (!test_bit(FLAG_EXITING, &ds1305->flags))
enable_irq(spi->irq);
- /* rtc_update_irq() requires an IRQ-disabled context */
- local_irq_disable();
rtc_update_irq(ds1305->rtc, 1, RTC_AF | RTC_IRQF);
rtc_update_irq(ds1305->rtc, 1, RTC_AF | RTC_IRQF);
- local_irq_enable();
}
/*
}
/*
@@
-606,7
+603,6
@@
ds1305_nvram_write(struct kobject *kobj, struct bin_attribute *attr,
static struct bin_attribute nvram = {
.attr.name = "nvram",
.attr.mode = S_IRUGO | S_IWUSR,
static struct bin_attribute nvram = {
.attr.name = "nvram",
.attr.mode = S_IRUGO | S_IWUSR,
- .attr.owner = THIS_MODULE,
.read = ds1305_nvram_read,
.write = ds1305_nvram_write,
.size = DS1305_NVRAM_LEN,
.read = ds1305_nvram_read,
.write = ds1305_nvram_write,
.size = DS1305_NVRAM_LEN,
@@
-621,7
+617,6
@@
static struct bin_attribute nvram = {
static int __devinit ds1305_probe(struct spi_device *spi)
{
struct ds1305 *ds1305;
static int __devinit ds1305_probe(struct spi_device *spi)
{
struct ds1305 *ds1305;
- struct rtc_device *rtc;
int status;
u8 addr, value;
struct ds1305_platform_data *pdata = spi->dev.platform_data;
int status;
u8 addr, value;
struct ds1305_platform_data *pdata = spi->dev.platform_data;
@@
-760,14
+755,13
@@
static int __devinit ds1305_probe(struct spi_device *spi)
dev_dbg(&spi->dev, "AM/PM\n");
/* register RTC ... from here on, ds1305->ctrl needs locking */
dev_dbg(&spi->dev, "AM/PM\n");
/* register RTC ... from here on, ds1305->ctrl needs locking */
- rtc = rtc_device_register("ds1305", &spi->dev,
+
ds1305->
rtc = rtc_device_register("ds1305", &spi->dev,
&ds1305_ops, THIS_MODULE);
&ds1305_ops, THIS_MODULE);
- if (IS_ERR(rtc)) {
- status = PTR_ERR(rtc);
+ if (IS_ERR(
ds1305->
rtc)) {
+ status = PTR_ERR(
ds1305->
rtc);
dev_dbg(&spi->dev, "register rtc --> %d\n", status);
goto fail0;
}
dev_dbg(&spi->dev, "register rtc --> %d\n", status);
goto fail0;
}
- ds1305->rtc = rtc;
/* Maybe set up alarm IRQ; be ready to handle it triggering right
* away. NOTE that we don't share this. The signal is active low,
/* Maybe set up alarm IRQ; be ready to handle it triggering right
* away. NOTE that we don't share this. The signal is active low,
@@
-778,12
+772,14
@@
static int __devinit ds1305_probe(struct spi_device *spi)
if (spi->irq) {
INIT_WORK(&ds1305->work, ds1305_work);
status = request_irq(spi->irq, ds1305_irq,
if (spi->irq) {
INIT_WORK(&ds1305->work, ds1305_work);
status = request_irq(spi->irq, ds1305_irq,
- 0, dev_name(&rtc->dev), ds1305);
+ 0, dev_name(&
ds1305->
rtc->dev), ds1305);
if (status < 0) {
dev_dbg(&spi->dev, "request_irq %d --> %d\n",
spi->irq, status);
goto fail1;
}
if (status < 0) {
dev_dbg(&spi->dev, "request_irq %d --> %d\n",
spi->irq, status);
goto fail1;
}
+
+ device_set_wakeup_capable(&spi->dev, 1);
}
/* export NVRAM */
}
/* export NVRAM */
@@
-798,7
+794,7
@@
static int __devinit ds1305_probe(struct spi_device *spi)
fail2:
free_irq(spi->irq, ds1305);
fail1:
fail2:
free_irq(spi->irq, ds1305);
fail1:
- rtc_device_unregister(rtc);
+ rtc_device_unregister(
ds1305->
rtc);
fail0:
kfree(ds1305);
return status;
fail0:
kfree(ds1305);
return status;
@@
-806,7
+802,7
@@
fail0:
static int __devexit ds1305_remove(struct spi_device *spi)
{
static int __devexit ds1305_remove(struct spi_device *spi)
{
- struct ds1305
*ds1305 = spi_get_drvdata(spi);
+ struct ds1305 *ds1305 = spi_get_drvdata(spi);
sysfs_remove_bin_file(&spi->dev.kobj, &nvram);
sysfs_remove_bin_file(&spi->dev.kobj, &nvram);
@@
-845,3
+841,4
@@
module_exit(ds1305_exit);
MODULE_DESCRIPTION("RTC driver for DS1305 and DS1306 chips");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("RTC driver for DS1305 and DS1306 chips");
MODULE_LICENSE("GPL");
+MODULE_ALIAS("spi:rtc-ds1305");