From 86d56a5da5b2d50879c1ea955c8e1eed5d27fa7d Mon Sep 17 00:00:00 2001 From: Ley Foon Tan Date: Wed, 19 Sep 2018 16:26:33 +0800 Subject: [PATCH 1/4] gpio: dwapb_gpio: Change to use devm_kcalloc() Change to use managed resource function devm_kcalloc(), so it will auto free memory when driver is removed. Signed-off-by: Ley Foon Tan --- drivers/gpio/dwapb_gpio.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/gpio/dwapb_gpio.c b/drivers/gpio/dwapb_gpio.c index 0f6574d5da1..68836a79021 100644 --- a/drivers/gpio/dwapb_gpio.c +++ b/drivers/gpio/dwapb_gpio.c @@ -171,8 +171,7 @@ static int gpio_dwapb_bind(struct udevice *dev) if (!fdtdec_get_bool(blob, node, "gpio-controller")) continue; - plat = NULL; - plat = calloc(1, sizeof(*plat)); + plat = devm_kcalloc(dev, 1, sizeof(*plat), GFP_KERNEL); if (!plat) return -ENOMEM; @@ -181,23 +180,17 @@ static int gpio_dwapb_bind(struct udevice *dev) plat->pins = fdtdec_get_int(blob, node, "snps,nr-gpios", 0); plat->name = fdt_stringlist_get(blob, node, "bank-name", 0, NULL); - if (ret) - goto err; ret = device_bind(dev, dev->driver, plat->name, plat, -1, &subdev); if (ret) - goto err; + return ret; dev_set_of_offset(subdev, node); bank++; } return 0; - -err: - free(plat); - return ret; } static int gpio_dwapb_remove(struct udevice *dev) From 0ca8fd37ae86726747d5dd96f915967eceb64691 Mon Sep 17 00:00:00 2001 From: Atsushi Nemoto Date: Fri, 21 Sep 2018 09:19:13 +0900 Subject: [PATCH 2/4] tools: socfpga: fix sfp_verify_header Fix sfp_verify_header to return correct version number. This fixes "Not a sane SOCFPGA preloader" error message with v1 header. Signed-off-by: Atsushi Nemoto --- tools/socfpgaimage.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/socfpgaimage.c b/tools/socfpgaimage.c index 390c9bb4025..72d8b96f541 100644 --- a/tools/socfpgaimage.c +++ b/tools/socfpgaimage.c @@ -191,6 +191,7 @@ static int sfp_verify_header(const uint8_t *buf, uint8_t *ver) if (hdr_csum != sfp_csum) return -EINVAL; + *ver = header_v0.version; return img_len; } From 74c78024a0ad6fcdc899bf8d7696e6512b472633 Mon Sep 17 00:00:00 2001 From: Ley Foon Tan Date: Fri, 21 Sep 2018 00:22:14 +0800 Subject: [PATCH 3/4] arm: socfpga: Remove unused function socfpga_emac_manage_reset() Remove code from the reset manager that is never called. Signed-off-by: Ley Foon Tan --- .../include/mach/reset_manager_s10.h | 2 -- arch/arm/mach-socfpga/reset_manager_s10.c | 35 ------------------- 2 files changed, 37 deletions(-) diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h index 6182d5fa3f4..31b73edabe2 100644 --- a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h @@ -108,8 +108,6 @@ struct socfpga_reset_manager { #define RSTMGR_GPIO1 RSTMGR_DEFINE(2, 25) #define RSTMGR_SDR RSTMGR_DEFINE(3, 6) -void socfpga_emac_manage_reset(const unsigned int of_reset_id, u32 state); - /* Create a human-readable reference to SoCFPGA reset. */ #define SOCFPGA_RESET(_name) RSTMGR_##_name diff --git a/arch/arm/mach-socfpga/reset_manager_s10.c b/arch/arm/mach-socfpga/reset_manager_s10.c index 5cc83367407..f176c384951 100644 --- a/arch/arm/mach-socfpga/reset_manager_s10.c +++ b/arch/arm/mach-socfpga/reset_manager_s10.c @@ -93,41 +93,6 @@ void socfpga_bridges_reset(int enable) } } -/* of_reset_id: emac reset id - * state: 0 - disable reset, !0 - enable reset - */ -void socfpga_emac_manage_reset(const unsigned int of_reset_id, u32 state) -{ - u32 reset_emac; - u32 reset_emacocp; - - /* hardcode this now */ - switch (of_reset_id) { - case EMAC0_RESET: - reset_emac = SOCFPGA_RESET(EMAC0); - reset_emacocp = SOCFPGA_RESET(EMAC0_OCP); - break; - case EMAC1_RESET: - reset_emac = SOCFPGA_RESET(EMAC1); - reset_emacocp = SOCFPGA_RESET(EMAC1_OCP); - break; - case EMAC2_RESET: - reset_emac = SOCFPGA_RESET(EMAC2); - reset_emacocp = SOCFPGA_RESET(EMAC2_OCP); - break; - default: - printf("GMAC: Invalid reset ID (%i)!\n", of_reset_id); - hang(); - break; - } - - /* Reset ECC OCP first */ - socfpga_per_reset(reset_emacocp, state); - - /* Release the EMAC controller from reset */ - socfpga_per_reset(reset_emac, state); -} - /* * Release peripherals from reset based on handoff */ From 8be11fb3c1d8d89ff6b60bd3937efcea2dc9c91d Mon Sep 17 00:00:00 2001 From: "Ooi, Joyce" Date: Mon, 24 Sep 2018 23:31:45 -0700 Subject: [PATCH 4/4] arm: socfpga: stratix10: add sgmii in phymode setup Additional sgmii phymode is added in socfpga_phymode_setup() along with a minor fix for maximum number of GMACs. Signed-off-by: Ooi, Joyce --- arch/arm/mach-socfpga/misc_s10.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-socfpga/misc_s10.c b/arch/arm/mach-socfpga/misc_s10.c index 918baac5025..e599362f145 100644 --- a/arch/arm/mach-socfpga/misc_s10.c +++ b/arch/arm/mach-socfpga/misc_s10.c @@ -36,7 +36,8 @@ static u32 socfpga_phymode_setup(u32 gmac_index, const char *phymode) if (!phymode) return -EINVAL; - if (!strcmp(phymode, "mii") || !strcmp(phymode, "gmii")) + if (!strcmp(phymode, "mii") || !strcmp(phymode, "gmii") || + !strcmp(phymode, "sgmii")) modereg = SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII; else if (!strcmp(phymode, "rgmii")) modereg = SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII; @@ -58,7 +59,7 @@ static int socfpga_set_phymode(void) struct fdtdec_phandle_args args; const char *phy_mode; u32 gmac_index; - int nodes[2]; /* Max. 3 GMACs */ + int nodes[3]; /* Max. 3 GMACs */ int ret, count; int i, node;