diff --git a/a/drivers/rtc/rtc-ds1307.c b/b/drivers/rtc/rtc-ds1307.c
index 836710c..abf837b 100644
--- a/a/drivers/rtc/rtc-ds1307.c
+++ b/b/drivers/rtc/rtc-ds1307.c
@@ -122,6 +122,7 @@ struct ds1307 {
 
 struct chip_desc {
 	unsigned		alarm:1;
+	u8			offset;
 	u16			nvram_offset;
 	u16			nvram_size;
 	u16			trickle_charger_reg;
@@ -149,6 +150,9 @@ static const struct chip_desc chips[last_ds_type] = {
 	[ds_1388] = {
 		.trickle_charger_reg = 0x0a,
 	},
+	[ds_1388] = {
+		.offset		= 1, /* seconds field starts at 1 */
+	},
 	[ds_3231] = {
 		.alarm		= 1,
 	},
@@ -646,6 +650,7 @@ static int __devinit ds1307_probe(struct i2c_client *client,
 
 	ds1307->client	= client;
 	ds1307->type	= id->driver_data;
+	ds1307->offset	= chip->offset;
 
 	if (pdata && pdata->trickle_charger_setup && chip->trickle_charger_reg)
 		i2c_smbus_write_byte_data(client, chip->trickle_charger_reg,
@@ -768,9 +773,6 @@ static int __devinit ds1307_probe(struct i2c_client *client,
 						  hour);
 		}
 		break;
-	case ds_1388:
-		ds1307->offset = 1; /* Seconds starts at 1 */
-		break;
 	default:
 		break;
 	}
