[PATCH linux dev-4.7 v2] drivers/fsi: Adjust slave ID based on address
Eddie James
eajames at linux.vnet.ibm.com
Fri Feb 10 10:31:31 AEDT 2017
Looks good to me.
Reviewed-by: Eddie James <eajames at us.ibm.com>
On 02/09/2017 02:17 PM, Christopher Bostic wrote:
> In order to access slave address ranges > 0x1FFFFF the slave ID
> must be adjusted accordingly in the command encoding:
>
> ID 0: 0x00000000 - 0x001FFFFF
> ID 1: 0x00200000 - 0x003FFFFF
> ID 2: 0x00400000 - 0x005FFFFF
> ID 3: 0x00600000 - 0x007FFFFF
>
> Signed-off-by: Christopher Bostic <cbostic at linux.vnet.ibm.com>
>
> ---
>
> Changes in V2
> - Remove alignment masking as per recommendation of Alistair Popple
> <alistair at popple.id.au>
> ---
> drivers/fsi/fsi-master-gpio.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/fsi/fsi-master-gpio.c b/drivers/fsi/fsi-master-gpio.c
> index 73d9985..91bdbf2 100644
> --- a/drivers/fsi/fsi-master-gpio.c
> +++ b/drivers/fsi/fsi-master-gpio.c
> @@ -40,6 +40,9 @@
> #define FSI_GPIO_CMD_DFLT_LEN 28
> #define FSI_GPIO_CMD_CRC_SHIFT 60
>
> +#define FSI_SLAVE_SHIFT 21
> +#define FSI_SLAVE_MASK 0x3
> +
> /* Bus errors */
> #define FSI_GPIO_ERR_BUSY 1 /* Slave stuck in busy state */
> #define FSI_GPIO_RESP_ERRA 2 /* Any (misc) Error */
> @@ -305,7 +308,8 @@ static void build_abs_ar_command(struct fsi_gpio_msg *cmd, uint64_t mode,
> cmd->bits = FSI_GPIO_CMD_DFLT_LEN;
> cmd->msg = FSI_GPIO_CMD_DEFAULT;
> cmd->msg |= mode;
> - cmd->msg &= ~FSI_GPIO_CMD_SLAVE_MASK;
> + if (!slave)
> + slave = (addr >> FSI_SLAVE_SHIFT) & FSI_SLAVE_MASK;
> cmd->msg |= (((uint64_t)slave) << FSI_GPIO_CMD_SLV_SHIFT);
> addr &= FSI_GPIO_CMD_ADDR_MASK;
> cmd->msg |= (((uint64_t)addr) << FSI_GPIO_CMD_ADDR_SHIFT);
More information about the openbmc
mailing list