Changes

Jump to: navigation, search
1. Make sure that the kernel you use supports the necessary driver.
<br>Check the following entries in the kernel config:
<pre> CONFIG_GPIO_PCA953X=[y] CONFIG_I2C=y CONFIG_I2C_CHARDEV=y</pre>
2. Make sure that the appropriate I2C bus is enabled in BIOS settings: <br>
Chipset -> South Cluster Configuration -> LPSS Configuration LPSS I2C #[1-8] Support is set to ACPI mode or PCI mode Set LPSS I2C #[1-8] Speed is set to Standard Mode of Fast Mode
3.Find the GPIO extender on an I2C bus:
<pre>readonly dev_func='17.2' busnum=$(ls -l /sys/bus/i2c/devices/ | sed -ne "/${dev_func}\/i2c_designware/ s/^.*i2c-\([[:digit:]]\{1,2\}\)$/\1/p") busaddr=$(i2cdetect -y -r $busnum | sed -ne 's/^.*\(\(27\|4e\)\).*$/0x\1/Ip') busaddr=$((busaddr)) printf "Device found @ 0x%x on bus %i\n" $busaddr $busnum </pre>
'''Note:''' PCA9335 chip should be found at address 0x27, whereas XRA1201 chip at 0x4e
4. Bind the above found device to driver (superuser privileges are necessary)
<pre>echo pca9535 $busaddr >/sys/bus/i2c/devices/i2c-${busnum}/new_device </pre>
Then check the kernel debug messages for a line like the following:
<pre>i2c i2c-7: new_device: Instantiated device pca9535 at 0x27</pre>
5. To find the appropriate GPIO, issue the command:
<pre>ls /sys/bus/i2c/drivers/pca953x/</pre>
Then look the output for a line like:
<pre>7-0027</pre>
And then issue the command:
<pre>ls /sys/class/gpio/gpiochip*/device -l</pre>
Afterwards, look at the output for a line like the following:
<pre>/sys/class/gpio/gpiochip251/device -> ../../../7-0027</pre>
The bus number and address has to be the same in both cases (7 and 27 in the example).
6. The GPIO found may be operated over sysfs interface in the following way:
issue the commands:
<pre>export n=251 # desired GPIO number echo $n >/sys/class/gpio/export echo out >/sys/class/gpio/gpio$n/direction # desired direction in/out cat /sys/class/gpio/gpio$n/value # read the input value echo 1 > /sys/class/gpio/gpio$n/value # write a value for output</pre>
[[category: fitlet2]]
1,586
edits