- rtc-subsystem-add-isl1208-support-tweaks.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled

     rtc-subsystem-add-isl1208-support-tweaks

has been removed from the -mm tree.  Its filename is

     rtc-subsystem-add-isl1208-support-tweaks.patch

This patch was dropped because it was folded into rtc-subsystem-add-isl1208-support.patch

------------------------------------------------------
Subject: rtc-subsystem-add-isl1208-support-tweaks
From: Andrew Morton <akpm@xxxxxxxx>

- Correctly propagate error codes

- Coding style consistency

- Clean up if device_create_file() failed.

Cc: Herbert Valerio Riedel <hvr@xxxxxxx>
Cc: Alessandro Zummo <a.zummo@xxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 drivers/rtc/rtc-isl1208.c |  163 +++++++++++++++++++++---------------
 1 file changed, 99 insertions(+), 64 deletions(-)

diff -puN drivers/rtc/rtc-isl1208.c~rtc-subsystem-add-isl1208-support-tweaks drivers/rtc/rtc-isl1208.c
--- a/drivers/rtc/rtc-isl1208.c~rtc-subsystem-add-isl1208-support-tweaks
+++ a/drivers/rtc/rtc-isl1208.c
@@ -66,8 +66,8 @@ static unsigned short normal_i2c[] = {
 };
 I2C_CLIENT_INSMOD; /* defines addr_data */
 
-static int isl1208_attach_adapter (struct i2c_adapter *adapter);
-static int isl1208_detach_client (struct i2c_client *client);
+static int isl1208_attach_adapter(struct i2c_adapter *adapter);
+static int isl1208_detach_client(struct i2c_client *client);
 
 static struct i2c_driver isl1208_driver = {
 	.driver		= {
@@ -80,7 +80,7 @@ static struct i2c_driver isl1208_driver 
 
 /* block read */
 static int
-isl1208_i2c_read_regs (struct i2c_client *client, u8 reg, u8 buf[],
+isl1208_i2c_read_regs(struct i2c_client *client, u8 reg, u8 buf[],
 		       unsigned len)
 {
 	u8 reg_addr[1] = { reg };
@@ -88,25 +88,28 @@ isl1208_i2c_read_regs (struct i2c_client
 		{ client->addr, client->flags, sizeof(reg_addr), reg_addr },
 		{ client->addr, client->flags | I2C_M_RD, len, buf }
 	};
+	int ret;
 
 	BUG_ON(len == 0);
 	BUG_ON(reg > ISL1208_REG_USR2);
 	BUG_ON(reg + len > ISL1208_REG_USR2 + 1);
 
-	if (i2c_transfer (client->adapter, msgs, 2) < 0)
-		return -EIO;
-	return 0;
+	ret = i2c_transfer(client->adapter, msgs, 2);
+	if (ret > 0)
+		ret = 0;
+	return ret;
 }
 
 /* block write */
 static int
-isl1208_i2c_set_regs (struct i2c_client *client, u8 reg, u8 const buf[],
+isl1208_i2c_set_regs(struct i2c_client *client, u8 reg, u8 const buf[],
 		       unsigned len)
 {
 	u8 i2c_buf[ISL1208_REG_USR2 + 2];
 	struct i2c_msg msgs[1] = {
 		{ client->addr, client->flags, len + 1, i2c_buf }
 	};
+	int ret;
 
 	BUG_ON(len == 0);
 	BUG_ON(reg > ISL1208_REG_USR2);
@@ -115,9 +118,10 @@ isl1208_i2c_set_regs (struct i2c_client 
 	i2c_buf[0] = reg;
 	memcpy(&i2c_buf[1], &buf[0], len);
 
-	if (i2c_transfer (client->adapter, msgs, 1) < 0)
-		return -EIO;
-	return 0;
+	ret = i2c_transfer(client->adapter, msgs, 1);
+	if (ret > 0)
+		ret = 0;
+	return ret;
 }
 
 /* simple check to see wether we have a isl1208 */
@@ -128,9 +132,11 @@ static int isl1208_i2c_validate_client(s
 		0x80, 0x80, 0x40, 0xc0, 0xe0, 0x00, 0xf8
 	};
 	int i;
+	int ret;
 
-	if (isl1208_i2c_read_regs(client, 0, regs, ISL1208_RTC_SECTION_LEN))
-		return -EIO;
+	ret = isl1208_i2c_read_regs(client, 0, regs, ISL1208_RTC_SECTION_LEN);
+	if (ret < 0)
+		return ret;
 
 	for (i = 0; i < ISL1208_RTC_SECTION_LEN; ++i) {
 		if (regs[i] & zero_mask[i]) /* check if bits are cleared */
@@ -142,14 +148,15 @@ static int isl1208_i2c_validate_client(s
 
 static int isl1208_i2c_get_sr(struct i2c_client *client)
 {
-	return i2c_smbus_read_byte_data (client, ISL1208_REG_SR);
+	return i2c_smbus_read_byte_data(client, ISL1208_REG_SR) == -1 ? -EIO:0;
 }
 
 static int isl1208_i2c_get_atr(struct i2c_client *client)
 {
-	int atr = i2c_smbus_read_byte_data (client, ISL1208_REG_ATR);
+	int atr = i2c_smbus_read_byte_data(client, ISL1208_REG_ATR);
+
 	if (atr < 0)
-		return -1;
+		return -EIO;
 
 	/* The 6bit value in the ATR register controls the load
 	 * capacitance C_load * in steps of 0.25pF
@@ -171,9 +178,10 @@ static int isl1208_i2c_get_atr(struct i2
 
 static int isl1208_i2c_get_dtr(struct i2c_client *client)
 {
-	int dtr = i2c_smbus_read_byte_data (client, ISL1208_REG_DTR);
+	int dtr = i2c_smbus_read_byte_data(client, ISL1208_REG_DTR);
+
 	if (dtr < 0)
-		return -1;
+		return -EIO;
 
 	/* dtr encodes adjustments of {-60,-40,-20,0,20,40,60} ppm */
 	dtr = ((dtr & 0x3) * 20) * (dtr & (1<<2) ? -1 : 1);
@@ -184,10 +192,12 @@ static int isl1208_i2c_get_dtr(struct i2
 static int isl1208_i2c_get_usr(struct i2c_client *client)
 {
 	u8 buf[ISL1208_USR_SECTION_LEN] = { 0, };
+	int ret;
 
-	if (isl1208_i2c_read_regs (client, ISL1208_REG_USR1, buf,
-				   ISL1208_USR_SECTION_LEN))
-		return -EIO;
+	ret = isl1208_i2c_read_regs (client, ISL1208_REG_USR1, buf,
+				   ISL1208_USR_SECTION_LEN);
+	if (ret < 0)
+		return ret;
 
 	return (buf[1] << 8) | buf[0];
 }
@@ -208,9 +218,10 @@ static int isl1208_rtc_proc(struct devic
 	struct i2c_client *const client = to_i2c_client(dev);
 	int sr, dtr, atr, usr;
 
-	if ((sr = isl1208_i2c_get_sr(client)) < 0) {
+	sr = isl1208_i2c_get_sr(client);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: reading SR failed\n", __func__);
-		return -EIO;
+		return sr;
 	}
 
 	seq_printf(seq, "status_reg\t:%s%s%s%s%s%s (0x%.2x)\n",
@@ -226,16 +237,16 @@ static int isl1208_rtc_proc(struct devic
 		   (sr & ISL1208_REG_SR_RTCF) ? "bad" : "okay");
 
 	dtr = isl1208_i2c_get_dtr(client);
-	if (dtr != -1)
+	if (dtr >= 0 -1)
 		seq_printf(seq, "digital_trim\t: %d ppm\n", dtr);
 
 	atr = isl1208_i2c_get_atr(client);
-	if (atr != -1)
+	if (atr >= 0)
 		seq_printf(seq, "analog_trim\t: %d.%.2d pF\n",
 			   atr>>2, (atr&0x3)*25);
 
 	usr = isl1208_i2c_get_usr(client);
-	if (usr != -1)
+	if (usr >= 0)
 		seq_printf(seq, "user_data\t: 0x%.4x\n", usr);
 
 	return 0;
@@ -248,16 +259,17 @@ static int isl1208_i2c_read_time(struct 
 	int sr;
 	u8 regs[ISL1208_RTC_SECTION_LEN] = { 0, };
 
-	if ((sr = isl1208_i2c_get_sr(client)) < 0) {
+	sr = isl1208_i2c_get_sr(client);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: reading SR failed\n", __func__);
 		return -EIO;
 	}
 
-	if (isl1208_i2c_read_regs(client, 0, regs, ISL1208_RTC_SECTION_LEN))
-	{
+	sr = isl1208_i2c_read_regs(client, 0, regs, ISL1208_RTC_SECTION_LEN);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: reading RTC section failed\n",
 			__func__);
-		return -EIO;
+		return sr;
 	}
 
 	tm->tm_sec = BCD2BIN(regs[ISL1208_REG_SC]);
@@ -288,17 +300,18 @@ static int isl1208_i2c_read_alarm(struct
 	u8 regs[ISL1208_ALARM_SECTION_LEN] = { 0, };
 	int sr;
 
-	if ((sr = isl1208_i2c_get_sr(client)) < 0) {
+	sr = isl1208_i2c_get_sr(client);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: reading SR failed\n", __func__);
-		return -EIO;
+		return sr;
 	}
 
-	if (isl1208_i2c_read_regs(client, ISL1208_REG_SCA, regs,
-				  ISL1208_ALARM_SECTION_LEN))
-	{
+	sr = isl1208_i2c_read_regs(client, ISL1208_REG_SCA, regs,
+				  ISL1208_ALARM_SECTION_LEN);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: reading alarm section failed\n",
 			__func__);
-		return -EIO;
+		return sr;
 	}
 
 	/* MSB of each alarm register is an enable bit */
@@ -333,30 +346,34 @@ static int isl1208_i2c_set_time(struct i
 
 	regs[ISL1208_REG_DW] = BIN2BCD(tm->tm_wday & 7);
 
-	if ((sr = isl1208_i2c_get_sr(client)) < 0) {
+	sr = isl1208_i2c_get_sr(client);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: reading SR failed\n", __func__);
-		return -EIO;
+		return sr;
 	}
 
 	/* set WRTC */
-	if (i2c_smbus_write_byte_data (client, ISL1208_REG_SR,
-				       sr | ISL1208_REG_SR_WRTC) < 0) {
+	sr = i2c_smbus_write_byte_data (client, ISL1208_REG_SR,
+				       sr | ISL1208_REG_SR_WRTC);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: writing SR failed\n", __func__);
-		return -EIO;
+		return sr;
 	}
 
 	/* write RTC registers */
-	if (isl1208_i2c_set_regs(client, 0, regs, ISL1208_RTC_SECTION_LEN)) {
+	sr = isl1208_i2c_set_regs(client, 0, regs, ISL1208_RTC_SECTION_LEN);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: writing RTC section failed\n",
 			__func__);
-		return -EIO;
+		return sr;
 	}
 
 	/* clear WRTC again */
-	if (i2c_smbus_write_byte_data (client, ISL1208_REG_SR,
-				       sr & ~ISL1208_REG_SR_WRTC) < 0) {
+	sr = i2c_smbus_write_byte_data (client, ISL1208_REG_SR,
+				       sr & ~ISL1208_REG_SR_WRTC);
+	if (sr < 0) {
 		dev_err(&client->dev, "%s: writing SR failed\n", __func__);
-		return -EIO;
+		return sr;
 	}
 
 	return 0;
@@ -389,8 +406,9 @@ static ssize_t isl1208_sysfs_show_atrim(
 {
 	int atr;
 
-	if ((atr = isl1208_i2c_get_atr(to_i2c_client(dev))) == -1)
-		return -EIO;
+	atr = isl1208_i2c_get_atr(to_i2c_client(dev));
+	if (atr < 0)
+		return atr;
 
 	return sprintf(buf, "%d.%.2d pF\n", atr>>2, (atr&0x3)*25);
 }
@@ -402,8 +420,9 @@ static ssize_t isl1208_sysfs_show_dtrim(
 {
 	int dtr;
 
-	if ((dtr = isl1208_i2c_get_dtr(to_i2c_client(dev))) == -1)
-		return -EIO;
+	dtr = isl1208_i2c_get_dtr(to_i2c_client(dev));
+	if (dtr < 0)
+		return dtr;
 
 	return sprintf(buf, "%d ppm\n", dtr);
 }
@@ -415,8 +434,9 @@ static ssize_t isl1208_sysfs_show_usr(st
 {
 	int usr;
 
-	if ((usr = isl1208_i2c_get_usr(to_i2c_client(dev))) < 0)
-		return -EIO;
+	usr = isl1208_i2c_get_usr(to_i2c_client(dev));
+	if (usr < 0)
+		return usr;
 
 	return sprintf(buf, "0x%.4x\n", usr);
 }
@@ -430,10 +450,10 @@ static ssize_t isl1208_sysfs_store_usr(s
 	if (buf[0] == '0' && (buf[1] == 'x' || buf[1] == 'X')) {
 		if (sscanf(buf, "%x", &usr) != 1)
 			return -EINVAL;
-	}
-	else
+	} else {
 		if (sscanf(buf, "%d", &usr) != 1)
 			return -EINVAL;
+	}
 
 	if (usr < 0 || usr > 0xffff)
 		return -EINVAL;
@@ -444,7 +464,7 @@ static DEVICE_ATTR(usr, S_IRUGO | S_IWUS
 		   isl1208_sysfs_store_usr);
 
 static int
-isl1208_probe (struct i2c_adapter *adapter, int addr, int kind)
+isl1208_probe(struct i2c_adapter *adapter, int addr, int kind)
 {
 	int rc = 0;
 	struct i2c_client *new_client = NULL;
@@ -455,7 +475,8 @@ isl1208_probe (struct i2c_adapter *adapt
 		goto failout;
 	}
 
-	if (!(new_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL))) {
+	new_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+	if (new_client == NULL) {
 		rc = -ENOMEM;
 		goto failout;
 	}
@@ -464,14 +485,16 @@ isl1208_probe (struct i2c_adapter *adapt
 	new_client->adapter = adapter;
 	new_client->driver = &isl1208_driver;
 	new_client->flags = 0;
-	strcpy (new_client->name, DRV_NAME);
+	strcpy(new_client->name, DRV_NAME);
 
 	if (kind < 0) {
-		if ((rc = isl1208_i2c_validate_client(new_client)) < 0)
+		rc = isl1208_i2c_validate_client(new_client);
+		if (rc < 0)
 			goto failout;
 	}
 
-	if ((rc = i2c_attach_client(new_client)))
+	rc = i2c_attach_client(new_client);
+	if (rc < 0)
 		goto failout;
 
 	dev_info(&new_client->dev,
@@ -488,7 +511,8 @@ isl1208_probe (struct i2c_adapter *adapt
 
 	i2c_set_clientdata(new_client, rtc);
 
-	if ((rc = isl1208_i2c_get_sr (new_client)) < 0) {
+	rc = isl1208_i2c_get_sr(new_client);
+	if (rc < 0) {
 		dev_err(&new_client->dev, "reading status failed\n");
 		goto failout_unregister;
 	}
@@ -497,12 +521,22 @@ isl1208_probe (struct i2c_adapter *adapt
 		dev_warn(&new_client->dev, "rtc power failure detected, "
 			 "please set clock.\n");
 
-	device_create_file(&new_client->dev, &dev_attr_atrim);
-	device_create_file(&new_client->dev, &dev_attr_dtrim);
-	device_create_file(&new_client->dev, &dev_attr_usr);
+	rc = device_create_file(&new_client->dev, &dev_attr_atrim);
+	if (rc < 0)
+		goto failout_unregister;
+	rc = device_create_file(&new_client->dev, &dev_attr_dtrim);
+	if (rc < 0)
+		goto failout_atrim;
+	rc = device_create_file(&new_client->dev, &dev_attr_usr);
+	if (rc < 0)
+		goto failout_dtrim;
 
 	return 0;
 
+ failout_dtrim:
+	device_remove_file(&new_client->dev, &dev_attr_dtrim);
+ failout_atrim:
+	device_remove_file(&new_client->dev, &dev_attr_atrim);
  failout_unregister:
 	rtc_device_unregister(rtc);
  failout_detach:
@@ -515,7 +549,7 @@ isl1208_probe (struct i2c_adapter *adapt
 static int
 isl1208_attach_adapter (struct i2c_adapter *adapter)
 {
-	return i2c_probe (adapter, &addr_data, isl1208_probe);
+	return i2c_probe(adapter, &addr_data, isl1208_probe);
 }
 
 static int
@@ -527,7 +561,8 @@ isl1208_detach_client(struct i2c_client 
 	if (rtc)
 		rtc_device_unregister(rtc); /* do we need to kfree? */
 
-	if ((rc = i2c_detach_client(client)))
+	rc = i2c_detach_client(client);
+	if (rc)
 		return rc;
 
 	kfree(client);
_

Patches currently in -mm which might be from akpm@xxxxxxxx are

origin.patch
struct-file-leakage.patch
del_timer_sync-add-cpu_relax.patch
rtc-subsystem-add-isl1208-support.patch
rtc-subsystem-add-isl1208-support-tweaks.patch
add-probe_kernel_address.patch
x86-use-probe_kernel_address-in-handle_bug.patch
blockdevc-check-errors.patch
reiserfs-fix-handling-of-device-names-with-s-in-them-tidy.patch
add-function-documentation-for-register_chrdev-fix.patch
reiserfs-on-demand-bitmap-loading.patch
per-task-delay-accounting-taskstats-interface.patch
per-task-delay-accounting-proc-export-of-aggregated-block-i-o-delays.patch
delay-accounting-taskstats-interface-send-tgid-once.patch
per-task-delay-accounting-taskstats-interface-control-exit-data-through-cpumasks.patch
task-watchers-task-watchers.patch
task-watchers-add-support-for-per-task-watchers.patch
stack-overflow-safe-kdump-crash_use_safe_smp_processor_id-fix.patch
swap_prefetch-vs-zoned-counters.patch
ecryptfs-mmap-operations.patch
ecryptfs-alpha-build-fix.patch
ecryptfs-more-elegant-aes-key-size-manipulation.patch
ecryptfs-get_sb_dev-fix.patch
namespaces-add-nsproxy-dont-include-compileh.patch
namespaces-utsname-switch-to-using-uts-namespaces.patch
namespaces-utsname-use-init_utsname-when-appropriate.patch
namespaces-utsname-implement-utsname-namespaces.patch
namespaces-utsname-sysctl-hack.patch
ipc-namespace-core.patch
readahead-sysctl-parameters-fix.patch
make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch
reiser4-hardirq-include-fix.patch
reiser4-run-truncate_inode_pages-in-reiser4_delete_inode.patch
reiser4-get_sb_dev-fix.patch
reiser4-vs-zoned-allocator.patch
hpt3xx-rework-rate-filtering-tidy.patch
genirq-convert-the-i386-architecture-to-irq-chips.patch
genirq-x86_64-irq-reenable-migrating-irqs-to-other-cpus.patch
genirq-msi-simplify-msi-enable-and-disable.patch
genirq-ia64-irq-dynamic-irq-support.patch
genirq-msi-only-build-msi-apicc-on-ia64-fix.patch
genirq-i386-irq-remove-the-msi-assumption-that-irq-==-vector.patch
add-hypertransport-capability-defines-fix.patch
initial-generic-hypertransport-interrupt-support-Kconfig-fix.patch
nr_blockdev_pages-in_interrupt-warning.patch
device-suspend-debug.patch
revert-tty-buffering-comment-out-debug-code.patch
slab-leaks3-default-y.patch
x86-kmap_atomic-debugging.patch
jmicron-warning-fix.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux