mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 23:05:25 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR (net-6.19-rc7). Conflicts: drivers/net/ethernet/huawei/hinic3/hinic3_irq.cb35a6fd37a("hinic3: Add adaptive IRQ coalescing with DIM")fb2bb2a1eb("hinic3: Fix netif_queue_set_napi queue_index input parameter error") https://lore.kernel.org/fc0a7fdf08789a52653e8ad05281a0a849e79206.1768915707.git.zhuyikai1@h-partners.com drivers/net/wireless/ath/ath12k/mac.c drivers/net/wireless/ath/ath12k/wifi7/hw.c3170757210("wifi: ath12k: Fix wrong P2P device link id issue")c26f294fef("wifi: ath12k: Move ieee80211_ops callback to the arch specific module") https://lore.kernel.org/20260114123751.6a208818@canb.auug.org.au Adjacent changes: drivers/net/wireless/ath/ath12k/mac.c8b8d6ee53d("wifi: ath12k: Fix scan state stuck in ABORTING after cancel_remain_on_channel")914c890d3b("wifi: ath12k: Add framework for hardware specific ieee80211_ops registration") Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -203,7 +203,7 @@ static int bcm_ns_usb3_mdio_probe(struct mdio_device *mdiodev)
|
||||
usb3->dev = dev;
|
||||
usb3->mdiodev = mdiodev;
|
||||
|
||||
usb3->family = (enum bcm_ns_family)device_get_match_data(dev);
|
||||
usb3->family = (unsigned long)device_get_match_data(dev);
|
||||
|
||||
syscon_np = of_parse_phandle(dev->of_node, "usb3-dmp-syscon", 0);
|
||||
err = of_address_to_resource(syscon_np, 0, &res);
|
||||
|
||||
@@ -89,7 +89,8 @@ static int imx8_pcie_phy_power_on(struct phy *phy)
|
||||
writel(imx8_phy->tx_deemph_gen2,
|
||||
imx8_phy->base + PCIE_PHY_TRSV_REG6);
|
||||
break;
|
||||
case IMX8MP: /* Do nothing. */
|
||||
case IMX8MP:
|
||||
reset_control_assert(imx8_phy->reset);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -126,8 +126,6 @@ struct imx8mq_usb_phy {
|
||||
static void tca_blk_orientation_set(struct tca_blk *tca,
|
||||
enum typec_orientation orientation);
|
||||
|
||||
#ifdef CONFIG_TYPEC
|
||||
|
||||
static int tca_blk_typec_switch_set(struct typec_switch_dev *sw,
|
||||
enum typec_orientation orientation)
|
||||
{
|
||||
@@ -175,18 +173,6 @@ static void tca_blk_put_typec_switch(struct typec_switch_dev *sw)
|
||||
typec_switch_unregister(sw);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static struct typec_switch_dev *tca_blk_get_typec_switch(struct platform_device *pdev,
|
||||
struct imx8mq_usb_phy *imx_phy)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void tca_blk_put_typec_switch(struct typec_switch_dev *sw) {}
|
||||
|
||||
#endif /* CONFIG_TYPEC */
|
||||
|
||||
static void tca_blk_orientation_set(struct tca_blk *tca,
|
||||
enum typec_orientation orientation)
|
||||
{
|
||||
@@ -504,6 +490,7 @@ static void imx8m_phy_tune(struct imx8mq_usb_phy *imx_phy)
|
||||
|
||||
if (imx_phy->pcs_tx_swing_full != PHY_TUNE_DEFAULT) {
|
||||
value = readl(imx_phy->base + PHY_CTRL5);
|
||||
value &= ~PHY_CTRL5_PCS_TX_SWING_FULL_MASK;
|
||||
value |= FIELD_PREP(PHY_CTRL5_PCS_TX_SWING_FULL_MASK,
|
||||
imx_phy->pcs_tx_swing_full);
|
||||
writel(value, imx_phy->base + PHY_CTRL5);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
config PHY_SPARX5_SERDES
|
||||
tristate "Microchip Sparx5 SerDes PHY driver"
|
||||
select GENERIC_PHY
|
||||
depends on ARCH_SPARX5 || COMPILE_TEST
|
||||
depends on ARCH_SPARX5 || ARCH_LAN969X || COMPILE_TEST
|
||||
depends on OF
|
||||
depends on HAS_IOMEM
|
||||
help
|
||||
|
||||
@@ -1093,29 +1093,29 @@ static int qusb2_phy_probe(struct platform_device *pdev)
|
||||
or->hsdisc_trim.override = true;
|
||||
}
|
||||
|
||||
pm_runtime_set_active(dev);
|
||||
pm_runtime_enable(dev);
|
||||
dev_set_drvdata(dev, qphy);
|
||||
|
||||
/*
|
||||
* Prevent runtime pm from being ON by default. Users can enable
|
||||
* it using power/control in sysfs.
|
||||
* Enable runtime PM support, but forbid it by default.
|
||||
* Users can allow it again via the power/control attribute in sysfs.
|
||||
*/
|
||||
pm_runtime_set_active(dev);
|
||||
pm_runtime_forbid(dev);
|
||||
ret = devm_pm_runtime_enable(dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
generic_phy = devm_phy_create(dev, NULL, &qusb2_phy_gen_ops);
|
||||
if (IS_ERR(generic_phy)) {
|
||||
ret = PTR_ERR(generic_phy);
|
||||
dev_err(dev, "failed to create phy, %d\n", ret);
|
||||
pm_runtime_disable(dev);
|
||||
return ret;
|
||||
}
|
||||
qphy->phy = generic_phy;
|
||||
|
||||
dev_set_drvdata(dev, qphy);
|
||||
phy_set_drvdata(generic_phy, qphy);
|
||||
|
||||
phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
|
||||
if (IS_ERR(phy_provider))
|
||||
pm_runtime_disable(dev);
|
||||
|
||||
return PTR_ERR_OR_ZERO(phy_provider);
|
||||
}
|
||||
|
||||
@@ -821,17 +821,20 @@ static void rockchip_chg_detect_work(struct work_struct *work)
|
||||
container_of(work, struct rockchip_usb2phy_port, chg_work.work);
|
||||
struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
|
||||
struct regmap *base = get_reg_base(rphy);
|
||||
bool is_dcd, tmout, vout;
|
||||
bool is_dcd, tmout, vout, vbus_attach;
|
||||
unsigned long delay;
|
||||
|
||||
vbus_attach = property_enabled(rphy->grf, &rport->port_cfg->utmi_bvalid);
|
||||
|
||||
dev_dbg(&rport->phy->dev, "chg detection work state = %d\n",
|
||||
rphy->chg_state);
|
||||
switch (rphy->chg_state) {
|
||||
case USB_CHG_STATE_UNDEFINED:
|
||||
if (!rport->suspended)
|
||||
if (!rport->suspended && !vbus_attach)
|
||||
rockchip_usb2phy_power_off(rport->phy);
|
||||
/* put the controller in non-driving mode */
|
||||
property_enable(base, &rphy->phy_cfg->chg_det.opmode, false);
|
||||
if (!vbus_attach)
|
||||
property_enable(base, &rphy->phy_cfg->chg_det.opmode, false);
|
||||
/* Start DCD processing stage 1 */
|
||||
rockchip_chg_enable_dcd(rphy, true);
|
||||
rphy->chg_state = USB_CHG_STATE_WAIT_FOR_DCD;
|
||||
@@ -894,7 +897,8 @@ static void rockchip_chg_detect_work(struct work_struct *work)
|
||||
fallthrough;
|
||||
case USB_CHG_STATE_DETECTED:
|
||||
/* put the controller in normal mode */
|
||||
property_enable(base, &rphy->phy_cfg->chg_det.opmode, true);
|
||||
if (!vbus_attach)
|
||||
property_enable(base, &rphy->phy_cfg->chg_det.opmode, true);
|
||||
rockchip_usb2phy_otg_sm_work(&rport->otg_sm_work.work);
|
||||
dev_dbg(&rport->phy->dev, "charger = %s\n",
|
||||
chg_to_string(rphy->chg_type));
|
||||
@@ -1491,7 +1495,7 @@ next_child:
|
||||
rphy);
|
||||
if (ret) {
|
||||
dev_err_probe(rphy->dev, ret, "failed to request usb2phy irq handle\n");
|
||||
goto put_child;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -712,7 +712,7 @@ static int stm32_usbphyc_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(child, "reg", &index);
|
||||
if (ret || index > usbphyc->nphys) {
|
||||
if (ret || index >= usbphyc->nphys) {
|
||||
dev_err(&phy->dev, "invalid reg property: %d\n", ret);
|
||||
if (!ret)
|
||||
ret = -EINVAL;
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
#define XUSB_PADCTL_USB2_BIAS_PAD_CTL0 0x284
|
||||
#define BIAS_PAD_PD BIT(11)
|
||||
#define HS_SQUELCH_LEVEL(x) (((x) & 0x7) << 0)
|
||||
#define HS_DISCON_LEVEL(x) (((x) & 0x7) << 3)
|
||||
|
||||
#define XUSB_PADCTL_USB2_BIAS_PAD_CTL1 0x288
|
||||
#define USB2_TRK_START_TIMER(x) (((x) & 0x7f) << 12)
|
||||
@@ -623,6 +624,8 @@ static void tegra186_utmi_bias_pad_power_on(struct tegra_xusb_padctl *padctl)
|
||||
value &= ~BIAS_PAD_PD;
|
||||
value &= ~HS_SQUELCH_LEVEL(~0);
|
||||
value |= HS_SQUELCH_LEVEL(priv->calib.hs_squelch);
|
||||
value &= ~HS_DISCON_LEVEL(~0);
|
||||
value |= HS_DISCON_LEVEL(0x7);
|
||||
padctl_writel(padctl, value, XUSB_PADCTL_USB2_BIAS_PAD_CTL0);
|
||||
|
||||
udelay(1);
|
||||
|
||||
@@ -180,6 +180,7 @@ static int da8xx_usb_phy_probe(struct platform_device *pdev)
|
||||
struct da8xx_usb_phy_platform_data *pdata = dev->platform_data;
|
||||
struct device_node *node = dev->of_node;
|
||||
struct da8xx_usb_phy *d_phy;
|
||||
int ret;
|
||||
|
||||
d_phy = devm_kzalloc(dev, sizeof(*d_phy), GFP_KERNEL);
|
||||
if (!d_phy)
|
||||
@@ -233,8 +234,6 @@ static int da8xx_usb_phy_probe(struct platform_device *pdev)
|
||||
return PTR_ERR(d_phy->phy_provider);
|
||||
}
|
||||
} else {
|
||||
int ret;
|
||||
|
||||
ret = phy_create_lookup(d_phy->usb11_phy, "usb-phy",
|
||||
"ohci-da8xx");
|
||||
if (ret)
|
||||
@@ -249,7 +248,9 @@ static int da8xx_usb_phy_probe(struct platform_device *pdev)
|
||||
PHY_INIT_BITS, PHY_INIT_BITS);
|
||||
|
||||
pm_runtime_set_active(dev);
|
||||
devm_pm_runtime_enable(dev);
|
||||
ret = devm_pm_runtime_enable(dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
/*
|
||||
* Prevent runtime pm from being ON by default. Users can enable
|
||||
* it using power/control in sysfs.
|
||||
|
||||
@@ -512,7 +512,7 @@ static int phy_gmii_sel_probe(struct platform_device *pdev)
|
||||
return dev_err_probe(dev, PTR_ERR(base),
|
||||
"failed to get base memory resource\n");
|
||||
|
||||
priv->regmap = regmap_init_mmio(dev, base, &phy_gmii_sel_regmap_cfg);
|
||||
priv->regmap = devm_regmap_init_mmio(dev, base, &phy_gmii_sel_regmap_cfg);
|
||||
if (IS_ERR(priv->regmap))
|
||||
return dev_err_probe(dev, PTR_ERR(priv->regmap),
|
||||
"Failed to get syscon\n");
|
||||
|
||||
Reference in New Issue
Block a user