Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
886719c
PCI: cadence: Preserve all error codes in cdns_plat_pcie_probe()
vladimiroltean May 5, 2026
f5a36f3
ata: add <linux/pm_runtime.h> where missing
vladimiroltean May 5, 2026
7d3f0c4
PCI: Add missing headers transitively included by <linux/phy/phy.h>
vladimiroltean May 5, 2026
457ca86
usb: add missing headers transitively included by <linux/phy/phy.h>
vladimiroltean May 5, 2026
e07b8aa
drm: add <linux/pm_runtime.h> where missing
vladimiroltean May 5, 2026
b8bf743
phy: add <linux/pm_runtime.h> where missing
vladimiroltean May 5, 2026
952150a
phy: spacemit: include missing <linux/phy/phy.h>
vladimiroltean May 5, 2026
5f37f7a
net: lan969x: include missing <linux/of.h>
vladimiroltean May 5, 2026
45ae31e
PCI: Remove device links to PHY
vladimiroltean May 5, 2026
aaf76d4
scsi: ufs: exynos: use dedicated API for updating PHY bus width
vladimiroltean May 5, 2026
128b708
scsi: ufs: qcom: call phy_init() before phy_power_on()
vladimiroltean May 5, 2026
0f6677e
scsi: ufs: qcom: make use of QMP PHY dynamic gear switching ability
vladimiroltean May 5, 2026
f8814db
scsi: ufs: qcom: keep separate track of PHY power state
vladimiroltean May 5, 2026
4ca2e2a
scsi: ufs: qcom: include missing <linux/interrupt.h>
vladimiroltean May 5, 2026
1f92e5c
drm/rockchip: dw_hdmi: avoid direct dereference of phy->dev.of_node
vladimiroltean May 5, 2026
1af444e
usb: host: tegra: avoid direct dereference of phy->dev.of_node
vladimiroltean May 5, 2026
1397ae0
usb: gadget: tegra-xudc: avoid direct dereference of phy->dev.of_node
vladimiroltean May 5, 2026
951627e
phy: move provider API out of public <linux/phy/phy.h>
vladimiroltean May 5, 2026
7da207b
phy: make phy_get_mode(), phy_get_bus_width() NULL tolerant
vladimiroltean May 5, 2026
5722269
phy: introduce phy_get_max_link_rate() helper for consumers
vladimiroltean May 5, 2026
2282099
drm/rockchip: dsi: include PHY provider header
vladimiroltean May 5, 2026
d00b207
drm: bridge: cdns-mhdp8546: use consumer API for getting PHY bus width
vladimiroltean May 5, 2026
5526203
media: sunxi: a83-mips-csi2: include PHY provider header
vladimiroltean May 5, 2026
8271cc5
net: renesas: rswitch: include PHY provider header
vladimiroltean May 5, 2026
dbfca9c
pinctrl: tegra-xusb: include PHY provider header
vladimiroltean May 5, 2026
7738254
power: supply: cpcap-charger: include missing <linux/property.h>
vladimiroltean May 5, 2026
e488fb1
phy: move ulpi_phy.h from include/linux/phy/ to drivers/phy/
vladimiroltean May 5, 2026
a27c120
phy: include PHY provider header (1/2)
vladimiroltean May 5, 2026
5df5b11
phy: include PHY provider header (2/2)
vladimiroltean May 5, 2026
23f8a9e
phy: remove temporary provider compatibility from consumer header
vladimiroltean May 5, 2026
1d7c70f
MAINTAINERS: add regexes for linux-phy
vladimiroltean May 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -10799,6 +10799,18 @@ F: Documentation/devicetree/bindings/phy/
F: drivers/phy/
F: include/dt-bindings/phy/
F: include/linux/phy/
K: (?:linux\/phy\/phy\.h|phy-props\.h|phy-provider\.h)
K: \b(?:__)?(?:devm_)?(?:of_)?phy_(?:create|destroy|provider_(?:un)?register)\b
K: \bphy_(?:create|remove)_lookup\b
K: \bphy_(?:get|set)_drvdata\b
K: \b(?:devm_)?(?:of_)?phy_(?:optional_)?(?:get|put)(?:_by_index)?\b
K: \bphy_pm_runtime_(?:get|put)(?:_sync)?\b
K: \bphy_(?:init|exit|power_(?:on|off))\b
K: \bphy_(?:get|set)_(?:mode(?:_ext)?|media|speed|max_link_rate)\b
K: \bphy_(?:get|set|request)_bus_width\b
K: \bphy_(?:reset|configure|validate|calibrate)\b
K: \bphy_notify_(?:connect|disconnect|state)\b
K: \bstruct\s+phy(?:_ops|_attrs|_lookup|_provider)?\b

GENERIC PINCTRL I2C DEMULTIPLEXER DRIVER
M: Wolfram Sang <wsa+renesas@sang-engineering.com>
Expand Down
1 change: 1 addition & 0 deletions drivers/ata/ahci.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include <linux/device.h>
#include <linux/dmi.h>
#include <linux/gfp.h>
#include <linux/pm_runtime.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_cmnd.h>
#include <linux/libata.h>
Expand Down
1 change: 1 addition & 0 deletions drivers/ata/ahci_brcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/reset.h>
#include <linux/string.h>

Expand Down
1 change: 1 addition & 0 deletions drivers/ata/ahci_ceva.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/reset.h>
#include "ahci.h"

Expand Down
1 change: 1 addition & 0 deletions drivers/ata/ahci_qoriq.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <linux/device.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/libata.h>
#include "ahci.h"

Expand Down
1 change: 1 addition & 0 deletions drivers/ata/libahci.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
#include <scsi/scsi_cmnd.h>
#include <linux/libata.h>
#include <linux/pci.h>
#include <linux/pm_runtime.h>
#include "ahci.h"
#include "libata.h"

Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>

#include <drm/bridge/analogix_dp.h>
#include <drm/drm_atomic.h>
Expand Down
7 changes: 4 additions & 3 deletions drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include <linux/phy/phy.h>
#include <linux/phy/phy-dp.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/slab.h>
#include <linux/wait.h>

Expand Down Expand Up @@ -1295,15 +1296,15 @@ static u32 cdns_mhdp_get_training_interval_us(struct cdns_mhdp_device *mhdp,

static void cdns_mhdp_fill_host_caps(struct cdns_mhdp_device *mhdp)
{
unsigned int link_rate;
u32 link_rate;

/* Get source capabilities based on PHY attributes */

mhdp->host.lanes_cnt = mhdp->phy->attrs.bus_width;
mhdp->host.lanes_cnt = phy_get_bus_width(mhdp->phy);
if (!mhdp->host.lanes_cnt)
mhdp->host.lanes_cnt = 4;

link_rate = mhdp->phy->attrs.max_link_rate;
link_rate = phy_get_max_link_rate(mhdp->phy);
if (!link_rate)
link_rate = drm_dp_bw_code_to_link_rate(DP_LINK_BW_8_1);
else
Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/bridge/nwl-dsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <linux/reset.h>
#include <linux/sys_soc.h>
Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/bridge/samsung-dsim.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/units.h>

#include <video/mipi_display.h>
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/bridge/synopsys/dw-dp.c
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,7 @@ static int dw_dp_link_parse(struct dw_dp *dp, struct drm_connector *connector)

link->revision = link->dpcd[DP_DPCD_REV];
link->rate = min_t(u32, min(dp->plat_data.max_link_rate,
dp->phy->attrs.max_link_rate * 100),
phy_get_max_link_rate(dp->phy) * 100),
drm_dp_max_link_rate(link->dpcd));
link->lanes = min_t(u8, phy_get_bus_width(dp->phy),
drm_dp_max_lane_count(link->dpcd));
Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/msm/dp/dp_aux.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <linux/delay.h>
#include <linux/iopoll.h>
#include <linux/phy/phy.h>
#include <linux/pm_runtime.h>
#include <drm/drm_print.h>

#include "dp_reg.h"
Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/rockchip/cdn-dp-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <linux/firmware.h>
#include <linux/mfd/syscon.h>
#include <linux/phy/phy.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <linux/reset.h>

Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <drm/drm_print.h>
#include <drm/drm_simple_kms_helper.h>

#include "../../../phy/phy-provider.h" /* FIXME */
#include "rockchip_drm_drv.h"

#define DSI_PHY_RSTZ 0xa0
Expand Down
25 changes: 15 additions & 10 deletions drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
Original file line number Diff line number Diff line change
Expand Up @@ -537,21 +537,22 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
void *data)
{
struct platform_device *pdev = to_platform_device(dev);
struct device_node *np = dev_of_node(dev);
struct dw_hdmi_plat_data *plat_data;
const struct of_device_id *match;
struct drm_device *drm = data;
struct drm_encoder *encoder;
struct rockchip_hdmi *hdmi;
int ret;
int ret, index;

if (!pdev->dev.of_node)
if (!np)
return -ENODEV;

hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL);
if (!hdmi)
return -ENOMEM;

match = of_match_node(dw_hdmi_rockchip_dt_ids, pdev->dev.of_node);
match = of_match_node(dw_hdmi_rockchip_dt_ids, np);
plat_data = devm_kmemdup(&pdev->dev, match->data,
sizeof(*plat_data), GFP_KERNEL);
if (!plat_data)
Expand All @@ -564,9 +565,9 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
plat_data->priv_data = hdmi;
encoder = &hdmi->encoder.encoder;

encoder->possible_crtcs = drm_of_find_possible_crtcs(drm, dev->of_node);
encoder->possible_crtcs = drm_of_find_possible_crtcs(drm, np);
rockchip_drm_encoder_set_crtc_endpoint_id(&hdmi->encoder,
dev->of_node, 0, 0);
np, 0, 0);

/*
* If we failed to find the CRTC(s) which this encoder is
Expand All @@ -588,13 +589,17 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
return dev_err_probe(hdmi->dev, ret, "failed to get phy\n");
}

if (hdmi->phy) {
index = of_property_match_string(np, "phy-names", "hdmi");
if (index >= 0) {
struct of_phandle_args clkspec;

clkspec.np = hdmi->phy->dev.of_node;
hdmi->hdmiphy_clk = of_clk_get_from_provider(&clkspec);
if (IS_ERR(hdmi->hdmiphy_clk))
hdmi->hdmiphy_clk = NULL;
if (!of_parse_phandle_with_args(np, "phys", "#phy-cells", index,
&clkspec)) {
hdmi->hdmiphy_clk = of_clk_get_from_provider(&clkspec);
of_node_put(clkspec.np);
if (IS_ERR(hdmi->hdmiphy_clk))
hdmi->hdmiphy_clk = NULL;
}
}

if (hdmi->chip_data == &rk3568_chip_data) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
* Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
*/

#include <linux/phy/phy.h>
#include <linux/regmap.h>

#include "../../../../phy/phy-provider.h" /* FIXME */
#include "sun8i_a83t_dphy.h"
#include "sun8i_a83t_mipi_csi2.h"

Expand Down
3 changes: 1 addition & 2 deletions drivers/net/can/at91_can.c
Original file line number Diff line number Diff line change
Expand Up @@ -1125,8 +1125,7 @@ static int at91_can_probe(struct platform_device *pdev)

can_rx_offload_add_timestamp(dev, &priv->offload);

if (transceiver)
priv->can.bitrate_max = transceiver->attrs.max_link_rate;
priv->can.bitrate_max = phy_get_max_link_rate(transceiver);

if (at91_is_sam9263(priv))
dev->sysfs_groups[0] = &at91_sysfs_attr_group;
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/can/flexcan/flexcan-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2210,8 +2210,7 @@ static int flexcan_probe(struct platform_device *pdev)
priv->reg_xceiver = reg_xceiver;
priv->transceiver = transceiver;

if (transceiver)
priv->can.bitrate_max = transceiver->attrs.max_link_rate;
priv->can.bitrate_max = phy_get_max_link_rate(transceiver);

if (priv->devtype_data.quirks & FLEXCAN_QUIRK_NR_IRQ_3) {
priv->irq_boff = platform_get_irq(pdev, 1);
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/can/m_can/m_can_platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,7 @@ static int m_can_plat_probe(struct platform_device *pdev)
goto probe_fail;
}

if (transceiver)
mcan_class->can.bitrate_max = transceiver->attrs.max_link_rate;
mcan_class->can.bitrate_max = phy_get_max_link_rate(transceiver);

priv->base = addr;
priv->mram_base = mram_addr;
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/can/rcar/rcar_canfd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1884,8 +1884,7 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,
priv->transceiver = transceiver;
priv->channel = ch;
priv->gpriv = gpriv;
if (transceiver)
priv->can.bitrate_max = transceiver->attrs.max_link_rate;
priv->can.bitrate_max = phy_get_max_link_rate(transceiver);
priv->can.clock.freq = fcan_freq;
dev_info(dev, "can_clk rate is %u\n", priv->can.clock.freq);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Copyright (c) 2024 Microchip Technology Inc. and its subsidiaries.
*/

#include <linux/of.h>
#include "lan969x.h"

/* Tx clock selectors */
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/renesas/rswitch_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <linux/spinlock.h>
#include <linux/sys_soc.h>

#include "../../../phy/phy-provider.h" /* FIXME */
#include "rswitch.h"
#include "rswitch_l2.h"

Expand Down
6 changes: 1 addition & 5 deletions drivers/pci/controller/cadence/pcie-cadence-plat.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ static int cdns_plat_pcie_probe(struct platform_device *pdev)
struct pci_host_bridge *bridge;
struct cdns_pcie_ep *ep;
struct cdns_pcie_rc *rc;
int phy_count;
bool is_rc;
int ret;

Expand Down Expand Up @@ -122,11 +121,8 @@ static int cdns_plat_pcie_probe(struct platform_device *pdev)
pm_runtime_put_sync(dev);
pm_runtime_disable(dev);
cdns_pcie_disable_phy(cdns_plat_pcie->pcie);
phy_count = cdns_plat_pcie->pcie->phy_count;
while (phy_count--)
device_link_del(cdns_plat_pcie->pcie->link[phy_count]);

return 0;
return ret;
}

static void cdns_plat_pcie_shutdown(struct platform_device *pdev)
Expand Down
16 changes: 1 addition & 15 deletions drivers/pci/controller/cadence/pcie-cadence.c
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,6 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie)
struct device_node *np = dev->of_node;
int phy_count;
struct phy **phy;
struct device_link **link;
int i;
int ret;
const char *name;
Expand All @@ -238,28 +237,17 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie)
if (!phy)
return -ENOMEM;

link = devm_kcalloc(dev, phy_count, sizeof(*link), GFP_KERNEL);
if (!link)
return -ENOMEM;

for (i = 0; i < phy_count; i++) {
of_property_read_string_index(np, "phy-names", i, &name);
phy[i] = devm_phy_get(dev, name);
if (IS_ERR(phy[i])) {
ret = PTR_ERR(phy[i]);
goto err_phy;
}
link[i] = device_link_add(dev, &phy[i]->dev, DL_FLAG_STATELESS);
if (!link[i]) {
devm_phy_put(dev, phy[i]);
ret = -EINVAL;
goto err_phy;
}
}

pcie->phy_count = phy_count;
pcie->phy = phy;
pcie->link = link;

ret = cdns_pcie_enable_phy(pcie);
if (ret)
Expand All @@ -268,10 +256,8 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie)
return 0;

err_phy:
while (--i >= 0) {
device_link_del(link[i]);
while (--i >= 0)
devm_phy_put(dev, phy[i]);
}

return ret;
}
Expand Down
2 changes: 0 additions & 2 deletions drivers/pci/controller/cadence/pcie-cadence.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ struct cdns_plat_pcie_of_data {
* @is_rc: tell whether the PCIe controller mode is Root Complex or Endpoint.
* @phy_count: number of supported PHY devices
* @phy: list of pointers to specific PHY control blocks
* @link: list of pointers to corresponding device link representations
* @ops: Platform-specific ops to control various inputs from Cadence PCIe
* wrapper
* @cdns_pcie_reg_offsets: Register bank offsets for different SoC
Expand All @@ -95,7 +94,6 @@ struct cdns_pcie {
bool is_rc;
int phy_count;
struct phy **phy;
struct device_link **link;
const struct cdns_pcie_ops *ops;
const struct cdns_plat_pcie_of_data *cdns_pcie_reg_offsets;
};
Expand Down
Loading
Loading