]> pilppa.org Git - linux-2.6-omap-h63xx.git/blob - drivers/i2c/chips/gpio_expander_omap.c
ARM: OMAP: Fixed compile for I2C
[linux-2.6-omap-h63xx.git] / drivers / i2c / chips / gpio_expander_omap.c
1 /*
2  * drivers/i2c/chips/gpio_expander_omap.c
3  *
4  * Copyright (C) 2004 Texas Instruments Inc
5  * Author:
6  *
7  * gpio expander is used to configure IrDA, camera and audio devices on omap 1710 processor.
8  * 
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License version 2 as
11  * published by the Free Software Foundation.
12  *
13  */
14
15 #include <linux/types.h>
16 #include <linux/i2c.h>
17 #include <linux/errno.h>
18
19 int read_gpio_expa(u8 * val, int addr);
20 int write_gpio_expa(u8 val, int addr);
21
22 #define OMAP_IRDA_DEBUG 0       
23
24 #if (OMAP_IRDA_DEBUG > 0)
25 #define DBG(format, args...) printk(KERN_ERR "%s(): " format, __FUNCTION__, ## args);
26 #define DBG_IRQ(format, args...) printk(KERN_ERR "%s(): " format, __FUNCTION__, ## args);
27 #else
28 #define DBG(format, args...)
29 #define DBG_IRQ(format, args...)
30 #endif
31
32 int write_gpio_expa(u8 val, int addr)
33 {
34         struct i2c_adapter *adap;
35         int err;
36         struct i2c_msg msg[1];
37         unsigned char data[1];
38
39         adap = i2c_get_adapter(0);
40         if (!adap)
41                 return -ENODEV;
42         msg->addr = addr;       /* I2C address of GPIO EXPA */
43         msg->flags = 0;
44         msg->len = 1;
45         msg->buf = data;
46         data[0] = val;
47         err = i2c_transfer(adap, msg, 1);
48         if (err >= 0)
49                 return 0;
50         return err;
51 }
52
53 /* Read from I/O EXPANDER on the H3 board.
54  * The IO expanders need an independent I2C client driver.
55  */
56
57 int read_gpio_expa(u8 * val, int addr)
58 {
59         struct i2c_adapter *adap;
60         int err;
61         struct i2c_msg msg[1];
62         unsigned char data[1];
63
64         adap = i2c_get_adapter(0);
65         if (!adap)
66                 return -ENODEV;
67         msg->addr = addr;       /* I2C address of GPIO EXPA */
68         msg->flags = I2C_M_RD;
69         msg->len = 2;
70         msg->buf = data;
71         err = i2c_transfer(adap, msg, 1);
72         *val = data[0];
73
74         DBG("I2C: Read data is %x\n", (u8) * data);
75         if (err >= 0)
76                 return 0;
77         return err;
78 }
79
80 EXPORT_SYMBOL(read_gpio_expa);
81 EXPORT_SYMBOL(write_gpio_expa);
82