端口61

bit7     RO      1   RAM奇偶错误(仅当bit2有效时)

bit6     W      1    清除IRQ0  时钟锁存

bit6     R       1    IO奇偶校验  (仅当bit3有效时)

bit5     RO      x     时钟2的输出

bit4     RO      x     刷新请求  时钟除以2

bit3     RW     0    使能IO奇偶校验

bit2     RW     0    使能RAM奇偶校验错误

bit1     RW     1    允许扬声器数据

bit0     RW     1    使能时钟2 

 

有个平台的Metronomo代码使用0x61的bit4 来定时

LegacyMetronome.c ()

UINT8
ReadRefresh (
  VOID
  )
{
  UINT8 Data;

  mCpuIo->Io.Read (
              mCpuIo,
              EfiCpuIoWidthUint8,
              REFRESH_PORT,
              1,
              &Data
              );
  return (UINT8) (Data & REFRESH_ON);
}

EFI_STATUS
EFIAPI
WaitForTick (
  IN EFI_METRONOME_ARCH_PROTOCOL  *This,
  IN UINT32                       TickNumber
  )
{
  //
  // Wait for TickNumber toggles of the Refresh bit
  //
  for (; TickNumber != 0x00; TickNumber--) {
    while (ReadRefresh () == REFRESH_ON)
      ;
    while (ReadRefresh () == REFRESH_OFF)
      ;
  }

  return EFI_SUCCESS;
}
//

Metronome.c (MdeModulePkg\Universal\Metronome)  

posted on 2011-12-06 15:23  lurker0  阅读(296)  评论(0)    收藏  举报

导航