* [PATCH 2/4] phy: sun4i-usb: Remove .disc_thresh where not applicable
2022-02-03 1:35 [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Samuel Holland
@ 2022-02-03 1:35 ` Samuel Holland
2022-02-03 1:35 ` [PATCH 3/4] phy: sun4i-usb: Rework HCI PHY (aka "pmu_unk1") handling Samuel Holland
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Samuel Holland @ 2022-02-03 1:35 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Vinod Koul
Cc: Rob Herring, devicetree, linux-phy, linux-arm-kernel,
Maxime Ripard, Chen-Yu Tsai, Jernej Skrabec, linux-sunxi,
linux-kernel, Andre Przywara, Samuel Holland
.disc_thresh is not used when .type = sun50i_h6_phy, so providing a
value for it is misleading.
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
drivers/phy/allwinner/phy-sun4i-usb.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c
index 788dd5cdbb7d..624950fd48ba 100644
--- a/drivers/phy/allwinner/phy-sun4i-usb.c
+++ b/drivers/phy/allwinner/phy-sun4i-usb.c
@@ -962,7 +962,6 @@ static const struct sun4i_usb_phy_cfg sun50i_a64_cfg = {
static const struct sun4i_usb_phy_cfg sun50i_h6_cfg = {
.num_phys = 4,
.type = sun50i_h6_phy,
- .disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A33,
.dedicated_clocks = true,
.phy0_dual_route = true,
--
2.33.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 3/4] phy: sun4i-usb: Rework HCI PHY (aka "pmu_unk1") handling
2022-02-03 1:35 [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Samuel Holland
2022-02-03 1:35 ` [PATCH 2/4] phy: sun4i-usb: Remove .disc_thresh where not applicable Samuel Holland
@ 2022-02-03 1:35 ` Samuel Holland
2022-02-03 1:35 ` [PATCH 4/4] phy: sun4i-usb: Add D1 variant Samuel Holland
` (4 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Samuel Holland @ 2022-02-03 1:35 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Vinod Koul
Cc: Rob Herring, devicetree, linux-phy, linux-arm-kernel,
Maxime Ripard, Chen-Yu Tsai, Jernej Skrabec, linux-sunxi,
linux-kernel, Andre Przywara, Samuel Holland
From: Andre Przywara <andre.przywara@arm.com>
As Icenowy pointed out, newer manuals (starting with H6) actually
document the register block at offset 0x800 as "HCI controller and PHY
interface", also describe the bits in our "PMU_UNK1" register.
Let's put proper names to those "unknown" variables and symbols.
While we are at it, generalise the existing code by allowing a bitmap
of bits to clear and set, to cover newer SoCs: The A100 and H616 use a
different bit for the SIDDQ control.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
drivers/phy/allwinner/phy-sun4i-usb.c | 30 ++++++++++++---------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c
index 624950fd48ba..6675dad17415 100644
--- a/drivers/phy/allwinner/phy-sun4i-usb.c
+++ b/drivers/phy/allwinner/phy-sun4i-usb.c
@@ -43,7 +43,7 @@
#define REG_PHYCTL_A33 0x10
#define REG_PHY_OTGCTL 0x20
-#define REG_PMU_UNK1 0x10
+#define REG_HCI_PHY_CTL 0x10
#define PHYCTL_DATA BIT(7)
@@ -82,6 +82,7 @@
/* A83T specific control bits for PHY0 */
#define PHY_CTL_VBUSVLDEXT BIT(5)
#define PHY_CTL_SIDDQ BIT(3)
+#define PHY_CTL_H3_SIDDQ BIT(1)
/* A83T specific control bits for PHY2 HSIC */
#define SUNXI_EHCI_HS_FORCE BIT(20)
@@ -115,9 +116,9 @@ struct sun4i_usb_phy_cfg {
int hsic_index;
enum sun4i_usb_phy_type type;
u32 disc_thresh;
+ u32 hci_phy_ctl_clear;
u8 phyctl_offset;
bool dedicated_clocks;
- bool enable_pmu_unk1;
bool phy0_dual_route;
int missing_phys;
};
@@ -288,6 +289,12 @@ static int sun4i_usb_phy_init(struct phy *_phy)
return ret;
}
+ if (phy->pmu && data->cfg->hci_phy_ctl_clear) {
+ val = readl(phy->pmu + REG_HCI_PHY_CTL);
+ val &= ~data->cfg->hci_phy_ctl_clear;
+ writel(val, phy->pmu + REG_HCI_PHY_CTL);
+ }
+
if (data->cfg->type == sun8i_a83t_phy ||
data->cfg->type == sun50i_h6_phy) {
if (phy->index == 0) {
@@ -297,11 +304,6 @@ static int sun4i_usb_phy_init(struct phy *_phy)
writel(val, data->base + data->cfg->phyctl_offset);
}
} else {
- if (phy->pmu && data->cfg->enable_pmu_unk1) {
- val = readl(phy->pmu + REG_PMU_UNK1);
- writel(val & ~2, phy->pmu + REG_PMU_UNK1);
- }
-
/* Enable USB 45 Ohm resistor calibration */
if (phy->index == 0)
sun4i_usb_phy_write(phy, PHY_RES45_CAL_EN, 0x01, 1);
@@ -863,7 +865,6 @@ static const struct sun4i_usb_phy_cfg sun4i_a10_cfg = {
.disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A10,
.dedicated_clocks = false,
- .enable_pmu_unk1 = false,
};
static const struct sun4i_usb_phy_cfg sun5i_a13_cfg = {
@@ -872,7 +873,6 @@ static const struct sun4i_usb_phy_cfg sun5i_a13_cfg = {
.disc_thresh = 2,
.phyctl_offset = REG_PHYCTL_A10,
.dedicated_clocks = false,
- .enable_pmu_unk1 = false,
};
static const struct sun4i_usb_phy_cfg sun6i_a31_cfg = {
@@ -881,7 +881,6 @@ static const struct sun4i_usb_phy_cfg sun6i_a31_cfg = {
.disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A10,
.dedicated_clocks = true,
- .enable_pmu_unk1 = false,
};
static const struct sun4i_usb_phy_cfg sun7i_a20_cfg = {
@@ -890,7 +889,6 @@ static const struct sun4i_usb_phy_cfg sun7i_a20_cfg = {
.disc_thresh = 2,
.phyctl_offset = REG_PHYCTL_A10,
.dedicated_clocks = false,
- .enable_pmu_unk1 = false,
};
static const struct sun4i_usb_phy_cfg sun8i_a23_cfg = {
@@ -899,7 +897,6 @@ static const struct sun4i_usb_phy_cfg sun8i_a23_cfg = {
.disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A10,
.dedicated_clocks = true,
- .enable_pmu_unk1 = false,
};
static const struct sun4i_usb_phy_cfg sun8i_a33_cfg = {
@@ -908,7 +905,6 @@ static const struct sun4i_usb_phy_cfg sun8i_a33_cfg = {
.disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A33,
.dedicated_clocks = true,
- .enable_pmu_unk1 = false,
};
static const struct sun4i_usb_phy_cfg sun8i_a83t_cfg = {
@@ -925,7 +921,7 @@ static const struct sun4i_usb_phy_cfg sun8i_h3_cfg = {
.disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A33,
.dedicated_clocks = true,
- .enable_pmu_unk1 = true,
+ .hci_phy_ctl_clear = PHY_CTL_H3_SIDDQ,
.phy0_dual_route = true,
};
@@ -935,7 +931,7 @@ static const struct sun4i_usb_phy_cfg sun8i_r40_cfg = {
.disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A33,
.dedicated_clocks = true,
- .enable_pmu_unk1 = true,
+ .hci_phy_ctl_clear = PHY_CTL_H3_SIDDQ,
.phy0_dual_route = true,
};
@@ -945,7 +941,7 @@ static const struct sun4i_usb_phy_cfg sun8i_v3s_cfg = {
.disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A33,
.dedicated_clocks = true,
- .enable_pmu_unk1 = true,
+ .hci_phy_ctl_clear = PHY_CTL_H3_SIDDQ,
.phy0_dual_route = true,
};
@@ -955,7 +951,7 @@ static const struct sun4i_usb_phy_cfg sun50i_a64_cfg = {
.disc_thresh = 3,
.phyctl_offset = REG_PHYCTL_A33,
.dedicated_clocks = true,
- .enable_pmu_unk1 = true,
+ .hci_phy_ctl_clear = PHY_CTL_H3_SIDDQ,
.phy0_dual_route = true,
};
--
2.33.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 4/4] phy: sun4i-usb: Add D1 variant
2022-02-03 1:35 [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Samuel Holland
2022-02-03 1:35 ` [PATCH 2/4] phy: sun4i-usb: Remove .disc_thresh where not applicable Samuel Holland
2022-02-03 1:35 ` [PATCH 3/4] phy: sun4i-usb: Rework HCI PHY (aka "pmu_unk1") handling Samuel Holland
@ 2022-02-03 1:35 ` Samuel Holland
2022-02-03 8:14 ` [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Maxime Ripard
` (3 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Samuel Holland @ 2022-02-03 1:35 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Vinod Koul
Cc: Rob Herring, devicetree, linux-phy, linux-arm-kernel,
Maxime Ripard, Chen-Yu Tsai, Jernej Skrabec, linux-sunxi,
linux-kernel, Andre Przywara, Samuel Holland
D1 has a register layout like A100 and H616, with the moved SIDDQ bit.
Unlike H616 it does not have any dependencies between PHY instances.
Signed-off-by: Samuel Holland <samuel@sholland.org>
---
drivers/phy/allwinner/phy-sun4i-usb.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c
index 6675dad17415..d5f3b42eb8ce 100644
--- a/drivers/phy/allwinner/phy-sun4i-usb.c
+++ b/drivers/phy/allwinner/phy-sun4i-usb.c
@@ -945,6 +945,15 @@ static const struct sun4i_usb_phy_cfg sun8i_v3s_cfg = {
.phy0_dual_route = true,
};
+static const struct sun4i_usb_phy_cfg sun20i_d1_cfg = {
+ .num_phys = 2,
+ .type = sun50i_h6_phy,
+ .phyctl_offset = REG_PHYCTL_A33,
+ .dedicated_clocks = true,
+ .hci_phy_ctl_clear = PHY_CTL_SIDDQ,
+ .phy0_dual_route = true,
+};
+
static const struct sun4i_usb_phy_cfg sun50i_a64_cfg = {
.num_phys = 2,
.type = sun50i_a64_phy,
@@ -975,6 +984,7 @@ static const struct of_device_id sun4i_usb_phy_of_match[] = {
{ .compatible = "allwinner,sun8i-h3-usb-phy", .data = &sun8i_h3_cfg },
{ .compatible = "allwinner,sun8i-r40-usb-phy", .data = &sun8i_r40_cfg },
{ .compatible = "allwinner,sun8i-v3s-usb-phy", .data = &sun8i_v3s_cfg },
+ { .compatible = "allwinner,sun20i-d1-usb-phy", .data = &sun20i_d1_cfg },
{ .compatible = "allwinner,sun50i-a64-usb-phy",
.data = &sun50i_a64_cfg},
{ .compatible = "allwinner,sun50i-h6-usb-phy", .data = &sun50i_h6_cfg },
--
2.33.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY
2022-02-03 1:35 [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Samuel Holland
` (2 preceding siblings ...)
2022-02-03 1:35 ` [PATCH 4/4] phy: sun4i-usb: Add D1 variant Samuel Holland
@ 2022-02-03 8:14 ` Maxime Ripard
2022-02-11 13:44 ` Rob Herring
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Maxime Ripard @ 2022-02-03 8:14 UTC (permalink / raw)
To: Samuel Holland
Cc: Kishon Vijay Abraham I, Vinod Koul, Rob Herring, devicetree,
linux-phy, linux-arm-kernel, Chen-Yu Tsai, Jernej Skrabec,
linux-sunxi, linux-kernel, Andre Przywara
[-- Attachment #1: Type: text/plain, Size: 371 bytes --]
On Wed, Feb 02, 2022 at 07:35:54PM -0600, Samuel Holland wrote:
> D1 features one OTG port and one host port, like the A64 SoC, so its
> USB PHY supports the same set of properties. Add the new compatible to
> the existing binding.
>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
for the series:
Acked-by: Maxime Ripard <maxime@cerno.tech>
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY
2022-02-03 1:35 [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Samuel Holland
` (3 preceding siblings ...)
2022-02-03 8:14 ` [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Maxime Ripard
@ 2022-02-11 13:44 ` Rob Herring
2022-02-25 8:22 ` Vinod Koul
2022-02-25 8:24 ` Vinod Koul
6 siblings, 0 replies; 9+ messages in thread
From: Rob Herring @ 2022-02-11 13:44 UTC (permalink / raw)
To: Samuel Holland
Cc: linux-phy, Jernej Skrabec, Andre Przywara, Rob Herring,
devicetree, linux-kernel, linux-arm-kernel, Vinod Koul,
Kishon Vijay Abraham I, Maxime Ripard, Chen-Yu Tsai, linux-sunxi
On Wed, 02 Feb 2022 19:35:54 -0600, Samuel Holland wrote:
> D1 features one OTG port and one host port, like the A64 SoC, so its
> USB PHY supports the same set of properties. Add the new compatible to
> the existing binding.
>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
> ---
>
> .../devicetree/bindings/phy/allwinner,sun50i-a64-usb-phy.yaml | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
Acked-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY
2022-02-03 1:35 [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Samuel Holland
` (4 preceding siblings ...)
2022-02-11 13:44 ` Rob Herring
@ 2022-02-25 8:22 ` Vinod Koul
2022-02-25 8:24 ` Vinod Koul
2022-02-25 8:24 ` Vinod Koul
6 siblings, 1 reply; 9+ messages in thread
From: Vinod Koul @ 2022-02-25 8:22 UTC (permalink / raw)
To: Samuel Holland, Rob Herring, devicetree
Cc: Kishon Vijay Abraham I, linux-phy, linux-arm-kernel,
Maxime Ripard, Chen-Yu Tsai, Jernej Skrabec, linux-sunxi,
linux-kernel, Andre Przywara
On 02-02-22, 19:35, Samuel Holland wrote:
> D1 features one OTG port and one host port, like the A64 SoC, so its
> USB PHY supports the same set of properties. Add the new compatible to
> the existing binding.
Rob?
>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
> ---
>
> .../devicetree/bindings/phy/allwinner,sun50i-a64-usb-phy.yaml | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/phy/allwinner,sun50i-a64-usb-phy.yaml b/Documentation/devicetree/bindings/phy/allwinner,sun50i-a64-usb-phy.yaml
> index 078af52b16ed..0fa4b32b097e 100644
> --- a/Documentation/devicetree/bindings/phy/allwinner,sun50i-a64-usb-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/allwinner,sun50i-a64-usb-phy.yaml
> @@ -15,7 +15,9 @@ properties:
> const: 1
>
> compatible:
> - const: allwinner,sun50i-a64-usb-phy
> + enum:
> + - allwinner,sun20i-d1-usb-phy
> + - allwinner,sun50i-a64-usb-phy
>
> reg:
> items:
> --
> 2.33.1
--
~Vinod
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY
2022-02-25 8:22 ` Vinod Koul
@ 2022-02-25 8:24 ` Vinod Koul
0 siblings, 0 replies; 9+ messages in thread
From: Vinod Koul @ 2022-02-25 8:24 UTC (permalink / raw)
To: Samuel Holland, Rob Herring, devicetree
Cc: Kishon Vijay Abraham I, linux-phy, linux-arm-kernel,
Maxime Ripard, Chen-Yu Tsai, Jernej Skrabec, linux-sunxi,
linux-kernel, Andre Przywara
On 25-02-22, 13:52, Vinod Koul wrote:
> On 02-02-22, 19:35, Samuel Holland wrote:
> > D1 features one OTG port and one host port, like the A64 SoC, so its
> > USB PHY supports the same set of properties. Add the new compatible to
> > the existing binding.
>
> Rob?
Never mind, b4 found it... Somehow my inbox doesnt show it...
--
~Vinod
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY
2022-02-03 1:35 [PATCH 1/4] dt-bindings: phy: Add compatible for D1 USB PHY Samuel Holland
` (5 preceding siblings ...)
2022-02-25 8:22 ` Vinod Koul
@ 2022-02-25 8:24 ` Vinod Koul
6 siblings, 0 replies; 9+ messages in thread
From: Vinod Koul @ 2022-02-25 8:24 UTC (permalink / raw)
To: Samuel Holland
Cc: Kishon Vijay Abraham I, Rob Herring, devicetree, linux-phy,
linux-arm-kernel, Maxime Ripard, Chen-Yu Tsai, Jernej Skrabec,
linux-sunxi, linux-kernel, Andre Przywara
On 02-02-22, 19:35, Samuel Holland wrote:
> D1 features one OTG port and one host port, like the A64 SoC, so its
> USB PHY supports the same set of properties. Add the new compatible to
> the existing binding.
Applied all, thanks
--
~Vinod
^ permalink raw reply [flat|nested] 9+ messages in thread