mirror of https://gitee.com/openkylin/linux.git
usb: host: xhci: rcar: Add firmware_name selection by soc_device_match()
This patch adds firmware_name selection by soc_device_match() to use other firmware name in the future. (For now, using the firmware is the same as before.) Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
feea468014
commit
306b89d3a3
|
@ -13,6 +13,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/usb/phy.h>
|
||||
#include <linux/sys_soc.h>
|
||||
|
||||
#include "xhci.h"
|
||||
#include "xhci-plat.h"
|
||||
|
@ -67,6 +68,22 @@ MODULE_FIRMWARE(XHCI_RCAR_FIRMWARE_NAME_V3);
|
|||
#define RCAR_USB3_RX_POL_VAL BIT(21)
|
||||
#define RCAR_USB3_TX_POL_VAL BIT(4)
|
||||
|
||||
/* For soc_device_attribute */
|
||||
#define RCAR_XHCI_FIRMWARE_V2 BIT(0) /* FIRMWARE V2 */
|
||||
#define RCAR_XHCI_FIRMWARE_V3 BIT(1) /* FIRMWARE V3 */
|
||||
|
||||
static const struct soc_device_attribute rcar_quirks_match[] = {
|
||||
{
|
||||
.soc_id = "r8a7795", .revision = "ES1.*",
|
||||
.data = (void *)RCAR_XHCI_FIRMWARE_V2,
|
||||
},
|
||||
{
|
||||
.soc_id = "r8a7796",
|
||||
.data = (void *)RCAR_XHCI_FIRMWARE_V3,
|
||||
},
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
static void xhci_rcar_start_gen2(struct usb_hcd *hcd)
|
||||
{
|
||||
/* LCLK Select */
|
||||
|
@ -122,9 +139,23 @@ static int xhci_rcar_download_firmware(struct usb_hcd *hcd)
|
|||
int retval, index, j, time;
|
||||
int timeout = 10000;
|
||||
u32 data, val, temp;
|
||||
u32 quirks = 0;
|
||||
const struct soc_device_attribute *attr;
|
||||
const char *firmware_name;
|
||||
|
||||
attr = soc_device_match(rcar_quirks_match);
|
||||
if (attr)
|
||||
quirks = (uintptr_t)attr->data;
|
||||
|
||||
if (quirks & RCAR_XHCI_FIRMWARE_V2)
|
||||
firmware_name = XHCI_RCAR_FIRMWARE_NAME_V2;
|
||||
else if (quirks & RCAR_XHCI_FIRMWARE_V3)
|
||||
firmware_name = XHCI_RCAR_FIRMWARE_NAME_V3;
|
||||
else
|
||||
firmware_name = priv->firmware_name;
|
||||
|
||||
/* request R-Car USB3.0 firmware */
|
||||
retval = request_firmware(&fw, priv->firmware_name, dev);
|
||||
retval = request_firmware(&fw, firmware_name, dev);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
|
|
Loading…
Reference in New Issue