17ebd8b66SMauro Carvalho ChehabKernel driver pcf8591 27ebd8b66SMauro Carvalho Chehab===================== 37ebd8b66SMauro Carvalho Chehab 47ebd8b66SMauro Carvalho ChehabSupported chips: 57ebd8b66SMauro Carvalho Chehab 67ebd8b66SMauro Carvalho Chehab * Philips/NXP PCF8591 77ebd8b66SMauro Carvalho Chehab 87ebd8b66SMauro Carvalho Chehab Prefix: 'pcf8591' 97ebd8b66SMauro Carvalho Chehab 107ebd8b66SMauro Carvalho Chehab Addresses scanned: none 117ebd8b66SMauro Carvalho Chehab 127ebd8b66SMauro Carvalho Chehab Datasheet: Publicly available at the NXP website 137ebd8b66SMauro Carvalho Chehab 147ebd8b66SMauro Carvalho Chehab http://www.nxp.com/pip/PCF8591_6.html 157ebd8b66SMauro Carvalho Chehab 167ebd8b66SMauro Carvalho ChehabAuthors: 177ebd8b66SMauro Carvalho Chehab - Aurelien Jarno <aurelien@aurel32.net> 187ebd8b66SMauro Carvalho Chehab - valuable contributions by Jan M. Sendler <sendler@sendler.de>, 197ebd8b66SMauro Carvalho Chehab - Jean Delvare <jdelvare@suse.de> 207ebd8b66SMauro Carvalho Chehab 217ebd8b66SMauro Carvalho Chehab 227ebd8b66SMauro Carvalho ChehabDescription 237ebd8b66SMauro Carvalho Chehab----------- 247ebd8b66SMauro Carvalho Chehab 257ebd8b66SMauro Carvalho ChehabThe PCF8591 is an 8-bit A/D and D/A converter (4 analog inputs and one 267ebd8b66SMauro Carvalho Chehabanalog output) for the I2C bus produced by Philips Semiconductors (now NXP). 277ebd8b66SMauro Carvalho ChehabIt is designed to provide a byte I2C interface to up to 4 separate devices. 287ebd8b66SMauro Carvalho Chehab 297ebd8b66SMauro Carvalho ChehabThe PCF8591 has 4 analog inputs programmable as single-ended or 307ebd8b66SMauro Carvalho Chehabdifferential inputs: 317ebd8b66SMauro Carvalho Chehab 327ebd8b66SMauro Carvalho Chehab- mode 0 : four single ended inputs 337ebd8b66SMauro Carvalho Chehab Pins AIN0 to AIN3 are single ended inputs for channels 0 to 3 347ebd8b66SMauro Carvalho Chehab 357ebd8b66SMauro Carvalho Chehab- mode 1 : three differential inputs 367ebd8b66SMauro Carvalho Chehab Pins AIN3 is the common negative differential input 377ebd8b66SMauro Carvalho Chehab Pins AIN0 to AIN2 are positive differential inputs for channels 0 to 2 387ebd8b66SMauro Carvalho Chehab 397ebd8b66SMauro Carvalho Chehab- mode 2 : single ended and differential mixed 407ebd8b66SMauro Carvalho Chehab Pins AIN0 and AIN1 are single ended inputs for channels 0 and 1 417ebd8b66SMauro Carvalho Chehab Pins AIN2 is the positive differential input for channel 3 427ebd8b66SMauro Carvalho Chehab Pins AIN3 is the negative differential input for channel 3 437ebd8b66SMauro Carvalho Chehab 447ebd8b66SMauro Carvalho Chehab- mode 3 : two differential inputs 457ebd8b66SMauro Carvalho Chehab Pins AIN0 is the positive differential input for channel 0 467ebd8b66SMauro Carvalho Chehab Pins AIN1 is the negative differential input for channel 0 477ebd8b66SMauro Carvalho Chehab Pins AIN2 is the positive differential input for channel 1 487ebd8b66SMauro Carvalho Chehab Pins AIN3 is the negative differential input for channel 1 497ebd8b66SMauro Carvalho Chehab 507ebd8b66SMauro Carvalho ChehabSee the datasheet for details. 517ebd8b66SMauro Carvalho Chehab 527ebd8b66SMauro Carvalho ChehabModule parameters 537ebd8b66SMauro Carvalho Chehab----------------- 547ebd8b66SMauro Carvalho Chehab 557ebd8b66SMauro Carvalho Chehab* input_mode int 567ebd8b66SMauro Carvalho Chehab 577ebd8b66SMauro Carvalho Chehab Analog input mode: 587ebd8b66SMauro Carvalho Chehab 597ebd8b66SMauro Carvalho Chehab - 0 = four single ended inputs 607ebd8b66SMauro Carvalho Chehab - 1 = three differential inputs 617ebd8b66SMauro Carvalho Chehab - 2 = single ended and differential mixed 627ebd8b66SMauro Carvalho Chehab - 3 = two differential inputs 637ebd8b66SMauro Carvalho Chehab 647ebd8b66SMauro Carvalho Chehab 657ebd8b66SMauro Carvalho ChehabAccessing PCF8591 via /sys interface 667ebd8b66SMauro Carvalho Chehab------------------------------------- 677ebd8b66SMauro Carvalho Chehab 687ebd8b66SMauro Carvalho ChehabThe PCF8591 is plainly impossible to detect! Thus the driver won't even 697ebd8b66SMauro Carvalho Chehabtry. You have to explicitly instantiate the device at the relevant 707ebd8b66SMauro Carvalho Chehabaddress (in the interval [0x48..0x4f]) either through platform data, or 71*ccf988b6SMauro Carvalho Chehabusing the sysfs interface. See Documentation/i2c/instantiating-devices.rst 727ebd8b66SMauro Carvalho Chehabfor details. 737ebd8b66SMauro Carvalho Chehab 747ebd8b66SMauro Carvalho ChehabDirectories are being created for each instantiated PCF8591: 757ebd8b66SMauro Carvalho Chehab 767ebd8b66SMauro Carvalho Chehab/sys/bus/i2c/devices/<0>-<1>/ 777ebd8b66SMauro Carvalho Chehab where <0> is the bus the chip is connected to (e. g. i2c-0) 787ebd8b66SMauro Carvalho Chehab and <1> the chip address ([48..4f]) 797ebd8b66SMauro Carvalho Chehab 807ebd8b66SMauro Carvalho ChehabInside these directories, there are such files: 817ebd8b66SMauro Carvalho Chehab 827ebd8b66SMauro Carvalho Chehab in0_input, in1_input, in2_input, in3_input, out0_enable, out0_output, name 837ebd8b66SMauro Carvalho Chehab 847ebd8b66SMauro Carvalho ChehabName contains chip name. 857ebd8b66SMauro Carvalho Chehab 867ebd8b66SMauro Carvalho ChehabThe in0_input, in1_input, in2_input and in3_input files are RO. Reading gives 877ebd8b66SMauro Carvalho Chehabthe value of the corresponding channel. Depending on the current analog inputs 887ebd8b66SMauro Carvalho Chehabconfiguration, files in2_input and in3_input may not exist. Values range 897ebd8b66SMauro Carvalho Chehabfrom 0 to 255 for single ended inputs and -128 to +127 for differential inputs 907ebd8b66SMauro Carvalho Chehab(8-bit ADC). 917ebd8b66SMauro Carvalho Chehab 927ebd8b66SMauro Carvalho ChehabThe out0_enable file is RW. Reading gives "1" for analog output enabled and 937ebd8b66SMauro Carvalho Chehab"0" for analog output disabled. Writing accepts "0" and "1" accordingly. 947ebd8b66SMauro Carvalho Chehab 957ebd8b66SMauro Carvalho ChehabThe out0_output file is RW. Writing a number between 0 and 255 (8-bit DAC), send 967ebd8b66SMauro Carvalho Chehabthe value to the digital-to-analog converter. Note that a voltage will 977ebd8b66SMauro Carvalho Chehabonly appears on AOUT pin if aout0_enable equals 1. Reading returns the last 987ebd8b66SMauro Carvalho Chehabvalue written. 99