Changeset 716

Show
Ignore:
Timestamp:
01/30/00 02:20:51 (13 years ago)
Author:
mds
Message:

(mds) added simple eeprom and ddcmon support to sensors and libsensors.

Location:
lm-sensors/trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/lib/chips.c

    r660 r716  
    15601560  }; 
    15611561 
     1562static sensors_chip_feature ddcmon_features[] = 
     1563  { 
     1564    { SENSORS_DDCMON_ID, "Monitor ID", 
     1565                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1566                         SENSORS_MODE_R, DDCMON_SYSCTL_ID, VALUE(1), 0 }, 
     1567    { SENSORS_DDCMON_VERSIZE, "Monitor Size (cm)", 
     1568                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1569                         SENSORS_MODE_R, DDCMON_SYSCTL_SIZE, VALUE(1), 0 }, 
     1570    { SENSORS_DDCMON_HORSIZE, "hsize", 
     1571                         SENSORS_DDCMON_VERSIZE, SENSORS_NO_MAPPING, 
     1572                         SENSORS_MODE_R, DDCMON_SYSCTL_SIZE, VALUE(2), 0 }, 
     1573    { SENSORS_DDCMON_VERSYNCMIN, "Vertical Sync (Hz)", 
     1574                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1575                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(1), 0 }, 
     1576    { SENSORS_DDCMON_VERSYNCMAX, "v_sync_max", 
     1577                         SENSORS_DDCMON_VERSYNCMIN, SENSORS_NO_MAPPING, 
     1578                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(2), 0 }, 
     1579    { SENSORS_DDCMON_HORSYNCMIN, "Horizontal Sync (KHz)", 
     1580                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1581                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(3), 0 }, 
     1582    { SENSORS_DDCMON_HORSYNCMAX, "h_sync_max", 
     1583                         SENSORS_DDCMON_HORSYNCMIN, SENSORS_NO_MAPPING, 
     1584                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(4), 0 }, 
     1585    { SENSORS_DDCMON_TIMINGS, "timings", 
     1586                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1587                         SENSORS_MODE_R, DDCMON_SYSCTL_TIMINGS, VALUE(1), 0 }, 
     1588    { SENSORS_DDCMON_SERIAL, "Serial number", 
     1589                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1590                         SENSORS_MODE_R, DDCMON_SYSCTL_SERIAL, VALUE(1), 0 }, 
     1591    { 0 } 
     1592  }; 
     1593 
     1594static sensors_chip_feature eeprom_features[] = 
     1595  { 
     1596    { SENSORS_EEPROM_TYPE, "Memory type", 
     1597                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1598                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(3), 0 }, 
     1599    { SENSORS_EEPROM_ROWADDR, "SDRAM Size (MB)", 
     1600                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1601                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(4), 0 }, 
     1602    { SENSORS_EEPROM_COLADDR, "col", 
     1603                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1604                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(5), 0 }, 
     1605    { SENSORS_EEPROM_NUMROWS, "num rows", 
     1606                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
     1607                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(6), 0 }, 
     1608    { 0 } 
     1609  }; 
     1610 
    15621611sensors_chip_features sensors_chip_features_list[] = 
    15631612{ 
     
    15961645                /* Cheat on ADM1022 for now - no separate #defines */ 
    15971646 { SENSORS_ADM1022_PREFIX, thmc50_features }, 
     1647 { SENSORS_DDCMON_PREFIX, ddcmon_features }, 
     1648 { SENSORS_EEPROM_PREFIX, eeprom_features }, 
    15981649 { 0 } 
    15991650}; 
  • lm-sensors/trunk/lib/chips.h

    r659 r716  
    725725#define SENSORS_THMC50_DIE_CODE 90 /* R */ 
    726726 
     727/* DDC Monitor */ 
     728 
     729#define SENSORS_DDCMON_PREFIX "ddcmon" 
     730 
     731#define SENSORS_DDCMON_ID 10 
     732#define SENSORS_DDCMON_HORSIZE 21 
     733#define SENSORS_DDCMON_VERSIZE 22 
     734#define SENSORS_DDCMON_HORSYNCMIN 31 
     735#define SENSORS_DDCMON_HORSYNCMAX 32 
     736#define SENSORS_DDCMON_VERSYNCMIN 33 
     737#define SENSORS_DDCMON_VERSYNCMAX 34 
     738#define SENSORS_DDCMON_SERIAL 40 
     739#define SENSORS_DDCMON_TIMINGS 50 
     740 
     741/* EEPROM (SDRAM DIMM) */ 
     742 
     743#define SENSORS_EEPROM_PREFIX "eeprom" 
     744 
     745#define SENSORS_EEPROM_TYPE 10 
     746#define SENSORS_EEPROM_ROWADDR 12 
     747#define SENSORS_EEPROM_COLADDR 13 
     748#define SENSORS_EEPROM_NUMROWS 14 
     749 
    727750#endif /* def LIB_SENSORS_CHIPS_H */ 
  • lm-sensors/trunk/prog/sensors/chips.c

    r682 r716  
    14331433} 
    14341434 
     1435void print_ddcmon(const sensors_chip_name *name) 
     1436{ 
     1437        char  *label = NULL; 
     1438        double a, b; 
     1439        int    valid, i; 
     1440        char  s[8]; 
     1441         
     1442   if (!sensors_get_label_and_valid(*name, SENSORS_DDCMON_ID, &label,&valid) && 
     1443       !sensors_get_feature(*name, SENSORS_DDCMON_ID, &a)) { 
     1444      if (valid) { 
     1445        i = (int) a;     
     1446        s[0] = ((i >> 10) & 0x1f) | 0x40; 
     1447        s[1] = ((i >> 5) & 0x1f) | 0x40; 
     1448        s[2] = (i & 0x1f) | 0x40; 
     1449        s[3] = ((i >> 20) & 0x0f) + '0'; 
     1450        s[4] = ((i >> 16) & 0x0f) + '0'; 
     1451        s[5] = ((i >> 28) & 0x0f) + '0'; 
     1452        s[6] = ((i >> 24) & 0x0f) + '0'; 
     1453        s[7] = 0; 
     1454         print_label(label, 24); 
     1455         printf("%s\n", s); 
     1456      } 
     1457   } else 
     1458      printf("ERROR: data 1\n"); 
     1459   free_the_label(&label); 
     1460 
     1461   if (!sensors_get_label_and_valid(*name, SENSORS_DDCMON_SERIAL, &label,&valid) && 
     1462       !sensors_get_feature(*name, SENSORS_DDCMON_SERIAL, &a)) { 
     1463      if (valid) { 
     1464         print_label(label, 24); 
     1465         printf("%d\n", (int) a); 
     1466      } 
     1467   } else 
     1468      printf("ERROR: data 2\n"); 
     1469   free_the_label(&label); 
     1470 
     1471   if (!sensors_get_label_and_valid(*name, SENSORS_DDCMON_VERSIZE, &label,&valid) && 
     1472       !sensors_get_feature(*name, SENSORS_DDCMON_VERSIZE, &a) && 
     1473       !sensors_get_feature(*name, SENSORS_DDCMON_HORSIZE, &b)) { 
     1474      if (valid) { 
     1475         print_label(label, 24); 
     1476         printf("%dx%d\n", (int) a, (int) b); 
     1477      } 
     1478   } else 
     1479      printf("ERROR: data 3\n"); 
     1480   free_the_label(&label); 
     1481 
     1482   if (!sensors_get_label_and_valid(*name, SENSORS_DDCMON_VERSYNCMIN, &label,&valid) && 
     1483       !sensors_get_feature(*name, SENSORS_DDCMON_VERSYNCMIN, &a) && 
     1484       !sensors_get_feature(*name, SENSORS_DDCMON_VERSYNCMAX, &b)) { 
     1485      if (valid) { 
     1486         print_label(label, 24); 
     1487         printf("%d-%d\n", (int) a, (int) b); 
     1488      } 
     1489   } else 
     1490      printf("ERROR: data 4\n"); 
     1491   free_the_label(&label); 
     1492 
     1493   if (!sensors_get_label_and_valid(*name, SENSORS_DDCMON_HORSYNCMIN, &label,&valid) && 
     1494       !sensors_get_feature(*name, SENSORS_DDCMON_HORSYNCMIN, &a) && 
     1495       !sensors_get_feature(*name, SENSORS_DDCMON_HORSYNCMAX, &b)) { 
     1496      if (valid) { 
     1497         print_label(label, 24); 
     1498         printf("%d-%d\n", (int) a, (int) b); 
     1499      } 
     1500   } else 
     1501      printf("ERROR: data 5\n"); 
     1502   free_the_label(&label); 
     1503 
     1504} 
     1505 
     1506void print_eeprom(const sensors_chip_name *name) 
     1507{ 
     1508        char  *label = NULL; 
     1509        double a, b, c; 
     1510        int    valid, i; 
     1511 
     1512   if (!sensors_get_label_and_valid(*name, SENSORS_EEPROM_TYPE, &label,&valid) && 
     1513       !sensors_get_feature(*name, SENSORS_EEPROM_TYPE, &a)) { 
     1514      if (valid) { 
     1515        if(((int) a) != 4)       
     1516            return; 
     1517         print_label(label, 24); 
     1518         printf("SDRAM DIMM SPD\n"); 
     1519      } 
     1520   } else 
     1521      printf("ERROR: data 1\n"); 
     1522   free_the_label(&label); 
     1523 
     1524   if (!sensors_get_label_and_valid(*name, SENSORS_EEPROM_ROWADDR, &label,&valid) && 
     1525       !sensors_get_feature(*name, SENSORS_EEPROM_ROWADDR, &a) && 
     1526       !sensors_get_feature(*name, SENSORS_EEPROM_COLADDR, &b) && 
     1527       !sensors_get_feature(*name, SENSORS_EEPROM_NUMROWS, &c)) { 
     1528      if (valid) { 
     1529         print_label(label, 24); 
     1530         i = (((int) a) & 0x0f) + (((int) b) & 0x0f) + ((int) c) - 16; 
     1531         if(i > 0 && i <= 10) 
     1532                 printf("%d\n", 1 << i); 
     1533         else 
     1534                 printf("invalid\n"); 
     1535      } 
     1536   } else 
     1537      printf("ERROR: data 2\n"); 
     1538   free_the_label(&label); 
     1539 
     1540} 
     1541 
    14351542void print_unknown_chip(const sensors_chip_name *name) 
    14361543{ 
  • lm-sensors/trunk/prog/sensors/chips.h

    r438 r716  
    3434extern void print_w83781d(const sensors_chip_name *name); 
    3535extern void print_maxilife(const sensors_chip_name *name); 
     36extern void print_ddcmon(const sensors_chip_name *name); 
     37extern void print_eeprom(const sensors_chip_name *name); 
    3638 
    3739#endif /* def PROG_SENSORS_CHIPS_H */ 
  • lm-sensors/trunk/prog/sensors/main.c

    r636 r716  
    277277           !strcmp(name.prefix,"maxilife-as")) 
    278278    print_maxilife(&name); 
     279  else if (!strcmp(name.prefix,"ddcmon")) 
     280    print_ddcmon(&name); 
     281  else if (!strcmp(name.prefix,"eeprom")) 
     282    print_eeprom(&name); 
    279283  else 
    280284    print_unknown_chip(&name);