Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a06c8ac authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull USB fixes from Greg KH:
 "Here are some small USB and PHY fixes and quirk updates for 4.3-rc5.

  Nothing major here, full details in the shortlog, and all of these
  have been in linux-next for a while"

* tag 'usb-4.3-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
  usb: Add device quirk for Logitech PTZ cameras
  USB: chaoskey read offset bug
  USB: Add reset-resume quirk for two Plantronics usb headphones.
  usb: renesas_usbhs: Add support for R-Car H3
  usb: renesas_usbhs: fix build warning if 64-bit architecture
  usb: gadget: bdc: fix memory leak
  phy: berlin-sata: Fix module autoload for OF platform driver
  phy: rockchip-usb: power down phy when rockchip phy probe
  phy: qcom-ufs: fix build error when the component is built as a module
parents 97d0c931 72194739
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -5,6 +5,7 @@ Required properties:
	- "renesas,usbhs-r8a7790"
	- "renesas,usbhs-r8a7790"
	- "renesas,usbhs-r8a7791"
	- "renesas,usbhs-r8a7791"
	- "renesas,usbhs-r8a7794"
	- "renesas,usbhs-r8a7794"
	- "renesas,usbhs-r8a7795"
  - reg: Base address and length of the register for the USBHS
  - reg: Base address and length of the register for the USBHS
  - interrupts: Interrupt specifier for the USBHS
  - interrupts: Interrupt specifier for the USBHS
  - clocks: A list of phandle + clock specifier pairs
  - clocks: A list of phandle + clock specifier pairs
+1 −0
Original line number Original line Diff line number Diff line
@@ -276,6 +276,7 @@ static const struct of_device_id phy_berlin_sata_of_match[] = {
	{ .compatible = "marvell,berlin2q-sata-phy" },
	{ .compatible = "marvell,berlin2q-sata-phy" },
	{ },
	{ },
};
};
MODULE_DEVICE_TABLE(of, phy_berlin_sata_of_match);


static struct platform_driver phy_berlin_sata_driver = {
static struct platform_driver phy_berlin_sata_driver = {
	.probe	= phy_berlin_sata_probe,
	.probe	= phy_berlin_sata_probe,
+11 −0
Original line number Original line Diff line number Diff line
@@ -432,6 +432,7 @@ int ufs_qcom_phy_enable_ref_clk(struct phy *generic_phy)
out:
out:
	return ret;
	return ret;
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_enable_ref_clk);


static
static
int ufs_qcom_phy_disable_vreg(struct phy *phy,
int ufs_qcom_phy_disable_vreg(struct phy *phy,
@@ -474,6 +475,7 @@ void ufs_qcom_phy_disable_ref_clk(struct phy *generic_phy)
		phy->is_ref_clk_enabled = false;
		phy->is_ref_clk_enabled = false;
	}
	}
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_disable_ref_clk);


#define UFS_REF_CLK_EN	(1 << 5)
#define UFS_REF_CLK_EN	(1 << 5)


@@ -517,11 +519,13 @@ void ufs_qcom_phy_enable_dev_ref_clk(struct phy *generic_phy)
{
{
	ufs_qcom_phy_dev_ref_clk_ctrl(generic_phy, true);
	ufs_qcom_phy_dev_ref_clk_ctrl(generic_phy, true);
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_enable_dev_ref_clk);


void ufs_qcom_phy_disable_dev_ref_clk(struct phy *generic_phy)
void ufs_qcom_phy_disable_dev_ref_clk(struct phy *generic_phy)
{
{
	ufs_qcom_phy_dev_ref_clk_ctrl(generic_phy, false);
	ufs_qcom_phy_dev_ref_clk_ctrl(generic_phy, false);
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_disable_dev_ref_clk);


/* Turn ON M-PHY RMMI interface clocks */
/* Turn ON M-PHY RMMI interface clocks */
int ufs_qcom_phy_enable_iface_clk(struct phy *generic_phy)
int ufs_qcom_phy_enable_iface_clk(struct phy *generic_phy)
@@ -550,6 +554,7 @@ int ufs_qcom_phy_enable_iface_clk(struct phy *generic_phy)
out:
out:
	return ret;
	return ret;
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_enable_iface_clk);


/* Turn OFF M-PHY RMMI interface clocks */
/* Turn OFF M-PHY RMMI interface clocks */
void ufs_qcom_phy_disable_iface_clk(struct phy *generic_phy)
void ufs_qcom_phy_disable_iface_clk(struct phy *generic_phy)
@@ -562,6 +567,7 @@ void ufs_qcom_phy_disable_iface_clk(struct phy *generic_phy)
		phy->is_iface_clk_enabled = false;
		phy->is_iface_clk_enabled = false;
	}
	}
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_disable_iface_clk);


int ufs_qcom_phy_start_serdes(struct phy *generic_phy)
int ufs_qcom_phy_start_serdes(struct phy *generic_phy)
{
{
@@ -578,6 +584,7 @@ int ufs_qcom_phy_start_serdes(struct phy *generic_phy)


	return ret;
	return ret;
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_start_serdes);


int ufs_qcom_phy_set_tx_lane_enable(struct phy *generic_phy, u32 tx_lanes)
int ufs_qcom_phy_set_tx_lane_enable(struct phy *generic_phy, u32 tx_lanes)
{
{
@@ -595,6 +602,7 @@ int ufs_qcom_phy_set_tx_lane_enable(struct phy *generic_phy, u32 tx_lanes)


	return ret;
	return ret;
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_set_tx_lane_enable);


void ufs_qcom_phy_save_controller_version(struct phy *generic_phy,
void ufs_qcom_phy_save_controller_version(struct phy *generic_phy,
					  u8 major, u16 minor, u16 step)
					  u8 major, u16 minor, u16 step)
@@ -605,6 +613,7 @@ void ufs_qcom_phy_save_controller_version(struct phy *generic_phy,
	ufs_qcom_phy->host_ctrl_rev_minor = minor;
	ufs_qcom_phy->host_ctrl_rev_minor = minor;
	ufs_qcom_phy->host_ctrl_rev_step = step;
	ufs_qcom_phy->host_ctrl_rev_step = step;
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_save_controller_version);


int ufs_qcom_phy_calibrate_phy(struct phy *generic_phy, bool is_rate_B)
int ufs_qcom_phy_calibrate_phy(struct phy *generic_phy, bool is_rate_B)
{
{
@@ -625,6 +634,7 @@ int ufs_qcom_phy_calibrate_phy(struct phy *generic_phy, bool is_rate_B)


	return ret;
	return ret;
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_calibrate_phy);


int ufs_qcom_phy_remove(struct phy *generic_phy,
int ufs_qcom_phy_remove(struct phy *generic_phy,
			struct ufs_qcom_phy *ufs_qcom_phy)
			struct ufs_qcom_phy *ufs_qcom_phy)
@@ -662,6 +672,7 @@ int ufs_qcom_phy_is_pcs_ready(struct phy *generic_phy)
	return ufs_qcom_phy->phy_spec_ops->
	return ufs_qcom_phy->phy_spec_ops->
			is_physical_coding_sublayer_ready(ufs_qcom_phy);
			is_physical_coding_sublayer_ready(ufs_qcom_phy);
}
}
EXPORT_SYMBOL_GPL(ufs_qcom_phy_is_pcs_ready);


int ufs_qcom_phy_power_on(struct phy *generic_phy)
int ufs_qcom_phy_power_on(struct phy *generic_phy)
{
{
+6 −0
Original line number Original line Diff line number Diff line
@@ -98,6 +98,7 @@ static int rockchip_usb_phy_probe(struct platform_device *pdev)
	struct device_node *child;
	struct device_node *child;
	struct regmap *grf;
	struct regmap *grf;
	unsigned int reg_offset;
	unsigned int reg_offset;
	int err;


	grf = syscon_regmap_lookup_by_phandle(dev->of_node, "rockchip,grf");
	grf = syscon_regmap_lookup_by_phandle(dev->of_node, "rockchip,grf");
	if (IS_ERR(grf)) {
	if (IS_ERR(grf)) {
@@ -129,6 +130,11 @@ static int rockchip_usb_phy_probe(struct platform_device *pdev)
			return PTR_ERR(rk_phy->phy);
			return PTR_ERR(rk_phy->phy);
		}
		}
		phy_set_drvdata(rk_phy->phy, rk_phy);
		phy_set_drvdata(rk_phy->phy, rk_phy);

		/* only power up usb phy when it use, so disable it when init*/
		err = rockchip_usb_phy_power(rk_phy, 1);
		if (err)
			return err;
	}
	}


	phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
	phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
+13 −0
Original line number Original line Diff line number Diff line
@@ -54,6 +54,13 @@ static const struct usb_device_id usb_quirk_list[] = {
	{ USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT },
	{ USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT },
	{ USB_DEVICE(0x046d, 0x0843), .driver_info = USB_QUIRK_DELAY_INIT },
	{ USB_DEVICE(0x046d, 0x0843), .driver_info = USB_QUIRK_DELAY_INIT },


	/* Logitech ConferenceCam CC3000e */
	{ USB_DEVICE(0x046d, 0x0847), .driver_info = USB_QUIRK_DELAY_INIT },
	{ USB_DEVICE(0x046d, 0x0848), .driver_info = USB_QUIRK_DELAY_INIT },

	/* Logitech PTZ Pro Camera */
	{ USB_DEVICE(0x046d, 0x0853), .driver_info = USB_QUIRK_DELAY_INIT },

	/* Logitech Quickcam Fusion */
	/* Logitech Quickcam Fusion */
	{ USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME },
	{ USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME },


@@ -78,6 +85,12 @@ static const struct usb_device_id usb_quirk_list[] = {
	/* Philips PSC805 audio device */
	/* Philips PSC805 audio device */
	{ USB_DEVICE(0x0471, 0x0155), .driver_info = USB_QUIRK_RESET_RESUME },
	{ USB_DEVICE(0x0471, 0x0155), .driver_info = USB_QUIRK_RESET_RESUME },


	/* Plantronic Audio 655 DSP */
	{ USB_DEVICE(0x047f, 0xc008), .driver_info = USB_QUIRK_RESET_RESUME },

	/* Plantronic Audio 648 USB */
	{ USB_DEVICE(0x047f, 0xc013), .driver_info = USB_QUIRK_RESET_RESUME },

	/* Artisman Watchdog Dongle */
	/* Artisman Watchdog Dongle */
	{ USB_DEVICE(0x04b4, 0x0526), .driver_info =
	{ USB_DEVICE(0x04b4, 0x0526), .driver_info =
			USB_QUIRK_CONFIG_INTF_STRINGS },
			USB_QUIRK_CONFIG_INTF_STRINGS },
Loading