[PATCH 1/5] mach-aspeed: Add Zaius BMC-specific early setup

Joel Stanley joel at jms.id.au
Thu Oct 13 13:55:43 AEDT 2016


On Thu, Oct 13, 2016 at 9:44 AM, Xo Wang <xow at google.com> wrote:
> Add initialization for "ingrasys,zaius-bmc" machines to deal with
> hardware issues on EVT1 boards. This overrides incorrect straps that
> enabled the SPI slave and disables pull down resistors that prevented
> buttons inputs from being driven high.
>
> This code reads board revision fuse bits directly from GPIO registers
> because GPIO drivers are not available yet.

That's unfortunate, but I can't think of another way to make it work.

> Signed-off-by: Xo Wang <xow at google.com>

Reviewed-by: Joel Stanley <joel at jms.id.au>

> ---
>  arch/arm/mach-aspeed/aspeed.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/arch/arm/mach-aspeed/aspeed.c b/arch/arm/mach-aspeed/aspeed.c
> index 12a63db..9bf159c 100644
> --- a/arch/arm/mach-aspeed/aspeed.c
> +++ b/arch/arm/mach-aspeed/aspeed.c
> @@ -170,6 +170,31 @@ static void __init do_witherspoon_setup(void)
>         do_ast2500_common_setup();
>  }
>
> +static void __init do_zaius_setup(void)
> +{
> +       unsigned long reg;
> +       unsigned long board_rev;
> +
> +       do_ast2500_common_setup();
> +
> +       /* Read BOARD_REV[4:0] fuses from GPIOM[7:3] */
> +       reg = readl(AST_IO(AST_BASE_GPIO | 0x78));
> +       board_rev = (reg >> 3) & 0x1F;
> +
> +       /* EVT1 hacks */
> +       if (board_rev == 0) {
> +               /* Set strap[13:12] to 01, Enable SPI master */
> +               /* Set bits in writes to SCU7C are cleared from SCU70 */
> +               writel(BIT(13), AST_IO(AST_BASE_SCU | 0x7C));
> +               /* SCU70 is set-only, so no read-modify-write needed */
> +               writel(BIT(12), AST_IO(AST_BASE_SCU | 0x70));
> +
> +               /* Disable GPIO I, G/AB pulldowns due to weak driving buffers */
> +               reg = readl(AST_IO(AST_BASE_SCU | 0x8C));
> +               writel(reg | BIT(24) | BIT(22), AST_IO(AST_BASE_SCU | 0x8C));
> +       }
> +}
> +
>
>  #define SCU_PASSWORD   0x1688A8A8
>
> @@ -216,6 +241,8 @@ static void __init aspeed_init_early(void)
>                 do_ast2500evb_setup();
>         if (of_machine_is_compatible("ibm,witherspoon-bmc"))
>                 do_witherspoon_setup();
> +       if (of_machine_is_compatible("ingrasys,zaius-bmc"))
> +               do_zaius_setup();
>  }
>
>  static void __init aspeed_map_io(void)
> --
> 2.8.0.rc3.226.g39d4020
>
> _______________________________________________
> openbmc mailing list
> openbmc at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/openbmc


More information about the openbmc mailing list