Add Gigabyte Z390 DESIGNARE-CF Ambient LED support

This commit is contained in:
Diego Ortiz
2026-08-21 12:50:00 -05:00
committed by Adam Honse
parent d91dae8f15
commit 7332c6a7ea
4 changed files with 28 additions and 6 deletions
@@ -12,6 +12,18 @@
#include "GigabyteSuperIORGBController.h"
#include "super_io.h"
void GigabyteSuperIOEnter(int sioaddr)
{
/*-----------------------------------------------------*\
| ITE8620 Ambient LED Extended Function Mode sequence |
\*-----------------------------------------------------*/
superio_enter(sioaddr);
superio_inb(sioaddr, GIGABYTE_SUPERIO_EXTENDED_FUNCTION_ENTRY_1);
superio_inb(sioaddr, GIGABYTE_SUPERIO_EXTENDED_FUNCTION_ENTRY_2);
superio_inb(sioaddr, GIGABYTE_SUPERIO_EXTENDED_FUNCTION_ENTRY_3);
superio_inb(sioaddr, GIGABYTE_SUPERIO_EXTENDED_FUNCTION_ENTRY_4);
}
GigabyteSuperIORGBController::GigabyteSuperIORGBController(int sioaddr, std::string dev_name)
{
gig_sioaddr = sioaddr;
@@ -40,10 +52,7 @@ void GigabyteSuperIORGBController::ChipEntry()
/*--------------------------------*\
| Chip Entry Command |
\*_-------------------------------*/
superio_enter(gig_sioaddr);
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_CHIPENTRY_REGISTER_1, GIGABYTE_SUPERIO_CHIPENTRY_VALUE_1);
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_CHIPENTRY_REGISTER_2, GIGABYTE_SUPERIO_CHIPENTRY_VALUE_2);
superio_outb(gig_sioaddr, GIGABYTE_SUPERIO_CHIPENTRY_REGISTER_2, GIGABYTE_SUPERIO_CHIPENTRY_VALUE_2);
GigabyteSuperIOEnter(gig_sioaddr);
/*--------------------------------*\
| Chip Select Command |
@@ -15,6 +15,14 @@
enum
{
/*-----------------------------------*\
| Extended Function Mode Entry Values |
\*_----------------------------------*/
GIGABYTE_SUPERIO_EXTENDED_FUNCTION_ENTRY_1 = 0x87,
GIGABYTE_SUPERIO_EXTENDED_FUNCTION_ENTRY_2 = 0x01,
GIGABYTE_SUPERIO_EXTENDED_FUNCTION_ENTRY_3 = 0x55,
GIGABYTE_SUPERIO_EXTENDED_FUNCTION_ENTRY_4 = 0x55,
/*--------------------------------*\
| Chip Entry Registers and Values |
\*_-------------------------------*/
@@ -129,6 +137,8 @@ enum
};
void GigabyteSuperIOEnter(int sioaddr);
class GigabyteSuperIORGBController
{
public:
@@ -24,7 +24,8 @@ typedef struct
static gig_device compatible_devices[] =
{
{"X570 UD"}
{"X570 UD"},
{"Z390 DESIGNARE-CF"}
};
DetectedControllers DetectGigabyteSuperIORGBControllers()
@@ -41,12 +42,13 @@ DetectedControllers DetectGigabyteSuperIORGBControllers()
{
int sioaddr = sio_addrs[sioaddr_idx];
superio_enter(sioaddr);
GigabyteSuperIOEnter(sioaddr);
int val = (superio_inb(sioaddr, SIO_REG_DEVID) << 8) | superio_inb(sioaddr, SIO_REG_DEVID + 1);
switch(val & SIO_ID_MASK)
{
case SIO_ITE8620_ID:
case SIO_ITE8688_ID:
for(unsigned int i = 0; i < NUM_COMPATIBLE_DEVICES; i++)
{
+1
View File
@@ -24,6 +24,7 @@
#define SIO_NCT6796_ID 0xd420 /* Device ID for NCT6796D (D421) */
#define SIO_NCT6797_ID 0xd450 /* Device ID for NCT6797D (D450) */
#define SIO_NCT6798_ID 0xd428 /* Device ID for NCT6798D (D428) */
#define SIO_ITE8620_ID 0x8620 /* Device ID for ITE8620 (8620) */
#define SIO_ITE8688_ID 0x8688 /* Device ID for ITE8688 (8688) */
#define SIO_REG_LOGDEV 0x07 /* Logical Device Register */
#define SIO_REG_DEVID 0x20 /* Device ID Register */