diff --git a/config/sources/families/include/sunxi64_common.inc b/config/sources/families/include/sunxi64_common.inc index 5e35149452..8d940a5d48 100644 --- a/config/sources/families/include/sunxi64_common.inc +++ b/config/sources/families/include/sunxi64_common.inc @@ -23,7 +23,7 @@ case $BRANCH in edge) KERNEL_VERSION_LEVEL=${KERNEL_VERSION_LEVEL:-6.1} - KERNELSWITCHOBJ=${KERNELSWITCHOBJ:-'tag=v6.1.2'} + KERNELSWITCHOBJ=${KERNELSWITCHOBJ:-'tag=v6.1.4'} ;; esac diff --git a/config/sources/families/include/sunxi_common.inc b/config/sources/families/include/sunxi_common.inc index 6e45bea33c..93cfdfd122 100644 --- a/config/sources/families/include/sunxi_common.inc +++ b/config/sources/families/include/sunxi_common.inc @@ -22,7 +22,7 @@ case $BRANCH in ;; edge) KERNEL_VERSION_LEVEL=${KERNEL_VERSION_LEVEL:-6.1} - KERNELSWITCHOBJ=${KERNELSWITCHOBJ:-'tag=v6.1.2'} + KERNELSWITCHOBJ=${KERNELSWITCHOBJ:-'tag=v6.1.4'} ;; esac diff --git a/patch/kernel/archive/sunxi-6.1/patches.armbian/drv-phy-sun4i-usb-Add-support-for-the-H616-USB-PHY.patch b/patch/kernel/archive/sunxi-6.1/patches.armbian/drv-phy-sun4i-usb-Add-support-for-the-H616-USB-PHY.patch deleted file mode 100644 index b6a26cd47a..0000000000 --- a/patch/kernel/archive/sunxi-6.1/patches.armbian/drv-phy-sun4i-usb-Add-support-for-the-H616-USB-PHY.patch +++ /dev/null @@ -1,51 +0,0 @@ -From f88fd57e9153a0cc5ee3643930983774f7127508 Mon Sep 17 00:00:00 2001 -From: Andre Przywara -Date: Sun, 6 Dec 2020 01:40:16 +0000 -Subject: [PATCH 018/170] drv:phy: sun4i-usb: Add support for the H616 USB PHY - -The USB PHY used in the Allwinner H616 SoC inherits some traits from its -various predecessors: it has four full PHYs like the H3, needs some -extra bits to be set like the H6, and puts SIDDQ on a different bit like -the A100. Plus it needs this weird PHY2 quirk. - -Name all those properties in a new config struct and assign a new -compatible name to it. - -Signed-off-by: Andre Przywara ---- - drivers/phy/allwinner/phy-sun4i-usb.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c -index b74c0e0c8..a16760268 100644 ---- a/drivers/phy/allwinner/phy-sun4i-usb.c -+++ b/drivers/phy/allwinner/phy-sun4i-usb.c -@@ -1055,6 +1055,17 @@ static const struct sun4i_usb_phy_cfg sun50i_h6_cfg = { - .missing_phys = BIT(1) | BIT(2), - }; - -+static const struct sun4i_usb_phy_cfg sun50i_h616_cfg = { -+ .num_phys = 4, -+ .type = sun50i_h6_phy, -+ .disc_thresh = 3, -+ .phyctl_offset = REG_PHYCTL_A33, -+ .dedicated_clocks = true, -+ .phy0_dual_route = true, -+ .hci_phy_ctl_clear = PHY_CTL_SIDDQ, -+ .needs_phy2_siddq = true, -+}; -+ - static const struct of_device_id sun4i_usb_phy_of_match[] = { - { .compatible = "allwinner,sun4i-a10-usb-phy", .data = &sun4i_a10_cfg }, - { .compatible = "allwinner,sun5i-a13-usb-phy", .data = &sun5i_a13_cfg }, -@@ -1070,6 +1081,7 @@ static const struct of_device_id sun4i_usb_phy_of_match[] = { - { .compatible = "allwinner,sun50i-a64-usb-phy", - .data = &sun50i_a64_cfg}, - { .compatible = "allwinner,sun50i-h6-usb-phy", .data = &sun50i_h6_cfg }, -+ { .compatible = "allwinner,sun50i-h616-usb-phy", .data = &sun50i_h616_cfg }, - { }, - }; - MODULE_DEVICE_TABLE(of, sun4i_usb_phy_of_match); --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.1/patches.armbian/drv-phy-sun4i-usb-Introduce-port2-SIDDQ-quirk.patch b/patch/kernel/archive/sunxi-6.1/patches.armbian/drv-phy-sun4i-usb-Introduce-port2-SIDDQ-quirk.patch deleted file mode 100644 index 578cdd20ad..0000000000 --- a/patch/kernel/archive/sunxi-6.1/patches.armbian/drv-phy-sun4i-usb-Introduce-port2-SIDDQ-quirk.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 0535dbfc5d968e9c957adbfbcdf7c82907ae5e4d Mon Sep 17 00:00:00 2001 -From: Andre Przywara -Date: Mon, 10 May 2021 11:01:31 +0100 -Subject: [PATCH 017/170] drv:phy: sun4i-usb: Introduce port2 SIDDQ quirk - -At least the Allwinner H616 SoC requires a weird quirk to make most -USB PHYs work: Only port2 works out of the box, but all other ports -need some help from this port2 to work correctly: The CLK_BUS_PHY2 and -RST_USB_PHY2 clock and reset need to be enabled, and the SIDDQ bit in -the PMU PHY control register needs to be cleared. For this register to -be accessible, CLK_BUS_ECHI2 needs to be ungated. Don't ask .... - -Instead of disguising this as some generic feature, do exactly that -in our PHY init: -If the quirk bit is set, and we initialise a PHY other than PHY2, ungate -this one special clock, and clear the SIDDQ bit. We can pull in the -other required clocks via the DT. - -Signed-off-by: Andre Przywara ---- - drivers/phy/allwinner/phy-sun4i-usb.c | 29 +++++++++++++++++++++++++++ - 1 file changed, 29 insertions(+) - -diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c -index 36742d5cf..b74c0e0c8 100644 ---- a/drivers/phy/allwinner/phy-sun4i-usb.c -+++ b/drivers/phy/allwinner/phy-sun4i-usb.c -@@ -121,6 +121,7 @@ struct sun4i_usb_phy_cfg { - u8 phyctl_offset; - bool dedicated_clocks; - bool phy0_dual_route; -+ bool needs_phy2_siddq; - int missing_phys; - }; - -@@ -335,6 +336,27 @@ static int sun4i_usb_phy_init(struct phy *_phy) - queue_delayed_work(system_wq, &data->detect, 0); - } - -+ /* Some PHYs on some SoCs need the help of PHY2 to work. */ -+ if (data->cfg->needs_phy2_siddq && phy->index != 2) { -+ struct sun4i_usb_phy *phy2 = &data->phys[2]; -+ -+ /* -+ * This extra clock is just needed to access the -+ * REG_HCI_PHY_CTL PMU register for PHY2. -+ */ -+ ret = clk_prepare_enable(phy2->clk2); -+ if (ret) -+ return ret; -+ -+ if (phy2->pmu && data->cfg->hci_phy_ctl_clear) { -+ val = readl(phy2->pmu + REG_HCI_PHY_CTL); -+ val &= ~data->cfg->hci_phy_ctl_clear; -+ writel(val, phy2->pmu + REG_HCI_PHY_CTL); -+ } -+ -+ clk_disable_unprepare(phy->clk2); -+ } -+ - return 0; - } - -@@ -821,6 +843,13 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev) - dev_err(dev, "failed to get clock %s\n", name); - return PTR_ERR(phy->clk2); - } -+ } else { -+ snprintf(name, sizeof(name), "pmu%d_clk", i); -+ phy->clk2 = devm_clk_get_optional(dev, name); -+ if (IS_ERR(phy->clk2)) { -+ dev_err(dev, "failed to get clock %s\n", name); -+ return PTR_ERR(phy->clk2); -+ } - } - - snprintf(name, sizeof(name), "usb%d_reset", i); --- -2.35.3 - diff --git a/patch/kernel/archive/sunxi-6.1/series.armbian b/patch/kernel/archive/sunxi-6.1/series.armbian index 7f0801ae29..d703decfc3 100644 --- a/patch/kernel/archive/sunxi-6.1/series.armbian +++ b/patch/kernel/archive/sunxi-6.1/series.armbian @@ -15,8 +15,6 @@ patches.armbian/drv-gpu-drm-sun4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch patches.armbian/drv-net-stmmac-dwmac-sun8i-second-EMAC-clock-register.patch patches.armbian/drv-phy-sun4i-usb-Allow-reset-line-to-be-shared.patch - patches.armbian/drv-phy-sun4i-usb-Introduce-port2-SIDDQ-quirk.patch - patches.armbian/drv-phy-sun4i-usb-Add-support-for-the-H616-USB-PHY.patch patches.armbian/drv-iio-adc-sun4i-gpadc-iio-rename-A33-specified-registers-to-c.patch patches.armbian/drv-iio-adc-sun4i-gpadc-iio-sampling-start-end-code-readout-reg.patch patches.armbian/drv-iio-adc-sun4i-gpadc-iio-support-clocks-and-reset.patch diff --git a/patch/kernel/archive/sunxi-6.1/series.conf b/patch/kernel/archive/sunxi-6.1/series.conf index 67d30a64d7..88e62187ba 100644 --- a/patch/kernel/archive/sunxi-6.1/series.conf +++ b/patch/kernel/archive/sunxi-6.1/series.conf @@ -416,8 +416,6 @@ patches.armbian/drv-gpu-drm-sun4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch patches.armbian/drv-net-stmmac-dwmac-sun8i-second-EMAC-clock-register.patch patches.armbian/drv-phy-sun4i-usb-Allow-reset-line-to-be-shared.patch - patches.armbian/drv-phy-sun4i-usb-Introduce-port2-SIDDQ-quirk.patch - patches.armbian/drv-phy-sun4i-usb-Add-support-for-the-H616-USB-PHY.patch patches.armbian/drv-iio-adc-sun4i-gpadc-iio-rename-A33-specified-registers-to-c.patch patches.armbian/drv-iio-adc-sun4i-gpadc-iio-sampling-start-end-code-readout-reg.patch patches.armbian/drv-iio-adc-sun4i-gpadc-iio-support-clocks-and-reset.patch