pmac_low_i2c.h 1.3 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
/* 
 *  include/asm-ppc/pmac_low_i2c.h
 *
 *  Copyright (C) 2003 Ben. Herrenschmidt (benh@kernel.crashing.org)
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License
 *  as published by the Free Software Foundation; either version
 *  2 of the License, or (at your option) any later version.
 *
 */
#ifndef __PMAC_LOW_I2C_H__
#define __PMAC_LOW_I2C_H__
14
#ifdef __KERNEL__
L
Linus Torvalds 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

/* i2c mode (based on the platform functions format) */
enum {
	pmac_low_i2c_mode_dumb		= 1,
	pmac_low_i2c_mode_std		= 2,
	pmac_low_i2c_mode_stdsub	= 3,
	pmac_low_i2c_mode_combined	= 4,
};

/* RW bit in address */
enum {
	pmac_low_i2c_read		= 0x01,
	pmac_low_i2c_write		= 0x00
};

/* Init, called early during boot */
extern void pmac_init_low_i2c(void);

/* Locking functions exposed to i2c-keywest */
int pmac_low_i2c_lock(struct device_node *np);
int pmac_low_i2c_unlock(struct device_node *np);

/* Access functions for platform code */
int pmac_low_i2c_open(struct device_node *np, int channel);
int pmac_low_i2c_close(struct device_node *np);
int pmac_low_i2c_setmode(struct device_node *np, int mode);
int pmac_low_i2c_xfer(struct device_node *np, u8 addrdir, u8 subaddr, u8 *data, int len);


44
#endif /* __KERNEL__ */
L
Linus Torvalds 已提交
45
#endif /* __PMAC_LOW_I2C_H__ */