mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-28 09:11:34 +02:00
usb: dwc3-generic: Export glue structures and functions
In order to allow external SoC-dependent glue drivers to use dwc3-generic functions, push the glue structures and export the functions to a header file. The exported structures and functions are: - struct dwc3_glue_data - struct dwc3_glue_ops - dwc3_glue_bind() - dwc3_glue_probe() - dwc3_glue_remove() The SoC-dependent glue drivers can only define their own wrapper driver and specify these functions. The drivers can also add their own compatible strings and configure functions. Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Reviewed-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
7c71c684ce
commit
ef2313b8a2
@ -28,11 +28,7 @@
|
|||||||
#include <usb/xhci.h>
|
#include <usb/xhci.h>
|
||||||
#include <asm/gpio.h>
|
#include <asm/gpio.h>
|
||||||
|
|
||||||
struct dwc3_glue_data {
|
#include "dwc3-generic.h"
|
||||||
struct clk_bulk clks;
|
|
||||||
struct reset_ctl_bulk resets;
|
|
||||||
fdt_addr_t regs;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct dwc3_generic_plat {
|
struct dwc3_generic_plat {
|
||||||
fdt_addr_t base;
|
fdt_addr_t base;
|
||||||
@ -275,12 +271,6 @@ U_BOOT_DRIVER(dwc3_generic_host) = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct dwc3_glue_ops {
|
|
||||||
int (*glue_get_ctrl_dev)(struct udevice *parent, ofnode *node);
|
|
||||||
void (*glue_configure)(struct udevice *dev, int index,
|
|
||||||
enum usb_dr_mode mode);
|
|
||||||
};
|
|
||||||
|
|
||||||
void dwc3_imx8mp_glue_configure(struct udevice *dev, int index,
|
void dwc3_imx8mp_glue_configure(struct udevice *dev, int index,
|
||||||
enum usb_dr_mode mode)
|
enum usb_dr_mode mode)
|
||||||
{
|
{
|
||||||
@ -464,7 +454,7 @@ static int dwc3_glue_bind_common(struct udevice *parent, ofnode node)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dwc3_glue_bind(struct udevice *parent)
|
int dwc3_glue_bind(struct udevice *parent)
|
||||||
{
|
{
|
||||||
struct dwc3_glue_ops *ops = (struct dwc3_glue_ops *)dev_get_driver_data(parent);
|
struct dwc3_glue_ops *ops = (struct dwc3_glue_ops *)dev_get_driver_data(parent);
|
||||||
ofnode node;
|
ofnode node;
|
||||||
@ -531,7 +521,7 @@ static int dwc3_glue_clk_init(struct udevice *dev,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dwc3_glue_probe(struct udevice *dev)
|
int dwc3_glue_probe(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct dwc3_glue_ops *ops = (struct dwc3_glue_ops *)dev_get_driver_data(dev);
|
struct dwc3_glue_ops *ops = (struct dwc3_glue_ops *)dev_get_driver_data(dev);
|
||||||
struct dwc3_glue_data *glue = dev_get_plat(dev);
|
struct dwc3_glue_data *glue = dev_get_plat(dev);
|
||||||
@ -597,7 +587,7 @@ static int dwc3_glue_probe(struct udevice *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dwc3_glue_remove(struct udevice *dev)
|
int dwc3_glue_remove(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct dwc3_glue_data *glue = dev_get_plat(dev);
|
struct dwc3_glue_data *glue = dev_get_plat(dev);
|
||||||
|
|
||||||
|
32
drivers/usb/dwc3/dwc3-generic.h
Normal file
32
drivers/usb/dwc3/dwc3-generic.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* dwc3-generic.h - Generic DWC3 Glue layer header
|
||||||
|
*
|
||||||
|
* Copyright (C) 2016 - 2018 Xilinx, Inc.
|
||||||
|
* Copyright (C) 2023 Socionext Inc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __DRIVERS_USB_DWC3_GENERIC_H
|
||||||
|
#define __DRIVERS_USB_DWC3_GENERIC_H
|
||||||
|
|
||||||
|
#include <clk.h>
|
||||||
|
#include <reset.h>
|
||||||
|
#include <dwc3-uboot.h>
|
||||||
|
|
||||||
|
struct dwc3_glue_data {
|
||||||
|
struct clk_bulk clks;
|
||||||
|
struct reset_ctl_bulk resets;
|
||||||
|
fdt_addr_t regs;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct dwc3_glue_ops {
|
||||||
|
int (*glue_get_ctrl_dev)(struct udevice *parent, ofnode *node);
|
||||||
|
void (*glue_configure)(struct udevice *dev, int index,
|
||||||
|
enum usb_dr_mode mode);
|
||||||
|
};
|
||||||
|
|
||||||
|
int dwc3_glue_bind(struct udevice *parent);
|
||||||
|
int dwc3_glue_probe(struct udevice *dev);
|
||||||
|
int dwc3_glue_remove(struct udevice *dev);
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user