Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 308994
b: refs/heads/master
c: eb86c30
h: refs/heads/master
v: v3
  • Loading branch information
Wolfram Sang authored and Linus Torvalds committed May 29, 2012
1 parent 44e9595 commit 80c3ac1
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f8ae97019ff79559416dc2ae9c14af92c2054cba
refs/heads/master: eb86c3064b3c53837fdfea17df1483d825919894
19 changes: 16 additions & 3 deletions trunk/drivers/rtc/rtc-ds1307.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@
#include <linux/string.h>
#include <linux/rtc.h>
#include <linux/bcd.h>


#include <linux/rtc/ds1307.h>

/*
* We can't determine type by probing, but if we expect pre-Linux code
Expand Down Expand Up @@ -92,7 +91,8 @@ enum ds_type {
# define DS1337_BIT_A2I 0x02
# define DS1337_BIT_A1I 0x01
#define DS1339_REG_ALARM1_SECS 0x07
#define DS1339_REG_TRICKLE 0x10

#define DS13XX_TRICKLE_CHARGER_MAGIC 0xa0

#define RX8025_REG_CTRL1 0x0e
# define RX8025_BIT_2412 0x20
Expand Down Expand Up @@ -124,6 +124,7 @@ struct chip_desc {
unsigned alarm:1;
u16 nvram_offset;
u16 nvram_size;
u16 trickle_charger_reg;
};

static const struct chip_desc chips[last_ds_type] = {
Expand All @@ -140,6 +141,13 @@ static const struct chip_desc chips[last_ds_type] = {
},
[ds_1339] = {
.alarm = 1,
.trickle_charger_reg = 0x10,
},
[ds_1340] = {
.trickle_charger_reg = 0x08,
},
[ds_1388] = {
.trickle_charger_reg = 0x0a,
},
[ds_3231] = {
.alarm = 1,
Expand Down Expand Up @@ -619,6 +627,7 @@ static int __devinit ds1307_probe(struct i2c_client *client,
struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
int want_irq = false;
unsigned char *buf;
struct ds1307_platform_data *pdata = client->dev.platform_data;
static const int bbsqi_bitpos[] = {
[ds_1337] = 0,
[ds_1339] = DS1339_BIT_BBSQI,
Expand All @@ -638,6 +647,10 @@ static int __devinit ds1307_probe(struct i2c_client *client,
ds1307->client = client;
ds1307->type = id->driver_data;

if (pdata && pdata->trickle_charger_setup && chip->trickle_charger_reg)
i2c_smbus_write_byte_data(client, chip->trickle_charger_reg,
DS13XX_TRICKLE_CHARGER_MAGIC | pdata->trickle_charger_setup);

buf = ds1307->regs;
if (i2c_check_functionality(adapter, I2C_FUNC_SMBUS_I2C_BLOCK)) {
ds1307->read_block_data = i2c_smbus_read_i2c_block_data;
Expand Down
22 changes: 22 additions & 0 deletions trunk/include/linux/rtc/ds1307.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* ds1307.h - platform_data for the ds1307 (and variants) rtc driver
* (C) Copyright 2012 by Wolfram Sang, Pengutronix e.K.
* same license as the driver
*/

#ifndef _LINUX_DS1307_H
#define _LINUX_DS1307_H

#include <linux/types.h>

#define DS1307_TRICKLE_CHARGER_250_OHM 0x01
#define DS1307_TRICKLE_CHARGER_2K_OHM 0x02
#define DS1307_TRICKLE_CHARGER_4K_OHM 0x03
#define DS1307_TRICKLE_CHARGER_NO_DIODE 0x04
#define DS1307_TRICKLE_CHARGER_DIODE 0x08

struct ds1307_platform_data {
u8 trickle_charger_setup;
};

#endif /* _LINUX_DS1307_H */

0 comments on commit 80c3ac1

Please sign in to comment.