summaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.24/1186-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1186-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch')
-rw-r--r--target/linux/s3c24xx/patches-2.6.24/1186-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch224
1 files changed, 0 insertions, 224 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1186-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch b/target/linux/s3c24xx/patches-2.6.24/1186-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch
deleted file mode 100644
index 19c207967..000000000
--- a/target/linux/s3c24xx/patches-2.6.24/1186-fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.pat.patch
+++ /dev/null
@@ -1,224 +0,0 @@
-From d22227eec7efd4b2f40e51ea3c3bc025299efc93 Mon Sep 17 00:00:00 2001
-From: Andy Green <andy@openmoko.com>
-Date: Wed, 2 Jul 2008 22:40:04 +0100
-Subject: [PATCH] fix-pcf50633-rtc-i2c-bulk-autoincrement-simplify.patch
-
-More pcf50633 major time saving by using i2c bulk autoincrement. Code
-reduction too by using array for time elements.
-
-Signed-off-by: Andy Green <andy@openmoko.com>
----
- drivers/i2c/chips/pcf50633.c | 134 ++++++++++++++++++++++++------------------
- 1 files changed, 77 insertions(+), 57 deletions(-)
-
-diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
-index 33e2eaf..1f88c32 100644
---- a/drivers/i2c/chips/pcf50633.c
-+++ b/drivers/i2c/chips/pcf50633.c
-@@ -1505,37 +1505,42 @@ static void pcf50633_get_power_status(struct apm_power_info *info)
- /***********************************************************************
- * RTC
- ***********************************************************************/
-+enum pcf50633_time_indexes {
-+ PCF50633_TI_SEC = 0,
-+ PCF50633_TI_MIN,
-+ PCF50633_TI_HOUR,
-+ PCF50633_TI_WKDAY,
-+ PCF50633_TI_DAY,
-+ PCF50633_TI_MONTH,
-+ PCF50633_TI_YEAR,
-+ PCF50633_TI_EXTENT /* always last */
-+};
-+
-
- struct pcf50633_time {
-- u_int8_t sec;
-- u_int8_t min;
-- u_int8_t hour;
-- u_int8_t wkday;
-- u_int8_t day;
-- u_int8_t month;
-- u_int8_t year;
-+ u_int8_t time[PCF50633_TI_EXTENT];
- };
-
- static void pcf2rtc_time(struct rtc_time *rtc, struct pcf50633_time *pcf)
- {
-- rtc->tm_sec = BCD2BIN(pcf->sec);
-- rtc->tm_min = BCD2BIN(pcf->min);
-- rtc->tm_hour = BCD2BIN(pcf->hour);
-- rtc->tm_wday = BCD2BIN(pcf->wkday);
-- rtc->tm_mday = BCD2BIN(pcf->day);
-- rtc->tm_mon = BCD2BIN(pcf->month);
-- rtc->tm_year = BCD2BIN(pcf->year) + 100;
-+ rtc->tm_sec = BCD2BIN(pcf->time[PCF50633_TI_SEC]);
-+ rtc->tm_min = BCD2BIN(pcf->time[PCF50633_TI_MIN]);
-+ rtc->tm_hour = BCD2BIN(pcf->time[PCF50633_TI_HOUR]);
-+ rtc->tm_wday = BCD2BIN(pcf->time[PCF50633_TI_WKDAY]);
-+ rtc->tm_mday = BCD2BIN(pcf->time[PCF50633_TI_DAY]);
-+ rtc->tm_mon = BCD2BIN(pcf->time[PCF50633_TI_MONTH]);
-+ rtc->tm_year = BCD2BIN(pcf->time[PCF50633_TI_YEAR]) + 100;
- }
-
- static void rtc2pcf_time(struct pcf50633_time *pcf, struct rtc_time *rtc)
- {
-- pcf->sec = BIN2BCD(rtc->tm_sec);
-- pcf->min = BIN2BCD(rtc->tm_min);
-- pcf->hour = BIN2BCD(rtc->tm_hour);
-- pcf->wkday = BIN2BCD(rtc->tm_wday);
-- pcf->day = BIN2BCD(rtc->tm_mday);
-- pcf->month = BIN2BCD(rtc->tm_mon);
-- pcf->year = BIN2BCD(rtc->tm_year - 100);
-+ pcf->time[PCF50633_TI_SEC] = BIN2BCD(rtc->tm_sec);
-+ pcf->time[PCF50633_TI_MIN] = BIN2BCD(rtc->tm_min);
-+ pcf->time[PCF50633_TI_HOUR] = BIN2BCD(rtc->tm_hour);
-+ pcf->time[PCF50633_TI_WKDAY] = BIN2BCD(rtc->tm_wday);
-+ pcf->time[PCF50633_TI_DAY] = BIN2BCD(rtc->tm_mday);
-+ pcf->time[PCF50633_TI_MONTH] = BIN2BCD(rtc->tm_mon);
-+ pcf->time[PCF50633_TI_YEAR] = BIN2BCD(rtc->tm_year - 100);
- }
-
- static int pcf50633_rtc_ioctl(struct device *dev, unsigned int cmd,
-@@ -1574,24 +1579,30 @@ static int pcf50633_rtc_read_time(struct device *dev, struct rtc_time *tm)
- struct i2c_client *client = to_i2c_client(dev);
- struct pcf50633_data *pcf = i2c_get_clientdata(client);
- struct pcf50633_time pcf_tm;
-+ int ret;
-
- mutex_lock(&pcf->lock);
-- pcf_tm.sec = __reg_read(pcf, PCF50633_REG_RTCSC);
-- pcf_tm.min = __reg_read(pcf, PCF50633_REG_RTCMN);
-- pcf_tm.hour = __reg_read(pcf, PCF50633_REG_RTCHR);
-- pcf_tm.wkday = __reg_read(pcf, PCF50633_REG_RTCWD);
-- pcf_tm.day = __reg_read(pcf, PCF50633_REG_RTCDT);
-- pcf_tm.month = __reg_read(pcf, PCF50633_REG_RTCMT);
-- pcf_tm.year = __reg_read(pcf, PCF50633_REG_RTCYR);
-+
-+ ret = i2c_smbus_read_i2c_block_data(&pcf->client,
-+ PCF50633_REG_RTCSC,
-+ PCF50633_TI_EXTENT,
-+ &pcf_tm.time[0]);
-+ if (ret != PCF50633_TI_EXTENT)
-+ dev_err(dev, "Failed to read time :-(\n");
-+
- mutex_unlock(&pcf->lock);
-
-- DEBUGP("PCF_TIME: %02x.%02x.%02x %02x:%02x:%02x\n",
-- pcf_tm.day, pcf_tm.month, pcf_tm.year,
-- pcf_tm.hour, pcf_tm.min, pcf_tm.sec);
-+ dev_info(dev, "PCF_TIME: %02x.%02x.%02x %02x:%02x:%02x\n",
-+ pcf_tm.time[PCF50633_TI_DAY],
-+ pcf_tm.time[PCF50633_TI_MONTH],
-+ pcf_tm.time[PCF50633_TI_YEAR],
-+ pcf_tm.time[PCF50633_TI_HOUR],
-+ pcf_tm.time[PCF50633_TI_MIN],
-+ pcf_tm.time[PCF50633_TI_SEC]);
-
- pcf2rtc_time(tm, &pcf_tm);
-
-- DEBUGP("RTC_TIME: %u.%u.%u %u:%u:%u\n",
-+ dev_info(dev, "RTC_TIME: %u.%u.%u %u:%u:%u\n",
- tm->tm_mday, tm->tm_mon, tm->tm_year,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
-
-@@ -1603,24 +1614,30 @@ static int pcf50633_rtc_set_time(struct device *dev, struct rtc_time *tm)
- struct i2c_client *client = to_i2c_client(dev);
- struct pcf50633_data *pcf = i2c_get_clientdata(client);
- struct pcf50633_time pcf_tm;
-+ int ret;
-
-- DEBUGP("RTC_TIME: %u.%u.%u %u:%u:%u\n",
-+ dev_info(dev, "RTC_TIME: %u.%u.%u %u:%u:%u\n",
- tm->tm_mday, tm->tm_mon, tm->tm_year,
- tm->tm_hour, tm->tm_min, tm->tm_sec);
- rtc2pcf_time(&pcf_tm, tm);
-- DEBUGP("PCF_TIME: %02x.%02x.%02x %02x:%02x:%02x\n",
-- pcf_tm.day, pcf_tm.month, pcf_tm.year,
-- pcf_tm.hour, pcf_tm.min, pcf_tm.sec);
-+ dev_info(dev, "PCF_TIME: %02x.%02x.%02x %02x:%02x:%02x\n",
-+ pcf_tm.time[PCF50633_TI_DAY],
-+ pcf_tm.time[PCF50633_TI_MONTH],
-+ pcf_tm.time[PCF50633_TI_YEAR],
-+ pcf_tm.time[PCF50633_TI_HOUR],
-+ pcf_tm.time[PCF50633_TI_MIN],
-+ pcf_tm.time[PCF50633_TI_SEC]);
-
- mutex_lock(&pcf->lock);
- /* FIXME: disable second interrupt */
-- __reg_write(pcf, PCF50633_REG_RTCSC, pcf_tm.sec);
-- __reg_write(pcf, PCF50633_REG_RTCMN, pcf_tm.min);
-- __reg_write(pcf, PCF50633_REG_RTCHR, pcf_tm.hour);
-- __reg_write(pcf, PCF50633_REG_RTCWD, pcf_tm.wkday);
-- __reg_write(pcf, PCF50633_REG_RTCDT, pcf_tm.day);
-- __reg_write(pcf, PCF50633_REG_RTCMT, pcf_tm.month);
-- __reg_write(pcf, PCF50633_REG_RTCYR, pcf_tm.year);
-+
-+ ret = i2c_smbus_write_i2c_block_data(&pcf->client,
-+ PCF50633_REG_RTCSC,
-+ PCF50633_TI_EXTENT,
-+ &pcf_tm.time[0]);
-+ if (ret)
-+ dev_err(dev, "Failed to set time %d\n", ret);
-+
- /* FIXME: re-enable second interrupt */
- mutex_unlock(&pcf->lock);
-
-@@ -1632,17 +1649,20 @@ static int pcf50633_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
- struct i2c_client *client = to_i2c_client(dev);
- struct pcf50633_data *pcf = i2c_get_clientdata(client);
- struct pcf50633_time pcf_tm;
-+ int ret;
-
- mutex_lock(&pcf->lock);
-+
- alrm->enabled =
- __reg_read(pcf, PCF50633_REG_INT1M) & PCF50633_INT1_ALARM ? 0 : 1;
-- pcf_tm.sec = __reg_read(pcf, PCF50633_REG_RTCSCA);
-- pcf_tm.min = __reg_read(pcf, PCF50633_REG_RTCMNA);
-- pcf_tm.hour = __reg_read(pcf, PCF50633_REG_RTCHRA);
-- pcf_tm.wkday = __reg_read(pcf, PCF50633_REG_RTCWDA);
-- pcf_tm.day = __reg_read(pcf, PCF50633_REG_RTCDTA);
-- pcf_tm.month = __reg_read(pcf, PCF50633_REG_RTCMTA);
-- pcf_tm.year = __reg_read(pcf, PCF50633_REG_RTCYRA);
-+
-+ ret = i2c_smbus_read_i2c_block_data(&pcf->client,
-+ PCF50633_REG_RTCSCA,
-+ PCF50633_TI_EXTENT,
-+ &pcf_tm.time[0]);
-+ if (ret != PCF50633_TI_EXTENT)
-+ dev_err(dev, "Failed to read Alarm time :-(\n");
-+
- mutex_unlock(&pcf->lock);
-
- pcf2rtc_time(&alrm->time, &pcf_tm);
-@@ -1656,6 +1676,7 @@ static int pcf50633_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
- struct pcf50633_data *pcf = i2c_get_clientdata(client);
- struct pcf50633_time pcf_tm;
- u_int8_t irqmask;
-+ int ret;
-
- rtc2pcf_time(&pcf_tm, &alrm->time);
-
-@@ -1666,13 +1687,12 @@ static int pcf50633_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
- irqmask |= PCF50633_INT1_ALARM;
- __reg_write(pcf, PCF50633_REG_INT1M, irqmask);
-
-- __reg_write(pcf, PCF50633_REG_RTCSCA, pcf_tm.sec);
-- __reg_write(pcf, PCF50633_REG_RTCMNA, pcf_tm.min);
-- __reg_write(pcf, PCF50633_REG_RTCHRA, pcf_tm.hour);
-- __reg_write(pcf, PCF50633_REG_RTCWDA, pcf_tm.wkday);
-- __reg_write(pcf, PCF50633_REG_RTCDTA, pcf_tm.day);
-- __reg_write(pcf, PCF50633_REG_RTCMTA, pcf_tm.month);
-- __reg_write(pcf, PCF50633_REG_RTCYRA, pcf_tm.year);
-+ ret = i2c_smbus_write_i2c_block_data(&pcf->client,
-+ PCF50633_REG_RTCSCA,
-+ PCF50633_TI_EXTENT,
-+ &pcf_tm.time[0]);
-+ if (ret)
-+ dev_err(dev, "Failed to write alarm time :-( %d\n", ret);
-
- if (alrm->enabled) {
- /* (re-)enaable alarm interrupt */
---
-1.5.6.5
-