diff options
Diffstat (limited to 'configs/platform-v7a')
14 files changed, 381 insertions, 10 deletions
diff --git a/configs/platform-v7a/barebox-am335x-mlo.config b/configs/platform-v7a/barebox-am335x-mlo.config index cc656cb..909b518 100644 --- a/configs/platform-v7a/barebox-am335x-mlo.config +++ b/configs/platform-v7a/barebox-am335x-mlo.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Barebox/arm 2020.02.0 Configuration +# Barebox/arm 2020.02.0-20200302-1 Configuration # CONFIG_ARM=y CONFIG_ARM_USE_COMPRESSED_DTB=y diff --git a/configs/platform-v7a/barebox-am335x.config b/configs/platform-v7a/barebox-am335x.config index 2ae88bc..dcd70e2 100644 --- a/configs/platform-v7a/barebox-am335x.config +++ b/configs/platform-v7a/barebox-am335x.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Barebox/arm 2020.02.0 Configuration +# Barebox/arm 2020.02.0-20200302-1 Configuration # CONFIG_ARM=y CONFIG_ARM_LINUX=y diff --git a/configs/platform-v7a/barebox-am335x.config.diff b/configs/platform-v7a/barebox-am335x.config.diff index 3e09a8f..355e45d 100644 --- a/configs/platform-v7a/barebox-am335x.config.diff +++ b/configs/platform-v7a/barebox-am335x.config.diff @@ -1,4 +1,4 @@ -db955f3172c4b8a13e81f242e249009a +3535341c60838c5a3a5b02da35648d4a # CONFIG_AM33XX_NET_BOOT is not set CONFIG_ARCH_AM33XX=y # CONFIG_ARCH_BCM283X is not set diff --git a/configs/platform-v7a/barebox-mx6.config b/configs/platform-v7a/barebox-mx6.config index 5c441e5..7a549a4 100644 --- a/configs/platform-v7a/barebox-mx6.config +++ b/configs/platform-v7a/barebox-mx6.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Barebox/arm 2020.02.0 Configuration +# Barebox/arm 2020.02.0-20200302-1 Configuration # CONFIG_ARM=y CONFIG_ARM_LINUX=y diff --git a/configs/platform-v7a/barebox-mx6.config.diff b/configs/platform-v7a/barebox-mx6.config.diff index 9e92bc2..ac181dc 100644 --- a/configs/platform-v7a/barebox-mx6.config.diff +++ b/configs/platform-v7a/barebox-mx6.config.diff @@ -1,4 +1,4 @@ -db955f3172c4b8a13e81f242e249009a +3535341c60838c5a3a5b02da35648d4a # CONFIG_ARCH_BCM283X is not set CONFIG_ARCH_HAS_FEC_IMX=y CONFIG_ARCH_HAS_IMX_GPT=y diff --git a/configs/platform-v7a/barebox-rpi2.config b/configs/platform-v7a/barebox-rpi2.config index b614372..39592ee 100644 --- a/configs/platform-v7a/barebox-rpi2.config +++ b/configs/platform-v7a/barebox-rpi2.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Barebox/arm 2020.02.0 Configuration +# Barebox/arm 2020.02.0-20200302-1 Configuration # CONFIG_ARM=y CONFIG_ARM_LINUX=y diff --git a/configs/platform-v7a/barebox-rpi2.config.diff b/configs/platform-v7a/barebox-rpi2.config.diff index a310404..ca89c22 100644 --- a/configs/platform-v7a/barebox-rpi2.config.diff +++ b/configs/platform-v7a/barebox-rpi2.config.diff @@ -1,4 +1,4 @@ -db955f3172c4b8a13e81f242e249009a +3535341c60838c5a3a5b02da35648d4a CONFIG_ARM_ASM_UNIFIED=y CONFIG_BOOTM_INITRD=y # CONFIG_CMD_I2C is undefined diff --git a/configs/platform-v7a/barebox-vexpress.config b/configs/platform-v7a/barebox-vexpress.config index f21828a..ce701a6 100644 --- a/configs/platform-v7a/barebox-vexpress.config +++ b/configs/platform-v7a/barebox-vexpress.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Barebox/arm 2020.02.0 Configuration +# Barebox/arm 2020.02.0-20200302-1 Configuration # CONFIG_ARM=y CONFIG_ARM_LINUX=y diff --git a/configs/platform-v7a/barebox-vexpress.config.diff b/configs/platform-v7a/barebox-vexpress.config.diff index c9e4b30..867fa47 100644 --- a/configs/platform-v7a/barebox-vexpress.config.diff +++ b/configs/platform-v7a/barebox-vexpress.config.diff @@ -1,4 +1,4 @@ -db955f3172c4b8a13e81f242e249009a +3535341c60838c5a3a5b02da35648d4a CONFIG_AMBA_SP804=y # CONFIG_ARCH_BCM283X is not set CONFIG_ARCH_VEXPRESS=y diff --git a/configs/platform-v7a/barebox.config b/configs/platform-v7a/barebox.config index bd4c2b8..c0fc250 100644 --- a/configs/platform-v7a/barebox.config +++ b/configs/platform-v7a/barebox.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Barebox/arm 2020.02.0 Configuration +# Barebox/arm 2020.02.0-20200302-1 Configuration # CONFIG_ARM=y CONFIG_ARM_LINUX=y diff --git a/configs/platform-v7a/patches/barebox-2020.02.0/0001-USB-MUSB-PHY-scrap-singleton-am335x_get_usb_phy.patch b/configs/platform-v7a/patches/barebox-2020.02.0/0001-USB-MUSB-PHY-scrap-singleton-am335x_get_usb_phy.patch new file mode 100644 index 0000000..2250399 --- /dev/null +++ b/configs/platform-v7a/patches/barebox-2020.02.0/0001-USB-MUSB-PHY-scrap-singleton-am335x_get_usb_phy.patch @@ -0,0 +1,136 @@ +From: Ahmad Fatoum <a.fatoum@pengutronix.de> +Date: Tue, 25 Feb 2020 17:57:30 +0100 +Subject: [PATCH] USB: MUSB: PHY: scrap singleton am335x_get_usb_phy() + +am335x_get_usb_phy() retrieves the last probed USB phy. On the BeagleBone +with both PHYs enabled, this means that dependent on probe order, both +MUSB instances could end up with the same PHY. + +Remove the global variable and have the MUSB driver parse the "phys" +property instead. + +The cleaner way to achieve this would be to migrate phy-am335x.c +and phy-am335x-control.c to the generic phy framework and have MUSB use +of_phy_get, alas, even Linux hasn't done this so far and we need +a short patch for master anyway, thus just do it the easy way. + +Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> +Tested-by: Yegor Yefremov <yegorslists@googlemail.com> +Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> +--- + drivers/usb/musb/musb_dsps.c | 16 +++++++++++----- + drivers/usb/musb/phy-am335x.c | 11 ++--------- + drivers/usb/musb/phy-am335x.h | 6 ------ + 3 files changed, 13 insertions(+), 20 deletions(-) + delete mode 100644 drivers/usb/musb/phy-am335x.h + +diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c +index 3b76b6cc610d..f30672914830 100644 +--- a/drivers/usb/musb/musb_dsps.c ++++ b/drivers/usb/musb/musb_dsps.c +@@ -39,7 +39,6 @@ + #include <linux/barebox-wrapper.h> + + #include "musb_core.h" +-#include "phy-am335x.h" + + static __maybe_unused struct of_device_id musb_dsps_dt_ids[]; + +@@ -217,10 +216,6 @@ static int dsps_musb_init(struct musb *musb) + const struct dsps_musb_wrapper *wrp = glue->wrp; + u32 rev, val, mode; + +- musb->xceiv = am335x_get_usb_phy(); +- if (IS_ERR(musb->xceiv)) +- return PTR_ERR(musb->xceiv); +- + /* Returns zero if e.g. not clocked */ + rev = dsps_readl(musb->ctrl_base, wrp->revision); + if (!rev) +@@ -324,6 +319,8 @@ static int dsps_probe(struct device_d *dev) + struct musb_hdrc_config *config; + struct device_node *dn = dev->device_node; + const struct dsps_musb_wrapper *wrp; ++ struct device_node *phy_node; ++ struct device_d *phy_dev; + struct dsps_glue *glue; + int ret; + +@@ -337,6 +334,14 @@ static int dsps_probe(struct device_d *dev) + return -ENODEV; + } + ++ phy_node = of_parse_phandle(dn, "phys", 0); ++ if (!phy_node) ++ return -ENODEV; ++ ++ phy_dev = of_find_device_by_node(phy_node); ++ if (!phy_dev || !phy_dev->priv) ++ return -EPROBE_DEFER; ++ + /* allocate glue */ + glue = kzalloc(sizeof(*glue), GFP_KERNEL); + if (!glue) { +@@ -360,6 +365,7 @@ static int dsps_probe(struct device_d *dev) + glue->musb.ctrl_base = IOMEM(iores->start); + + glue->musb.controller = dev; ++ glue->musb.xceiv = phy_dev->priv; + + config = &glue->config; + +diff --git a/drivers/usb/musb/phy-am335x.c b/drivers/usb/musb/phy-am335x.c +index df31255d891c..6991f4402d3f 100644 +--- a/drivers/usb/musb/phy-am335x.c ++++ b/drivers/usb/musb/phy-am335x.c +@@ -5,7 +5,6 @@ + #include <linux/err.h> + #include "am35x-phy-control.h" + #include "musb_core.h" +-#include "phy-am335x.h" + + struct am335x_usbphy { + void __iomem *base; +@@ -14,13 +13,6 @@ struct am335x_usbphy { + struct usb_phy phy; + }; + +-static struct am335x_usbphy *am_usbphy; +- +-struct usb_phy *am335x_get_usb_phy(void) +-{ +- return &am_usbphy->phy; +-} +- + static int am335x_init(struct usb_phy *phy) + { + struct am335x_usbphy *am_usbphy = container_of(phy, struct am335x_usbphy, phy); +@@ -31,6 +23,7 @@ static int am335x_init(struct usb_phy *phy) + + static int am335x_phy_probe(struct device_d *dev) + { ++ struct am335x_usbphy *am_usbphy; + struct resource *iores; + int ret; + +@@ -54,7 +47,7 @@ static int am335x_phy_probe(struct device_d *dev) + } + + am_usbphy->phy.init = am335x_init; +- dev->priv = am_usbphy; ++ dev->priv = &am_usbphy->phy; + + dev_info(dev, "am_usbphy %p enabled\n", &am_usbphy->phy); + +diff --git a/drivers/usb/musb/phy-am335x.h b/drivers/usb/musb/phy-am335x.h +deleted file mode 100644 +index 27da2e3b1057..000000000000 +--- a/drivers/usb/musb/phy-am335x.h ++++ /dev/null +@@ -1,6 +0,0 @@ +-#ifndef _PHY_AM335x_H_ +-#define _PHY_AM335x_H_ +- +-struct usb_phy *am335x_get_usb_phy(void); +- +-#endif diff --git a/configs/platform-v7a/patches/barebox-2020.02.0/0002-USB-MUSB-defer-driver-probes-where-necessary.patch b/configs/platform-v7a/patches/barebox-2020.02.0/0002-USB-MUSB-defer-driver-probes-where-necessary.patch new file mode 100644 index 0000000..504e4d2 --- /dev/null +++ b/configs/platform-v7a/patches/barebox-2020.02.0/0002-USB-MUSB-defer-driver-probes-where-necessary.patch @@ -0,0 +1,201 @@ +From: Ahmad Fatoum <a.fatoum@pengutronix.de> +Date: Tue, 25 Feb 2020 17:57:31 +0100 +Subject: [PATCH] USB: MUSB: defer driver probes where necessary + +Kernel commit 0782e8572c ("ARM: dts: Probe am335x musb with ti-sysc") +which we pulled in during the v2020.02.0 dts/ sync moved the USB nodes +to be under a ti-sysc bus instead of ti,am33xx-usb. + +This new probe order broke am335x USB under barebox, because the MUSB +drivers couldn't cope with the now different device probe order. + +Pepper some -EPROBE_DEFER around to make USB work again. + +Fixes: 574eed3f6f ("dts: update to v5.5-rc1") +Reported-by: Yegor Yefremov <yegorslists@googlemail.com> +Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> +Tested-by: Yegor Yefremov <yegorslists@googlemail.com> +Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> +--- + drivers/usb/musb/musb_core.c | 5 +++-- + drivers/usb/musb/musb_dsps.c | 39 +++++++++++++++++++++++++---------- + drivers/usb/musb/phy-am335x-control.c | 25 +++++++++++++++------- + drivers/usb/musb/phy-am335x.c | 11 +++++++--- + 4 files changed, 57 insertions(+), 23 deletions(-) + +diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c +index 4c11e6580c0f..b84da5516c4a 100644 +--- a/drivers/usb/musb/musb_core.c ++++ b/drivers/usb/musb/musb_core.c +@@ -1136,8 +1136,9 @@ fail2: + musb_platform_exit(musb); + + fail1: +- dev_err(musb->controller, +- "musb_init_controller failed with status %d\n", status); ++ if (status != -EPROBE_DEFER) ++ dev_err(musb->controller, ++ "musb_init_controller failed with status %d\n", status); + + musb_free(musb); + +diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c +index f30672914830..d54a663e9d8b 100644 +--- a/drivers/usb/musb/musb_dsps.c ++++ b/drivers/usb/musb/musb_dsps.c +@@ -314,7 +314,7 @@ static int dsps_set_mode(void *ctx, enum usb_dr_mode mode) + + static int dsps_probe(struct device_d *dev) + { +- struct resource *iores; ++ struct resource *iores[2]; + struct musb_hdrc_platform_data *pdata; + struct musb_hdrc_config *config; + struct device_node *dn = dev->device_node; +@@ -354,15 +354,19 @@ static int dsps_probe(struct device_d *dev) + + pdata = &glue->pdata; + +- iores = dev_request_mem_resource(dev, 0); +- if (IS_ERR(iores)) +- return PTR_ERR(iores); +- glue->musb.mregs = IOMEM(iores->start); ++ iores[0] = dev_request_mem_resource(dev, 0); ++ if (IS_ERR(iores[0])) { ++ ret = PTR_ERR(iores[0]); ++ goto free_glue; ++ } ++ glue->musb.mregs = IOMEM(iores[0]->start); + +- iores = dev_request_mem_resource(dev, 1); +- if (IS_ERR(iores)) +- return PTR_ERR(iores); +- glue->musb.ctrl_base = IOMEM(iores->start); ++ iores[1] = dev_request_mem_resource(dev, 1); ++ if (IS_ERR(iores[1])) { ++ ret = PTR_ERR(iores[1]); ++ goto release_iores0; ++ } ++ glue->musb.ctrl_base = IOMEM(iores[1]->start); + + glue->musb.controller = dev; + glue->musb.xceiv = phy_dev->priv; +@@ -383,11 +387,24 @@ static int dsps_probe(struct device_d *dev) + if (pdata->mode == MUSB_PORT_MODE_DUAL_ROLE) { + ret = usb_register_otg_device(dev, dsps_set_mode, glue); + if (ret) +- return ret; ++ goto release_iores1; + return 0; + } + +- return musb_init_controller(&glue->musb, pdata); ++ ret = musb_init_controller(&glue->musb, pdata); ++ if (ret) ++ goto release_iores1; ++ ++ return 0; ++ ++release_iores1: ++ release_region(iores[1]); ++release_iores0: ++ release_region(iores[0]); ++free_glue: ++ free(glue); ++ ++ return ret; + } + + static const struct dsps_musb_wrapper am33xx_driver_data = { +diff --git a/drivers/usb/musb/phy-am335x-control.c b/drivers/usb/musb/phy-am335x-control.c +index c84525ec7eb4..41a3689ed3f9 100644 +--- a/drivers/usb/musb/phy-am335x-control.c ++++ b/drivers/usb/musb/phy-am335x-control.c +@@ -109,15 +109,15 @@ struct phy_control *am335x_get_phy_control(struct device_d *dev) + + node = of_parse_phandle(dev->device_node, "ti,ctrl_mod", 0); + if (!node) +- return NULL; ++ return ERR_PTR(-ENOENT); + + dev = of_find_device_by_node(node); + if (!dev) +- return NULL; ++ return ERR_PTR(-EPROBE_DEFER); + + ctrl_usb = dev->priv; + if (!ctrl_usb) +- return NULL; ++ return ERR_PTR(-EPROBE_DEFER); + + return &ctrl_usb->phy_ctrl; + } +@@ -141,13 +141,17 @@ static int am335x_control_usb_probe(struct device_d *dev) + ctrl_usb->dev = dev; + + iores = dev_request_mem_resource(dev, 0); +- if (IS_ERR(iores)) +- return PTR_ERR(iores); ++ if (IS_ERR(iores)) { ++ ret = PTR_ERR(iores); ++ goto free_ctrl; ++ } + ctrl_usb->phy_reg = IOMEM(iores->start); + + iores = dev_request_mem_resource(dev, 1); +- if (IS_ERR(iores)) +- return PTR_ERR(iores); ++ if (IS_ERR(iores)) { ++ ret = PTR_ERR(iores); ++ goto release_resource; ++ } + ctrl_usb->wkup = IOMEM(iores->start); + + spin_lock_init(&ctrl_usb->lock); +@@ -155,6 +159,13 @@ static int am335x_control_usb_probe(struct device_d *dev) + + dev->priv = ctrl_usb; + return 0; ++ ++release_resource: ++ release_region(iores); ++free_ctrl: ++ free(ctrl_usb); ++ ++ return 0; + }; + + static struct driver_d am335x_control_driver = { +diff --git a/drivers/usb/musb/phy-am335x.c b/drivers/usb/musb/phy-am335x.c +index 6991f4402d3f..f2e870d7ee61 100644 +--- a/drivers/usb/musb/phy-am335x.c ++++ b/drivers/usb/musb/phy-am335x.c +@@ -37,13 +37,16 @@ static int am335x_phy_probe(struct device_d *dev) + am_usbphy->base = IOMEM(iores->start); + + am_usbphy->phy_ctrl = am335x_get_phy_control(dev); +- if (!am_usbphy->phy_ctrl) +- return -ENODEV; ++ if (IS_ERR(am_usbphy->phy_ctrl)) { ++ ret = PTR_ERR(am_usbphy->phy_ctrl); ++ goto err_release; ++ } + + am_usbphy->id = of_alias_get_id(dev->device_node, "phy"); + if (am_usbphy->id < 0) { + dev_err(dev, "Missing PHY id: %d\n", am_usbphy->id); +- return am_usbphy->id; ++ ret = am_usbphy->id; ++ goto err_release; + } + + am_usbphy->phy.init = am335x_init; +@@ -53,6 +56,8 @@ static int am335x_phy_probe(struct device_d *dev) + + return 0; + ++err_release: ++ release_region(iores); + err_free: + free(am_usbphy); + diff --git a/configs/platform-v7a/patches/barebox-2020.02.0/0101-Release-2020.02.0-customers-pengutronix-distrokit-v7.patch b/configs/platform-v7a/patches/barebox-2020.02.0/0101-Release-2020.02.0-customers-pengutronix-distrokit-v7.patch new file mode 100644 index 0000000..f6d964c --- /dev/null +++ b/configs/platform-v7a/patches/barebox-2020.02.0/0101-Release-2020.02.0-customers-pengutronix-distrokit-v7.patch @@ -0,0 +1,22 @@ +From: Ahmad Fatoum <a.fatoum@pengutronix.de> +Date: Mon, 2 Mar 2020 10:29:27 +0100 +Subject: [PATCH] Release + 2020.02.0/customers/pengutronix/distrokit-v7a/20200302-1 + +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index ef98910c0bcd..dbc7d3fe5610 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + VERSION = 2020 + PATCHLEVEL = 02 + SUBLEVEL = 0 +-EXTRAVERSION = ++EXTRAVERSION =-20200302-1 + NAME = None + + # *DOCUMENTATION* diff --git a/configs/platform-v7a/patches/barebox-2020.02.0/series b/configs/platform-v7a/patches/barebox-2020.02.0/series new file mode 100644 index 0000000..e9ae258 --- /dev/null +++ b/configs/platform-v7a/patches/barebox-2020.02.0/series @@ -0,0 +1,12 @@ +# umpf-base: v2020.02.0 +# umpf-name: 2020.02.0/customers/pengutronix/distrokit-v7a +# umpf-version: 2020.02.0/customers/pengutronix/distrokit-v7a/20200302-1 +# umpf-topic: v2020.02.0/topic/am335x-usb-fix +# umpf-hashinfo: b7314bc58ef983ea308f10710fdc3330e03fbacd +# umpf-topic-range: 849b2f8b958a19d28715c187a0d6dca23ccba6b5..668810be409187d7ea1dfb43aae151792aabaa25 +0001-USB-MUSB-PHY-scrap-singleton-am335x_get_usb_phy.patch +0002-USB-MUSB-defer-driver-probes-where-necessary.patch +# umpf-release: 2020.02.0/customers/pengutronix/distrokit-v7a/20200302-1 +# umpf-topic-range: 668810be409187d7ea1dfb43aae151792aabaa25..1ddfaff751466a5673322f551ff80acab5cb36ae +0101-Release-2020.02.0-customers-pengutronix-distrokit-v7.patch +# umpf-end |