2023-05-04 04:04:10

by Stanley Chang[昌育德]

[permalink] [raw]
Subject: [PATCH v5] usb: dwc3: core: add support for realtek SoCs custom's global register start address

The Realtek RTD1xxx SoCs were designed, the global register address
offset at 0x8100. The default address offset is constant at
DWC3_GLOBALS_REGS_START (0xc100). Therefore, add a check if the
compatible name of the parent is "realtek,rtd1xxx-dwc3", then global
register start address will remap to 0x8100.

Signed-off-by: Stanley Chang <[email protected]>
---
v4 to v5 change:
Use the compatible name of the parent to match this special offset.

v3 to v4 change:
Use the compatible name to specify the global register address offset.
If the compatible name is "snps,dwc3-rtk-soc", then the offset use 0x8100.
Otherwise, the offset is default value 0xc100.

v2 to v3 change:
1. Fix the dtschema validation error.

v1 to v2 change:
1. Change the name of the property "snps,global-regs-starting-offset".
2. Adjust the format of comment.
3. Add initial value of the global_regs_starting_offset
4. Remove the log of dev_info.
---
drivers/usb/dwc3/core.c | 11 +++++++++++
drivers/usb/dwc3/core.h | 2 ++
2 files changed, 13 insertions(+)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 0beaab932e7d..0adafb5439ed 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1800,6 +1800,17 @@ static int dwc3_probe(struct platform_device *pdev)
dwc_res = *res;
dwc_res.start += DWC3_GLOBALS_REGS_START;

+ if (dev->of_node) {
+ struct device_node *parent = of_get_parent(dev->of_node);
+
+ if (of_device_is_compatible(parent, "realtek,rtd1xxx-dwc3")) {
+ dwc_res.start -= DWC3_GLOBALS_REGS_START;
+ dwc_res.start += DWC3_RTK_RTD1XXX_GLOBALS_REGS_START;
+ }
+
+ of_node_put(parent);
+ }
+
regs = devm_ioremap_resource(dev, &dwc_res);
if (IS_ERR(regs))
return PTR_ERR(regs);
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index d56457c02996..c004e3a548ca 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -84,6 +84,8 @@
#define DWC3_OTG_REGS_START 0xcc00
#define DWC3_OTG_REGS_END 0xccff

+#define DWC3_RTK_RTD1XXX_GLOBALS_REGS_START 0x8100
+
/* Global Registers */
#define DWC3_GSBUSCFG0 0xc100
#define DWC3_GSBUSCFG1 0xc104
--
2.34.1


2023-05-04 07:55:49

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH v5] usb: dwc3: core: add support for realtek SoCs custom's global register start address

Hello!

On 5/4/23 6:44 AM, Stanley Chang wrote:

> The Realtek RTD1xxx SoCs were designed, the global register address
> offset at 0x8100.

Can't parse that, perhaps "with" is missing?

> The default address offset is constant at
> DWC3_GLOBALS_REGS_START (0xc100). Therefore, add a check if the
> compatible name of the parent is "realtek,rtd1xxx-dwc3", then global

Wildcards are not allowed in the "compatible" props...

> register start address will remap to 0x8100.
>
> Signed-off-by: Stanley Chang <[email protected]>
[...]

MBR, Sergey

2023-05-04 08:33:59

by Stanley Chang[昌育德]

[permalink] [raw]
Subject: RE: [PATCH v5] usb: dwc3: core: add support for realtek SoCs custom's global register start address

> On 5/4/23 6:44 AM, Stanley Chang wrote:
>
> > The Realtek RTD1xxx SoCs were designed, the global register address
> > offset at 0x8100.
>
> Can't parse that, perhaps "with" is missing?
>
> > The default address offset is constant at DWC3_GLOBALS_REGS_START
> > (0xc100). Therefore, add a check if the compatible name of the parent
> > is "realtek,rtd1xxx-dwc3", then global
>
> Wildcards are not allowed in the "compatible" props...

I can't understand your meaning.
Do you mean I can't use rtd1xxx ?

2023-05-04 08:50:51

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH v5] usb: dwc3: core: add support for realtek SoCs custom's global register start address

On 5/4/23 11:26 AM, Stanley Chang[昌育德] wrote:
[...]

>>> The Realtek RTD1xxx SoCs were designed, the global register address
>>> offset at 0x8100.
>>
>> Can't parse that, perhaps "with" is missing?
>>
>>> The default address offset is constant at DWC3_GLOBALS_REGS_START
>>> (0xc100). Therefore, add a check if the compatible name of the parent
>>> is "realtek,rtd1xxx-dwc3", then global
>>
>> Wildcards are not allowed in the "compatible" props...
>
> I can't understand your meaning.
> Do you mean I can't use rtd1xxx ?

You can't, indeed.

MBR, Sergey

2023-05-04 09:08:23

by Stanley Chang[昌育德]

[permalink] [raw]
Subject: RE: [PATCH v5] usb: dwc3: core: add support for realtek SoCs custom's global register start address


> > I can't understand your meaning.
> > Do you mean I can't use rtd1xxx ?
>
> You can't, indeed.
>
The namr rtd1xxx is represent the name of SoCs, for rtd129x, rtd139x, rtd16xx, ... etc.

Must I use a real chip name, example rtd129x?
Or can I use "rtd" only to represent all Socs?

2023-05-04 16:10:28

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH v5] usb: dwc3: core: add support for realtek SoCs custom's global register start address

On 5/4/23 11:36 AM, Stanley Chang[昌育德] wrote:

>>> I can't understand your meaning.
>>> Do you mean I can't use rtd1xxx ?
>>
>> You can't, indeed.
>>
> The namr rtd1xxx is represent the name of SoCs, for rtd129x, rtd139x, rtd16xx, ... etc.
>
> Must I use a real chip name, example rtd129x?

Yes but iff x is not also a wildcard. rtd1290 would fit iff that SoC actually exists.

> Or can I use "rtd" only to represent all Socs?

If you have a fallback value of the "compatible" prop, you can use it...

MBR, Sergey

2023-05-05 02:35:37

by Stanley Chang[昌育德]

[permalink] [raw]
Subject: RE: [PATCH v5] usb: dwc3: core: add support for realtek SoCs custom's global register start address

> >>> I can't understand your meaning.
> >>> Do you mean I can't use rtd1xxx ?
> >>
> >> You can't, indeed.
> >>
> > The namr rtd1xxx is represent the name of SoCs, for rtd129x, rtd139x,
> rtd16xx, ... etc.
> >
> > Must I use a real chip name, example rtd129x?
>
> Yes but iff x is not also a wildcard. rtd1290 would fit iff that SoC actually
> exists.
>
> > Or can I use "rtd" only to represent all Socs?
>
> If you have a fallback value of the "compatible" prop, you can use it...

I will use the name "rtd" to instead the "rtd1xxx".

Thanks,
Stanley