* [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
@ 2010-10-26 9:41 Priyanka Jain
2010-11-11 4:05 ` Jain Priyanka-B32167
0 siblings, 1 reply; 6+ messages in thread
From: Priyanka Jain @ 2010-10-26 9:41 UTC (permalink / raw)
To: rtc-linux, linuxppc-dev; +Cc: Priyanka Jain
PT7C4338 chip is being manufactured by Pericom Technology Inc.
It is a serial real-time clock which provides:
1)Low-power clock/calendar.
2)Programmable square-wave output.
It has 56 bytes of nonvolatile RAM.
Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
---
PT7C4338 RTC driver is verified on Freescale P1010RDB.
Changes for v1:
Incoperated Kumar Gala's review comments
-Removing board name from commit messages.
drivers/rtc/Kconfig | 9 ++
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-pt7c4338.c | 215 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 225 insertions(+), 0 deletions(-)
create mode 100644 drivers/rtc/rtc-pt7c4338.c
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 10ba12c..6ff0901 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -324,6 +324,15 @@ config RTC_DRV_RX8025
This driver can also be built as a module. If so, the module
will be called rtc-rx8025.
+config RTC_DRV_PT7C4338
+ tristate "Pericom Technology Inc. PT7C4338 RTC"
+ help
+ If you say yes here you get support for the Pericom Technology
+ Inc. PT7C4338 RTC chip.
+
+ This driver can also be built as a module. If so, the module
+ will be called rtc-pt7c4338.
+
endif # I2C
comment "SPI RTC drivers"
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
index 5adbba7..4014607 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -70,6 +70,7 @@ obj-$(CONFIG_RTC_DRV_PCF50633) += rtc-pcf50633.o
obj-$(CONFIG_RTC_DRV_PL030) += rtc-pl030.o
obj-$(CONFIG_RTC_DRV_PL031) += rtc-pl031.o
obj-$(CONFIG_RTC_DRV_PS3) += rtc-ps3.o
+obj-$(CONFIG_RTC_DRV_PT7C4338) += rtc-pt7c4338.o
obj-$(CONFIG_RTC_DRV_PXA) += rtc-pxa.o
obj-$(CONFIG_RTC_DRV_R9701) += rtc-r9701.o
obj-$(CONFIG_RTC_DRV_RP5C01) += rtc-rp5c01.o
diff --git a/drivers/rtc/rtc-pt7c4338.c b/drivers/rtc/rtc-pt7c4338.c
new file mode 100644
index 0000000..fca52cd
--- /dev/null
+++ b/drivers/rtc/rtc-pt7c4338.c
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2010 Freescale Semiconductor, Inc.
+ *
+ * Author: Priyanka Jain <Priyanka.Jain@freescale.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * This file provides Date & Time support (no alarms) for PT7C4338 chip.
+ *
+ * This file is based on drivers/rtc/rtc-ds1307.c
+ *
+ * PT7C4338 chip is manufactured by Pericom Technology Inc.
+ * It is a serial real-time clock which provides
+ * 1)Low-power clock/calendar.
+ * 2)Programmable square-wave output.
+ * It has 56 bytes of nonvolatile RAM.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/rtc.h>
+#include <linux/bcd.h>
+
+/* RTC register addresses */
+#define PT7C4338_REG_SECONDS 0x00
+#define PT7C4338_REG_MINUTES 0x01
+#define PT7C4338_REG_HOURS 0x02
+#define PT7C4338_REG_AMPM 0x02
+#define PT7C4338_REG_DAY 0x03
+#define PT7C4338_REG_DATE 0x04
+#define PT7C4338_REG_MONTH 0x05
+#define PT7C4338_REG_YEAR 0x06
+#define PT7C4338_REG_CTRL_STAT 0x07
+
+/* RTC second register address bit */
+#define PT7C4338_SEC_BIT_CH 0x80 /*Clock Halt (in Register 0)*/
+
+/* RTC control and status register bits */
+#define PT7C4338_CTRL_STAT_BIT_RS0 0x1 /*Rate select 0*/
+#define PT7C4338_CTRL_STAT_BIT_RS1 0x2 /*Rate select 1*/
+#define PT7C4338_CTRL_STAT_BIT_SQWE 0x10 /*Square Wave Enable*/
+#define PT7C4338_CTRL_STAT_BIT_OSF 0x20 /*Oscillator Stop Flag*/
+#define PT7C4338_CTRL_STAT_BIT_OUT 0x80 /*Output Level Control*/
+
+static const struct i2c_device_id pt7c4338_id[] = {
+ { "pt7c4338", 0 },
+ { }
+};
+MODULE_DEVICE_TABLE(i2c, pt7c4338_id);
+
+struct pt7c4338{
+ struct i2c_client *client;
+ struct rtc_device *rtc;
+};
+
+static int pt7c4338_read_time(struct device *dev, struct rtc_time *time)
+{
+ struct i2c_client *client = to_i2c_client(dev);
+ int ret;
+ u8 buf[7];
+ u8 year, month, day, hour, minute, second;
+ u8 week, twelve_hr, am_pm;
+
+ ret = i2c_smbus_read_i2c_block_data(client,
+ PT7C4338_REG_SECONDS, 7, buf);
+ if (ret < 0)
+ return ret;
+ if (ret < 7)
+ return -EIO;
+
+ second = buf[0];
+ minute = buf[1];
+ hour = buf[2];
+ week = buf[3];
+ day = buf[4];
+ month = buf[5];
+ year = buf[6];
+
+ /* Extract additional information for AM/PM */
+ twelve_hr = hour & 0x40;
+ am_pm = hour & 0x20;
+
+ /* Write to rtc_time structure */
+ time->tm_sec = bcd2bin(second & 0x7f);
+ time->tm_min = bcd2bin(minute & 0x7f);
+ if (twelve_hr) {
+ /* Convert to 24 hr */
+ if (am_pm)
+ time->tm_hour = bcd2bin(hour & 0x10) + 12;
+ else
+ time->tm_hour = bcd2bin(hour & 0xBF);
+ } else {
+ time->tm_hour = bcd2bin(hour);
+ }
+
+ time->tm_wday = bcd2bin(week & 0x07) - 1;
+ time->tm_mday = bcd2bin(day & 0x3f);
+ time->tm_mon = bcd2bin(month & 0x1F) - 1;
+ /* assume 20YY not 19YY */
+ time->tm_year = bcd2bin(year) + 100;
+
+ return 0;
+}
+
+static int pt7c4338_set_time(struct device *dev, struct rtc_time *time)
+{
+ struct i2c_client *client = to_i2c_client(dev);
+ u8 buf[7];
+
+ /* Extract time from rtc_time and load into pt7c4338*/
+ buf[0] = bin2bcd(time->tm_sec);
+ buf[1] = bin2bcd(time->tm_min);
+ buf[2] = bin2bcd(time->tm_hour);
+ buf[3] = bin2bcd(time->tm_wday + 1); /* Day of the week */
+ buf[4] = bin2bcd(time->tm_mday); /* Date */
+ buf[5] = bin2bcd(time->tm_mon + 1);
+
+ /* assume 20YY not 19YY */
+ if (time->tm_year >= 100)
+ buf[6] = bin2bcd(time->tm_year - 100);
+ else
+ buf[6] = bin2bcd(time->tm_year);
+
+ return i2c_smbus_write_i2c_block_data(client,
+ PT7C4338_REG_SECONDS, 7, buf);
+}
+
+static const struct rtc_class_ops pt7c4338_rtc_ops = {
+ .read_time = pt7c4338_read_time,
+ .set_time = pt7c4338_set_time,
+};
+
+static int pt7c4338_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ struct pt7c4338 *pt7c4338;
+ struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
+ int ret;
+
+ pt7c4338 = kzalloc(sizeof(struct pt7c4338), GFP_KERNEL);
+ if (!pt7c4338)
+ return -ENOMEM;
+
+ pt7c4338->client = client;
+ i2c_set_clientdata(client, pt7c4338);
+ pt7c4338->rtc = rtc_device_register(client->name, &client->dev,
+ &pt7c4338_rtc_ops, THIS_MODULE);
+ if (IS_ERR(pt7c4338->rtc)) {
+ ret = PTR_ERR(pt7c4338->rtc);
+ dev_err(&client->dev, "unable to register the class device\n");
+ goto out_free;
+ }
+
+ return 0;
+out_free:
+ i2c_set_clientdata(client, NULL);
+ kfree(pt7c4338);
+ return ret;
+}
+
+static int __devexit pt7c4338_remove(struct i2c_client *client)
+{
+ struct pt7c4338 *pt7c4338 = i2c_get_clientdata(client);
+
+ rtc_device_unregister(pt7c4338->rtc);
+ i2c_set_clientdata(client, NULL);
+ kfree(pt7c4338);
+ return 0;
+}
+
+static struct i2c_driver pt7c4338_driver = {
+ .driver = {
+ .name = "rtc-pt7c4338",
+ .owner = THIS_MODULE,
+ },
+ .probe = pt7c4338_probe,
+ .remove = __devexit_p(pt7c4338_remove),
+ .id_table = pt7c4338_id,
+};
+
+static int __init pt7c4338_init(void)
+{
+ return i2c_add_driver(&pt7c4338_driver);
+}
+
+static void __exit pt7c4338_exit(void)
+{
+ i2c_del_driver(&pt7c4338_driver);
+}
+
+module_init(pt7c4338_init);
+module_exit(pt7c4338_exit);
+
+MODULE_AUTHOR("Priyanka Jain <Priyanka.Jain@freescale.com>");
+MODULE_DESCRIPTION("pericom Technology Inc. PT7C4338 RTC Driver");
+MODULE_LICENSE("GPL");
--
1.6.5.6
^ permalink raw reply related [flat|nested] 6+ messages in thread* RE: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
2010-10-26 9:41 [PATCH][v1] RTC driver(Linux) for PT7C4338 chip Priyanka Jain
@ 2010-11-11 4:05 ` Jain Priyanka-B32167
0 siblings, 0 replies; 6+ messages in thread
From: Jain Priyanka-B32167 @ 2010-11-11 4:05 UTC (permalink / raw)
To: Jain Priyanka-B32167, rtc-linux, linuxppc-dev
Hi,
I am waiting for review comments and acknowledgement that this patch
will be pick up for open source.
Please acknowledge.
Regards
Priyanka Jain
=20
-----Original Message-----
From: Jain Priyanka-B32167=20
Sent: Tuesday, October 26, 2010 3:12 PM
To: rtc-linux@googlegroups.com; linuxppc-dev@lists.ozlabs.org
Cc: Jain Priyanka-B32167
Subject: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
PT7C4338 chip is being manufactured by Pericom Technology Inc.
It is a serial real-time clock which provides:
1)Low-power clock/calendar.
2)Programmable square-wave output.
It has 56 bytes of nonvolatile RAM.
Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
---
PT7C4338 RTC driver is verified on Freescale P1010RDB.=20
Changes for v1:
Incoperated Kumar Gala's review comments=20
-Removing board name from commit messages.
drivers/rtc/Kconfig | 9 ++
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-pt7c4338.c | 215
++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 225 insertions(+), 0 deletions(-) create mode 100644
drivers/rtc/rtc-pt7c4338.c
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index
10ba12c..6ff0901 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -324,6 +324,15 @@ config RTC_DRV_RX8025
This driver can also be built as a module. If so, the module
will be called rtc-rx8025.
=20
+config RTC_DRV_PT7C4338
+ tristate "Pericom Technology Inc. PT7C4338 RTC"
+ help
+ If you say yes here you get support for the Pericom Technology
+ Inc. PT7C4338 RTC chip.
+
+ This driver can also be built as a module. If so, the module
+ will be called rtc-pt7c4338.
+
endif # I2C
=20
comment "SPI RTC drivers"
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index
5adbba7..4014607 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -70,6 +70,7 @@ obj-$(CONFIG_RTC_DRV_PCF50633) +=3D
rtc-pcf50633.o
obj-$(CONFIG_RTC_DRV_PL030) +=3D rtc-pl030.o
obj-$(CONFIG_RTC_DRV_PL031) +=3D rtc-pl031.o
obj-$(CONFIG_RTC_DRV_PS3) +=3D rtc-ps3.o
+obj-$(CONFIG_RTC_DRV_PT7C4338) +=3D rtc-pt7c4338.o
obj-$(CONFIG_RTC_DRV_PXA) +=3D rtc-pxa.o
obj-$(CONFIG_RTC_DRV_R9701) +=3D rtc-r9701.o
obj-$(CONFIG_RTC_DRV_RP5C01) +=3D rtc-rp5c01.o
diff --git a/drivers/rtc/rtc-pt7c4338.c b/drivers/rtc/rtc-pt7c4338.c new
file mode 100644 index 0000000..fca52cd
--- /dev/null
+++ b/drivers/rtc/rtc-pt7c4338.c
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2010 Freescale Semiconductor, Inc.
+ *
+ * Author: Priyanka Jain <Priyanka.Jain@freescale.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * This file provides Date & Time support (no alarms) for PT7C4338
chip.
+ *
+ * This file is based on drivers/rtc/rtc-ds1307.c
+ *
+ * PT7C4338 chip is manufactured by Pericom Technology Inc.
+ * It is a serial real-time clock which provides
+ * 1)Low-power clock/calendar.
+ * 2)Programmable square-wave output.
+ * It has 56 bytes of nonvolatile RAM.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/rtc.h>
+#include <linux/bcd.h>
+
+/* RTC register addresses */
+#define PT7C4338_REG_SECONDS 0x00
+#define PT7C4338_REG_MINUTES 0x01
+#define PT7C4338_REG_HOURS 0x02
+#define PT7C4338_REG_AMPM 0x02
+#define PT7C4338_REG_DAY 0x03
+#define PT7C4338_REG_DATE 0x04
+#define PT7C4338_REG_MONTH 0x05
+#define PT7C4338_REG_YEAR 0x06
+#define PT7C4338_REG_CTRL_STAT 0x07
+
+/* RTC second register address bit */
+#define PT7C4338_SEC_BIT_CH 0x80 /*Clock Halt (in
Register 0)*/
+
+/* RTC control and status register bits */
+#define PT7C4338_CTRL_STAT_BIT_RS0 0x1 /*Rate select 0*/
+#define PT7C4338_CTRL_STAT_BIT_RS1 0x2 /*Rate select 1*/
+#define PT7C4338_CTRL_STAT_BIT_SQWE 0x10 /*Square Wave Enable*/
+#define PT7C4338_CTRL_STAT_BIT_OSF 0x20 /*Oscillator Stop Flag*/
+#define PT7C4338_CTRL_STAT_BIT_OUT 0x80 /*Output Level Control*/
+
+static const struct i2c_device_id pt7c4338_id[] =3D {
+ { "pt7c4338", 0 },
+ { }
+};
+MODULE_DEVICE_TABLE(i2c, pt7c4338_id);
+
+struct pt7c4338{
+ struct i2c_client *client;
+ struct rtc_device *rtc;
+};
+
+static int pt7c4338_read_time(struct device *dev, struct rtc_time=20
+*time) {
+ struct i2c_client *client =3D to_i2c_client(dev);
+ int ret;
+ u8 buf[7];
+ u8 year, month, day, hour, minute, second;
+ u8 week, twelve_hr, am_pm;
+
+ ret =3D i2c_smbus_read_i2c_block_data(client,
+ PT7C4338_REG_SECONDS, 7, buf);
+ if (ret < 0)
+ return ret;
+ if (ret < 7)
+ return -EIO;
+
+ second =3D buf[0];
+ minute =3D buf[1];
+ hour =3D buf[2];
+ week =3D buf[3];
+ day =3D buf[4];
+ month =3D buf[5];
+ year =3D buf[6];
+
+ /* Extract additional information for AM/PM */
+ twelve_hr =3D hour & 0x40;
+ am_pm =3D hour & 0x20;
+
+ /* Write to rtc_time structure */
+ time->tm_sec =3D bcd2bin(second & 0x7f);
+ time->tm_min =3D bcd2bin(minute & 0x7f);
+ if (twelve_hr) {
+ /* Convert to 24 hr */
+ if (am_pm)
+ time->tm_hour =3D bcd2bin(hour & 0x10) + 12;
+ else
+ time->tm_hour =3D bcd2bin(hour & 0xBF);
+ } else {
+ time->tm_hour =3D bcd2bin(hour);
+ }
+
+ time->tm_wday =3D bcd2bin(week & 0x07) - 1;
+ time->tm_mday =3D bcd2bin(day & 0x3f);
+ time->tm_mon =3D bcd2bin(month & 0x1F) - 1;
+ /* assume 20YY not 19YY */
+ time->tm_year =3D bcd2bin(year) + 100;
+
+ return 0;
+}
+
+static int pt7c4338_set_time(struct device *dev, struct rtc_time *time)
+{
+ struct i2c_client *client =3D to_i2c_client(dev);
+ u8 buf[7];
+
+ /* Extract time from rtc_time and load into pt7c4338*/
+ buf[0] =3D bin2bcd(time->tm_sec);
+ buf[1] =3D bin2bcd(time->tm_min);
+ buf[2] =3D bin2bcd(time->tm_hour);
+ buf[3] =3D bin2bcd(time->tm_wday + 1); /* Day of the week */
+ buf[4] =3D bin2bcd(time->tm_mday); /* Date */
+ buf[5] =3D bin2bcd(time->tm_mon + 1);
+
+ /* assume 20YY not 19YY */
+ if (time->tm_year >=3D 100)
+ buf[6] =3D bin2bcd(time->tm_year - 100);
+ else
+ buf[6] =3D bin2bcd(time->tm_year);
+
+ return i2c_smbus_write_i2c_block_data(client,
+ PT7C4338_REG_SECONDS, 7, buf);
+}
+
+static const struct rtc_class_ops pt7c4338_rtc_ops =3D {
+ .read_time =3D pt7c4338_read_time,
+ .set_time =3D pt7c4338_set_time,
+};
+
+static int pt7c4338_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ struct pt7c4338 *pt7c4338;
+ struct i2c_adapter *adapter =3D
to_i2c_adapter(client->dev.parent);
+ int ret;
+
+ pt7c4338 =3D kzalloc(sizeof(struct pt7c4338), GFP_KERNEL);
+ if (!pt7c4338)
+ return -ENOMEM;
+
+ pt7c4338->client =3D client;
+ i2c_set_clientdata(client, pt7c4338);
+ pt7c4338->rtc =3D rtc_device_register(client->name, &client->dev,
+ &pt7c4338_rtc_ops, THIS_MODULE);
+ if (IS_ERR(pt7c4338->rtc)) {
+ ret =3D PTR_ERR(pt7c4338->rtc);
+ dev_err(&client->dev, "unable to register the class
device\n");
+ goto out_free;
+ }
+
+ return 0;
+out_free:
+ i2c_set_clientdata(client, NULL);
+ kfree(pt7c4338);
+ return ret;
+}
+
+static int __devexit pt7c4338_remove(struct i2c_client *client) {
+ struct pt7c4338 *pt7c4338 =3D i2c_get_clientdata(client);
+
+ rtc_device_unregister(pt7c4338->rtc);
+ i2c_set_clientdata(client, NULL);
+ kfree(pt7c4338);
+ return 0;
+}
+
+static struct i2c_driver pt7c4338_driver =3D {
+ .driver =3D {
+ .name =3D "rtc-pt7c4338",
+ .owner =3D THIS_MODULE,
+ },
+ .probe =3D pt7c4338_probe,
+ .remove =3D __devexit_p(pt7c4338_remove),
+ .id_table =3D pt7c4338_id,
+};
+
+static int __init pt7c4338_init(void)
+{
+ return i2c_add_driver(&pt7c4338_driver); }
+
+static void __exit pt7c4338_exit(void)
+{
+ i2c_del_driver(&pt7c4338_driver);
+}
+
+module_init(pt7c4338_init);
+module_exit(pt7c4338_exit);
+
+MODULE_AUTHOR("Priyanka Jain <Priyanka.Jain@freescale.com>");=20
+MODULE_DESCRIPTION("pericom Technology Inc. PT7C4338 RTC Driver");=20
+MODULE_LICENSE("GPL");
--
1.6.5.6
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
@ 2011-02-08 4:31 Jain Priyanka-B32167
0 siblings, 0 replies; 6+ messages in thread
From: Jain Priyanka-B32167 @ 2011-02-08 4:31 UTC (permalink / raw)
To: Alessandro Zummo, Paul Gortmaker, rtc-linux@googlegroups.com,
linuxppc-dev@lists.ozlabs.org
Cc: Gupta Maneesh-B18878, Aggrwal Poonam-B10812, Gala Kumar-B11780,
Jain Priyanka-B32167
Hi,
Please review and acknowledge this patch.
Regards
Priyanka
> -----Original Message-----
> From: Jain Priyanka-B32167
> Sent: Monday, November 22, 2010 9:24 AM
> To: 'Alessandro Zummo'
> Cc: 'rtc-linux@googlegroups.com'
> Subject: FW: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
>=20
> Hi,
>=20
> Please review and acknowledge this patch.
>=20
> Thanks and Regards
> Priyanka
>=20
>=20
>=20
> -----Original Message-----
> From: Jain Priyanka-B32167
> Sent: Thursday, November 11, 2010 9:36 AM
> To: Jain Priyanka-B32167; rtc-linux@googlegroups.com; linuxppc-
> dev@lists.ozlabs.org
> Subject: RE: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
>=20
> Hi,
>=20
> I am waiting for review comments and acknowledgement that this patch will
> be pick up for open source.
> Please acknowledge.
>=20
> Regards
> Priyanka Jain
>=20
> -----Original Message-----
> From: Jain Priyanka-B32167
> Sent: Tuesday, October 26, 2010 3:12 PM
> To: rtc-linux@googlegroups.com; linuxppc-dev@lists.ozlabs.org
> Cc: Jain Priyanka-B32167
> Subject: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
>=20
> PT7C4338 chip is being manufactured by Pericom Technology Inc.
> It is a serial real-time clock which provides:
> 1)Low-power clock/calendar.
> 2)Programmable square-wave output.
> It has 56 bytes of nonvolatile RAM.
>=20
> Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
> ---
> PT7C4338 RTC driver is verified on Freescale P1010RDB.
> Changes for v1:
> Incoperated Kumar Gala's review comments
> -Removing board name from commit messages.
>=20
> drivers/rtc/Kconfig | 9 ++
> drivers/rtc/Makefile | 1 +
> drivers/rtc/rtc-pt7c4338.c | 215
> ++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 225 insertions(+), 0 deletions(-) create mode 100644
> drivers/rtc/rtc-pt7c4338.c
>=20
> diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index
> 10ba12c..6ff0901 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -324,6 +324,15 @@ config RTC_DRV_RX8025
> This driver can also be built as a module. If so, the module
> will be called rtc-rx8025.
>=20
> +config RTC_DRV_PT7C4338
> + tristate "Pericom Technology Inc. PT7C4338 RTC"
> + help
> + If you say yes here you get support for the Pericom Technology
> + Inc. PT7C4338 RTC chip.
> +
> + This driver can also be built as a module. If so, the module
> + will be called rtc-pt7c4338.
> +
> endif # I2C
>=20
> comment "SPI RTC drivers"
> diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index
> 5adbba7..4014607 100644
> --- a/drivers/rtc/Makefile
> +++ b/drivers/rtc/Makefile
> @@ -70,6 +70,7 @@ obj-$(CONFIG_RTC_DRV_PCF50633) +=3D rtc-pcf50633.o
> obj-$(CONFIG_RTC_DRV_PL030) +=3D rtc-pl030.o
> obj-$(CONFIG_RTC_DRV_PL031) +=3D rtc-pl031.o
> obj-$(CONFIG_RTC_DRV_PS3) +=3D rtc-ps3.o
> +obj-$(CONFIG_RTC_DRV_PT7C4338) +=3D rtc-pt7c4338.o
> obj-$(CONFIG_RTC_DRV_PXA) +=3D rtc-pxa.o
> obj-$(CONFIG_RTC_DRV_R9701) +=3D rtc-r9701.o
> obj-$(CONFIG_RTC_DRV_RP5C01) +=3D rtc-rp5c01.o
> diff --git a/drivers/rtc/rtc-pt7c4338.c b/drivers/rtc/rtc-pt7c4338.c new
> file mode 100644 index 0000000..fca52cd
> --- /dev/null
> +++ b/drivers/rtc/rtc-pt7c4338.c
> @@ -0,0 +1,215 @@
> +/*
> + * Copyright 2010 Freescale Semiconductor, Inc.
> + *
> + * Author: Priyanka Jain <Priyanka.Jain@freescale.com>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +/*
> + * This file provides Date & Time support (no alarms) for PT7C4338 chip.
> + *
> + * This file is based on drivers/rtc/rtc-ds1307.c
> + *
> + * PT7C4338 chip is manufactured by Pericom Technology Inc.
> + * It is a serial real-time clock which provides
> + * 1)Low-power clock/calendar.
> + * 2)Programmable square-wave output.
> + * It has 56 bytes of nonvolatile RAM.
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/i2c.h>
> +#include <linux/rtc.h>
> +#include <linux/bcd.h>
> +
> +/* RTC register addresses */
> +#define PT7C4338_REG_SECONDS 0x00
> +#define PT7C4338_REG_MINUTES 0x01
> +#define PT7C4338_REG_HOURS 0x02
> +#define PT7C4338_REG_AMPM 0x02
> +#define PT7C4338_REG_DAY 0x03
> +#define PT7C4338_REG_DATE 0x04
> +#define PT7C4338_REG_MONTH 0x05
> +#define PT7C4338_REG_YEAR 0x06
> +#define PT7C4338_REG_CTRL_STAT 0x07
> +
> +/* RTC second register address bit */
> +#define PT7C4338_SEC_BIT_CH 0x80 /*Clock Halt (in Register
> 0)*/
> +
> +/* RTC control and status register bits */
> +#define PT7C4338_CTRL_STAT_BIT_RS0 0x1 /*Rate select 0*/
> +#define PT7C4338_CTRL_STAT_BIT_RS1 0x2 /*Rate select 1*/
> +#define PT7C4338_CTRL_STAT_BIT_SQWE 0x10 /*Square Wave Enable*/
> +#define PT7C4338_CTRL_STAT_BIT_OSF 0x20 /*Oscillator Stop Flag*/
> +#define PT7C4338_CTRL_STAT_BIT_OUT 0x80 /*Output Level Control*/
> +
> +static const struct i2c_device_id pt7c4338_id[] =3D {
> + { "pt7c4338", 0 },
> + { }
> +};
> +MODULE_DEVICE_TABLE(i2c, pt7c4338_id);
> +
> +struct pt7c4338{
> + struct i2c_client *client;
> + struct rtc_device *rtc;
> +};
> +
> +static int pt7c4338_read_time(struct device *dev, struct rtc_time
> +*time) {
> + struct i2c_client *client =3D to_i2c_client(dev);
> + int ret;
> + u8 buf[7];
> + u8 year, month, day, hour, minute, second;
> + u8 week, twelve_hr, am_pm;
> +
> + ret =3D i2c_smbus_read_i2c_block_data(client,
> + PT7C4338_REG_SECONDS, 7, buf);
> + if (ret < 0)
> + return ret;
> + if (ret < 7)
> + return -EIO;
> +
> + second =3D buf[0];
> + minute =3D buf[1];
> + hour =3D buf[2];
> + week =3D buf[3];
> + day =3D buf[4];
> + month =3D buf[5];
> + year =3D buf[6];
> +
> + /* Extract additional information for AM/PM */
> + twelve_hr =3D hour & 0x40;
> + am_pm =3D hour & 0x20;
> +
> + /* Write to rtc_time structure */
> + time->tm_sec =3D bcd2bin(second & 0x7f);
> + time->tm_min =3D bcd2bin(minute & 0x7f);
> + if (twelve_hr) {
> + /* Convert to 24 hr */
> + if (am_pm)
> + time->tm_hour =3D bcd2bin(hour & 0x10) + 12;
> + else
> + time->tm_hour =3D bcd2bin(hour & 0xBF);
> + } else {
> + time->tm_hour =3D bcd2bin(hour);
> + }
> +
> + time->tm_wday =3D bcd2bin(week & 0x07) - 1;
> + time->tm_mday =3D bcd2bin(day & 0x3f);
> + time->tm_mon =3D bcd2bin(month & 0x1F) - 1;
> + /* assume 20YY not 19YY */
> + time->tm_year =3D bcd2bin(year) + 100;
> +
> + return 0;
> +}
> +
> +static int pt7c4338_set_time(struct device *dev, struct rtc_time *time)
> +{
> + struct i2c_client *client =3D to_i2c_client(dev);
> + u8 buf[7];
> +
> + /* Extract time from rtc_time and load into pt7c4338*/
> + buf[0] =3D bin2bcd(time->tm_sec);
> + buf[1] =3D bin2bcd(time->tm_min);
> + buf[2] =3D bin2bcd(time->tm_hour);
> + buf[3] =3D bin2bcd(time->tm_wday + 1); /* Day of the week */
> + buf[4] =3D bin2bcd(time->tm_mday); /* Date */
> + buf[5] =3D bin2bcd(time->tm_mon + 1);
> +
> + /* assume 20YY not 19YY */
> + if (time->tm_year >=3D 100)
> + buf[6] =3D bin2bcd(time->tm_year - 100);
> + else
> + buf[6] =3D bin2bcd(time->tm_year);
> +
> + return i2c_smbus_write_i2c_block_data(client,
> + PT7C4338_REG_SECONDS, 7, buf);
> +}
> +
> +static const struct rtc_class_ops pt7c4338_rtc_ops =3D {
> + .read_time =3D pt7c4338_read_time,
> + .set_time =3D pt7c4338_set_time,
> +};
> +
> +static int pt7c4338_probe(struct i2c_client *client,
> + const struct i2c_device_id *id)
> +{
> + struct pt7c4338 *pt7c4338;
> + struct i2c_adapter *adapter =3D to_i2c_adapter(client->dev.parent);
> + int ret;
> +
> + pt7c4338 =3D kzalloc(sizeof(struct pt7c4338), GFP_KERNEL);
> + if (!pt7c4338)
> + return -ENOMEM;
> +
> + pt7c4338->client =3D client;
> + i2c_set_clientdata(client, pt7c4338);
> + pt7c4338->rtc =3D rtc_device_register(client->name, &client->dev,
> + &pt7c4338_rtc_ops, THIS_MODULE);
> + if (IS_ERR(pt7c4338->rtc)) {
> + ret =3D PTR_ERR(pt7c4338->rtc);
> + dev_err(&client->dev, "unable to register the class
> device\n");
> + goto out_free;
> + }
> +
> + return 0;
> +out_free:
> + i2c_set_clientdata(client, NULL);
> + kfree(pt7c4338);
> + return ret;
> +}
> +
> +static int __devexit pt7c4338_remove(struct i2c_client *client) {
> + struct pt7c4338 *pt7c4338 =3D i2c_get_clientdata(client);
> +
> + rtc_device_unregister(pt7c4338->rtc);
> + i2c_set_clientdata(client, NULL);
> + kfree(pt7c4338);
> + return 0;
> +}
> +
> +static struct i2c_driver pt7c4338_driver =3D {
> + .driver =3D {
> + .name =3D "rtc-pt7c4338",
> + .owner =3D THIS_MODULE,
> + },
> + .probe =3D pt7c4338_probe,
> + .remove =3D __devexit_p(pt7c4338_remove),
> + .id_table =3D pt7c4338_id,
> +};
> +
> +static int __init pt7c4338_init(void)
> +{
> + return i2c_add_driver(&pt7c4338_driver); }
> +
> +static void __exit pt7c4338_exit(void)
> +{
> + i2c_del_driver(&pt7c4338_driver);
> +}
> +
> +module_init(pt7c4338_init);
> +module_exit(pt7c4338_exit);
> +
> +MODULE_AUTHOR("Priyanka Jain <Priyanka.Jain@freescale.com>");
> +MODULE_DESCRIPTION("pericom Technology Inc. PT7C4338 RTC Driver");
> +MODULE_LICENSE("GPL");
> --
> 1.6.5.6
^ permalink raw reply [flat|nested] 6+ messages in thread* RE: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
@ 2011-02-23 10:00 Jain Priyanka-B32167
2011-02-23 20:10 ` Timur Tabi
0 siblings, 1 reply; 6+ messages in thread
From: Jain Priyanka-B32167 @ 2011-02-23 10:00 UTC (permalink / raw)
To: Jain Priyanka-B32167, Alessandro Zummo, Paul Gortmaker,
rtc-linux@googlegroups.com, linuxppc-dev@lists.ozlabs.org,
Gala Kumar-B11780
Cc: Gupta Maneesh-B18878, Aggrwal Poonam-B10812
Hi,
=20
Please review and acknowledge this patch.
=20
Regards
Priyanka
> -----Original Message-----
> From: Jain Priyanka-B32167
> Sent: Tuesday, February 08, 2011 10:01 AM
> To: 'Alessandro Zummo'; 'Paul Gortmaker'; 'rtc-linux@googlegroups.com';
> 'linuxppc-dev@lists.ozlabs.org'
> Cc: Aggrwal Poonam-B10812; Gupta Maneesh-B18878; Jain Priyanka-B32167;
> Gala Kumar-B11780
> Subject: RE: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
>=20
> Hi,
>=20
> Please review and acknowledge this patch.
>=20
> Regards
> Priyanka
>=20
> > -----Original Message-----
> > From: Jain Priyanka-B32167
> > Sent: Monday, November 22, 2010 9:24 AM
> > To: 'Alessandro Zummo'
> > Cc: 'rtc-linux@googlegroups.com'
> > Subject: FW: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
> >
> > Hi,
> >
> > Please review and acknowledge this patch.
> >
> > Thanks and Regards
> > Priyanka
> >
> >
> >
> > -----Original Message-----
> > From: Jain Priyanka-B32167
> > Sent: Thursday, November 11, 2010 9:36 AM
> > To: Jain Priyanka-B32167; rtc-linux@googlegroups.com; linuxppc-
> > dev@lists.ozlabs.org
> > Subject: RE: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
> >
> > Hi,
> >
> > I am waiting for review comments and acknowledgement that this patch
> > will be pick up for open source.
> > Please acknowledge.
> >
> > Regards
> > Priyanka Jain
> >
> > -----Original Message-----
> > From: Jain Priyanka-B32167
> > Sent: Tuesday, October 26, 2010 3:12 PM
> > To: rtc-linux@googlegroups.com; linuxppc-dev@lists.ozlabs.org
> > Cc: Jain Priyanka-B32167
> > Subject: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
> >
> > PT7C4338 chip is being manufactured by Pericom Technology Inc.
> > It is a serial real-time clock which provides:
> > 1)Low-power clock/calendar.
> > 2)Programmable square-wave output.
> > It has 56 bytes of nonvolatile RAM.
> >
> > Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
> > ---
> > PT7C4338 RTC driver is verified on Freescale P1010RDB.
> > Changes for v1:
> > Incoperated Kumar Gala's review comments
> > -Removing board name from commit messages.
> >
> > drivers/rtc/Kconfig | 9 ++
> > drivers/rtc/Makefile | 1 +
> > drivers/rtc/rtc-pt7c4338.c | 215
> > ++++++++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 225 insertions(+), 0 deletions(-) create mode
> > 100644 drivers/rtc/rtc-pt7c4338.c
> >
> > diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index
> > 10ba12c..6ff0901 100644
> > --- a/drivers/rtc/Kconfig
> > +++ b/drivers/rtc/Kconfig
> > @@ -324,6 +324,15 @@ config RTC_DRV_RX8025
> > This driver can also be built as a module. If so, the module
> > will be called rtc-rx8025.
> >
> > +config RTC_DRV_PT7C4338
> > + tristate "Pericom Technology Inc. PT7C4338 RTC"
> > + help
> > + If you say yes here you get support for the Pericom Technology
> > + Inc. PT7C4338 RTC chip.
> > +
> > + This driver can also be built as a module. If so, the module
> > + will be called rtc-pt7c4338.
> > +
> > endif # I2C
> >
> > comment "SPI RTC drivers"
> > diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index
> > 5adbba7..4014607 100644
> > --- a/drivers/rtc/Makefile
> > +++ b/drivers/rtc/Makefile
> > @@ -70,6 +70,7 @@ obj-$(CONFIG_RTC_DRV_PCF50633) +=3D rtc-pcf50633.o
> > obj-$(CONFIG_RTC_DRV_PL030) +=3D rtc-pl030.o
> > obj-$(CONFIG_RTC_DRV_PL031) +=3D rtc-pl031.o
> > obj-$(CONFIG_RTC_DRV_PS3) +=3D rtc-ps3.o
> > +obj-$(CONFIG_RTC_DRV_PT7C4338) +=3D rtc-pt7c4338.o
> > obj-$(CONFIG_RTC_DRV_PXA) +=3D rtc-pxa.o
> > obj-$(CONFIG_RTC_DRV_R9701) +=3D rtc-r9701.o
> > obj-$(CONFIG_RTC_DRV_RP5C01) +=3D rtc-rp5c01.o
> > diff --git a/drivers/rtc/rtc-pt7c4338.c b/drivers/rtc/rtc-pt7c4338.c
> > new file mode 100644 index 0000000..fca52cd
> > --- /dev/null
> > +++ b/drivers/rtc/rtc-pt7c4338.c
> > @@ -0,0 +1,215 @@
> > +/*
> > + * Copyright 2010 Freescale Semiconductor, Inc.
> > + *
> > + * Author: Priyanka Jain <Priyanka.Jain@freescale.com>
> > + *
> > + * See file CREDITS for list of people who contributed to this
> > + * project.
> > + *
> > + * This program is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU General Public License as
> > + * published by the Free Software Foundation; either version 2 of
> > + * the License, or (at your option) any later version.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License
> > + * along with this program; if not, write to the Free Software
> > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> > + * MA 02111-1307 USA
> > + */
> > +
> > +/*
> > + * This file provides Date & Time support (no alarms) for PT7C4338
> chip.
> > + *
> > + * This file is based on drivers/rtc/rtc-ds1307.c
> > + *
> > + * PT7C4338 chip is manufactured by Pericom Technology Inc.
> > + * It is a serial real-time clock which provides
> > + * 1)Low-power clock/calendar.
> > + * 2)Programmable square-wave output.
> > + * It has 56 bytes of nonvolatile RAM.
> > + */
> > +
> > +#include <linux/kernel.h>
> > +#include <linux/module.h>
> > +#include <linux/i2c.h>
> > +#include <linux/rtc.h>
> > +#include <linux/bcd.h>
> > +
> > +/* RTC register addresses */
> > +#define PT7C4338_REG_SECONDS 0x00
> > +#define PT7C4338_REG_MINUTES 0x01
> > +#define PT7C4338_REG_HOURS 0x02
> > +#define PT7C4338_REG_AMPM 0x02
> > +#define PT7C4338_REG_DAY 0x03
> > +#define PT7C4338_REG_DATE 0x04
> > +#define PT7C4338_REG_MONTH 0x05
> > +#define PT7C4338_REG_YEAR 0x06
> > +#define PT7C4338_REG_CTRL_STAT 0x07
> > +
> > +/* RTC second register address bit */
> > +#define PT7C4338_SEC_BIT_CH 0x80 /*Clock Halt (in Register
> > 0)*/
> > +
> > +/* RTC control and status register bits */
> > +#define PT7C4338_CTRL_STAT_BIT_RS0 0x1 /*Rate select 0*/
> > +#define PT7C4338_CTRL_STAT_BIT_RS1 0x2 /*Rate select 1*/
> > +#define PT7C4338_CTRL_STAT_BIT_SQWE 0x10 /*Square Wave Enable*/
> > +#define PT7C4338_CTRL_STAT_BIT_OSF 0x20 /*Oscillator Stop Flag*/
> > +#define PT7C4338_CTRL_STAT_BIT_OUT 0x80 /*Output Level Control*/
> > +
> > +static const struct i2c_device_id pt7c4338_id[] =3D {
> > + { "pt7c4338", 0 },
> > + { }
> > +};
> > +MODULE_DEVICE_TABLE(i2c, pt7c4338_id);
> > +
> > +struct pt7c4338{
> > + struct i2c_client *client;
> > + struct rtc_device *rtc;
> > +};
> > +
> > +static int pt7c4338_read_time(struct device *dev, struct rtc_time
> > +*time) {
> > + struct i2c_client *client =3D to_i2c_client(dev);
> > + int ret;
> > + u8 buf[7];
> > + u8 year, month, day, hour, minute, second;
> > + u8 week, twelve_hr, am_pm;
> > +
> > + ret =3D i2c_smbus_read_i2c_block_data(client,
> > + PT7C4338_REG_SECONDS, 7, buf);
> > + if (ret < 0)
> > + return ret;
> > + if (ret < 7)
> > + return -EIO;
> > +
> > + second =3D buf[0];
> > + minute =3D buf[1];
> > + hour =3D buf[2];
> > + week =3D buf[3];
> > + day =3D buf[4];
> > + month =3D buf[5];
> > + year =3D buf[6];
> > +
> > + /* Extract additional information for AM/PM */
> > + twelve_hr =3D hour & 0x40;
> > + am_pm =3D hour & 0x20;
> > +
> > + /* Write to rtc_time structure */
> > + time->tm_sec =3D bcd2bin(second & 0x7f);
> > + time->tm_min =3D bcd2bin(minute & 0x7f);
> > + if (twelve_hr) {
> > + /* Convert to 24 hr */
> > + if (am_pm)
> > + time->tm_hour =3D bcd2bin(hour & 0x10) + 12;
> > + else
> > + time->tm_hour =3D bcd2bin(hour & 0xBF);
> > + } else {
> > + time->tm_hour =3D bcd2bin(hour);
> > + }
> > +
> > + time->tm_wday =3D bcd2bin(week & 0x07) - 1;
> > + time->tm_mday =3D bcd2bin(day & 0x3f);
> > + time->tm_mon =3D bcd2bin(month & 0x1F) - 1;
> > + /* assume 20YY not 19YY */
> > + time->tm_year =3D bcd2bin(year) + 100;
> > +
> > + return 0;
> > +}
> > +
> > +static int pt7c4338_set_time(struct device *dev, struct rtc_time
> > +*time) {
> > + struct i2c_client *client =3D to_i2c_client(dev);
> > + u8 buf[7];
> > +
> > + /* Extract time from rtc_time and load into pt7c4338*/
> > + buf[0] =3D bin2bcd(time->tm_sec);
> > + buf[1] =3D bin2bcd(time->tm_min);
> > + buf[2] =3D bin2bcd(time->tm_hour);
> > + buf[3] =3D bin2bcd(time->tm_wday + 1); /* Day of the week */
> > + buf[4] =3D bin2bcd(time->tm_mday); /* Date */
> > + buf[5] =3D bin2bcd(time->tm_mon + 1);
> > +
> > + /* assume 20YY not 19YY */
> > + if (time->tm_year >=3D 100)
> > + buf[6] =3D bin2bcd(time->tm_year - 100);
> > + else
> > + buf[6] =3D bin2bcd(time->tm_year);
> > +
> > + return i2c_smbus_write_i2c_block_data(client,
> > + PT7C4338_REG_SECONDS, 7, buf);
> > +}
> > +
> > +static const struct rtc_class_ops pt7c4338_rtc_ops =3D {
> > + .read_time =3D pt7c4338_read_time,
> > + .set_time =3D pt7c4338_set_time,
> > +};
> > +
> > +static int pt7c4338_probe(struct i2c_client *client,
> > + const struct i2c_device_id *id)
> > +{
> > + struct pt7c4338 *pt7c4338;
> > + struct i2c_adapter *adapter =3D to_i2c_adapter(client->dev.parent);
> > + int ret;
> > +
> > + pt7c4338 =3D kzalloc(sizeof(struct pt7c4338), GFP_KERNEL);
> > + if (!pt7c4338)
> > + return -ENOMEM;
> > +
> > + pt7c4338->client =3D client;
> > + i2c_set_clientdata(client, pt7c4338);
> > + pt7c4338->rtc =3D rtc_device_register(client->name, &client->dev,
> > + &pt7c4338_rtc_ops, THIS_MODULE);
> > + if (IS_ERR(pt7c4338->rtc)) {
> > + ret =3D PTR_ERR(pt7c4338->rtc);
> > + dev_err(&client->dev, "unable to register the class
> > device\n");
> > + goto out_free;
> > + }
> > +
> > + return 0;
> > +out_free:
> > + i2c_set_clientdata(client, NULL);
> > + kfree(pt7c4338);
> > + return ret;
> > +}
> > +
> > +static int __devexit pt7c4338_remove(struct i2c_client *client) {
> > + struct pt7c4338 *pt7c4338 =3D i2c_get_clientdata(client);
> > +
> > + rtc_device_unregister(pt7c4338->rtc);
> > + i2c_set_clientdata(client, NULL);
> > + kfree(pt7c4338);
> > + return 0;
> > +}
> > +
> > +static struct i2c_driver pt7c4338_driver =3D {
> > + .driver =3D {
> > + .name =3D "rtc-pt7c4338",
> > + .owner =3D THIS_MODULE,
> > + },
> > + .probe =3D pt7c4338_probe,
> > + .remove =3D __devexit_p(pt7c4338_remove),
> > + .id_table =3D pt7c4338_id,
> > +};
> > +
> > +static int __init pt7c4338_init(void) {
> > + return i2c_add_driver(&pt7c4338_driver); }
> > +
> > +static void __exit pt7c4338_exit(void) {
> > + i2c_del_driver(&pt7c4338_driver);
> > +}
> > +
> > +module_init(pt7c4338_init);
> > +module_exit(pt7c4338_exit);
> > +
> > +MODULE_AUTHOR("Priyanka Jain <Priyanka.Jain@freescale.com>");
> > +MODULE_DESCRIPTION("pericom Technology Inc. PT7C4338 RTC Driver");
> > +MODULE_LICENSE("GPL");
> > --
> > 1.6.5.6
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
2011-02-23 10:00 Jain Priyanka-B32167
@ 2011-02-23 20:10 ` Timur Tabi
2011-02-28 4:12 ` Jain Priyanka-B32167
0 siblings, 1 reply; 6+ messages in thread
From: Timur Tabi @ 2011-02-23 20:10 UTC (permalink / raw)
To: Alessandro Zummo
Cc: Paul Gortmaker, Aggrwal Poonam-B10812, rtc-linux@googlegroups.com,
Jain Priyanka-B32167, Gala Kumar-B11780, Gupta Maneesh-B18878,
linuxppc-dev@lists.ozlabs.org
On Wed, Feb 23, 2011 at 4:00 AM, Jain Priyanka-B32167
<B32167@freescale.com> wrote:
> Hi,
>
> =A0Please review and acknowledge this patch.
Alessandro,
Aren't you the RTC maintainer? Priyanka has been asking for months
for you to review and ack this patch, and then pick up for the next
kernel release. Is there something else that she needs to do to get
your attention? You can find it in patchworks here:
http://patchwork.ozlabs.org/patch/69206/
Notice that it was originally posted back in October, so it could have
been included in 2.6.38.
--=20
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
2011-02-23 20:10 ` Timur Tabi
@ 2011-02-28 4:12 ` Jain Priyanka-B32167
0 siblings, 0 replies; 6+ messages in thread
From: Jain Priyanka-B32167 @ 2011-02-28 4:12 UTC (permalink / raw)
To: Alessandro Zummo, Paul Gortmaker, linuxppc-dev@lists.ozlabs.org
Cc: Gala Kumar-B11780, Gupta Maneesh-B18878, Timur Tabi,
rtc-linux@googlegroups.com, Aggrwal Poonam-B10812
Hi,
I have posted RTC driver patch back in October, 2010 with reminders for rev=
iew in between but still waiting for review and acknowledgement.
Linux Maintainer list suggests Alessandro and Paul as maintainer which are =
already in To-- list.
Please let me know what else I need to do to get it review and acknowledge.
Thanks
Priyanka
> -----Original Message-----
> From: Timur Tabi [mailto:timur.tabi@gmail.com]
> Sent: Thursday, February 24, 2011 1:41 AM
> To: Alessandro Zummo
> Cc: Jain Priyanka-B32167; Paul Gortmaker; rtc-linux@googlegroups.com;
> linuxppc-dev@lists.ozlabs.org; Gala Kumar-B11780; Gupta Maneesh-B18878;
> Aggrwal Poonam-B10812
> Subject: Re: [PATCH][v1] RTC driver(Linux) for PT7C4338 chip.
>=20
> On Wed, Feb 23, 2011 at 4:00 AM, Jain Priyanka-B32167
> <B32167@freescale.com> wrote:
> > Hi,
> >
> > =A0Please review and acknowledge this patch.
>=20
> Alessandro,
>=20
> Aren't you the RTC maintainer? Priyanka has been asking for months for
> you to review and ack this patch, and then pick up for the next kernel
> release. Is there something else that she needs to do to get your
> attention? You can find it in patchworks here:
>=20
> http://patchwork.ozlabs.org/patch/69206/
>=20
> Notice that it was originally posted back in October, so it could have
> been included in 2.6.38.
>=20
> --
> Timur Tabi
> Linux kernel developer at Freescale
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-02-28 4:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-26 9:41 [PATCH][v1] RTC driver(Linux) for PT7C4338 chip Priyanka Jain
2010-11-11 4:05 ` Jain Priyanka-B32167
-- strict thread matches above, loose matches on Subject: below --
2011-02-08 4:31 Jain Priyanka-B32167
2011-02-23 10:00 Jain Priyanka-B32167
2011-02-23 20:10 ` Timur Tabi
2011-02-28 4:12 ` Jain Priyanka-B32167
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox