summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorRob Purchase <shotofadds@rockbox.org>2008-04-04 20:24:08 +0000
committerRob Purchase <shotofadds@rockbox.org>2008-04-04 20:24:08 +0000
commit9b691d335ae4bf3d666d7991fedf56731d8f533e (patch)
treecbb8e923b451bdb1fa559998689d6b06c73cfe3f /firmware/drivers
parentac9b92716a11cf7699f6ce9668b1ca5cd4171cf9 (diff)
Split out the PCF5060x register defines into a common header and create a generic pcf50606.c using standard i2c read/writes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16966 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/pcf50605.c70
-rw-r--r--firmware/drivers/pcf50606.c45
2 files changed, 57 insertions, 58 deletions
diff --git a/firmware/drivers/pcf50605.c b/firmware/drivers/pcf50605.c
index afa0a5ca11..7d88e46aa2 100644
--- a/firmware/drivers/pcf50605.c
+++ b/firmware/drivers/pcf50605.c
@@ -29,54 +29,7 @@
#include "i2c-pp.h"
#endif
#include "rtc.h"
-
-#define OOCS 0x01
-#define INT1 0x02
-#define INT2 0x03
-#define INT3 0x04
-#define INT1M 0x05
-#define INT2M 0x06
-#define INT3M 0x07
-#define OOCC1 0x08
- #define GOSTDBY 0x1
- #define TOTRST (0x1 << 1)
- #define CLK32ON (0x1 << 2)
- #define WDTRST (0x1 << 3)
- #define RTCWAK (0x1 << 4)
- #define CHGWAK (0x1 << 5)
- #define EXTONWAK (0x01 << 6)
-#define OOCC2 0x09
-#define RTCSC 0x0a
-#define RTCMN 0x0b
-#define RTCHR 0x0c
-#define RTCWD 0x0d
-#define RTCDT 0x0e
-#define RTCMT 0x0f
-#define RTCYR 0x10
-#define RTCSCA 0x11
-#define RTCMNA 0x12
-#define RTCHRA 0x13
-#define RTCWDA 0x14
-#define RTCDTA 0x15
-#define RTCMTA 0x16
-#define RTCYRA 0x17
-#define PSSC 0x18
-#define PWROKM 0x19
-#define PWROKS 0x1a
-#define DCDC1 0x1b
-#define DCDC2 0x1c
-#define DCDC3 0x1d
-#define DCDC4 0x1e
-#define DCDEC1 0x1f
-#define DCDEC2 0x20
-#define DCUDC1 0x21
-#define DCUDC2 0x22
-#define IOREGC 0x23
-#define D1REGC1 0x24
-#define D2REGC1 0x25
-#define D3REGC1 0x26
-#define LPREG1C 0x27
-
+#include "pcf5060x.h"
unsigned char pcf50605_wakeup_flags = 0;
@@ -117,7 +70,8 @@ int pcf50605_write_multiple(int address, const unsigned char* buf, int count)
power on your iPod again. */
void pcf50605_standby_mode(void)
{
- pcf50605_write(OOCC1, GOSTDBY | CHGWAK | EXTONWAK | pcf50605_wakeup_flags);
+ pcf50605_write(PCF5060X_OOCC1,
+ GOSTDBY | CHGWAK | EXTONWAK | pcf50605_wakeup_flags);
}
void pcf50605_init(void)
@@ -125,27 +79,27 @@ void pcf50605_init(void)
#if defined (IPOD_VIDEO)
/* I/O and GPO voltage supply (default: 0xf8 = 3.3V ON) */
/* ECO not allowed regarding data sheet */
- pcf50605_write(IOREGC, 0xf8); /* 3.3V ON */
+ pcf50605_write(PCF5060X_IOREGC, 0xf8); /* 3.3V ON */
/* core voltage supply (default DCDC1/DCDC2: 0xec = 1.2V ON) */
/* ECO not stable, assumed due to less precision of voltage in ECO mode */
- pcf50605_write(DCDC1, 0xec); /* 1.2V ON */
- pcf50605_write(DCDC2, 0x0c); /* OFF */
+ pcf50605_write(PCF5060X_DCDC1, 0xec); /* 1.2V ON */
+ pcf50605_write(PCF5060X_DCDC2, 0x0c); /* OFF */
/* unknown (default: 0xe3 = 1.8V ON) */
- pcf50605_write(DCUDC1, 0xe3); /* 1.8V ON */
+ pcf50605_write(PCF5060X_DCUDC1, 0xe3); /* 1.8V ON */
/* WM8758 voltage supply (default: 0xf5 = 3.0V ON) */
/* ECO not allowed as max. current of 5mA is not sufficient */
- pcf50605_write(D1REGC1, 0xf0); /* 2.5V ON */
+ pcf50605_write(PCF5060X_D1REGC1, 0xf0); /* 2.5V ON */
/* LCD voltage supply (default: 0xf5 = 3.0V ON) */
- pcf50605_write(D3REGC1, 0xf1); /* 2.6V ON */
+ pcf50605_write(PCF5060X_D3REGC1, 0xf1); /* 2.6V ON */
#else
/* keep initialization from svn for other iPods */
- pcf50605_write(D1REGC1, 0xf5); /* 3.0V ON */
- pcf50605_write(D3REGC1, 0xf5); /* 3.0V ON */
+ pcf50605_write(PCF5060X_D1REGC1, 0xf5); /* 3.0V ON */
+ pcf50605_write(PCF5060X_D3REGC1, 0xf5); /* 3.0V ON */
#endif
/* Dock Connector pin 17 (default: OFF) */
- pcf50605_write(D2REGC1, 0xf8); /* 3.3V ON */
+ pcf50605_write(PCF5060X_D2REGC1, 0xf8); /* 3.3V ON */
}
diff --git a/firmware/drivers/pcf50606.c b/firmware/drivers/pcf50606.c
new file mode 100644
index 0000000000..a93b94399e
--- /dev/null
+++ b/firmware/drivers/pcf50606.c
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2008 by Rob Purchase
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+#include "pcf50606.h"
+#include "i2c.h"
+
+#define PCF50606_ADDR 0x10
+
+int pcf50606_write(int address, unsigned char val)
+{
+ unsigned char data[] = { address, val };
+ return i2c_write(PCF50606_ADDR, data, 2);
+}
+
+int pcf50606_read(int address)
+{
+ unsigned char val = -1;
+ i2c_readmem(PCF50606_ADDR, address, &val, 1);
+ return val;
+}
+
+int pcf50606_read_multiple(int address, unsigned char* buf, int count)
+{
+ return i2c_readmem(PCF50606_ADDR, address, buf, count);
+}
+
+void pcf50606_init(void)
+{
+ // TODO
+}