
Add an overwrite to platform specific callback for setting up the xhci_vendor_ops, allow vendor to store the xhci_vendor_ops and overwrite them when xhci_plat_probe invoked. This change is depend on Commit in this patch series ("usb: host: add xhci hooks for USB offload"), vendor needs to invoke xhci_plat_register_vendor_ops() to register the vendor specific vendor_ops. And the vendor_ops will overwrite the vendor_ops inside xhci_plat_priv in xhci_vendor_init() during xhci-plat-hcd probe. Signed-off-by: Howard Yen <howardyen@google.com> Bug: 175358363 Link: https://lore.kernel.org/r/20210119101044.1637023-1-howardyen@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I57137d91c9b83df92ce633bff65ab72e48a9005d
35 lines
921 B
C
35 lines
921 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* xhci-plat.h - xHCI host controller driver platform Bus Glue.
|
|
*
|
|
* Copyright (C) 2015 Renesas Electronics Corporation
|
|
*/
|
|
|
|
#ifndef _XHCI_PLAT_H
|
|
#define _XHCI_PLAT_H
|
|
|
|
#include "xhci.h" /* for hcd_to_xhci() */
|
|
|
|
struct xhci_plat_priv {
|
|
const char *firmware_name;
|
|
unsigned long long quirks;
|
|
struct xhci_vendor_ops *vendor_ops;
|
|
struct xhci_vendor_data *vendor_data;
|
|
int (*plat_setup)(struct usb_hcd *);
|
|
void (*plat_start)(struct usb_hcd *);
|
|
int (*init_quirk)(struct usb_hcd *);
|
|
int (*suspend_quirk)(struct usb_hcd *);
|
|
int (*resume_quirk)(struct usb_hcd *);
|
|
};
|
|
|
|
#define hcd_to_xhci_priv(h) ((struct xhci_plat_priv *)hcd_to_xhci(h)->priv)
|
|
#define xhci_to_priv(x) ((struct xhci_plat_priv *)(x)->priv)
|
|
|
|
struct xhci_plat_priv_overwrite {
|
|
struct xhci_vendor_ops *vendor_ops;
|
|
};
|
|
|
|
int xhci_plat_register_vendor_ops(struct xhci_vendor_ops *vendor_ops);
|
|
|
|
#endif /* _XHCI_PLAT_H */
|