~dannf/ubuntu/saucy/libatasmart/lp1234343

« back to all changes in this revision

Viewing changes to atasmart.strpool.c

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-09-18 09:31:34 UTC
  • mto: (12.1.3 sid)
  • mto: This revision was merged to the branch mainline in revision 6.
  • Revision ID: james.westby@ubuntu.com-20090918093134-tfh8d2gggwyczain
Tags: upstream-0.15
ImportĀ upstreamĀ versionĀ 0.15

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Saved 109 relocations, saved 2 strings (19 b) due to suffix compression. */
 
1
/* Saved 113 relocations, saved 2 strings (19 b) due to suffix compression. */
2
2
static const char _strpool_[] =
3
3
        "16 Byte SCSI ATA SAT Passthru\0"
4
4
        "12 Byte SCSI ATA SAT Passthru\0"
79
79
        "head-amplitude\0"
80
80
        /*** Suppressed due to suffix: 
81
81
        "temperature-celsius\0" ***/
 
82
        "endurance-remaining\0"
 
83
        "power-on-seconds-2\0"
 
84
        "uncorrectable-ecc-count\0"
 
85
        "good-block-rate\0"
82
86
        "head-flying-hours\0"
83
87
        "read-error-retry-rate\0"
84
88
        "9_POWERONMINUTES\0"
1305
1309
                a->pretty_value = (fourtyeight & 0xFFFF)*100 + 273150;
1306
1310
        else if (!strcmp(a->name, "power-on-minutes"))
1307
1311
                a->pretty_value = fourtyeight * 60 * 1000;
1308
 
        else if (!strcmp(a->name, "power-on-seconds"))
 
1312
        else if (!strcmp(a->name, "power-on-seconds") ||
 
1313
                 !strcmp(a->name, "power-on-seconds-2"))
1309
1314
                a->pretty_value = fourtyeight * 1000;
1310
1315
        else if (!strcmp(a->name, "power-on-half-minutes"))
1311
1316
                a->pretty_value = fourtyeight * 30 * 1000;
1431
1436
        [228] = { ((const char*) 2321),   SK_SMART_ATTRIBUTE_UNIT_NONE,     NULL },
1432
1437
        [230] = { ((const char*) 2347),              SK_SMART_ATTRIBUTE_UNIT_UNKNOWN,  NULL },
1433
1438
        [231] = { ((const char*) 1795),         SK_SMART_ATTRIBUTE_UNIT_MKELVIN,  verify_temperature },
1434
 
        [240] = { ((const char*) 2362),           SK_SMART_ATTRIBUTE_UNIT_MSECONDS, verify_long_time },
1435
 
        [250] = { ((const char*) 2380),       SK_SMART_ATTRIBUTE_UNIT_NONE,     NULL }
 
1439
 
 
1440
        /* http://www.adtron.com/pdf/SMART_for_XceedLite_SATA_RevA.pdf */
 
1441
        [232] = { ((const char*) 2362),         SK_SMART_ATTRIBUTE_UNIT_UNKNOWN,  NULL },
 
1442
        [233] = { ((const char*) 2382),          SK_SMART_ATTRIBUTE_UNIT_UNKNOWN,  NULL },
 
1443
        [234] = { ((const char*) 2401),     SK_SMART_ATTRIBUTE_UNIT_SECTORS,  NULL },
 
1444
        [235] = { ((const char*) 2425),             SK_SMART_ATTRIBUTE_UNIT_UNKNOWN,  NULL },
 
1445
 
 
1446
        [240] = { ((const char*) 2441),           SK_SMART_ATTRIBUTE_UNIT_MSECONDS, verify_long_time },
 
1447
        [250] = { ((const char*) 2459),       SK_SMART_ATTRIBUTE_UNIT_NONE,     NULL }
1436
1448
};
1437
1449
/* %STRINGPOOLSTOP% */
1438
1450
 
1454
1466
 
1455
1467
/* %STRINGPOOLSTART% */
1456
1468
static const char *quirk_name[] = {
1457
 
        ((const char*) 2402),
1458
 
        ((const char*) 2419),
1459
 
        ((const char*) 2436),
1460
 
        ((const char*) 2457),
1461
 
        ((const char*) 2485),
1462
 
        ((const char*) 2500),
 
1469
        ((const char*) 2481),
 
1470
        ((const char*) 2498),
1463
1471
        ((const char*) 2515),
1464
 
        ((const char*) 2527),
1465
 
        ((const char*) 2547),
1466
 
        ((const char*) 2567),
1467
 
        ((const char*) 2577),
1468
 
        ((const char*) 2587),
1469
 
        ((const char*) 2599),
 
1472
        ((const char*) 2536),
 
1473
        ((const char*) 2564),
 
1474
        ((const char*) 2579),
 
1475
        ((const char*) 2594),
 
1476
        ((const char*) 2606),
 
1477
        ((const char*) 2626),
 
1478
        ((const char*) 2646),
 
1479
        ((const char*) 2656),
 
1480
        ((const char*) 2666),
 
1481
        ((const char*) 2678),
1470
1482
        NULL
1471
1483
};
1472
1484
/* %STRINGPOOLSTOP% */
1703
1715
                                /* %STRINGPOOLSTART% */
1704
1716
                                if (quirk & SK_SMART_QUIRK_9_POWERONMINUTES) {
1705
1717
                                        static const SkSmartAttributeInfo a = {
1706
 
                                                ((const char*) 2611), SK_SMART_ATTRIBUTE_UNIT_MSECONDS, verify_long_time
 
1718
                                                ((const char*) 2690), SK_SMART_ATTRIBUTE_UNIT_MSECONDS, verify_long_time
1707
1719
                                        };
1708
1720
                                        return &a;
1709
1721
 
1710
1722
                                } else if (quirk & SK_SMART_QUIRK_9_POWERONSECONDS) {
1711
1723
                                        static const SkSmartAttributeInfo a = {
1712
 
                                                ((const char*) 2628), SK_SMART_ATTRIBUTE_UNIT_MSECONDS, verify_long_time
 
1724
                                                ((const char*) 2707), SK_SMART_ATTRIBUTE_UNIT_MSECONDS, verify_long_time
1713
1725
                                        };
1714
1726
                                        return &a;
1715
1727
 
1716
1728
                                } else if (quirk & SK_SMART_QUIRK_9_POWERONHALFMINUTES) {
1717
1729
                                        static const SkSmartAttributeInfo a = {
1718
 
                                                ((const char*) 2645), SK_SMART_ATTRIBUTE_UNIT_MSECONDS, verify_long_time
 
1730
                                                ((const char*) 2724), SK_SMART_ATTRIBUTE_UNIT_MSECONDS, verify_long_time
1719
1731
                                        };
1720
1732
                                        return &a;
1721
1733
                                } else if (quirk & SK_SMART_QUIRK_9_UNKNOWN)
1728
1740
                                /* %STRINGPOOLSTART% */
1729
1741
                                if (quirk & SK_SMART_QUIRK_192_EMERGENCYRETRACTCYCLECT) {
1730
1742
                                        static const SkSmartAttributeInfo a = {
1731
 
                                                ((const char*) 2667), SK_SMART_ATTRIBUTE_UNIT_NONE, NULL
 
1743
                                                ((const char*) 2746), SK_SMART_ATTRIBUTE_UNIT_NONE, NULL
1732
1744
                                        };
1733
1745
                                        return &a;
1734
1746
                                }
1740
1752
                                /* %STRINGPOOLSTART% */
1741
1753
                                if (quirk & SK_SMART_QUIRK_194_10XCELSIUS) {
1742
1754
                                        static const SkSmartAttributeInfo a = {
1743
 
                                                ((const char*) 2697), SK_SMART_ATTRIBUTE_UNIT_MKELVIN, verify_temperature
 
1755
                                                ((const char*) 2776), SK_SMART_ATTRIBUTE_UNIT_MKELVIN, verify_temperature
1744
1756
                                        };
1745
1757
                                        return &a;
1746
1758
                                } else if (quirk & SK_SMART_QUIRK_194_UNKNOWN)
1765
1777
                                /* %STRINGPOOLSTART% */
1766
1778
                                if (quirk & SK_SMART_QUIRK_200_WRITEERRORCOUNT) {
1767
1779
                                        static const SkSmartAttributeInfo a = {
1768
 
                                                ((const char*) 2723), SK_SMART_ATTRIBUTE_UNIT_NONE, NULL
 
1780
                                                ((const char*) 2802), SK_SMART_ATTRIBUTE_UNIT_NONE, NULL
1769
1781
                                        };
1770
1782
                                        return &a;
1771
1783
                                }
1777
1789
                                /* %STRINGPOOLSTART% */
1778
1790
                                if (quirk & SK_SMART_QUIRK_201_DETECTEDTACOUNT) {
1779
1791
                                        static const SkSmartAttributeInfo a = {
1780
 
                                                ((const char*) 2741), SK_SMART_ATTRIBUTE_UNIT_NONE, NULL
 
1792
                                                ((const char*) 2820), SK_SMART_ATTRIBUTE_UNIT_NONE, NULL
1781
1793
                                        };
1782
1794
                                        return &a;
1783
1795
                                }
1972
1984
        const char * const map[] = {
1973
1985
                [SK_SMART_ATTRIBUTE_UNIT_UNKNOWN] = NULL,
1974
1986
                [SK_SMART_ATTRIBUTE_UNIT_NONE] = ((const char*) 30),
1975
 
                [SK_SMART_ATTRIBUTE_UNIT_MSECONDS] = ((const char*) 2759),
1976
 
                [SK_SMART_ATTRIBUTE_UNIT_SECTORS] = ((const char*) 2762),
1977
 
                [SK_SMART_ATTRIBUTE_UNIT_MKELVIN] = ((const char*) 2770)
 
1987
                [SK_SMART_ATTRIBUTE_UNIT_MSECONDS] = ((const char*) 2838),
 
1988
                [SK_SMART_ATTRIBUTE_UNIT_SECTORS] = ((const char*) 2841),
 
1989
                [SK_SMART_ATTRIBUTE_UNIT_MKELVIN] = ((const char*) 2849)
1978
1990
        };
1979
1991
        /* %STRINGPOOLSTOP% */
1980
1992
 
2033
2045
 
2034
2046
        if (!strcmp(a->name, "power-on-minutes") ||
2035
2047
            !strcmp(a->name, "power-on-seconds") ||
 
2048
            !strcmp(a->name, "power-on-seconds-2") ||
2036
2049
            !strcmp(a->name, "power-on-half-minutes") ||
2037
2050
            !strcmp(a->name, "power-on-hours")) {
2038
2051
 
2163
2176
 
2164
2177
        /* %STRINGPOOLSTART% */
2165
2178
        const char * const map[] = {
2166
 
                [SK_SMART_OVERALL_GOOD] = ((const char*) 2773),
2167
 
                [SK_SMART_OVERALL_BAD_ATTRIBUTE_IN_THE_PAST] = ((const char*) 2778),
2168
 
                [SK_SMART_OVERALL_BAD_SECTOR] = ((const char*) 2804),
2169
 
                [SK_SMART_OVERALL_BAD_ATTRIBUTE_NOW] = ((const char*) 2815),
2170
 
                [SK_SMART_OVERALL_BAD_SECTOR_MANY] = ((const char*) 2833),
2171
 
                [SK_SMART_OVERALL_BAD_STATUS] = ((const char*) 2849),
 
2179
                [SK_SMART_OVERALL_GOOD] = ((const char*) 2852),
 
2180
                [SK_SMART_OVERALL_BAD_ATTRIBUTE_IN_THE_PAST] = ((const char*) 2857),
 
2181
                [SK_SMART_OVERALL_BAD_SECTOR] = ((const char*) 2883),
 
2182
                [SK_SMART_OVERALL_BAD_ATTRIBUTE_NOW] = ((const char*) 2894),
 
2183
                [SK_SMART_OVERALL_BAD_SECTOR_MANY] = ((const char*) 2912),
 
2184
                [SK_SMART_OVERALL_BAD_STATUS] = ((const char*) 2928),
2172
2185
        };
2173
2186
        /* %STRINGPOOLSTOP% */
2174
2187
 
2587
2600
                        goto finish;
2588
2601
                }
2589
2602
 
2590
 
                if ((vid == 0x0c0b && pid == 0xb159) ||
 
2603
                if ((vid == 0x152d && pid == 0x2329)) {
 
2604
                        /* Some JMicron bridges seem to choke on SMART
 
2605
                         * commands, so let's explicitly black list
 
2606
                         * them here.
 
2607
                         *
 
2608
                         * https://bugzilla.redhat.com/show_bug.cgi?id=515881 */
 
2609
                        d->type = SK_DISK_TYPE_NONE;
 
2610
                } else if ((vid == 0x0c0b && pid == 0xb159) ||
2591
2611
                    (vid == 0x04fc && pid == 0x0c25) ||
2592
2612
                    (vid == 0x04fc && pid == 0x0c15))
2593
2613
                        d->type = SK_DISK_TYPE_SUNPLUS;
2594
 
                else if ((vid == 0x152d && pid == 0x2329) ||
2595
 
                    (vid == 0x152d && pid == 0x2336) ||
 
2614
                else if ((vid == 0x152d && pid == 0x2336) ||
2596
2615
                    (vid == 0x152d && pid == 0x2338) ||
2597
2616
                    (vid == 0x152d && pid == 0x2339))
2598
2617
                        d->type = SK_DISK_TYPE_JMICRON;