Need advice, writing new driver.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello all,

My name is Sean Fendt, I'm employed by Octagon Systems to provide Linux 
support on their line of industrial single board computers and expansion 
cards.  Right now, I'm working on the model PC770, an EBX Formfactor Pentium 
3, based on the Intel 815 chipset.

I need to support a MicroChip 24LC32A (24C32) EEPROM on the SM Bus.  How 
should I proceed?

Background:
Octagon includes in their CPU boards, an Octagon Specific Serial EEPROM.  
This has several purposes:

1. As an industrial PC, the system BIOS is modified to store all setup 
configuration in the serial EEPROM, so no battery is required for retention 
of configuration data.

2. Production test results, custom configurations, serial numbers, PO 
numbers, and much other production data is also stored in this device.

3. (The one I care about).  The top 50% of the EEPROM is available for USER 
DATA.  The user can do whatever they want with it.  I intend to provide a 
driver that only accesses this space.

In past products, I've either had a regular I2C controller (I wrote a full 
kernel I2C driver for the ZF Mach's Access Bus), or a bit-bang interface 
created out of a few chipset GPIO lines (done on all of Octagon's GX1 
designs).

Now, however, in the i815 chipset has an SM Bus.  So, the hardware group 
decided to connect our EEPROM to the SM Bus, along with our standard DS1775 
Temp Sensor, the EEPROM interface on the SDRAM socket, and the clock 
generator.

Our EEPROM is hardwired to address 0x51, as to not conflict with the SDRAM's 
EEPROM at 0x50.  The DS1775 works fine with the lm75 driver, and the click 
generator is something we don't want to give users easy access to anyhow.

The following, I already know:

The group doing octagon's extended BIOS functions (extended int 17 calls) can 
access the device on the SM Bus, so the hardware is capable of the necessary 
commands. (They have discovered, however, they must do a block write, not a 
byte or word write for it to function correctly).

The i801 driver which supports the SM Bus on our board, does not support 
i2c-level commands.  How much trouble will I have if I decide to extend this 
driver to allow at least some i2c-level commands?

Is there some other way I can support the 2-byte address EEPROMs without 
extending the driver to allow i2c-level commands?

Would I be better off to just start over from scratch, write my own bus 
driver, and use my old EEPROM and DS1775 drivers (which are not lm-sensors 
compatable)?  I have permission from the company to submit my work in this 
area to the lm sensors project, which I'd rather do, but if it just doesn't 
make sens, I could start a completely new bus driver.

-- 
-- Sean Fendt
sfendt at octagonsystems.com
Ph: 303 430 1500 Ext 3048



[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux