Changes

Jump to: navigation, search
CONFIG_I2C_CHARDEV=y
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 modeSet LPSS I2C #[1-8] Speed''' is set to '''Standard Mode''' of Fast Mode'''Fast ModeNOTE:'''It’s strongly recommended that All buses are enabled in the range 1-7
'''NOTE3.Find the GPIO extender on an I2C bus: readonly dev_func='17.2'' All buses must be enabled in the range 1 busnum=$(ls -7, not only I2Cl /sys/bus/i2c/devices/ | sed -7ne "/${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))
3. Determine the type of the GPIO extender chip. Possible options are: printf "Device found @ 0x%x on bus %i\n" $busaddr $busnum
* '''Note:''' PCA9335* XRA1201 For this purpose i2cdetect utility may chip should be used:found at address 0x27, whereas XRA1201 chip at 0x4e
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
4. Bind the above found device to driver (superuser privileges are necessary)
echo pca9535 $busaddr >/sys/bus/i2c/devices/i2c-${busnum}/new_device
and check the kernel debug messages for a line like that:
  i2c i2c-7: new_device: Instantiated device pca9535 at 0x27 
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
/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).
Hence, the gpiochip251 is the sought; the individual GPIO line number are from 251 to 251+15
6. The found GPIO may be operated over sysfs interface in the following way:
<br>issue the commands:
6. The found GPIO may be operated over sysfs interface in the following way:
issue the commands:
export n=251 # desired GPIO number
echo $n >/sys/class/gpio/export
cat /sys/class/gpio/gpio$n/value # read the input value
echo 1 > /sys/class/gpio/gpio$n/value # write a value for output
 
1,586
edits