Changeset 1396

Show
Ignore:
Timestamp:
06/15/02 19:10:19 (11 years ago)
Author:
mds
Message:

export EDID info to /proc

Location:
lm-sensors/trunk/kernel
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/kernel/chips/smbus-arp.c

    r1392 r1396  
    7272/* As defined by SMBus Spec. Appendix C */ 
    7373                        {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x28, 
    74                         0x2c, 0x2d, 0x37, 0x40, 0x41, 0x42, 
    75                         0x43, 0x44, ARP_ADDRESS, 
     74                        0x37, ARP_ADDRESS, 
    7675/* As defined by SMBus Spec. Sect. 5.2 */ 
    7776                        0x01, 0x02, 0x03, 0x04, 0x05, 
     
    7978                        0x7c, 0x7d, 0x7e, 0x7f, 
    8079/* Common PC addresses (bad idea) */ 
     80                        0x2d, 0x48, 0x49, /* sensors */ 
    8181                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* eeproms */ 
    8282                        0x69, /* clock chips */ 
     
    9292struct arp_device { 
    9393        int status; 
    94         u8 udid[16];     
     94        u8 dev_cap; 
     95        u8 dev_ver; 
     96        u16 dev_vid; 
     97        u16 dev_did; 
     98        u16 dev_int; 
     99        u16 dev_svid; 
     100        u16 dev_sdid; 
     101        u32 dev_vsid; 
    95102        u8 saddr; 
    96103}; 
     
    136143 
    137144 
    138 /* This is the driver that will be inserted */ 
    139145static struct i2c_driver smbusarp_driver = { 
    140146        /* name */ "SMBUS ARP", 
     
    148154}; 
    149155 
    150 /* These files are created for each bus */ 
    151156static ctl_table smbusarp_dir_table_template[] = { 
     157        {ARP_SYSCTL1, "0", NULL, 0, 0444, NULL, &i2c_proc_real, 
     158         &i2c_sysctl_real, NULL, &smbusarp_contents}, 
     159        {ARP_SYSCTL2, "1", NULL, 0, 0444, NULL, &i2c_proc_real, 
     160         &i2c_sysctl_real, NULL, &smbusarp_contents}, 
     161        {ARP_SYSCTL3, "2", NULL, 0, 0444, NULL, &i2c_proc_real, 
     162         &i2c_sysctl_real, NULL, &smbusarp_contents}, 
     163        {ARP_SYSCTL4, "3", NULL, 0, 0444, NULL, &i2c_proc_real, 
     164         &i2c_sysctl_real, NULL, &smbusarp_contents}, 
     165        {ARP_SYSCTL5, "4", NULL, 0, 0444, NULL, &i2c_proc_real, 
     166         &i2c_sysctl_real, NULL, &smbusarp_contents}, 
     167        {ARP_SYSCTL6, "5", NULL, 0, 0444, NULL, &i2c_proc_real, 
     168         &i2c_sysctl_real, NULL, &smbusarp_contents}, 
     169        {ARP_SYSCTL7, "6", NULL, 0, 0444, NULL, &i2c_proc_real, 
     170         &i2c_sysctl_real, NULL, &smbusarp_contents}, 
     171        {ARP_SYSCTL8, "7", NULL, 0, 0444, NULL, &i2c_proc_real, 
     172         &i2c_sysctl_real, NULL, &smbusarp_contents}, 
    152173        {0} 
    153174}; 
     
    287308        int newdev = 0; 
    288309         
     310        for(i = 0; i < ARP_MAX_DEVICES; i++) 
     311                data->dev[i].status = ARP_FREE; 
     312 
    289313        for(i = 0; i < SMBUS_ADDRESS_SIZE; i++) 
    290314                data->address_pool[i] = ARP_FREE; 
     
    366390 
    367391                } 
    368                 for(i = 0; i < 16; i++) 
    369392                data->dev[newdev].saddr = addr; 
    370                         data->dev[newdev].udid[i] = blk[i]; 
     393                data->dev[newdev].status = ARP_BUSY; 
     394                data->dev[newdev].dev_cap = blk[0]; 
     395                data->dev[newdev].dev_ver = blk[1]; 
     396                data->dev[newdev].dev_vid = (blk[2] << 8) | blk[3]; 
     397                data->dev[newdev].dev_did = (blk[4] << 8) | blk[5]; 
     398                data->dev[newdev].dev_int = (blk[6] << 8) | blk[7]; 
     399                data->dev[newdev].dev_svid = (blk[8] << 8) | blk[9]; 
     400                data->dev[newdev].dev_sdid = (blk[10] << 8) | blk[11]; 
     401                data->dev[newdev].dev_vsid = (blk[12] << 24) | (blk[13] << 16) | 
     402                                             (blk[14] << 8) | blk[15] ; 
    371403 
    372404                blk[16] = addr << 1; 
     
    411443} 
    412444 
     445void smbusarp_contents(struct i2c_client *client, int operation, 
     446                     int ctl_name, int *nrels_mag, long *results) 
     447{ 
     448        int i; 
     449        int nr = ctl_name - ARP_SYSCTL1; 
     450        struct arp_data *data = client->data; 
     451 
     452 
     453        if (operation == SENSORS_PROC_REAL_INFO) 
     454                *nrels_mag = 0; 
     455        else if (operation == SENSORS_PROC_REAL_READ) { 
     456                if(data->dev[nr].status == ARP_BUSY) { 
     457                        results[0] = data->dev[nr].saddr; 
     458                        results[1] = data->dev[nr].dev_cap; 
     459                        results[2] = data->dev[nr].dev_ver; 
     460                        results[3] = data->dev[nr].dev_vid; 
     461                        results[4] = data->dev[nr].dev_did; 
     462                        results[5] = data->dev[nr].dev_int; 
     463                        results[6] = data->dev[nr].dev_svid; 
     464                        results[7] = data->dev[nr].dev_sdid; 
     465                        results[8] = data->dev[nr].dev_vsid; 
     466                        *nrels_mag = 9; 
     467                } else { 
     468                        *nrels_mag = 0; 
     469                } 
     470        } else if (operation == SENSORS_PROC_REAL_WRITE) { 
     471                printk(KERN_WARNING "smbus-arp.o: No writes supported!\n"); 
     472        } 
     473} 
    413474int __init sensors_smbusarp_init(void) 
    414475{ 
  • lm-sensors/trunk/kernel/include/sensors.h

    r1383 r1396  
    559559#define PCF8591_SYSCTL_AOUT 1006          /* Analog output */ 
    560560 
     561#define ARP_SYSCTL1 1000 
     562#define ARP_SYSCTL2 1001 
     563#define ARP_SYSCTL3 1002 
     564#define ARP_SYSCTL4 1003 
     565#define ARP_SYSCTL5 1004 
     566#define ARP_SYSCTL6 1005 
     567#define ARP_SYSCTL7 1006 
     568#define ARP_SYSCTL8 1007 
     569 
    561570#endif                          /* def SENSORS_SENSORS_H */