<sys/ioccom.h>, <sys/ioctl.h>
[minix3.git] / drivers / i2c / README.txt
blobe9a69de305d5c7e35df7501f954dcc9412c8dbe9
1 Minix i2c Driver
2 ================
4 TODO: this probably belongs on the wiki
6 Overview
7 --------
9 This is the driver for the i2c bus. It provides the same /dev interface as
10 NetBSD and OpenBSD (see dev/i2c/i2c_io.h). It also provides an interface for
11 other drivers to access the I2C bus using Minix IPC.
13 Organization and Layout
14 -----------------------
16 i2c.c                                   generic i2c bus driver
17 arch/                                   arch specific code
18         earm/                           earm specific code
19                 omap_i2c.c              AM335X/DM37XX i2c bus driver    
20                 omap_i2c.h              AM335X/DM37XX function prototypes
21                 omap_i2c_registers.h    AM335X/DM37XX register offsets, etc.
23 Testing the Code
24 ----------------
26 Below are the steps needed to start up the i2c driver instances. Though,
27 now they get started at boot in /usr/etc/rc, it's still useful to know if
28 you take down the service and need to start it again.
30 Creating the device files (this is already done automatically, but if not):
32 cd /dev && MAKEDEV i2c-1 && MAKEDEV i2c-2 && MAKEDEV i2c-3
34 Starting up the instances:
36 /bin/service up /usr/sbin/i2c -dev /dev/i2c-1 -label i2c.1 -args instance=1
37 /bin/service up /usr/sbin/i2c -dev /dev/i2c-2 -label i2c.2 -args instance=2
38 /bin/service up /usr/sbin/i2c -dev /dev/i2c-3 -label i2c.3 -args instance=3
40 There is an i2cscan program from NetBSD which can detect devices on the bus:
42 i2cscan -r /dev/i2c-1
43 i2cscan -r /dev/i2c-2
44 i2cscan -r /dev/i2c-3
46 Limitations
47 -----------
49 The i2c controllers used in the am335x and the dm37xx do not support zero
50 byte transfers. Writing 0 bytes is a common method used to probe the bus
51 for devices. Most of the address ranges i2cscan scans are done by this
52 method. Therefore, only a subset of devices on the bus will be detected by
53 i2cscan (i.e. the devices it detects using the 1 byte read method). See
54 the register description for I2C_CNT in the technical reference manuals
55 for details about why 0 byte transfers are not allowed.
57 Developing I2C Device Drivers
58 -----------------------------
60 The driver for the EEPROM (a.k.a. drivers/cat24c256) is the hello world of
61 Minix i2c device drivers. It shows how to use the i2cdriver library and
62 how to use the bus for reads and writes. commands/eepromread is another
63 place to look if you're interested in accessing devices through the /dev
64 interface.