@@ -61,12 +61,11 @@ static const u8 ack_header_type_b[] = { 0x00, 0x02, 0x02, 0x01 };
61
61
#define SET_PROFILE_CMD_LENGTH 4
62
62
#define SET_CURVE_CMD_LENGTH 13
63
63
#define SET_CPU_TEMP_CMD_LENGTH 6
64
- #define FIRMWARE_VERSION_LENGTH 8
65
64
#define SERIAL_NUMBER_LENGTH 15
66
65
#define SET_PROFILE_ID_OFFSET 2
67
66
#define SET_PROFILE_PWM_OFFSET 3
68
67
#define SET_CPU_TEMP_PAYLOAD_OFFSET 2
69
- #define FIRMWARE_VERSION_OFFSET 26
68
+ #define FIRMWARE_VERSION_OFFSET 29
70
69
#define SERIAL_NUMBER_OFFSET 3
71
70
#define CURVE_PAYLOAD_OFFSET 4
72
71
#define SHORT_ACK_LENGTH 2
@@ -117,7 +116,7 @@ struct hanbo_data {
117
116
struct hanbo_pwm_channel channel_info [2 ];
118
117
/* Staging buffer for sending HID packets */
119
118
u8 * buffer ;
120
- u8 firmware_version [8 ];
119
+ u8 firmware_version [6 ];
121
120
char serial_number [15 ];
122
121
unsigned long updated ; /* jiffies */
123
122
};
@@ -575,11 +574,8 @@ static const struct hwmon_chip_info hanbo_chip_info = {
575
574
static int firmware_version_show (struct seq_file * seqf , void * unused )
576
575
{
577
576
struct hanbo_data * priv = seqf -> private ;
578
- int i ;
579
577
580
- for (i = 0 ; i < FIRMWARE_VERSION_LENGTH ; i ++ )
581
- seq_printf (seqf , "%02X" , priv -> firmware_version [i ]);
582
- seq_puts (seqf , "\n" );
578
+ seq_printf (seqf , "%s\n" , priv -> firmware_version );
583
579
return 0 ;
584
580
}
585
581
@@ -601,7 +597,7 @@ static void hanbo_debugfs_init(struct hanbo_data *priv)
601
597
{
602
598
char name [64 ];
603
599
604
- if (priv -> firmware_version [0 ] != 0x80 )
600
+ if (priv -> firmware_version [0 ] == '\0' )
605
601
return ; /* When here, nothing to show in debugfs */
606
602
607
603
scnprintf (name , sizeof (name ), "%s-%s" , DRIVER_NAME ,
@@ -637,9 +633,12 @@ static int hanbo_raw_event(struct hid_device *hdev, struct hid_report *report,
637
633
if (ret < 0 )
638
634
goto fail_and_return ;
639
635
int i ;
636
+ char major = 0x30 + data [FIRMWARE_VERSION_OFFSET ];
637
+ char minor = 0x30 + (data [FIRMWARE_VERSION_OFFSET + 1 ] >> 4 & 0x0F );
638
+ char patch = 0x30 + (data [FIRMWARE_VERSION_OFFSET + 1 ] & 0x0F );
640
639
641
- for ( i = 0 ; i < FIRMWARE_VERSION_LENGTH ; i ++ )
642
- priv -> firmware_version [ i ] = data [ FIRMWARE_VERSION_OFFSET + i ] ;
640
+ snprintf ( priv -> firmware_version , sizeof ( priv -> firmware_version ),
641
+ "%c.%c.%c" , major , minor , patch ) ;
643
642
for (i = 0 ; i < SERIAL_NUMBER_LENGTH ; i ++ )
644
643
priv -> serial_number [i ] = data [SERIAL_NUMBER_OFFSET + i ];
645
644
if (!completion_done (& priv -> fw_version_processed ))
@@ -729,6 +728,7 @@ static int hanbo_drv_init(struct hid_device *hdev)
729
728
struct hanbo_data * priv = hid_get_drvdata (hdev );
730
729
int ret ;
731
730
731
+ priv -> firmware_version [0 ] = '\0' ;
732
732
ret = hanbo_hid_write_expanded (priv , get_firmware_ver_cmd ,
733
733
GET_FIRMWARE_VER_CMD_LENGTH );
734
734
if (ret < 0 )
0 commit comments