[PATCH linux dev-4.10] ARM: aspeed: zaius: Support new board FSI gpio pin mapping
Joel Stanley
joel at jms.id.au
Mon Jun 5 14:46:19 AEST 2017
On Sat, Jun 3, 2017 at 5:16 AM, Robert Lippert <roblip at gmail.com> wrote:
> FSI routing was broken on EVT boards and all boards were reworked
> to use the nearest available GPIO pins. Future boards have
> fixed the issue so need to use the original planned GPIOG ports.
How long will we need to carry support for the EVT boards?
We had proposed using u-boot to fix up the device tree for these kind
of changes. If you want to support the EVT long term, we should look
in to implementing those changes in u-boot.
I have applied this to dev-4.10 so we can support your boards for the
time being.
Cheers,
Joel
> Signed-off-by: Robert Lippert <rlippert at google.com>
> ---
> arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts | 8 ++++++--
> arch/arm/mach-aspeed/aspeed.c | 30 ++++++++++++++++++++++++++++++
> 2 files changed, 36 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> index b5c4c0fb2986..68baf3288263 100644
> --- a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> +++ b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> @@ -80,8 +80,12 @@
>
> status = "okay";
>
> - clock-gpios = <&gpio ASPEED_GPIO(C, 3) GPIO_ACTIVE_HIGH>;
> - data-gpios = <&gpio ASPEED_GPIO(C, 2) GPIO_ACTIVE_HIGH>;
> + /*
> + * These 2 GPIOs are set per board revision in aspeed.c.
> + * These are the DVT and beyond values:
> + * clock-gpios = <&gpio ASPEED_GPIO(G, 0) GPIO_ACTIVE_HIGH>;
> + * data-gpios = <&gpio ASPEED_GPIO(G, 1) GPIO_ACTIVE_HIGH>;
> + */
> trans-gpios = <&gpio ASPEED_GPIO(O, 6) GPIO_ACTIVE_HIGH>;
> enable-gpios = <&gpio ASPEED_GPIO(D, 0) GPIO_ACTIVE_HIGH>;
> mux-gpios = <&gpio ASPEED_GPIO(P, 6) GPIO_ACTIVE_HIGH>;
> diff --git a/arch/arm/mach-aspeed/aspeed.c b/arch/arm/mach-aspeed/aspeed.c
> index 5c88286c96fd..1e080d8909f4 100644
> --- a/arch/arm/mach-aspeed/aspeed.c
> +++ b/arch/arm/mach-aspeed/aspeed.c
> @@ -8,6 +8,8 @@
> */
>
> #include <linux/init.h>
> +#include <linux/gpio/machine.h>
> +#include <dt-bindings/gpio/aspeed-gpio.h>
> #include <linux/of_irq.h>
> #include <linux/of_platform.h>
> #include <linux/io.h>
> @@ -141,6 +143,34 @@ static void __init do_zaius_setup(void)
> /* Read BOARD_REV[4:0] fuses from GPIOM[7:3] */
> reg = readl(AST_IO(AST_BASE_GPIO | 0x78));
> board_rev = (reg >> 3) & 0x1F;
> + printk(KERN_INFO "Zaius platform board revision: 0x%02x\n", board_rev);
> +
> + /* EVT boards have different FSI pin mappings */
> + if (board_rev < 0x08) {
> + static struct gpiod_lookup_table fsi_evt_gpio_lookup = {
> + .dev_id = "fsi-master",
> + .table = {
> + GPIO_LOOKUP("1e780000.gpio", ASPEED_GPIO(C, 3),
> + "clock", GPIO_ACTIVE_HIGH),
> + GPIO_LOOKUP("1e780000.gpio", ASPEED_GPIO(C, 2),
> + "data", GPIO_ACTIVE_HIGH),
> + { },
> + },
> + };
> + gpiod_add_lookup_table(&fsi_evt_gpio_lookup);
> + } else {
> + static struct gpiod_lookup_table fsi_gpio_lookup = {
> + .dev_id = "fsi-master",
> + .table = {
> + GPIO_LOOKUP("1e780000.gpio", ASPEED_GPIO(G, 0),
> + "clock", GPIO_ACTIVE_HIGH),
> + GPIO_LOOKUP("1e780000.gpio", ASPEED_GPIO(G, 1),
> + "data", GPIO_ACTIVE_HIGH),
> + { },
> + },
> + };
> + gpiod_add_lookup_table(&fsi_gpio_lookup);
> + }
>
> /* Assert MAC2 PHY hardware reset */
> /* Set pin low */
> --
> 2.13.0.506.g27d5fe0cd-goog
>
More information about the openbmc
mailing list