35
35
#include <linux/dmi.h>
36
36
37
37
#define MAX_MODEL_NAME 20
38
- #define MAX_SERIAL_NUMBER 18
38
+ #define MAX_SERIAL_NUMBER 19
39
39
40
40
static ssize_t show_status (struct device * dev , struct device_attribute * da , char * buf );
41
41
static ssize_t show_string (struct device * dev , struct device_attribute * da , char * buf );
@@ -90,8 +90,7 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da,
90
90
struct sensor_device_attribute * attr = to_sensor_dev_attr (da );
91
91
struct as4630_54pe_psu_data * data = as4630_54pe_psu_update_device (dev );
92
92
u8 status = 0 ;
93
-
94
- //printk("data->status=0x%x, attr->index=%d,data->index=%d \n", data->status, attr->index, data->index);
93
+
95
94
if (attr -> index == PSU_PRESENT ) {
96
95
if (data -> index == 0 )
97
96
status = !( (data -> status >> 5 ) & 0x1 );
@@ -267,7 +266,6 @@ static struct as4630_54pe_psu_data *as4630_54pe_psu_update_device(struct device
267
266
268
267
/* Read psu status */
269
268
status = as4630_54pe_cpld_read (0x60 , 0x22 );
270
- //printk("status=0x%x in %s\n", status, __FUNCTION__);
271
269
if (status < 0 ) {
272
270
dev_dbg (& client -> dev , "cpld reg 0x60 err %d\n" , status );
273
271
}
@@ -286,21 +284,36 @@ static struct as4630_54pe_psu_data *as4630_54pe_psu_update_device(struct device
286
284
if (status < 0 ) {
287
285
data -> model_name [0 ] = '\0' ;
288
286
dev_dbg (& client -> dev , "unable to read model name from (0x%x)\n" , client -> addr );
289
- printk ("unable to read model name from (0x%x)\n" , client -> addr );
290
287
}
291
- else {
288
+ else if (!strncmp (data -> model_name , "YPEB1200" , strlen ("YPEB1200" )))
289
+ {
290
+ if (data -> model_name [9 ]== 'A' && data -> model_name [10 ]== 'M' )
291
+ {
292
+ data -> model_name [8 ]= 'A' ;
293
+ data -> model_name [9 ]= 'M' ;
294
+ data -> model_name [strlen ("YPEB1200AM" )]= '\0' ;
295
+ }
296
+ else
297
+ data -> model_name [strlen ("YPEB1200" )]= '\0' ;
298
+ }
299
+ else
300
+ {
292
301
data -> model_name [ARRAY_SIZE (data -> model_name )- 1 ] = '\0' ;
293
-
294
302
}
295
- /* Read from offset 0x2e ~ 0x3d (16 bytes) */
303
+ /* Read from offset 0x35 ~ 0x46 (18 bytes) */
296
304
status = as4630_54pe_psu_read_block (client , 0x35 ,data -> serial_number , MAX_SERIAL_NUMBER );
297
305
if (status < 0 )
298
306
{
299
307
data -> serial_number [0 ] = '\0' ;
300
- dev_dbg (& client -> dev , "unable to read model name from (0x%x) offset(0x2e)\n" , client -> addr );
301
- printk ("unable to read model name from (0x%x) offset(0x2e)\n" , client -> addr );
308
+ dev_dbg (& client -> dev , "unable to read model name from (0x%x) offset(0x35)\n" , client -> addr );
309
+ }
310
+ if (!strncmp (data -> model_name , "YPEB1200AM" , strlen ("YPEB1200AM" ))) /*for YPEB1200AM, SN length=18*/
311
+ {
312
+ data -> serial_number [MAX_SERIAL_NUMBER - 1 ]= '\0' ;
302
313
}
303
- data -> serial_number [MAX_SERIAL_NUMBER - 1 ]= '\0' ;
314
+ else
315
+ data -> serial_number [MAX_SERIAL_NUMBER - 2 ]= '\0' ;
316
+
304
317
}
305
318
306
319
data -> last_updated = jiffies ;
0 commit comments