Changes
CONFIG_I2C_CHARDEV=y
2. Make sure that the appropriate I2C bus is enabled in BIOS settings:
Chipset -> South Cluster Configuration -> LPSS Configuration
'''LPSS I2C #[1-8] ''' Support is set to '''ACPI mode or PCI modeSet LPSS I2C #[1-8] Speed ''' is set to '''Standard Mode ''' of '''Fast Mode'''
3. Determine the type of the GPIO extender chip. Possible options are:
* PCA9335* XRA1201For this purpose i2cdetect utility may be used:
i2cdetect -y -r 7
PCA9335 chip should be found at address 0x27, whereas XRA1201 chip at 0x4e
4. Issue the following command (superuser privileges are necessary)
echo pca9535 0x27> /sys/bus/i2c/devices/i2c-7/new_device
in case pca9535 chip found
or
echo pca9535 0x4e> /sys/bus/i2c/devices/i2c-7/new_device
and check the kernel debug messages for a line like that:
5. To find the appropriate GPIO issue the command:
ls /sys/bus/i2c/drivers/pca953x/
and look the output for a line like this:
'''7-0027'''
and then issue the command:
ls /sys/class/gpio/gpiochip*/device -l
and look the output for a line like this:
/sys/class/gpio/gpiochip251/device -> ../../../'''7-0027'''
The bus number and address have to be the same in the both cases (7 and 27 in the example).
6. The found GPIO may be operated over sysfs interface this way:
issue the commands:
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