public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v2 1/5] usb: dwc3: Cache ref_clk pointer in struct dwc3
@ 2022-11-08  1:40 Marek Vasut
  2022-11-08  1:40 ` [PATCH v2 2/5] usb: dwc3: reference clock period configuration Marek Vasut
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Marek Vasut @ 2022-11-08  1:40 UTC (permalink / raw)
  To: u-boot
  Cc: Marek Vasut, Angus Ainslie, Bin Meng, Fabio Estevam,
	Kunihiko Hayashi, Michal Simek, Peng Fan, Sean Anderson,
	Stefano Babic

Cache ref_clk clock pointer in struct dwc3 . This is a preparatory
patch for subsequent backports from Linux kernel which configure
GFLADJ register content based on the ref_clk rate and therefore need
access to the ref_clk pointer.

It is possible to extract the clock pointer from existing clk_bulk
list of already claimed clock, no need to call clk_get*() again.

Signed-off-by: Marek Vasut <marex@denx.de>
---
Cc: Angus Ainslie <angus@akkea.ca>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Sean Anderson <sean.anderson@seco.com>
Cc: Stefano Babic <sbabic@denx.de>
---
V2: Add paragraph on clk_get into commit message
---
 drivers/usb/dwc3/core.h         | 3 +++
 drivers/usb/dwc3/dwc3-generic.c | 9 +++++++++
 2 files changed, 12 insertions(+)

diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index d7cce3a861a..0d20fe285b0 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -668,6 +668,7 @@ struct dwc3_scratchpad_array {
  * @event_buffer_list: a list of event buffers
  * @gadget: device side representation of the peripheral controller
  * @gadget_driver: pointer to the gadget driver
+ * @ref_clk: reference clock
  * @regs: base address for our registers
  * @regs_size: address space size
  * @nr_scratch: number of scratch buffers
@@ -766,6 +767,8 @@ struct dwc3 {
 	struct usb_gadget	gadget;
 	struct usb_gadget_driver *gadget_driver;
 
+	struct clk		*ref_clk;
+
 	void __iomem		*regs;
 	size_t			regs_size;
 
diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index 466b25a0c38..78966718d01 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -59,12 +59,21 @@ static int dwc3_generic_probe(struct udevice *dev,
 	struct dwc3_generic_plat *plat = dev_get_plat(dev);
 	struct dwc3 *dwc3 = &priv->dwc3;
 	struct dwc3_glue_data *glue = dev_get_plat(dev->parent);
+	int __maybe_unused index;
+	ofnode __maybe_unused node;
 
 	dwc3->dev = dev;
 	dwc3->maximum_speed = plat->maximum_speed;
 	dwc3->dr_mode = plat->dr_mode;
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 	dwc3_of_parse(dwc3);
+
+	node = dev_ofnode(dev->parent);
+	index = ofnode_stringlist_search(node, "clock-names", "ref");
+	if (index < 0)
+		index = ofnode_stringlist_search(node, "clock-names", "ref_clk");
+	if (index >= 0)
+		dwc3->ref_clk = &glue->clks.clks[index];
 #endif
 
 	/*
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-11-08  1:43 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-08  1:40 [PATCH v2 1/5] usb: dwc3: Cache ref_clk pointer in struct dwc3 Marek Vasut
2022-11-08  1:40 ` [PATCH v2 2/5] usb: dwc3: reference clock period configuration Marek Vasut
2022-11-08  1:43   ` Sean Anderson
2022-11-08  1:40 ` [PATCH v2 3/5] usb: dwc3: Calculate REFCLKPER based on reference clock Marek Vasut
2022-11-08  1:40 ` [PATCH v2 4/5] usb: dwc3: Program GFLADJ Marek Vasut
2022-11-08  1:40 ` [PATCH v2 5/5] usb: dwc3: Drop support for "snps, ref-clock-period-ns" DT property Marek Vasut
2022-11-08  1:43   ` Sean Anderson
2022-11-08  1:42 ` [PATCH v2 1/5] usb: dwc3: Cache ref_clk pointer in struct dwc3 Sean Anderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox