All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <41FE7368.1000307@mvista.com>

diff --git a/a/1.txt b/N1/1.txt
index 234b03e..fa9da81 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -21,260 +21,3 @@ Mark
 
 Signed-off-by: Mark A. Greer <mgreer@mvista.com>
 --
--------------- next part --------------
-diff -Nru a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig
---- a/drivers/i2c/chips/Kconfig	2005-01-31 10:33:34 -07:00
-+++ b/drivers/i2c/chips/Kconfig	2005-01-31 10:33:34 -07:00
-@@ -371,4 +371,13 @@
- 	  This driver can also be built as a module.  If so, the module
- 	  will be called isp1301_omap.
- 
-+config SENSORS_M41T00
-+	tristate "ST M41T00 RTC chip"
-+	depends on I2C && PPC32
-+	help
-+	  If you say yes here you get support for the ST M41T00 RTC chip.
-+
-+	  This driver can also be built as a module.  If so, the module
-+	  will be called i2c-m41t00.
-+
- endmenu
-diff -Nru a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile
---- a/drivers/i2c/chips/Makefile	2005-01-31 10:33:34 -07:00
-+++ b/drivers/i2c/chips/Makefile	2005-01-31 10:33:34 -07:00
-@@ -26,6 +26,7 @@
- obj-$(CONFIG_SENSORS_LM87)	+= lm87.o
- obj-$(CONFIG_SENSORS_LM90)	+= lm90.o
- obj-$(CONFIG_SENSORS_MAX1619)	+= max1619.o
-+obj-$(CONFIG_SENSORS_M41T00)	+= m41t00.o
- obj-$(CONFIG_SENSORS_PC87360)	+= pc87360.o
- obj-$(CONFIG_SENSORS_PCF8574)	+= pcf8574.o
- obj-$(CONFIG_SENSORS_PCF8591)	+= pcf8591.o
-diff -Nru a/drivers/i2c/chips/m41t00.c b/drivers/i2c/chips/m41t00.c
---- /dev/null	Wed Dec 31 16:00:00 196900
-+++ b/drivers/i2c/chips/m41t00.c	2005-01-31 10:33:34 -07:00
-@@ -0,0 +1,224 @@
-+/*
-+ * drivers/i2c/chips/m41t00.c
-+ *
-+ * I2C client/driver for the ST M41T00 Real-Time Clock chip.
-+ *
-+ * Author: Mark A. Greer <mgreer@mvista.com>
-+ *
-+ * 2005 (c) MontaVista Software, Inc. This file is licensed under
-+ * the terms of the GNU General Public License version 2. This program
-+ * is licensed "as is" without any warranty of any kind, whether express
-+ * or implied.
-+ */
-+/*
-+ * This i2c client/driver wedges between the drivers/char/genrtc.c RTC
-+ * interface and the SMBus interface of the i2c subsystem.
-+ * It would be more efficient to use i2c msgs/i2c_transfer directly but, as
-+ * recommened in .../Documentation/i2c/writing-clients section
-+ * "Sending and receiving", using SMBus level communication is preferred.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/interrupt.h>
-+#include <linux/i2c.h>
-+#include <linux/rtc.h>
-+#include <linux/bcd.h>
-+
-+#include <asm/time.h>
-+#include <asm/rtc.h>
-+
-+static DECLARE_MUTEX(m41t00_mutex);
-+
-+struct m41t00_data {
-+	struct i2c_client client;
-+};
-+
-+static struct i2c_driver m41t00_driver;
-+static struct i2c_client *save_client;
-+
-+static unsigned short ignore[] = { I2C_CLIENT_END };
-+static unsigned short normal_addr[] = { 0x68, I2C_CLIENT_END };
-+
-+static struct i2c_client_address_data addr_data = {
-+	.normal_i2c		= normal_addr,
-+	.normal_i2c_range	= ignore,
-+	.probe			= ignore,
-+	.probe_range		= ignore,
-+	.ignore			= ignore,
-+	.ignore_range		= ignore,
-+	.force			= ignore,
-+};
-+
-+ulong
-+m41t00_get_rtc_time(void)
-+{
-+	s32	sec, min, hour, day, mon, year;
-+
-+	down(&m41t00_mutex);
-+	if (((sec = i2c_smbus_read_byte_data(save_client, 0)) < 0)
-+		|| ((min  = i2c_smbus_read_byte_data(save_client, 1)) < 0)
-+		|| ((hour = i2c_smbus_read_byte_data(save_client, 2)) < 0)
-+		|| ((day  = i2c_smbus_read_byte_data(save_client, 4)) < 0)
-+		|| ((mon  = i2c_smbus_read_byte_data(save_client, 5)) < 0)
-+		|| ((year = i2c_smbus_read_byte_data(save_client, 6)) < 0)) {
-+
-+		dev_warn(&save_client->dev, "m41t00: can't read rtc chip\n");
-+		sec = min = hour = day = mon = year = 0;
-+	}
-+	up(&m41t00_mutex);
-+	
-+	sec &= 0x7f;
-+	min &= 0x7f;
-+	hour &= 0x3f;
-+	day &= 0x3f;
-+	mon &= 0x1f;
-+	year &= 0xff;
-+
-+	BCD_TO_BIN(sec);
-+	BCD_TO_BIN(min);
-+	BCD_TO_BIN(hour);
-+	BCD_TO_BIN(day);
-+	BCD_TO_BIN(mon);
-+	BCD_TO_BIN(year);
-+
-+	year += 1900;
-+	if (year < 1970)
-+		year += 100;
-+
-+	return mktime(year, mon, day, hour, min, sec);
-+}
-+
-+static void
-+m41t00_set_tlet(ulong arg)
-+{
-+	struct rtc_time	tm;
-+	ulong	nowtime = *(ulong *)arg;
-+
-+	to_tm(nowtime, &tm);
-+	tm.tm_year = (tm.tm_year - 1900) % 100;
-+
-+	BIN_TO_BCD(tm.tm_sec);
-+	BIN_TO_BCD(tm.tm_min);
-+	BIN_TO_BCD(tm.tm_hour);
-+	BIN_TO_BCD(tm.tm_mon);
-+	BIN_TO_BCD(tm.tm_mday);
-+	BIN_TO_BCD(tm.tm_year);
-+
-+	down(&m41t00_mutex);
-+	if ((i2c_smbus_write_byte_data(save_client, 0, tm.tm_sec & 0x7f) < 0)
-+		|| (i2c_smbus_write_byte_data(save_client, 1, tm.tm_min & 0x7f)
-+			< 0)
-+		|| (i2c_smbus_write_byte_data(save_client, 2, tm.tm_hour & 0x7f)
-+			< 0)
-+		|| (i2c_smbus_write_byte_data(save_client, 4, tm.tm_mday & 0x7f)
-+			< 0)
-+		|| (i2c_smbus_write_byte_data(save_client, 5, tm.tm_mon & 0x7f)
-+			< 0)
-+		|| (i2c_smbus_write_byte_data(save_client, 6, tm.tm_year & 0x7f)
-+			< 0))
-+
-+		dev_warn(&save_client->dev,"m41t00: can't write to rtc chip\n");
-+
-+	up(&m41t00_mutex);
-+	return;
-+}
-+
-+ulong	new_time;
-+
-+DECLARE_TASKLET_DISABLED(m41t00_tasklet, m41t00_set_tlet, (ulong)&new_time);
-+
-+int
-+m41t00_set_rtc_time(ulong nowtime)
-+{
-+	new_time = nowtime;
-+
-+	if (in_interrupt())
-+		tasklet_schedule(&m41t00_tasklet);
-+	else
-+		m41t00_set_tlet((ulong)&new_time);
-+
-+	return 0;
-+}
-+
-+/*
-+ *****************************************************************************
-+ *
-+ *	Driver Interface
-+ *
-+ *****************************************************************************
-+ */
-+static int __devinit
-+m41t00_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+	struct i2c_client *new_client;
-+	struct m41t00_data *drv_data;
-+	int rc;
-+
-+	drv_data = kmalloc(sizeof(struct m41t00_data), GFP_KERNEL);
-+	if (!drv_data)
-+		return -ENOMEM;
-+
-+	memset(drv_data, 0, sizeof(struct m41t00_data));
-+	new_client = &drv_data->client;
-+
-+	strncpy(new_client->name, "m41t00", I2C_NAME_SIZE);
-+	i2c_set_clientdata(new_client, drv_data);
-+	new_client->id = m41t00_driver.id;
-+	new_client->flags = I2C_DF_NOTIFY;
-+	new_client->addr = addr;
-+	new_client->adapter = adap;
-+	new_client->driver = &m41t00_driver;
-+
-+	if ((rc = i2c_attach_client(new_client)) != 0) {
-+		kfree(drv_data);
-+		return rc;
-+	}
-+
-+	save_client = new_client;
-+	return 0;
-+}
-+
-+static int __devinit
-+m41t00_attach(struct i2c_adapter *adap)
-+{
-+	return i2c_probe(adap, &addr_data, m41t00_probe);
-+}
-+
-+static int __devexit
-+m41t00_detach(struct i2c_client *client)
-+{
-+	i2c_detach_client(client);
-+	kfree(i2c_get_clientdata(client));
-+	tasklet_kill(&m41t00_tasklet);
-+	return 0;
-+}
-+
-+static struct i2c_driver m41t00_driver = {
-+	.owner		= THIS_MODULE,
-+	.name		= "M41T00",
-+	.id		= I2C_DRIVERID_STM41T00,
-+	.flags		= I2C_DF_NOTIFY,
-+	.attach_adapter	= m41t00_attach,
-+	.detach_client	= m41t00_detach,
-+};
-+
-+static int __devinit
-+m41t00_init(void)
-+{
-+	return i2c_add_driver(&m41t00_driver);
-+}
-+
-+static void __devexit
-+m41t00_exit(void)
-+{
-+	i2c_del_driver(&m41t00_driver);
-+	return;
-+}
-+
-+module_init(m41t00_init);
-+module_exit(m41t00_exit);
-+
-+MODULE_AUTHOR("Mark A. Greer <mgreer@mvista.com>");
-+MODULE_DESCRIPTION("ST Microelectronics M41T00 RTC I2C Client Driver");
-+MODULE_LICENSE("GPL");
diff --git a/N1/2.hdr b/N1/2.hdr
new file mode 100644
index 0000000..8cd1f13
--- /dev/null
+++ b/N1/2.hdr
@@ -0,0 +1,5 @@
+Content-Type: text/plain;
+ name="m41t00.patch"
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline;
+ filename="m41t00.patch"
diff --git a/N1/2.txt b/N1/2.txt
new file mode 100644
index 0000000..7a97024
--- /dev/null
+++ b/N1/2.txt
@@ -0,0 +1,256 @@
+diff -Nru a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig
+--- a/drivers/i2c/chips/Kconfig	2005-01-31 10:33:34 -07:00
++++ b/drivers/i2c/chips/Kconfig	2005-01-31 10:33:34 -07:00
+@@ -371,4 +371,13 @@
+ 	  This driver can also be built as a module.  If so, the module
+ 	  will be called isp1301_omap.
+ 
++config SENSORS_M41T00
++	tristate "ST M41T00 RTC chip"
++	depends on I2C && PPC32
++	help
++	  If you say yes here you get support for the ST M41T00 RTC chip.
++
++	  This driver can also be built as a module.  If so, the module
++	  will be called i2c-m41t00.
++
+ endmenu
+diff -Nru a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile
+--- a/drivers/i2c/chips/Makefile	2005-01-31 10:33:34 -07:00
++++ b/drivers/i2c/chips/Makefile	2005-01-31 10:33:34 -07:00
+@@ -26,6 +26,7 @@
+ obj-$(CONFIG_SENSORS_LM87)	+= lm87.o
+ obj-$(CONFIG_SENSORS_LM90)	+= lm90.o
+ obj-$(CONFIG_SENSORS_MAX1619)	+= max1619.o
++obj-$(CONFIG_SENSORS_M41T00)	+= m41t00.o
+ obj-$(CONFIG_SENSORS_PC87360)	+= pc87360.o
+ obj-$(CONFIG_SENSORS_PCF8574)	+= pcf8574.o
+ obj-$(CONFIG_SENSORS_PCF8591)	+= pcf8591.o
+diff -Nru a/drivers/i2c/chips/m41t00.c b/drivers/i2c/chips/m41t00.c
+--- /dev/null	Wed Dec 31 16:00:00 196900
++++ b/drivers/i2c/chips/m41t00.c	2005-01-31 10:33:34 -07:00
+@@ -0,0 +1,224 @@
++/*
++ * drivers/i2c/chips/m41t00.c
++ *
++ * I2C client/driver for the ST M41T00 Real-Time Clock chip.
++ *
++ * Author: Mark A. Greer <mgreer@mvista.com>
++ *
++ * 2005 (c) MontaVista Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++/*
++ * This i2c client/driver wedges between the drivers/char/genrtc.c RTC
++ * interface and the SMBus interface of the i2c subsystem.
++ * It would be more efficient to use i2c msgs/i2c_transfer directly but, as
++ * recommened in .../Documentation/i2c/writing-clients section
++ * "Sending and receiving", using SMBus level communication is preferred.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++#include <linux/i2c.h>
++#include <linux/rtc.h>
++#include <linux/bcd.h>
++
++#include <asm/time.h>
++#include <asm/rtc.h>
++
++static DECLARE_MUTEX(m41t00_mutex);
++
++struct m41t00_data {
++	struct i2c_client client;
++};
++
++static struct i2c_driver m41t00_driver;
++static struct i2c_client *save_client;
++
++static unsigned short ignore[] = { I2C_CLIENT_END };
++static unsigned short normal_addr[] = { 0x68, I2C_CLIENT_END };
++
++static struct i2c_client_address_data addr_data = {
++	.normal_i2c		= normal_addr,
++	.normal_i2c_range	= ignore,
++	.probe			= ignore,
++	.probe_range		= ignore,
++	.ignore			= ignore,
++	.ignore_range		= ignore,
++	.force			= ignore,
++};
++
++ulong
++m41t00_get_rtc_time(void)
++{
++	s32	sec, min, hour, day, mon, year;
++
++	down(&m41t00_mutex);
++	if (((sec = i2c_smbus_read_byte_data(save_client, 0)) < 0)
++		|| ((min  = i2c_smbus_read_byte_data(save_client, 1)) < 0)
++		|| ((hour = i2c_smbus_read_byte_data(save_client, 2)) < 0)
++		|| ((day  = i2c_smbus_read_byte_data(save_client, 4)) < 0)
++		|| ((mon  = i2c_smbus_read_byte_data(save_client, 5)) < 0)
++		|| ((year = i2c_smbus_read_byte_data(save_client, 6)) < 0)) {
++
++		dev_warn(&save_client->dev, "m41t00: can't read rtc chip\n");
++		sec = min = hour = day = mon = year = 0;
++	}
++	up(&m41t00_mutex);
++	
++	sec &= 0x7f;
++	min &= 0x7f;
++	hour &= 0x3f;
++	day &= 0x3f;
++	mon &= 0x1f;
++	year &= 0xff;
++
++	BCD_TO_BIN(sec);
++	BCD_TO_BIN(min);
++	BCD_TO_BIN(hour);
++	BCD_TO_BIN(day);
++	BCD_TO_BIN(mon);
++	BCD_TO_BIN(year);
++
++	year += 1900;
++	if (year < 1970)
++		year += 100;
++
++	return mktime(year, mon, day, hour, min, sec);
++}
++
++static void
++m41t00_set_tlet(ulong arg)
++{
++	struct rtc_time	tm;
++	ulong	nowtime = *(ulong *)arg;
++
++	to_tm(nowtime, &tm);
++	tm.tm_year = (tm.tm_year - 1900) % 100;
++
++	BIN_TO_BCD(tm.tm_sec);
++	BIN_TO_BCD(tm.tm_min);
++	BIN_TO_BCD(tm.tm_hour);
++	BIN_TO_BCD(tm.tm_mon);
++	BIN_TO_BCD(tm.tm_mday);
++	BIN_TO_BCD(tm.tm_year);
++
++	down(&m41t00_mutex);
++	if ((i2c_smbus_write_byte_data(save_client, 0, tm.tm_sec & 0x7f) < 0)
++		|| (i2c_smbus_write_byte_data(save_client, 1, tm.tm_min & 0x7f)
++			< 0)
++		|| (i2c_smbus_write_byte_data(save_client, 2, tm.tm_hour & 0x7f)
++			< 0)
++		|| (i2c_smbus_write_byte_data(save_client, 4, tm.tm_mday & 0x7f)
++			< 0)
++		|| (i2c_smbus_write_byte_data(save_client, 5, tm.tm_mon & 0x7f)
++			< 0)
++		|| (i2c_smbus_write_byte_data(save_client, 6, tm.tm_year & 0x7f)
++			< 0))
++
++		dev_warn(&save_client->dev,"m41t00: can't write to rtc chip\n");
++
++	up(&m41t00_mutex);
++	return;
++}
++
++ulong	new_time;
++
++DECLARE_TASKLET_DISABLED(m41t00_tasklet, m41t00_set_tlet, (ulong)&new_time);
++
++int
++m41t00_set_rtc_time(ulong nowtime)
++{
++	new_time = nowtime;
++
++	if (in_interrupt())
++		tasklet_schedule(&m41t00_tasklet);
++	else
++		m41t00_set_tlet((ulong)&new_time);
++
++	return 0;
++}
++
++/*
++ *****************************************************************************
++ *
++ *	Driver Interface
++ *
++ *****************************************************************************
++ */
++static int __devinit
++m41t00_probe(struct i2c_adapter *adap, int addr, int kind)
++{
++	struct i2c_client *new_client;
++	struct m41t00_data *drv_data;
++	int rc;
++
++	drv_data = kmalloc(sizeof(struct m41t00_data), GFP_KERNEL);
++	if (!drv_data)
++		return -ENOMEM;
++
++	memset(drv_data, 0, sizeof(struct m41t00_data));
++	new_client = &drv_data->client;
++
++	strncpy(new_client->name, "m41t00", I2C_NAME_SIZE);
++	i2c_set_clientdata(new_client, drv_data);
++	new_client->id = m41t00_driver.id;
++	new_client->flags = I2C_DF_NOTIFY;
++	new_client->addr = addr;
++	new_client->adapter = adap;
++	new_client->driver = &m41t00_driver;
++
++	if ((rc = i2c_attach_client(new_client)) != 0) {
++		kfree(drv_data);
++		return rc;
++	}
++
++	save_client = new_client;
++	return 0;
++}
++
++static int __devinit
++m41t00_attach(struct i2c_adapter *adap)
++{
++	return i2c_probe(adap, &addr_data, m41t00_probe);
++}
++
++static int __devexit
++m41t00_detach(struct i2c_client *client)
++{
++	i2c_detach_client(client);
++	kfree(i2c_get_clientdata(client));
++	tasklet_kill(&m41t00_tasklet);
++	return 0;
++}
++
++static struct i2c_driver m41t00_driver = {
++	.owner		= THIS_MODULE,
++	.name		= "M41T00",
++	.id		= I2C_DRIVERID_STM41T00,
++	.flags		= I2C_DF_NOTIFY,
++	.attach_adapter	= m41t00_attach,
++	.detach_client	= m41t00_detach,
++};
++
++static int __devinit
++m41t00_init(void)
++{
++	return i2c_add_driver(&m41t00_driver);
++}
++
++static void __devexit
++m41t00_exit(void)
++{
++	i2c_del_driver(&m41t00_driver);
++	return;
++}
++
++module_init(m41t00_init);
++module_exit(m41t00_exit);
++
++MODULE_AUTHOR("Mark A. Greer <mgreer@mvista.com>");
++MODULE_DESCRIPTION("ST Microelectronics M41T00 RTC I2C Client Driver");
++MODULE_LICENSE("GPL");
diff --git a/a/content_digest b/N1/content_digest
index 35a07cc..f45a0e5 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,10 +1,10 @@
- "From\0mgreer@mvista.com (Mark A. Greer)\0"
+ "From\0Mark A. Greer <mgreer@mvista.com>\0"
  "Subject\0[PATCH][I2C] ST M41T00 I2C RTC chip driver\0"
- "Date\0Thu, 19 May 2005 06:25:34 +0000\0"
+ "Date\0Mon, 31 Jan 2005 11:05:28 -0700\0"
  "To\0Greg KH <greg@kroah.com>\0"
  "Cc\0LM Sensors <sensors@stimpy.netroedge.com>"
  " lkml <linux-kernel@vger.kernel.org>\0"
- "\00:1\0"
+ "\01:1\0"
  "b\0"
  "This patch adds support for the ST M41T00 RTC chip.\n"
  "\n"
@@ -28,8 +28,10 @@
  "Mark\n"
  "\n"
  "Signed-off-by: Mark A. Greer <mgreer@mvista.com>\n"
- "--\n"
- "-------------- next part --------------\n"
+ --
+ "\01:2\0"
+ "fn\0m41t00.patch\0"
+ "b\0"
  "diff -Nru a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig\n"
  "--- a/drivers/i2c/chips/Kconfig\t2005-01-31 10:33:34 -07:00\n"
  "+++ b/drivers/i2c/chips/Kconfig\t2005-01-31 10:33:34 -07:00\n"
@@ -287,4 +289,4 @@
  "+MODULE_DESCRIPTION(\"ST Microelectronics M41T00 RTC I2C Client Driver\");\n"
  "+MODULE_LICENSE(\"GPL\");"
 
-d17e2fd13e794fd3576aa52da24414def3d5ef776ba9694ccff90317c9b90264
+36d133da857cefcd43563296320dc463396963ec0feca72c3988e79644554883

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.