]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/ppc/cpu/mpc824x/drivers/i2c_export.h
ppc4xx: TLB init file cleanup
[karo-tx-uboot.git] / arch / ppc / cpu / mpc824x / drivers / i2c_export.h
1 #ifndef I2C_EXPORT_H
2 #define I2C_EXPORT_H
3
4 /****************************************************
5  *
6  * Copyright Motrola 1999
7  *
8  ****************************************************/
9
10 /* These are the defined return values for the I2C_do_transaction function.
11  * Any non-zero value indicates failure.  Failure modes can be added for
12  * more detailed error reporting.
13  */
14 typedef enum _i2c_status
15 {
16  I2C_SUCCESS     = 0,
17  I2C_ERROR,
18 } I2C_Status;
19
20 /* These are the defined tasks for I2C_do_transaction.
21  * Modes for SLAVE_RCV and SLAVE_XMIT will be added.
22  */
23 typedef enum _i2c_transaction_mode
24 {
25         I2C_MASTER_RCV =  0,
26         I2C_MASTER_XMIT = 1,
27 } I2C_TRANSACTION_MODE;
28
29 typedef enum _i2c_interrupt_mode
30 {
31         I2C_INT_DISABLE =  0,
32         I2C_INT_ENABLE = 1,
33 } I2C_INTERRUPT_MODE;
34
35 typedef enum _i2c_stop
36 {
37         I2C_NO_STOP =  0,
38         I2C_STOP = 1,
39 } I2C_STOP_MODE;
40
41 typedef enum _i2c_restart
42 {
43         I2C_NO_RESTART =  0,
44         I2C_RESTART = 1,
45 } I2C_RESTART_MODE;
46
47 /******************** App. API ********************
48  * The application API is for user level application
49  * to use the functionality provided by I2C driver.
50  * This is a "generic" I2C interface, it should contain
51  * nothing specific to the Kahlua implementation.
52  * Only the generic functions are exported by the library.
53  *
54  * Note: Its App.s responsibility to swap the data
55  *       byte. In our API, we just transfer whatever
56  *       we are given
57  **************************************************/
58
59
60 /*  Initialize I2C unit with the following:
61  *  driver's slave address
62  *  interrupt enabled
63  *  optional pointer to application layer print function
64  *
65  *  These parameters may be added:
66  *  desired clock rate
67  *  digital filter frequency sampling rate
68  *
69  *  This function must be called before I2C unit can be used.
70  */
71 extern I2C_Status I2C_Initialize(
72         unsigned char addr,            /* driver's I2C slave address */
73         I2C_INTERRUPT_MODE en_int,     /* 1 - enable I2C interrupt
74                                         * 0 - disable I2C interrupt
75                                         */
76         int (*app_print_function)(char *,...)); /* pointer to optional "printf"
77                                                  * provided by application
78                                                  */
79
80 /* Perform the given I2C transaction, only MASTER_XMIT and MASTER_RCV
81  * are implemented.  Both are only in polling mode.
82  *
83  * en_int controls interrupt/polling mode
84  * act is the type of transaction
85  * addr is the I2C address of the slave device
86  * len is the length of data to send or receive
87  * buffer is the address of the data buffer
88  * stop = I2C_NO_STOP, don't signal STOP at end of transaction
89  *        I2C_STOP, signal STOP at end of transaction
90  * retry is the timeout retry value, currently ignored
91  * rsta = I2C_NO_RESTART, this is not continuation of existing transaction
92  *        I2C_RESTART, this is a continuation of existing transaction
93  */
94 extern I2C_Status I2C_do_transaction( I2C_INTERRUPT_MODE en_int,
95                                       I2C_TRANSACTION_MODE act,
96                                       unsigned char i2c_addr,
97                                       unsigned char data_addr,
98                                       int len,
99                                       char *buffer,
100                                       I2C_STOP_MODE stop,
101                                       int retry,
102                                       I2C_RESTART_MODE rsta);
103 #endif