Store name in GigabyteSuperIORGBController to avoid setting it in detector

This commit is contained in:
Adam Honse 2025-08-10 00:33:01 -05:00
parent 2535ac3edf
commit 327edf2a6b
4 changed files with 47 additions and 38 deletions

View file

@ -12,15 +12,22 @@
#include "GigabyteSuperIORGBController.h"
#include "super_io.h"
GigabyteSuperIORGBController::GigabyteSuperIORGBController(int sioaddr)
GigabyteSuperIORGBController::GigabyteSuperIORGBController(int sioaddr, std::string dev_name)
{
gig_sioaddr = sioaddr;
name = dev_name;
}
GigabyteSuperIORGBController::~GigabyteSuperIORGBController()
{
}
std::string GigabyteSuperIORGBController::GetDeviceName()
{
return(name);
}
void GigabyteSuperIORGBController::ChipEntry()
{
/*--------------------------------*\
@ -36,6 +43,7 @@ void GigabyteSuperIORGBController::ChipEntry()
\*_-------------------------------*/
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_CHIPSELECT_REGISTER_1, GIGABYTE_SUPERIO_CHIPSELECT_VALUE_1);
}
void GigabyteSuperIORGBController::ChipExit()
{
/*-----------------------------------------------------------------------------------*\
@ -44,6 +52,7 @@ void GigabyteSuperIORGBController::ChipExit()
\*_----------------------------------------------------------------------------------*/
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_CHIPEXIT_REGISTER_1, GIGABYTE_SUPERIO_CHIPEXIT_VALUE_1);
}
void GigabyteSuperIORGBController::SetColor(unsigned int red, unsigned int green, unsigned int blue)
{
/*--------------------------------*\
@ -75,11 +84,11 @@ void GigabyteSuperIORGBController::SetMode(int new_mode)
ChipEntry();
}
/*-----------------------------------------------------*\
/*-----------------------------------------------------*\
| Write the colors to the color sequence registers |
\*-----------------------------------------------------*/
switch (new_mode)
{
{
case GIGABYTE_MODE1_STATIC:
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_STATIC_REGISTER_1, GIGABYTE_SUPERIO_STATIC_VALUE_1);
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_STATIC_REGISTER_2, GIGABYTE_SUPERIO_STATIC_VALUE_2);
@ -117,7 +126,8 @@ void GigabyteSuperIORGBController::SetMode(int new_mode)
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_FLASHING_REGISTER_5, GIGABYTE_SUPERIO_FLASHING_VALUE_5);
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_FLASHING_REGISTER_6, GIGABYTE_SUPERIO_FLASHING_VALUE_6);
break;
}
}
if(new_mode>=GIGABYTE_MODE1_STATIC && new_mode<=GIGABYTE_MODE1_FLASHING)
{
ChipExit();

View file

@ -132,11 +132,10 @@ enum
class GigabyteSuperIORGBController
{
public:
GigabyteSuperIORGBController(int sioaddr);
GigabyteSuperIORGBController(int sioaddr, std::string dev_name);
~GigabyteSuperIORGBController();
std::string GetDeviceName();
std::string GetDeviceLocation();
unsigned int GetMode();
void SetMode(int new_mode);
@ -145,5 +144,6 @@ public:
void ChipEntry();
void ChipExit();
private:
int gig_sioaddr;
int gig_sioaddr;
std::string name;
};

View file

@ -29,13 +29,13 @@ static gig_device compatible_devices[] =
void DetectGigabyteSuperIORGBControllers()
{
int sio_addrs[2] = {0x2E, 0x4E};
int sio_addrs[2] = {0x2E, 0x4E};
DMIInfo board;
std::string board_dmi = board.getMainboard();
std::string manufacturer = board.getManufacturer();
std::string board_dmi = board.getMainboard();
std::string manufacturer = board.getManufacturer();
if (manufacturer != "Gigabyte Technology Co., Ltd.")
if(manufacturer != "Gigabyte Technology Co., Ltd.")
{
return;
}
@ -53,11 +53,10 @@ void DetectGigabyteSuperIORGBControllers()
case SIO_ITE8688_ID:
for(unsigned int i = 0; i < NUM_COMPATIBLE_DEVICES; i++)
{
if (board_dmi.find(std::string(compatible_devices[i].name)) != std::string::npos)
if(board_dmi.find(std::string(compatible_devices[i].name)) != std::string::npos)
{
GigabyteSuperIORGBController* controller = new GigabyteSuperIORGBController(sioaddr);
GigabyteSuperIORGBController* controller = new GigabyteSuperIORGBController(sioaddr, "Gigabyte " + board_dmi);
RGBController_GigabyteSuperIORGB* rgb_controller = new RGBController_GigabyteSuperIORGB(controller);
rgb_controller->name = "Gigabyte " + board_dmi;
ResourceManager::get()->RegisterRGBController(rgb_controller);
break;

View file

@ -87,46 +87,46 @@
RGBController_GigabyteSuperIORGB::RGBController_GigabyteSuperIORGB(GigabyteSuperIORGBController* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "Gigabyte SuperIO Compatible Motherboard";
vendor = "Gigabyte";
type = DEVICE_TYPE_MOTHERBOARD;
description = "Gigabyte SuperIO RGB Device";
name = controller->GetDeviceName();
vendor = "Gigabyte";
type = DEVICE_TYPE_MOTHERBOARD;
description = "Gigabyte SuperIO RGB Device";
mode Direct;
Direct.name = "Direct";
Direct.value = 0;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
Direct.name = "Direct";
Direct.value = 0;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
mode Static;
Static.name = "Static";
Static.value = GIGABYTE_MODE1_STATIC;
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Static.color_mode = MODE_COLORS_PER_LED;
Static.name = "Static";
Static.value = GIGABYTE_MODE1_STATIC;
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Static.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Static);
mode Rainbow;
Rainbow.name = "Rainbow";
Rainbow.value = GIGABYTE_MODE1_RAINBOW;
Rainbow.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Rainbow.color_mode = MODE_COLORS_PER_LED;
Rainbow.name = "Rainbow";
Rainbow.value = GIGABYTE_MODE1_RAINBOW;
Rainbow.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Rainbow.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Rainbow);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = GIGABYTE_MODE1_BREATHING;
Breathing.name = "Breathing";
Breathing.value = GIGABYTE_MODE1_BREATHING;
Breathing.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Breathing.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Breathing);
mode Flashing;
Flashing.name = "Flashing";
Flashing.value = GIGABYTE_MODE1_FLASHING;
Flashing.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Flashing.color_mode = MODE_COLORS_PER_LED;
Flashing.name = "Flashing";
Flashing.value = GIGABYTE_MODE1_FLASHING;
Flashing.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Flashing.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Flashing);
SetupZones();
@ -149,7 +149,7 @@ void RGBController_GigabyteSuperIORGB::SetupZones()
zones.push_back(gig_zone);
led gig_led;
gig_led.name = "LED_C1";
gig_led.name = "LED_C1";
leds.push_back(gig_led);
SetupColors();