Skip to content
  • Peter Delevoryas's avatar
    55c57023
    hw/misc/aspeed: Add PECI controller · 55c57023
    Peter Delevoryas authored
    
    
    This introduces a really basic PECI controller that responses to
    commands by always setting the response code to success and then raising
    an interrupt to indicate the command is done. This helps avoid getting
    hit with constant errors if the driver continuously attempts to send a
    command and keeps timing out.
    
    The AST2400 and AST2500 only included registers up to 0x5C, not 0xFC.
    They supported PECI 1.1, 2.0, and 3.0. The AST2600 and AST1030 support
    PECI 4.0, which includes more read/write buffer registers from 0x80 to
    0xFC to support 64-byte mode.
    
    This patch doesn't attempt to handle that, or to create a different
    version of the controller for the different generations, since it's only
    implementing functionality that is common to all generations.
    
    The basic sequence of events is that the firmware will read and write to
    various registers and then trigger a command by setting the FIRE bit in
    the command register (similar to the I2C controller).
    
    Then the firmware waits for an interrupt from the PECI controller,
    expecting the interrupt status register to be filled in with info on
    what happened. If the command was transmitted and received successfully,
    then response codes from the host CPU will be found in the data buffer
    registers.
    
    Signed-off-by: default avatarPeter Delevoryas <pdel@fb.com>
    Reviewed-by: default avatarCédric Le Goater <clg@kaod.org>
    Message-Id: <20220630045133.32251-12-me@pjd.dev>
    [ clg: s/sysbus_mmio_map/aspeed_mmio_map/ ]
    Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
    55c57023
    hw/misc/aspeed: Add PECI controller
    Peter Delevoryas authored
    
    
    This introduces a really basic PECI controller that responses to
    commands by always setting the response code to success and then raising
    an interrupt to indicate the command is done. This helps avoid getting
    hit with constant errors if the driver continuously attempts to send a
    command and keeps timing out.
    
    The AST2400 and AST2500 only included registers up to 0x5C, not 0xFC.
    They supported PECI 1.1, 2.0, and 3.0. The AST2600 and AST1030 support
    PECI 4.0, which includes more read/write buffer registers from 0x80 to
    0xFC to support 64-byte mode.
    
    This patch doesn't attempt to handle that, or to create a different
    version of the controller for the different generations, since it's only
    implementing functionality that is common to all generations.
    
    The basic sequence of events is that the firmware will read and write to
    various registers and then trigger a command by setting the FIRE bit in
    the command register (similar to the I2C controller).
    
    Then the firmware waits for an interrupt from the PECI controller,
    expecting the interrupt status register to be filled in with info on
    what happened. If the command was transmitted and received successfully,
    then response codes from the host CPU will be found in the data buffer
    registers.
    
    Signed-off-by: default avatarPeter Delevoryas <pdel@fb.com>
    Reviewed-by: default avatarCédric Le Goater <clg@kaod.org>
    Message-Id: <20220630045133.32251-12-me@pjd.dev>
    [ clg: s/sysbus_mmio_map/aspeed_mmio_map/ ]
    Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
Loading