Commit aaaf919c authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'phy-fixes-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy

Pull phy fixes from Vinod Koul:

 - binding fix for g12a phys

 - Kconfig operator precedence for TI driver

 - renesas: register setting

 - sunplus: null deref fix

 - rockchip-inno fix for clk_disable_unprepare()

 - MDM9607 init sequence revert due to regression

* tag 'phy-fixes-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy:
  phy: phy-can-transceiver: Skip warning if no "max-bitrate"
  dt-bindings: phy: g12a-usb2-phy: fix compatible string documentation
  dt-bindings: phy: g12a-usb3-pcie-phy: fix compatible string documentation
  phy: freescale: imx8m-pcie: Add one missing error return
  phy: Revert "phy: qualcomm: usb28nm: Add MDM9607 init sequence"
  phy: rockchip-inno-usb2: Fix missing clk_disable_unprepare() in rockchip_usb2phy_power_on()
  phy: renesas: r8a779f0-eth-serdes: Fix register setting
  phy: usb: sunplus: Fix potential null-ptr-deref in sp_usb_phy_probe()
  phy: ti: fix Kconfig warning and operator precedence
parents 5deaa985 bc30c15f
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Copyright 2019 BayLibre, SAS # Copyright 2019 BayLibre, SAS
%YAML 1.2 %YAML 1.2
--- ---
$id: "http://devicetree.org/schemas/phy/amlogic,meson-g12a-usb2-phy.yaml#" $id: "http://devicetree.org/schemas/phy/amlogic,g12a-usb2-phy.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#" $schema: "http://devicetree.org/meta-schemas/core.yaml#"
title: Amlogic G12A USB2 PHY title: Amlogic G12A USB2 PHY
...@@ -13,8 +13,8 @@ maintainers: ...@@ -13,8 +13,8 @@ maintainers:
properties: properties:
compatible: compatible:
enum: enum:
- amlogic,meson-g12a-usb2-phy - amlogic,g12a-usb2-phy
- amlogic,meson-a1-usb2-phy - amlogic,a1-usb2-phy
reg: reg:
maxItems: 1 maxItems: 1
...@@ -68,7 +68,7 @@ additionalProperties: false ...@@ -68,7 +68,7 @@ additionalProperties: false
examples: examples:
- | - |
phy@36000 { phy@36000 {
compatible = "amlogic,meson-g12a-usb2-phy"; compatible = "amlogic,g12a-usb2-phy";
reg = <0x36000 0x2000>; reg = <0x36000 0x2000>;
clocks = <&xtal>; clocks = <&xtal>;
clock-names = "xtal"; clock-names = "xtal";
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Copyright 2019 BayLibre, SAS # Copyright 2019 BayLibre, SAS
%YAML 1.2 %YAML 1.2
--- ---
$id: "http://devicetree.org/schemas/phy/amlogic,meson-g12a-usb3-pcie-phy.yaml#" $id: "http://devicetree.org/schemas/phy/amlogic,g12a-usb3-pcie-phy.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#" $schema: "http://devicetree.org/meta-schemas/core.yaml#"
title: Amlogic G12A USB3 + PCIE Combo PHY title: Amlogic G12A USB3 + PCIE Combo PHY
...@@ -13,7 +13,7 @@ maintainers: ...@@ -13,7 +13,7 @@ maintainers:
properties: properties:
compatible: compatible:
enum: enum:
- amlogic,meson-g12a-usb3-pcie-phy - amlogic,g12a-usb3-pcie-phy
reg: reg:
maxItems: 1 maxItems: 1
...@@ -49,7 +49,7 @@ additionalProperties: false ...@@ -49,7 +49,7 @@ additionalProperties: false
examples: examples:
- | - |
phy@46000 { phy@46000 {
compatible = "amlogic,meson-g12a-usb3-pcie-phy"; compatible = "amlogic,g12a-usb3-pcie-phy";
reg = <0x46000 0x2000>; reg = <0x46000 0x2000>;
clocks = <&ref_clk>; clocks = <&ref_clk>;
clock-names = "ref_clk"; clock-names = "ref_clk";
......
...@@ -16,7 +16,6 @@ properties: ...@@ -16,7 +16,6 @@ properties:
compatible: compatible:
enum: enum:
- qcom,usb-hs-28nm-femtophy - qcom,usb-hs-28nm-femtophy
- qcom,usb-hs-28nm-mdm9607
reg: reg:
maxItems: 1 maxItems: 1
......
...@@ -255,7 +255,7 @@ static int imx8_pcie_phy_probe(struct platform_device *pdev) ...@@ -255,7 +255,7 @@ static int imx8_pcie_phy_probe(struct platform_device *pdev)
imx8_phy->perst = imx8_phy->perst =
devm_reset_control_get_exclusive(dev, "perst"); devm_reset_control_get_exclusive(dev, "perst");
if (IS_ERR(imx8_phy->perst)) if (IS_ERR(imx8_phy->perst))
dev_err_probe(dev, PTR_ERR(imx8_phy->perst), return dev_err_probe(dev, PTR_ERR(imx8_phy->perst),
"Failed to get PCIE PHY PERST control\n"); "Failed to get PCIE PHY PERST control\n");
} }
......
...@@ -99,6 +99,7 @@ static int can_transceiver_phy_probe(struct platform_device *pdev) ...@@ -99,6 +99,7 @@ static int can_transceiver_phy_probe(struct platform_device *pdev)
struct gpio_desc *standby_gpio; struct gpio_desc *standby_gpio;
struct gpio_desc *enable_gpio; struct gpio_desc *enable_gpio;
u32 max_bitrate = 0; u32 max_bitrate = 0;
int err;
can_transceiver_phy = devm_kzalloc(dev, sizeof(struct can_transceiver_phy), GFP_KERNEL); can_transceiver_phy = devm_kzalloc(dev, sizeof(struct can_transceiver_phy), GFP_KERNEL);
if (!can_transceiver_phy) if (!can_transceiver_phy)
...@@ -124,8 +125,8 @@ static int can_transceiver_phy_probe(struct platform_device *pdev) ...@@ -124,8 +125,8 @@ static int can_transceiver_phy_probe(struct platform_device *pdev)
return PTR_ERR(phy); return PTR_ERR(phy);
} }
device_property_read_u32(dev, "max-bitrate", &max_bitrate); err = device_property_read_u32(dev, "max-bitrate", &max_bitrate);
if (!max_bitrate) if ((err != -EINVAL) && !max_bitrate)
dev_warn(dev, "Invalid value for transceiver max bitrate. Ignoring bitrate limit\n"); dev_warn(dev, "Invalid value for transceiver max bitrate. Ignoring bitrate limit\n");
phy->attrs.max_link_rate = max_bitrate; phy->attrs.max_link_rate = max_bitrate;
......
...@@ -401,26 +401,13 @@ static const struct hsphy_init_seq init_seq_femtophy[] = { ...@@ -401,26 +401,13 @@ static const struct hsphy_init_seq init_seq_femtophy[] = {
HSPHY_INIT_CFG(0x90, 0x60, 0), HSPHY_INIT_CFG(0x90, 0x60, 0),
}; };
static const struct hsphy_init_seq init_seq_mdm9607[] = {
HSPHY_INIT_CFG(0x80, 0x44, 0),
HSPHY_INIT_CFG(0x81, 0x38, 0),
HSPHY_INIT_CFG(0x82, 0x24, 0),
HSPHY_INIT_CFG(0x83, 0x13, 0),
};
static const struct hsphy_data hsphy_data_femtophy = { static const struct hsphy_data hsphy_data_femtophy = {
.init_seq = init_seq_femtophy, .init_seq = init_seq_femtophy,
.init_seq_num = ARRAY_SIZE(init_seq_femtophy), .init_seq_num = ARRAY_SIZE(init_seq_femtophy),
}; };
static const struct hsphy_data hsphy_data_mdm9607 = {
.init_seq = init_seq_mdm9607,
.init_seq_num = ARRAY_SIZE(init_seq_mdm9607),
};
static const struct of_device_id qcom_snps_hsphy_match[] = { static const struct of_device_id qcom_snps_hsphy_match[] = {
{ .compatible = "qcom,usb-hs-28nm-femtophy", .data = &hsphy_data_femtophy, }, { .compatible = "qcom,usb-hs-28nm-femtophy", .data = &hsphy_data_femtophy, },
{ .compatible = "qcom,usb-hs-28nm-mdm9607", .data = &hsphy_data_mdm9607, },
{ }, { },
}; };
MODULE_DEVICE_TABLE(of, qcom_snps_hsphy_match); MODULE_DEVICE_TABLE(of, qcom_snps_hsphy_match);
......
...@@ -126,7 +126,7 @@ r8a779f0_eth_serdes_chan_setting(struct r8a779f0_eth_serdes_channel *channel) ...@@ -126,7 +126,7 @@ r8a779f0_eth_serdes_chan_setting(struct r8a779f0_eth_serdes_channel *channel)
r8a779f0_eth_serdes_write32(channel->addr, 0x0160, 0x180, 0x0007); r8a779f0_eth_serdes_write32(channel->addr, 0x0160, 0x180, 0x0007);
r8a779f0_eth_serdes_write32(channel->addr, 0x01ac, 0x180, 0x0000); r8a779f0_eth_serdes_write32(channel->addr, 0x01ac, 0x180, 0x0000);
r8a779f0_eth_serdes_write32(channel->addr, 0x00c4, 0x180, 0x0310); r8a779f0_eth_serdes_write32(channel->addr, 0x00c4, 0x180, 0x0310);
r8a779f0_eth_serdes_write32(channel->addr, 0x00c8, 0x380, 0x0101); r8a779f0_eth_serdes_write32(channel->addr, 0x00c8, 0x180, 0x0101);
ret = r8a779f0_eth_serdes_reg_wait(channel, 0x00c8, 0x0180, BIT(0), 0); ret = r8a779f0_eth_serdes_reg_wait(channel, 0x00c8, 0x0180, BIT(0), 0);
if (ret) if (ret)
return ret; return ret;
......
...@@ -485,8 +485,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy) ...@@ -485,8 +485,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy)
return ret; return ret;
ret = property_enable(base, &rport->port_cfg->phy_sus, false); ret = property_enable(base, &rport->port_cfg->phy_sus, false);
if (ret) if (ret) {
clk_disable_unprepare(rphy->clk480m);
return ret; return ret;
}
/* waiting for the utmi_clk to become stable */ /* waiting for the utmi_clk to become stable */
usleep_range(1500, 2000); usleep_range(1500, 2000);
......
...@@ -254,6 +254,9 @@ static int sp_usb_phy_probe(struct platform_device *pdev) ...@@ -254,6 +254,9 @@ static int sp_usb_phy_probe(struct platform_device *pdev)
return PTR_ERR(usbphy->phy_regs); return PTR_ERR(usbphy->phy_regs);
usbphy->moon4_res_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "moon4"); usbphy->moon4_res_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "moon4");
if (!usbphy->moon4_res_mem)
return -EINVAL;
usbphy->moon4_regs = devm_ioremap(&pdev->dev, usbphy->moon4_res_mem->start, usbphy->moon4_regs = devm_ioremap(&pdev->dev, usbphy->moon4_res_mem->start,
resource_size(usbphy->moon4_res_mem)); resource_size(usbphy->moon4_res_mem));
if (!usbphy->moon4_regs) if (!usbphy->moon4_regs)
......
...@@ -23,7 +23,7 @@ config PHY_DM816X_USB ...@@ -23,7 +23,7 @@ config PHY_DM816X_USB
config PHY_AM654_SERDES config PHY_AM654_SERDES
tristate "TI AM654 SERDES support" tristate "TI AM654 SERDES support"
depends on OF && ARCH_K3 || COMPILE_TEST depends on OF && (ARCH_K3 || COMPILE_TEST)
depends on COMMON_CLK depends on COMMON_CLK
select GENERIC_PHY select GENERIC_PHY
select MULTIPLEXER select MULTIPLEXER
...@@ -35,7 +35,7 @@ config PHY_AM654_SERDES ...@@ -35,7 +35,7 @@ config PHY_AM654_SERDES
config PHY_J721E_WIZ config PHY_J721E_WIZ
tristate "TI J721E WIZ (SERDES Wrapper) support" tristate "TI J721E WIZ (SERDES Wrapper) support"
depends on OF && ARCH_K3 || COMPILE_TEST depends on OF && (ARCH_K3 || COMPILE_TEST)
depends on HAS_IOMEM && OF_ADDRESS depends on HAS_IOMEM && OF_ADDRESS
depends on COMMON_CLK depends on COMMON_CLK
select GENERIC_PHY select GENERIC_PHY
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment