Commit 974203c0 authored by Yoshihiro Shimoda's avatar Yoshihiro Shimoda Committed by Felipe Balbi

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: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 43ba968b
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/sizes.h> #include <linux/sizes.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/sys_soc.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/usb/ch9.h> #include <linux/usb/ch9.h>
#include <linux/usb/gadget.h> #include <linux/usb/gadget.h>
...@@ -2493,22 +2494,36 @@ static void renesas_usb3_init_ram(struct renesas_usb3 *usb3, struct device *dev, ...@@ -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, .ramsize_per_ramif = SZ_16K,
.num_ramif = 2, .num_ramif = 2,
.ramsize_per_pipe = SZ_4K, .ramsize_per_pipe = SZ_4K,
.workaround_for_vbus = true, .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[] = { static const struct of_device_id usb3_of_match[] = {
{ {
.compatible = "renesas,r8a7795-usb3-peri", .compatible = "renesas,r8a7795-usb3-peri",
.data = &renesas_usb3_priv_r8a7795, .data = &renesas_usb3_priv_gen3,
}, },
{ }, { },
}; };
MODULE_DEVICE_TABLE(of, usb3_of_match); 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[] = { static const unsigned int renesas_usb3_cable[] = {
EXTCON_USB, EXTCON_USB,
EXTCON_USB_HOST, EXTCON_USB_HOST,
...@@ -2522,10 +2537,16 @@ static int renesas_usb3_probe(struct platform_device *pdev) ...@@ -2522,10 +2537,16 @@ static int renesas_usb3_probe(struct platform_device *pdev)
const struct of_device_id *match; const struct of_device_id *match;
int irq, ret; int irq, ret;
const struct renesas_usb3_priv *priv; const struct renesas_usb3_priv *priv;
const struct soc_device_attribute *attr;
match = of_match_node(usb3_of_match, pdev->dev.of_node); match = of_match_node(usb3_of_match, pdev->dev.of_node);
if (!match) if (!match)
return -ENODEV; return -ENODEV;
attr = soc_device_match(renesas_usb3_quirks_match);
if (attr)
priv = attr->data;
else
priv = match->data; priv = match->data;
irq = platform_get_irq(pdev, 0); irq = platform_get_irq(pdev, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment