@@ -26,6 +26,7 @@ static const char* ene_channels[] = /* ENE channel strings
26
26
" RGB Header" ,
27
27
" RGB Header 2" ,
28
28
" RGB Header" ,
29
+ " SSD" ,
29
30
" Unknown" ,
30
31
};
31
32
@@ -35,40 +36,51 @@ ENESMBusController::ENESMBusController(ENESMBusInterface* interface, ene_dev_id
35
36
this ->dev = dev;
36
37
supports_mode_14 = false ;
37
38
38
- UpdateDeviceName ();
39
-
40
- // Read the device configuration table
41
- for (int i = 0 ; i < 64 ; i++)
39
+ if (interface->GetInterfaceType () != ENE_INTERFACE_TYPE_ROG_ARION)
42
40
{
43
- config_table[i] = ENERegisterRead (ENE_REG_CONFIG_TABLE + i);
44
- }
41
+ UpdateDeviceName ();
42
+
43
+ // Read the device configuration table
44
+ for (int i = 0 ; i < 64 ; i++)
45
+ {
46
+ config_table[i] = ENERegisterRead (ENE_REG_CONFIG_TABLE + i);
47
+ }
45
48
46
- /* -----------------------------------------------------------------*\
47
- | If this is running with TRACE or higher loglevel then |
48
- | dump the entire Feature list to log |
49
- \*-----------------------------------------------------------------*/
50
- if (LogManager::get ()->getLoglevel () >= LL_TRACE)
49
+ /* -----------------------------------------------------------------*\
50
+ | If this is running with TRACE or higher loglevel then |
51
+ | dump the entire Feature list to log |
52
+ \*-----------------------------------------------------------------*/
53
+ if (LogManager::get ()->getLoglevel () >= LL_TRACE)
54
+ {
55
+ LOG_TRACE (" [ENE SMBus] ENE config table for 0x%02X:" , dev);
56
+ LOG_TRACE (" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X" , config_table[0 ], config_table[1 ], config_table[2 ], config_table[3 ],
57
+ config_table[4 ], config_table[5 ], config_table[6 ], config_table[7 ],
58
+ config_table[8 ], config_table[9 ], config_table[10 ], config_table[11 ],
59
+ config_table[12 ], config_table[13 ], config_table[14 ], config_table[15 ]);
60
+
61
+ LOG_TRACE (" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X" , config_table[16 ], config_table[17 ], config_table[18 ], config_table[19 ],
62
+ config_table[20 ], config_table[21 ], config_table[22 ], config_table[23 ],
63
+ config_table[24 ], config_table[25 ], config_table[26 ], config_table[27 ],
64
+ config_table[28 ], config_table[29 ], config_table[30 ], config_table[31 ]);
65
+
66
+ LOG_TRACE (" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X" , config_table[32 ], config_table[33 ], config_table[34 ], config_table[35 ],
67
+ config_table[36 ], config_table[37 ], config_table[38 ], config_table[39 ],
68
+ config_table[40 ], config_table[41 ], config_table[42 ], config_table[43 ],
69
+ config_table[44 ], config_table[45 ], config_table[46 ], config_table[47 ]);
70
+
71
+ LOG_TRACE (" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X" , config_table[48 ], config_table[49 ], config_table[50 ], config_table[51 ],
72
+ config_table[52 ], config_table[53 ], config_table[54 ], config_table[55 ],
73
+ config_table[56 ], config_table[57 ], config_table[58 ], config_table[59 ],
74
+ config_table[60 ], config_table[61 ], config_table[62 ], config_table[63 ]);
75
+ }
76
+ }
77
+ else
51
78
{
52
- LOG_TRACE (" [ENE SMBus] ENE config table for 0x%02X:" , dev);
53
- LOG_TRACE (" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X" , config_table[0 ], config_table[1 ], config_table[2 ], config_table[3 ],
54
- config_table[4 ], config_table[5 ], config_table[6 ], config_table[7 ],
55
- config_table[8 ], config_table[9 ], config_table[10 ], config_table[11 ],
56
- config_table[12 ], config_table[13 ], config_table[14 ], config_table[15 ]);
57
-
58
- LOG_TRACE (" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X" , config_table[16 ], config_table[17 ], config_table[18 ], config_table[19 ],
59
- config_table[20 ], config_table[21 ], config_table[22 ], config_table[23 ],
60
- config_table[24 ], config_table[25 ], config_table[26 ], config_table[27 ],
61
- config_table[28 ], config_table[29 ], config_table[30 ], config_table[31 ]);
62
-
63
- LOG_TRACE (" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X" , config_table[32 ], config_table[33 ], config_table[34 ], config_table[35 ],
64
- config_table[36 ], config_table[37 ], config_table[38 ], config_table[39 ],
65
- config_table[40 ], config_table[41 ], config_table[42 ], config_table[43 ],
66
- config_table[44 ], config_table[45 ], config_table[46 ], config_table[47 ]);
67
-
68
- LOG_TRACE (" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X" , config_table[48 ], config_table[49 ], config_table[50 ], config_table[51 ],
69
- config_table[52 ], config_table[53 ], config_table[54 ], config_table[55 ],
70
- config_table[56 ], config_table[57 ], config_table[58 ], config_table[59 ],
71
- config_table[60 ], config_table[61 ], config_table[62 ], config_table[63 ]);
79
+ LOG_TRACE (" [ENE SMBus] ROG STRIX ARION detected, filling in hard coded config table entries." , dev);
80
+ memset (config_table, 0 , sizeof (config_table));
81
+ config_table[ENE_CONFIG_LED_COUNT] = 4 ;
82
+ config_table[0x03 ] = 4 ;
83
+ strcpy (device_name, " ROG STRIX ARION" );
72
84
}
73
85
74
86
// Read LED count from configuration table
@@ -166,6 +178,15 @@ ENESMBusController::ENESMBusController(ENESMBusInterface* interface, ene_dev_id
166
178
// Read LED count from configuration table
167
179
led_count = config_table[ENE_CONFIG_LED_COUNT_0107];
168
180
}
181
+ // ROG ARION - ASUS ROG Arion external SSD enclosure
182
+ // This device does not support ENE read, so we fake the device name string
183
+ // if the interface is ROG Arion type. It uses second generation registers.
184
+ else if (strcmp (device_name, " ROG STRIX ARION" ) == 0 )
185
+ {
186
+ direct_reg = ENE_REG_COLORS_DIRECT_V2;
187
+ effect_reg = ENE_REG_COLORS_EFFECT_V2;
188
+ channel_cfg = ENE_CONFIG_CHANNEL_V2;
189
+ }
169
190
// Assume first generation controller if string does not match
170
191
else
171
192
{
@@ -201,53 +222,60 @@ const char * ENESMBusController::GetChannelName(unsigned int cfg_zone)
201
222
{
202
223
LOG_TRACE (" [%s] Config table for zone %02d: %02d" , device_name, cfg_zone, config_table[channel_cfg + cfg_zone]);
203
224
204
- switch (config_table[channel_cfg + cfg_zone])
225
+ if (interface->GetInterfaceType () == ENE_INTERFACE_TYPE_ROG_ARION)
226
+ {
227
+ return (ene_channels[10 ]);
228
+ }
229
+ else
205
230
{
206
- case (unsigned char )ENE_LED_CHANNEL_AUDIO:
207
- return (ene_channels[0 ]);
208
- break ;
231
+ switch (config_table[channel_cfg + cfg_zone])
232
+ {
233
+ case (unsigned char )ENE_LED_CHANNEL_AUDIO:
234
+ return (ene_channels[0 ]);
235
+ break ;
209
236
210
- case (unsigned char )ENE_LED_CHANNEL_BACKPLATE:
211
- return (ene_channels[1 ]);
212
- break ;
237
+ case (unsigned char )ENE_LED_CHANNEL_BACKPLATE:
238
+ return (ene_channels[1 ]);
239
+ break ;
213
240
214
- case (unsigned char )ENE_LED_CHANNEL_BACK_IO:
215
- return (ene_channels[2 ]);
216
- break ;
241
+ case (unsigned char )ENE_LED_CHANNEL_BACK_IO:
242
+ return (ene_channels[2 ]);
243
+ break ;
217
244
218
- case (unsigned char )ENE_LED_CHANNEL_CENTER:
219
- return (ene_channels[3 ]);
220
- break ;
245
+ case (unsigned char )ENE_LED_CHANNEL_CENTER:
246
+ return (ene_channels[3 ]);
247
+ break ;
221
248
222
- case (unsigned char )ENE_LED_CHANNEL_CENTER_START:
223
- return (ene_channels[4 ]);
224
- break ;
249
+ case (unsigned char )ENE_LED_CHANNEL_CENTER_START:
250
+ return (ene_channels[4 ]);
251
+ break ;
225
252
226
- case (unsigned char )ENE_LED_CHANNEL_DRAM:
227
- case (unsigned char )ENE_LED_CHANNEL_DRAM_2:
228
- case (unsigned char )ENE_LED_CHANNEL_DRAM_3:
229
- return (ene_channels[5 ]);
230
- break ;
253
+ case (unsigned char )ENE_LED_CHANNEL_DRAM:
254
+ case (unsigned char )ENE_LED_CHANNEL_DRAM_2:
255
+ case (unsigned char )ENE_LED_CHANNEL_DRAM_3:
256
+ return (ene_channels[5 ]);
257
+ break ;
231
258
232
- case (unsigned char )ENE_LED_CHANNEL_PCIE:
233
- return (ene_channels[6 ]);
234
- break ;
259
+ case (unsigned char )ENE_LED_CHANNEL_PCIE:
260
+ return (ene_channels[6 ]);
261
+ break ;
235
262
236
- case (unsigned char )ENE_LED_CHANNEL_RGB_HEADER:
237
- return (ene_channels[7 ]);
238
- break ;
263
+ case (unsigned char )ENE_LED_CHANNEL_RGB_HEADER:
264
+ return (ene_channels[7 ]);
265
+ break ;
239
266
240
- case (unsigned char )ENE_LED_CHANNEL_RGB_HEADER_2:
241
- return (ene_channels[8 ]);
242
- break ;
267
+ case (unsigned char )ENE_LED_CHANNEL_RGB_HEADER_2:
268
+ return (ene_channels[8 ]);
269
+ break ;
243
270
244
- case (unsigned char )ENE_LED_CHANNEL_RGB_HEADER_3:
245
- return (ene_channels[9 ]);
246
- break ;
271
+ case (unsigned char )ENE_LED_CHANNEL_RGB_HEADER_3:
272
+ return (ene_channels[9 ]);
273
+ break ;
247
274
248
- default :
249
- return (ene_channels[10 ]);
250
- break ;
275
+ default :
276
+ return (ene_channels[11 ]);
277
+ break ;
278
+ }
251
279
}
252
280
}
253
281
0 commit comments