summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/i2c-pp5002.c28
-rw-r--r--firmware/drivers/i2c-pp5020.c28
-rw-r--r--firmware/drivers/pcf50605.c2
-rw-r--r--firmware/drivers/rtc.c2
-rw-r--r--firmware/export/i2c-pp5002.h2
-rw-r--r--firmware/export/i2c-pp5020.h2
-rw-r--r--firmware/target/arm/wmcodec-pp.c18
7 files changed, 41 insertions, 41 deletions
diff --git a/firmware/drivers/i2c-pp5002.c b/firmware/drivers/i2c-pp5002.c
index 958ddeebe4..7cb37f6090 100644
--- a/firmware/drivers/i2c-pp5002.c
+++ b/firmware/drivers/i2c-pp5002.c
@@ -49,7 +49,7 @@
49 49
50#define POLL_TIMEOUT (HZ) 50#define POLL_TIMEOUT (HZ)
51 51
52static int ipod_i2c_wait_not_busy(void) 52static int pp_i2c_wait_not_busy(void)
53{ 53{
54 unsigned long timeout; 54 unsigned long timeout;
55 timeout = current_tick + POLL_TIMEOUT; 55 timeout = current_tick + POLL_TIMEOUT;
@@ -66,9 +66,9 @@ static int ipod_i2c_wait_not_busy(void)
66 66
67/* Public functions */ 67/* Public functions */
68 68
69int ipod_i2c_read_byte(unsigned int addr, unsigned int *data) 69int pp_i2c_read_byte(unsigned int addr, unsigned int *data)
70{ 70{
71 if (ipod_i2c_wait_not_busy() < 0) 71 if (pp_i2c_wait_not_busy() < 0)
72 { 72 {
73 return -1; 73 return -1;
74 } 74 }
@@ -80,7 +80,7 @@ int ipod_i2c_read_byte(unsigned int addr, unsigned int *data)
80 80
81 outb(inb(IPOD_I2C_CTRL) | IPOD_I2C_SEND, IPOD_I2C_CTRL); 81 outb(inb(IPOD_I2C_CTRL) | IPOD_I2C_SEND, IPOD_I2C_CTRL);
82 82
83 if (ipod_i2c_wait_not_busy() < 0) 83 if (pp_i2c_wait_not_busy() < 0)
84 { 84 {
85 return -1; 85 return -1;
86 } 86 }
@@ -93,7 +93,7 @@ int ipod_i2c_read_byte(unsigned int addr, unsigned int *data)
93 return 0; 93 return 0;
94} 94}
95 95
96int ipod_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned char *data) 96int pp_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned char *data)
97{ 97{
98 int data_addr; 98 int data_addr;
99 unsigned int i; 99 unsigned int i;
@@ -103,7 +103,7 @@ int ipod_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned char *data
103 return -1; 103 return -1;
104 } 104 }
105 105
106 if (ipod_i2c_wait_not_busy() < 0) 106 if (pp_i2c_wait_not_busy() < 0)
107 { 107 {
108 return -2; 108 return -2;
109 } 109 }
@@ -127,21 +127,21 @@ int ipod_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned char *data
127 return 0x0; 127 return 0x0;
128} 128}
129 129
130int ipod_i2c_send_byte(unsigned int addr, int data0) 130int pp_i2c_send_byte(unsigned int addr, int data0)
131{ 131{
132 unsigned char data[1]; 132 unsigned char data[1];
133 133
134 data[0] = data0; 134 data[0] = data0;
135 135
136 return ipod_i2c_send_bytes(addr, 1, data); 136 return pp_i2c_send_bytes(addr, 1, data);
137} 137}
138 138
139int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data) { 139int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data) {
140 unsigned int temp; 140 unsigned int temp;
141 int i; 141 int i;
142 ipod_i2c_send_byte(dev_addr, addr); 142 pp_i2c_send_byte(dev_addr, addr);
143 for (i = 0; i < len; i++) { 143 for (i = 0; i < len; i++) {
144 ipod_i2c_read_byte(dev_addr, &temp); 144 pp_i2c_read_byte(dev_addr, &temp);
145 data[i] = temp; 145 data[i] = temp;
146 } 146 }
147 return i; 147 return i;
@@ -151,20 +151,20 @@ int i2c_readbyte(unsigned int dev_addr, int addr)
151{ 151{
152 int data; 152 int data;
153 153
154 ipod_i2c_send_byte(dev_addr, addr); 154 pp_i2c_send_byte(dev_addr, addr);
155 ipod_i2c_read_byte(dev_addr, &data); 155 pp_i2c_read_byte(dev_addr, &data);
156 156
157 return data; 157 return data;
158} 158}
159 159
160int ipod_i2c_send(unsigned int addr, int data0, int data1) 160int pp_i2c_send(unsigned int addr, int data0, int data1)
161{ 161{
162 unsigned char data[2]; 162 unsigned char data[2];
163 163
164 data[0] = data0; 164 data[0] = data0;
165 data[1] = data1; 165 data[1] = data1;
166 166
167 return ipod_i2c_send_bytes(addr, 2, data); 167 return pp_i2c_send_bytes(addr, 2, data);
168} 168}
169 169
170void i2c_init(void) 170void i2c_init(void)
diff --git a/firmware/drivers/i2c-pp5020.c b/firmware/drivers/i2c-pp5020.c
index e81783dba0..2aeb11128d 100644
--- a/firmware/drivers/i2c-pp5020.c
+++ b/firmware/drivers/i2c-pp5020.c
@@ -49,7 +49,7 @@
49 49
50#define POLL_TIMEOUT (HZ) 50#define POLL_TIMEOUT (HZ)
51 51
52static int ipod_i2c_wait_not_busy(void) 52static int pp_i2c_wait_not_busy(void)
53{ 53{
54 unsigned long timeout; 54 unsigned long timeout;
55 timeout = current_tick + POLL_TIMEOUT; 55 timeout = current_tick + POLL_TIMEOUT;
@@ -63,9 +63,9 @@ static int ipod_i2c_wait_not_busy(void)
63 return -1; 63 return -1;
64} 64}
65 65
66static int ipod_i2c_read_byte(unsigned int addr, unsigned int *data) 66static int pp_i2c_read_byte(unsigned int addr, unsigned int *data)
67{ 67{
68 if (ipod_i2c_wait_not_busy() < 0) 68 if (pp_i2c_wait_not_busy() < 0)
69 { 69 {
70 return -1; 70 return -1;
71 } 71 }
@@ -82,7 +82,7 @@ static int ipod_i2c_read_byte(unsigned int addr, unsigned int *data)
82 outb(inb(IPOD_I2C_CTRL) | IPOD_I2C_SEND, IPOD_I2C_CTRL); 82 outb(inb(IPOD_I2C_CTRL) | IPOD_I2C_SEND, IPOD_I2C_CTRL);
83 83
84 set_irq_level(old_irq_level); 84 set_irq_level(old_irq_level);
85 if (ipod_i2c_wait_not_busy() < 0) 85 if (pp_i2c_wait_not_busy() < 0)
86 { 86 {
87 return -1; 87 return -1;
88 } 88 }
@@ -99,7 +99,7 @@ static int ipod_i2c_read_byte(unsigned int addr, unsigned int *data)
99 return 0; 99 return 0;
100} 100}
101 101
102static int ipod_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned char *data) 102static int pp_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned char *data)
103{ 103{
104 int data_addr; 104 int data_addr;
105 unsigned int i; 105 unsigned int i;
@@ -109,7 +109,7 @@ static int ipod_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned cha
109 return -1; 109 return -1;
110 } 110 }
111 111
112 if (ipod_i2c_wait_not_busy() < 0) 112 if (pp_i2c_wait_not_busy() < 0)
113 { 113 {
114 return -2; 114 return -2;
115 } 115 }
@@ -139,13 +139,13 @@ static int ipod_i2c_send_bytes(unsigned int addr, unsigned int len, unsigned cha
139 return 0x0; 139 return 0x0;
140} 140}
141 141
142static int ipod_i2c_send_byte(unsigned int addr, int data0) 142static int pp_i2c_send_byte(unsigned int addr, int data0)
143{ 143{
144 unsigned char data[1]; 144 unsigned char data[1];
145 145
146 data[0] = data0; 146 data[0] = data0;
147 147
148 return ipod_i2c_send_bytes(addr, 1, data); 148 return pp_i2c_send_bytes(addr, 1, data);
149} 149}
150 150
151/* Public functions */ 151/* Public functions */
@@ -155,9 +155,9 @@ int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data)
155 unsigned int temp; 155 unsigned int temp;
156 int i; 156 int i;
157 mutex_lock(&i2c_mutex); 157 mutex_lock(&i2c_mutex);
158 ipod_i2c_send_byte(dev_addr, addr); 158 pp_i2c_send_byte(dev_addr, addr);
159 for (i = 0; i < len; i++) { 159 for (i = 0; i < len; i++) {
160 ipod_i2c_read_byte(dev_addr, &temp); 160 pp_i2c_read_byte(dev_addr, &temp);
161 data[i] = temp; 161 data[i] = temp;
162 } 162 }
163 mutex_unlock(&i2c_mutex); 163 mutex_unlock(&i2c_mutex);
@@ -169,14 +169,14 @@ int i2c_readbyte(unsigned int dev_addr, int addr)
169 int data; 169 int data;
170 170
171 mutex_lock(&i2c_mutex); 171 mutex_lock(&i2c_mutex);
172 ipod_i2c_send_byte(dev_addr, addr); 172 pp_i2c_send_byte(dev_addr, addr);
173 ipod_i2c_read_byte(dev_addr, &data); 173 pp_i2c_read_byte(dev_addr, &data);
174 mutex_unlock(&i2c_mutex); 174 mutex_unlock(&i2c_mutex);
175 175
176 return data; 176 return data;
177} 177}
178 178
179int ipod_i2c_send(unsigned int addr, int data0, int data1) 179int pp_i2c_send(unsigned int addr, int data0, int data1)
180{ 180{
181 int retval; 181 int retval;
182 unsigned char data[2]; 182 unsigned char data[2];
@@ -185,7 +185,7 @@ int ipod_i2c_send(unsigned int addr, int data0, int data1)
185 data[1] = data1; 185 data[1] = data1;
186 186
187 mutex_lock(&i2c_mutex); 187 mutex_lock(&i2c_mutex);
188 retval = ipod_i2c_send_bytes(addr, 2, data); 188 retval = pp_i2c_send_bytes(addr, 2, data);
189 mutex_unlock(&i2c_mutex); 189 mutex_unlock(&i2c_mutex);
190 190
191 return retval; 191 return retval;
diff --git a/firmware/drivers/pcf50605.c b/firmware/drivers/pcf50605.c
index 0f71229964..61c52a14f5 100644
--- a/firmware/drivers/pcf50605.c
+++ b/firmware/drivers/pcf50605.c
@@ -85,7 +85,7 @@ int pcf50605_read_multiple(int address, unsigned char* buf, int count)
85 85
86int pcf50605_write(int address, unsigned char val) 86int pcf50605_write(int address, unsigned char val)
87{ 87{
88 ipod_i2c_send(0x8, address, val); 88 pp_i2c_send(0x8, address, val);
89 return 0; 89 return 0;
90} 90}
91 91
diff --git a/firmware/drivers/rtc.c b/firmware/drivers/rtc.c
index c911dabbb1..4f30539904 100644
--- a/firmware/drivers/rtc.c
+++ b/firmware/drivers/rtc.c
@@ -67,7 +67,7 @@ int rtc_write_datetime(unsigned char* buf)
67 buf[4]=tmp; 67 buf[4]=tmp;
68 68
69 for (i=0;i<7;i++){ 69 for (i=0;i<7;i++){
70 ipod_i2c_send(0x51, 0x02+i,buf[i]); 70 pp_i2c_send(0x51, 0x02+i,buf[i]);
71 } 71 }
72 return 1; 72 return 1;
73} 73}
diff --git a/firmware/export/i2c-pp5002.h b/firmware/export/i2c-pp5002.h
index 18f8c3461d..68c0dda8f7 100644
--- a/firmware/export/i2c-pp5002.h
+++ b/firmware/export/i2c-pp5002.h
@@ -29,7 +29,7 @@
29 29
30void i2c_init(void); 30void i2c_init(void);
31int i2c_readbyte(unsigned int dev_addr, int addr); 31int i2c_readbyte(unsigned int dev_addr, int addr);
32int ipod_i2c_send(unsigned int addr, int data0, int data1); 32int pp_i2c_send(unsigned int addr, int data0, int data1);
33int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data); 33int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data);
34 34
35#endif 35#endif
diff --git a/firmware/export/i2c-pp5020.h b/firmware/export/i2c-pp5020.h
index 34f16ec12f..b8b10d6388 100644
--- a/firmware/export/i2c-pp5020.h
+++ b/firmware/export/i2c-pp5020.h
@@ -29,7 +29,7 @@
29 29
30void i2c_init(void); 30void i2c_init(void);
31int i2c_readbyte(unsigned int dev_addr, int addr); 31int i2c_readbyte(unsigned int dev_addr, int addr);
32int ipod_i2c_send(unsigned int addr, int data0, int data1); 32int pp_i2c_send(unsigned int addr, int data0, int data1);
33int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data); 33int i2c_readbytes(unsigned int dev_addr, int addr, int len, unsigned char *data);
34 34
35#endif 35#endif
diff --git a/firmware/target/arm/wmcodec-pp.c b/firmware/target/arm/wmcodec-pp.c
index e9626220e7..73324c0dec 100644
--- a/firmware/target/arm/wmcodec-pp.c
+++ b/firmware/target/arm/wmcodec-pp.c
@@ -43,6 +43,14 @@
43#include "i2c-pp5002.h" 43#include "i2c-pp5002.h"
44#endif 44#endif
45 45
46#if defined(IRIVER_H10) || defined(IRIVER_H10_5GB)
47/* The H10's audio codec uses an I2C address of 0x1b */
48#define I2C_AUDIO_ADDRESS 0x1b
49#else
50/* The iPod's audio codecs use an I2C address of 0x1a */
51#define I2C_AUDIO_ADDRESS 0x1a
52#endif
53
46/* 54/*
47 * Reset the I2S BIT.FORMAT I2S, 16bit, FIFO.FORMAT 32bit 55 * Reset the I2S BIT.FORMAT I2S, 16bit, FIFO.FORMAT 32bit
48 */ 56 */
@@ -144,13 +152,5 @@ int wmcodec_init(void) {
144 152
145void wmcodec_write(int reg, int data) 153void wmcodec_write(int reg, int data)
146{ 154{
147/* Todo: Since the ipod_i2c_* functions also work on H10 and possibly other PP 155 pp_i2c_send(I2C_AUDIO_ADDRESS, (reg<<1) | ((data&0x100)>>8),data&0xff);
148 targets, these functions should probably be renamed */
149#if defined(IRIVER_H10) || defined(IRIVER_H10_5GB)
150 /* The H10's audio codec uses an I2C address of 0x1b */
151 ipod_i2c_send(0x1b, (reg<<1) | ((data&0x100)>>8),data&0xff);
152#else
153 /* The iPod's audio codecs use an I2C address of 0x1a */
154 ipod_i2c_send(0x1a, (reg<<1) | ((data&0x100)>>8),data&0xff);
155#endif
156} 156}