Продолжаем изыскания... Попытался поуправлять мультом (W83627DHG). Чтение регистра

Продолжаем изыскания... Попытался поуправлять мультом (W83627DHG). Чтение регистра CPUFANOUT0 Output Value Select Register - Index 03 (Bank 0) дает ожидаемые результаты (похоже на то, что в БИОСе выставлено), а вот писАть туда не получается, остается прежнее значение. Может ли быть заблокирована запись по шине LPC? Как тогда БИОС туда значения пишет? Что нужно сделать для записи значения в указанный регистр? Cейчас я делаю так:

    outportb(lpc_base + LPC_IR, 0x03);
    outportb(lpc_base + LPC_DR, value);

lpc_base читается так:
const unsigned char EFIR = 0x2E;
const unsigned char EFDR = 0x2F;

unsigned char rd_mio_logdevreg(unsigned char logdev, unsigned char reg)
{
  unsigned char regval;
  outportb(EFIR, 0x87); // Enter extended
  outportb(EFIR, 0x87); //  function mode
  outportb(EFIR, 0x07); // Write logical device number index register
  outportb(EFDR, logdev); // Write logical device number
  outportb(EFIR, reg); 
  regval = inportb(EFDR);
  outportb(EFIR, 0xAA); // Exit extended function mode
  return(regval);
}
...
int main ()
{
  const unsigned char LPC_IR = 0x5;
  const unsigned char LPC_DR = 0x6;
  
  union CHIP_ID {
    unsigned short w;
    unsigned char b[2];
  } chip_id;

  unsigned short lpc_base;

...
  //Reading CR60 & CR61 of Device B
  chip_id.b[1] = rd_mio_logdevreg(0x0B, 0x60);
  chip_id.b[0] = rd_mio_logdevreg(0x0B, 0x61);
  printf("Logical device B Base address: %04Xh\n", chip_id.w);
  lpc_base = chip_id.w;
...
}