]> git.ipfire.org Git - people/ms/u-boot.git/blob - arch/powerpc/cpu/mpc824x/drivers/i2c_export.h
Move arch/ppc to arch/powerpc
[people/ms/u-boot.git] / arch / powerpc / 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