usb: gadget: udc: renesas_usb3: add support for R-Car H3 ES2.0
This patch adds support for R-Car H3 ES2.0. Since this SoC revision doesn't need workaround for vbus detection and number of ramif is increased. So, this driver uses soc_device_match() to detect it. Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
43ba968b00
commit
974203c0b9
|
@ -21,6 +21,7 @@
|
|||
#include <linux/pm_runtime.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/sys_soc.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/usb/ch9.h>
|
||||
#include <linux/usb/gadget.h>
|
||||
|
@ -2493,22 +2494,36 @@ static void renesas_usb3_init_ram(struct renesas_usb3 *usb3, struct device *dev,
|
|||
}
|
||||
}
|
||||
|
||||
static const struct renesas_usb3_priv renesas_usb3_priv_r8a7795 = {
|
||||
static const struct renesas_usb3_priv renesas_usb3_priv_r8a7795_es1 = {
|
||||
.ramsize_per_ramif = SZ_16K,
|
||||
.num_ramif = 2,
|
||||
.ramsize_per_pipe = SZ_4K,
|
||||
.workaround_for_vbus = true,
|
||||
};
|
||||
|
||||
static const struct renesas_usb3_priv renesas_usb3_priv_gen3 = {
|
||||
.ramsize_per_ramif = SZ_16K,
|
||||
.num_ramif = 4,
|
||||
.ramsize_per_pipe = SZ_4K,
|
||||
};
|
||||
|
||||
static const struct of_device_id usb3_of_match[] = {
|
||||
{
|
||||
.compatible = "renesas,r8a7795-usb3-peri",
|
||||
.data = &renesas_usb3_priv_r8a7795,
|
||||
.data = &renesas_usb3_priv_gen3,
|
||||
},
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, usb3_of_match);
|
||||
|
||||
static const struct soc_device_attribute renesas_usb3_quirks_match[] = {
|
||||
{
|
||||
.soc_id = "r8a7795", .revision = "ES1.*",
|
||||
.data = &renesas_usb3_priv_r8a7795_es1,
|
||||
},
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
static const unsigned int renesas_usb3_cable[] = {
|
||||
EXTCON_USB,
|
||||
EXTCON_USB_HOST,
|
||||
|
@ -2522,11 +2537,17 @@ static int renesas_usb3_probe(struct platform_device *pdev)
|
|||
const struct of_device_id *match;
|
||||
int irq, ret;
|
||||
const struct renesas_usb3_priv *priv;
|
||||
const struct soc_device_attribute *attr;
|
||||
|
||||
match = of_match_node(usb3_of_match, pdev->dev.of_node);
|
||||
if (!match)
|
||||
return -ENODEV;
|
||||
priv = match->data;
|
||||
|
||||
attr = soc_device_match(renesas_usb3_quirks_match);
|
||||
if (attr)
|
||||
priv = attr->data;
|
||||
else
|
||||
priv = match->data;
|
||||
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq < 0) {
|
||||
|
|
Loading…
Reference in New Issue