1
1
#include <generated/csr.h>
2
- #ifdef CSR_HDMI_OUT0_BASE
2
+ #ifdef CSR_HDMI_OUT0_I2C_W_ADDR
3
3
#include <stdio.h>
4
+ #include "i2c.h"
4
5
#include "hdmi_out0.h"
5
6
7
+ I2C hdmi_out0_i2c ;
6
8
int hdmi_out0_debug_enabled = 0 ;
7
9
10
+ void hdmi_out0_i2c_init (void ) {
11
+ hdmi_out0_i2c .w_read = hdmi_out0_i2c_w_read ;
12
+ hdmi_out0_i2c .w_write = hdmi_out0_i2c_w_write ;
13
+ hdmi_out0_i2c .r_read = hdmi_out0_i2c_r_read ;
14
+ i2c_init (& hdmi_out0_i2c );
15
+ }
16
+
8
17
void hdmi_out0_print_edid (void ) {
9
18
int eeprom_addr , e , extension_number = 0 ;
10
19
unsigned char b ;
11
20
unsigned char sum = 0 ;
12
21
13
- hdmi_out0_i2c_start_cond ( );
14
- b = hdmi_out0_i2c_write ( 0xa0 );
22
+ i2c_start_cond ( & hdmi_out0_i2c );
23
+ b = i2c_write ( & hdmi_out0_i2c , 0xa0 );
15
24
if (!b && hdmi_out0_debug_enabled )
16
25
printf ("hdmi_out0: NACK while writing slave address!\n" );
17
- b = hdmi_out0_i2c_write ( 0x00 );
26
+ b = i2c_write ( & hdmi_out0_i2c , 0x00 );
18
27
if (!b && hdmi_out0_debug_enabled )
19
28
printf ("hdmi_out0: NACK while writing eeprom address!\n" );
20
- hdmi_out0_i2c_start_cond ( );
21
- b = hdmi_out0_i2c_write ( 0xa1 );
29
+ i2c_start_cond ( & hdmi_out0_i2c );
30
+ b = i2c_write ( & hdmi_out0_i2c , 0xa1 );
22
31
if (!b && hdmi_out0_debug_enabled )
23
32
printf ("hdmi_out0: NACK while writing slave address (2)!\n" );
24
33
for (eeprom_addr = 0 ; eeprom_addr < 128 ; eeprom_addr ++ ) {
25
- b = hdmi_out0_i2c_read ( eeprom_addr == 127 && extension_number == 0 ? 0 : 1 );
34
+ b = i2c_read ( & hdmi_out0_i2c , eeprom_addr == 127 && extension_number == 0 ? 0 : 1 );
26
35
sum += b ;
27
36
printf ("%02X " , b );
28
37
if (!((eeprom_addr + 1 ) % 16 ))
@@ -32,7 +41,7 @@ void hdmi_out0_print_edid(void) {
32
41
if (eeprom_addr == 127 && sum != 0 )
33
42
{
34
43
printf ("Checksum ERROR in EDID block 0\n" );
35
- hdmi_out0_i2c_stop_cond ( );
44
+ i2c_stop_cond ( & hdmi_out0_i2c );
36
45
return ;
37
46
}
38
47
}
@@ -41,20 +50,20 @@ void hdmi_out0_print_edid(void) {
41
50
printf ("\n" );
42
51
sum = 0 ;
43
52
for (eeprom_addr = 0 ; eeprom_addr < 128 ; eeprom_addr ++ ) {
44
- b = hdmi_out0_i2c_read ( eeprom_addr == 127 && e == extension_number - 1 ? 0 : 1 );
53
+ b = i2c_read ( & hdmi_out0_i2c , eeprom_addr == 127 && e == extension_number - 1 ? 0 : 1 );
45
54
sum += b ;
46
55
printf ("%02X " , b );
47
56
if (!((eeprom_addr + 1 ) % 16 ))
48
57
printf ("\n" );
49
58
if (eeprom_addr == 127 && sum != 0 )
50
59
{
51
60
printf ("Checksum ERROR in EDID extension block %d\n" , e );
52
- hdmi_out0_i2c_stop_cond ( );
61
+ i2c_stop_cond ( & hdmi_out0_i2c );
53
62
return ;
54
63
}
55
64
}
56
65
}
57
- hdmi_out0_i2c_stop_cond ( );
66
+ i2c_stop_cond ( & hdmi_out0_i2c );
58
67
}
59
68
60
69
#endif
0 commit comments