[PATCH linux dev-4.10] ARM: aspeed: zaius: Support new board FSI gpio pin mapping
Rob Lippert
rlippert at google.com
Tue Jun 6 05:43:06 AEST 2017
On Sun, Jun 4, 2017 at 9:46 PM, Joel Stanley <joel at jms.id.au> wrote:
> 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?
EVT boards should be scrapped within a few months (by end of year at
the latest) at which point we can remove this code hack and uncomment
the properties in the .dts file.
>
> 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 looked at that briefly but it was significantly more complicated :)
>
> I have applied this to dev-4.10 so we can support your boards for the
> time being.
Thanks!
-Rob
>
> 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