Skip to content

Commit c94eed4

Browse files
Store name in EVGAAmpereGPUController to avoid setting it in detector
1 parent a73a879 commit c94eed4

File tree

5 files changed

+58
-51
lines changed

5 files changed

+58
-51
lines changed

Controllers/EVGAAmpereGPUController/EVGAAmpereGPUControllerDetect.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,17 @@ void DetectEVGAAmpereGPUControllers(i2c_smbus_interface* bus, uint8_t address, c
3434
EVGAGPUv3Controller* controller;
3535
RGBController_EVGAGPUv3* rgb_controller;
3636

37-
controller = new EVGAGPUv3Controller(bus, address);
38-
controller-> evgaGPUName = name.c_str(); // Pass name of the card into the controller for logging.
37+
controller = new EVGAGPUv3Controller(bus, address, name);
3938

4039
if(controller-> ReadFWVersion() != "")
4140
{
4241
rgb_controller = new RGBController_EVGAGPUv3(controller);
43-
rgb_controller->name = name;
42+
4443
ResourceManager::get()->RegisterRGBController(rgb_controller);
4544
}
4645
else
4746
{
48-
LOG_INFO("[%s] Failed to get a valid FW version, does the i2c interface support `i2c_smbus_read_i2c_block_data`?", controller-> evgaGPUName);
47+
LOG_INFO("[%s] Failed to get a valid FW version, does the i2c interface support `i2c_smbus_read_i2c_block_data`?", controller->GetDeviceName().c_str());
4948
delete controller;
5049
}
5150
}

Controllers/EVGAAmpereGPUController/EVGAGPUv3Controller.cpp

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
#include "EVGAGPUv3Controller.h"
1313
#include "LogManager.h"
1414

15-
EVGAGPUv3Controller::EVGAGPUv3Controller(i2c_smbus_interface* bus, evga_dev_id dev)
15+
EVGAGPUv3Controller::EVGAGPUv3Controller(i2c_smbus_interface* bus, evga_dev_id dev, std::string dev_name)
1616
{
17-
this->bus = bus;
18-
this->dev = dev;
17+
this->bus = bus;
18+
this->dev = dev;
19+
this->name = dev_name;
1920
}
2021

2122
EVGAGPUv3Controller::~EVGAGPUv3Controller()
@@ -34,9 +35,14 @@ std::string EVGAGPUv3Controller::GetDeviceLocation()
3435
return("I2C: " + return_string);
3536
}
3637

38+
std::string EVGAGPUv3Controller::GetDeviceName()
39+
{
40+
return(name);
41+
}
42+
3743
void EVGAGPUv3Controller::GetDeviceModes()
3844
{
39-
LOG_DEBUG("[%s] Getting Zone and LED count from HW", evgaGPUName);
45+
LOG_DEBUG("[%s] Getting Zone and LED count from HW", name.c_str());
4046
uint8_t data_pkt[I2C_SMBUS_BLOCK_MAX] = {};
4147

4248
uint8_t result = bus->i2c_smbus_read_i2c_block_data(dev, EVGA_GPU_V3_REG_MODE, 10, data_pkt);
@@ -46,14 +52,14 @@ void EVGAGPUv3Controller::GetDeviceModes()
4652
{
4753
zone_modes[zone] = data_pkt[zone + 1];
4854
zone_led_count[zone] = data_pkt[zone + 5];
49-
LOG_DEBUG("[%s] Zone %1d LED count: %02d, mode: %02d", evgaGPUName, zone + 1, zone_led_count[zone], zone_modes[zone]);
55+
LOG_DEBUG("[%s] Zone %1d LED count: %02d, mode: %02d", name.c_str(), zone + 1, zone_led_count[zone], zone_modes[zone]);
5056
}
5157
zone_sync = data_pkt[9];
52-
LOG_DEBUG("[%s] Zone Sync is %1d", evgaGPUName, zone_sync);
58+
LOG_DEBUG("[%s] Zone Sync is %1d", name.c_str(), zone_sync);
5359
}
5460
else
5561
{
56-
LOG_DEBUG("[%s] Invalid block read result: %02d", evgaGPUName, result);
62+
LOG_DEBUG("[%s] Invalid block read result: %02d", name.c_str(), result);
5763
memset(zone_led_count, 0, sizeof(zone_led_count));
5864
memset(zone_modes, 0, sizeof(zone_modes));
5965
}
@@ -67,7 +73,7 @@ std::string EVGAGPUv3Controller::GetFWVersion()
6773

6874
std::string EVGAGPUv3Controller::ReadFWVersion()
6975
{
70-
LOG_TRACE("[%s] Getting FW from HW", evgaGPUName);
76+
LOG_TRACE("[%s] Getting FW from HW", name.c_str());
7177
uint8_t data_pkt[I2C_SMBUS_BLOCK_MAX] = {};
7278
std::string return_string = "";
7379
char version[10];
@@ -80,7 +86,7 @@ std::string EVGAGPUv3Controller::ReadFWVersion()
8086

8187
snprintf(version, 10, "1.%02d.%02d", major, minor);
8288
return_string.append(version);
83-
LOG_TRACE("[%s] Firmware %s", evgaGPUName, version);
89+
LOG_TRACE("[%s] Firmware %s", name.c_str(), version);
8490
fwVersion = return_string;
8591
return(return_string);
8692
}
@@ -106,7 +112,7 @@ EVGAv3_config EVGAGPUv3Controller::GetZoneConfig(uint8_t zone, uint8_t mode)
106112
zone_config.numberOfColors = 0;
107113
zone_config.speed = EVGA_GPU_V3_SPEED_GENERIC_NORMAL;
108114

109-
LOG_DEBUG("[%s] Retriving Zone %1d config for mode %1d from HW", evgaGPUName, zone, mode);
115+
LOG_DEBUG("[%s] Retriving Zone %1d config for mode %1d from HW", name.c_str(), zone, mode);
110116
uint8_t data_pkt[I2C_SMBUS_BLOCK_MAX] = {};
111117

112118
switch (mode)
@@ -276,12 +282,12 @@ EVGAv3_config EVGAGPUv3Controller::GetZoneConfig(uint8_t zone, uint8_t mode)
276282

277283
if(readFail == false)
278284
{
279-
LOG_TRACE("[%s] Zone %1d Brightness: 0x%02X, Colors: %1d, Speed: 0x%04X, Direction %1d.", evgaGPUName, zone, zone_config.brightness, zone_config.numberOfColors, zone_config.speed, zone_config.direction);
285+
LOG_TRACE("[%s] Zone %1d Brightness: 0x%02X, Colors: %1d, Speed: 0x%04X, Direction %1d.", name.c_str(), zone, zone_config.brightness, zone_config.numberOfColors, zone_config.speed, zone_config.direction);
280286
for(uint8_t color_index = 0; color_index < zone_config.numberOfColors; color_index++)
281287
{
282-
LOG_TRACE("[%s] Color Index [%2d]: 0x%06X", evgaGPUName, color_index, zone_config.colors[color_index]);
288+
LOG_TRACE("[%s] Color Index [%2d]: 0x%06X", name.c_str(), color_index, zone_config.colors[color_index]);
283289
}
284-
LOG_DEBUG("[%s] Done loading Zone %1d configuration from HW", evgaGPUName, zone);
290+
LOG_DEBUG("[%s] Done loading Zone %1d configuration from HW", name.c_str(), zone);
285291
}
286292
else
287293
{
@@ -291,7 +297,7 @@ EVGAv3_config EVGAGPUv3Controller::GetZoneConfig(uint8_t zone, uint8_t mode)
291297
{
292298
zone_config.colors[i] = 0;
293299
}
294-
LOG_DEBUG("[%s] Failed while loading Zone %1d configuration from HW", evgaGPUName, zone);
300+
LOG_DEBUG("[%s] Failed while loading Zone %1d configuration from HW", name.c_str(), zone);
295301
}
296302
return zone_config;
297303
}
@@ -302,13 +308,13 @@ void EVGAGPUv3Controller::initCard()
302308
// NvAPI_I2CWriteEx: Dev: 0x2D RegSize: 0x01 Reg: 0xB2 Size: 0x05 Data: 0x04 0xC6 0xEB 0xEA 0x15
303309
uint8_t data_pkt[5] = {0x04, 0xC6, 0xEB, 0xEA, 0x15};
304310
bus->i2c_smbus_write_i2c_block_data(dev, EVGA_GPU_V3_REG_ENABLE, sizeof(data_pkt), data_pkt);
305-
LOG_TRACE("[%s] Sending SW int packet", evgaGPUName);
311+
LOG_TRACE("[%s] Sending SW int packet", name.c_str());
306312
return;
307313
}
308314

309315
void EVGAGPUv3Controller::SaveConfig()
310316
{
311-
LOG_DEBUG("[%s] Sending save packet", evgaGPUName);
317+
LOG_DEBUG("[%s] Sending save packet", name.c_str());
312318

313319
//NvAPI_I2CWriteEx: Dev: 0x2D RegSize: 0x01 Reg: 0x90 Size: 0x05 Data: 0x04 0x9E 0xEB 0x00 0x90 //Sent on close of PX1
314320
uint8_t data_pkt[5] = {0x04, 0x9E, 0xEB, 0x00, 0x90};
@@ -328,7 +334,7 @@ void EVGAGPUv3Controller::ResizeARGB(uint8_t newSize)
328334
newSize = EVGAGPUV3_LEDS_MAX;
329335
}
330336

331-
LOG_DEBUG("[%s] Resizing ARGB header with %02d size", evgaGPUName, newSize);
337+
LOG_DEBUG("[%s] Resizing ARGB header with %02d size", name.c_str(), newSize);
332338
uint8_t data_pkt[EVGAGPUV3_MODE_PACKET_SIZE] = { 0x09, EVGAGPUV3_INIT, EVGAGPUV3_INIT, EVGAGPUV3_INIT, EVGAGPUV3_INIT,
333339
EVGAGPUV3_INIT, EVGAGPUV3_INIT, EVGAGPUV3_INIT, newSize, EVGAGPUV3_INIT};
334340

@@ -361,7 +367,7 @@ void EVGAGPUv3Controller::SetAllModes(uint8_t zone_0_mode, uint8_t zone_1_mode,u
361367
mode_pkt[9] = sync;
362368

363369
bus->i2c_smbus_write_i2c_block_data(dev, EVGA_GPU_V3_REG_MODE, EVGAGPUV3_MODE_PACKET_SIZE, mode_pkt);
364-
//LOG_TRACE("[%s] Setting all zones to mode: %02d, %2d, %2d, %2d, zone sync %1d.", evgaGPUName, zone_0_mode, zone_1_mode, zone_2_mode, zone_3_mode, sync);
370+
//LOG_TRACE("[%s] Setting all zones to mode: %02d, %2d, %2d, %2d, zone sync %1d.", name.c_str(), zone_0_mode, zone_1_mode, zone_2_mode, zone_3_mode, sync);
365371
}
366372

367373
void EVGAGPUv3Controller::SetZoneMode(uint8_t zone, uint8_t mode)
@@ -381,7 +387,7 @@ void EVGAGPUv3Controller::SetZoneMode(uint8_t zone, uint8_t mode)
381387
mode_pkt[zone + 1] = mode;
382388

383389
bus->i2c_smbus_write_i2c_block_data(dev, EVGA_GPU_V3_REG_MODE, EVGAGPUV3_MODE_PACKET_SIZE, mode_pkt);
384-
//LOG_TRACE("[%s] Setting individual zone %1d to mode %02d", evgaGPUName, zone, mode);
390+
//LOG_TRACE("[%s] Setting individual zone %1d to mode %02d", name.c_str(), zone, mode);
385391
}
386392

387393
void EVGAGPUv3Controller::SetZone(uint8_t zone, uint8_t mode, EVGAv3_config zone_config)
@@ -510,7 +516,7 @@ void EVGAGPUv3Controller::SetZone(uint8_t zone, uint8_t mode, EVGAv3_config zone
510516
break;
511517
default:
512518
{
513-
LOG_TRACE("[%s] Mode %02d not found", evgaGPUName, mode);
519+
LOG_TRACE("[%s] Mode %02d not found", name->c_str(), mode);
514520
}
515521
break;
516522
}

Controllers/EVGAAmpereGPUController/EVGAGPUv3Controller.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,14 @@ enum // Value limits for speeds
9898
class EVGAGPUv3Controller
9999
{
100100
public:
101-
EVGAGPUv3Controller(i2c_smbus_interface* bus, evga_dev_id dev);
101+
EVGAGPUv3Controller(i2c_smbus_interface* bus, evga_dev_id dev, std::string dev_name);
102102
~EVGAGPUv3Controller();
103103

104104
uint8_t zone_led_count[4];
105105
uint8_t zone_modes[4];
106-
const char * evgaGPUName;
107106

108107
std::string GetDeviceLocation();
108+
std::string GetDeviceName();
109109
std::string GetFWVersion();
110110
std::string ReadFWVersion();
111111

@@ -123,6 +123,8 @@ class EVGAGPUv3Controller
123123
i2c_smbus_interface* bus;
124124
evga_dev_id dev;
125125
bool zone_sync;
126-
void initCard();
127126
std::string fwVersion;
127+
std::string name;
128+
129+
void initCard();
128130
};

Controllers/EVGAAmpereGPUController/RGBController_EVGAGPUv3.cpp

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,16 @@ static const char* evga_v3_zone_names[] =
3232
is only able to set all LED's to a single color.
3333
\*-------------------------------------------------------------------*/
3434

35-
RGBController_EVGAGPUv3::RGBController_EVGAGPUv3(EVGAGPUv3Controller* evga_ptr)
35+
RGBController_EVGAGPUv3::RGBController_EVGAGPUv3(EVGAGPUv3Controller* controller_ptr)
3636
{
37-
evga = evga_ptr;
37+
controller = controller_ptr;
3838

39-
name = "EVGA GPU";
39+
name = controller->GetDeviceName();
4040
vendor = "EVGA";
4141
description = "EVGA Ampere RGB GPU Device";
42-
location = evga->GetDeviceLocation();
43-
version = evga->GetFWVersion();
44-
45-
type = DEVICE_TYPE_GPU;
42+
location = controller->GetDeviceLocation();
43+
version = controller->GetFWVersion();
44+
type = DEVICE_TYPE_GPU;
4645

4746
mode Off;
4847
Off.name = "Off";
@@ -169,11 +168,11 @@ RGBController_EVGAGPUv3::RGBController_EVGAGPUv3(EVGAGPUv3Controller* evga_ptr)
169168
// Initialize active mode
170169
for( uint8_t zone_idx = 0; zone_idx < zoneIndexMap.size(); zone_idx++)
171170
{
172-
active_mode = evga->GetZoneMode(0); // Hard coding zone 0 until per zone modes are available.
171+
active_mode = controller->GetZoneMode(0); // Hard coding zone 0 until per zone modes are available.
173172

174173
if(active_mode != EVGA_GPU_V3_MODE_OFF)
175174
{
176-
EVGAv3_config hw_config = evga->GetZoneConfig(zoneIndexMap[zone_idx], active_mode);
175+
EVGAv3_config hw_config = controller->GetZoneConfig(zoneIndexMap[zone_idx], active_mode);
177176

178177
/*---------------------------------------------------------*\
179178
| The LED color (color[0]) will always be set. Mode colors |
@@ -206,7 +205,7 @@ RGBController_EVGAGPUv3::RGBController_EVGAGPUv3(EVGAGPUv3Controller* evga_ptr)
206205

207206
RGBController_EVGAGPUv3::~RGBController_EVGAGPUv3()
208207
{
209-
delete evga;
208+
delete controller;
210209
}
211210

212211
uint8_t RGBController_EVGAGPUv3::getModeIndex(uint8_t mode_value)
@@ -229,11 +228,11 @@ void RGBController_EVGAGPUv3::SetupZones()
229228
| Resizing is only possible on zone 4, addressable header |
230229
\*---------------------------------------------------------*/
231230

232-
evga->GetDeviceModes();
231+
controller->GetDeviceModes();
233232

234233
for(uint8_t zone_idx = 0; zone_idx < 4; zone_idx++)
235234
{
236-
if(evga->zone_led_count[zone_idx] > 0)
235+
if(controller->zone_led_count[zone_idx] > 0)
237236
{
238237
zone* new_zone = new zone();
239238
led* new_led = new led();
@@ -259,7 +258,7 @@ void RGBController_EVGAGPUv3::SetupZones()
259258

260259
void RGBController_EVGAGPUv3::ResizeZone(int /*zone*/, int newSize)
261260
{
262-
evga->ResizeARGB(newSize);
261+
controller->ResizeARGB(newSize);
263262
}
264263

265264
void RGBController_EVGAGPUv3::DeviceUpdateLEDs()
@@ -286,20 +285,20 @@ void RGBController_EVGAGPUv3::DeviceUpdateLEDs()
286285
zone_config.colors[i] = modes[active_mode].colors[i];
287286
}
288287
}
289-
//LOG_TRACE("[%s] Updating LED %1d", evga->evgaGPUName, zone_idx);
290-
evga->SetZone(zoneIndexMap[zone_idx], modes[active_mode].value, zone_config);
288+
//LOG_TRACE("[%s] Updating LED %1d", controller->evgaGPUName, zone_idx);
289+
controller->SetZone(zoneIndexMap[zone_idx], modes[active_mode].value, zone_config);
291290
}
292291
}
293292

294293
void RGBController_EVGAGPUv3::UpdateZoneLEDs(int /*zone*/)
295294
{
296-
//LOG_TRACE("[%s] Updating zone %1d", evga->evgaGPUName, zone);
295+
//LOG_TRACE("[%s] Updating zone %1d", controller->evgaGPUName, zone);
297296
DeviceUpdateLEDs();
298297
}
299298

300299
void RGBController_EVGAGPUv3::UpdateSingleLED(int /*led*/)
301300
{
302-
//LOG_TRACE("[%s] Updating single LED %1d", evga->evgaGPUName, led);
301+
//LOG_TRACE("[%s] Updating single LED %1d", controller->evgaGPUName, led);
303302
DeviceUpdateLEDs();
304303
}
305304

@@ -308,15 +307,15 @@ void RGBController_EVGAGPUv3::DeviceUpdateMode()
308307
/* Update all zone modes in a loop, each one with a packet to be use with per zone control
309308
for(uint8_t zone = 0; zone < 4; zone++)
310309
{
311-
evga->SetZoneMode(zone, modes[active_mode].value);
310+
controller->SetZoneMode(zone, modes[active_mode].value);
312311
}
313312
*/
314-
//LOG_TRACE("[%s] Updating to mode %1d", evga->evgaGPUName, modes[active_mode].value);
313+
//LOG_TRACE("[%s] Updating to mode %1d", controller->evgaGPUName, modes[active_mode].value);
315314
DeviceUpdateLEDs();
316-
evga->SetAllModes(modes[active_mode].value, modes[active_mode].value, modes[active_mode].value,modes[active_mode].value, true); //Set all zones to the same mode
315+
controller->SetAllModes(modes[active_mode].value, modes[active_mode].value, modes[active_mode].value,modes[active_mode].value, true); //Set all zones to the same mode
317316
}
318317

319318
void RGBController_EVGAGPUv3::DeviceSaveMode()
320319
{
321-
evga->SaveConfig();
320+
controller->SaveConfig();
322321
}

Controllers/EVGAAmpereGPUController/RGBController_EVGAGPUv3.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
class RGBController_EVGAGPUv3 : public RGBController
1818
{
1919
public:
20-
RGBController_EVGAGPUv3(EVGAGPUv3Controller* evga_ptr);
20+
RGBController_EVGAGPUv3(EVGAGPUv3Controller* controller_ptr);
2121
~RGBController_EVGAGPUv3();
2222

2323
void SetupZones();
@@ -32,7 +32,8 @@ class RGBController_EVGAGPUv3 : public RGBController
3232
void DeviceSaveMode();
3333

3434
private:
35-
uint8_t getModeIndex(uint8_t mode_value);
36-
EVGAGPUv3Controller* evga;
35+
EVGAGPUv3Controller* controller;
3736
std::vector<uint8_t> zoneIndexMap;
37+
38+
uint8_t getModeIndex(uint8_t mode_value);
3839
};

0 commit comments

Comments
 (0)