* [PATCH 01/13] usb: renesas_usbhs: revise the irq_vbus comments
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 02/13] usb: renesas_usbhs: remove notify_hotplug callback Yoshihiro Shimoda
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
Since the irq_vbus comments doesn't match with the current
implementation, this patch revises it. This patch also changes
new lines to reduce the source code lines.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/mod.h | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/mod.h b/drivers/usb/renesas_usbhs/mod.h
index a4a61d6..7117729 100644
--- a/drivers/usb/renesas_usbhs/mod.h
+++ b/drivers/usb/renesas_usbhs/mod.h
@@ -3,6 +3,7 @@
* Renesas USB driver
*
* Copyright (C) 2011 Renesas Solutions Corp.
+ * Copyright (C) 2019 Renesas Electronics Corporation
* Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
*/
#ifndef RENESAS_USB_MOD_H
@@ -84,12 +85,11 @@ struct usbhs_mod_info {
/*
* INTSTS0 :: VBINT
*
- * This function will be used as autonomy mode
- * when platform cannot call notify_hotplug.
+ * This function will be used as autonomy mode (runtime_pwctrl == 0)
+ * when the platform doesn't have own get_vbus function.
*
- * This callback cannot be member of "struct usbhs_mod"
- * because it will be used even though
- * host/gadget has not been selected.
+ * This callback cannot be member of "struct usbhs_mod" because it
+ * will be used even though host/gadget has not been selected.
*/
int (*irq_vbus)(struct usbhs_priv *priv,
struct usbhs_irq_state *irq_state);
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 02/13] usb: renesas_usbhs: remove notify_hotplug callback
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 01/13] usb: renesas_usbhs: revise the irq_vbus comments Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 03/13] usb: renesas_usbhs: move macros from mod.c to the mod.h Yoshihiro Shimoda
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
The notify_hotplug callback was supported in v3.10, but the last user
(armadillo800eva) was removed by the commit 1fa59bda21c7 ("ARM: shmobile:
Remove legacy board code for Armadillo-800 EVA"). So, this patch
removes it.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 16 ++++------------
drivers/usb/renesas_usbhs/common.h | 2 ++
drivers/usb/renesas_usbhs/mod.c | 3 ++-
drivers/usb/renesas_usbhs/mod_gadget.c | 3 ++-
include/linux/usb/renesas_usbhs.h | 26 +-------------------------
5 files changed, 11 insertions(+), 39 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index ebbe322..f6b136a 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -3,6 +3,7 @@
* Renesas USB driver
*
* Copyright (C) 2011 Renesas Solutions Corp.
+ * Copyright (C) 2019 Renesas Electronics Corporation
* Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
*/
#include <linux/clk.h>
@@ -513,7 +514,7 @@ static void usbhsc_notify_hotplug(struct work_struct *work)
usbhsc_hotplug(priv);
}
-static int usbhsc_drvcllbck_notify_hotplug(struct platform_device *pdev)
+int usbhsc_schedule_notify_hotplug(struct platform_device *pdev)
{
struct usbhs_priv *priv = usbhs_pdev_to_priv(pdev);
int delay = usbhs_get_dparam(priv, detection_delay);
@@ -667,7 +668,6 @@ static struct renesas_usbhs_platform_info *usbhs_parse_dt(struct device *dev)
static int usbhs_probe(struct platform_device *pdev)
{
struct renesas_usbhs_platform_info *info = renesas_usbhs_get_info(pdev);
- struct renesas_usbhs_driver_callback *dfunc;
struct usbhs_priv *priv;
struct resource *res, *irq_res;
int ret;
@@ -721,10 +721,6 @@ static int usbhs_probe(struct platform_device *pdev)
}
priv->pfunc = info->platform_callback;
- /* set driver callback functions for platform */
- dfunc = &info->driver_callback;
- dfunc->notify_hotplug = usbhsc_drvcllbck_notify_hotplug;
-
/* set default param if platform doesn't have */
if (!priv->dparam.pipe_configs) {
priv->dparam.pipe_configs = usbhsc_default_pipe;
@@ -818,7 +814,7 @@ static int usbhs_probe(struct platform_device *pdev)
/*
* manual call notify_hotplug for cold plug
*/
- usbhsc_drvcllbck_notify_hotplug(pdev);
+ usbhsc_schedule_notify_hotplug(pdev);
dev_info(&pdev->dev, "probed\n");
@@ -843,13 +839,9 @@ static int usbhs_probe(struct platform_device *pdev)
static int usbhs_remove(struct platform_device *pdev)
{
struct usbhs_priv *priv = usbhs_pdev_to_priv(pdev);
- struct renesas_usbhs_platform_info *info = renesas_usbhs_get_info(pdev);
- struct renesas_usbhs_driver_callback *dfunc = &info->driver_callback;
dev_dbg(&pdev->dev, "usb remove\n");
- dfunc->notify_hotplug = NULL;
-
/* power off */
if (!usbhs_get_dparam(priv, runtime_pwctrl))
usbhsc_power_ctrl(priv, 0);
@@ -894,7 +886,7 @@ static __maybe_unused int usbhsc_resume(struct device *dev)
usbhs_platform_call(priv, phy_reset, pdev);
- usbhsc_drvcllbck_notify_hotplug(pdev);
+ usbhsc_schedule_notify_hotplug(pdev);
return 0;
}
diff --git a/drivers/usb/renesas_usbhs/common.h b/drivers/usb/renesas_usbhs/common.h
index de74ebd1..b2b21fb 100644
--- a/drivers/usb/renesas_usbhs/common.h
+++ b/drivers/usb/renesas_usbhs/common.h
@@ -3,6 +3,7 @@
* Renesas USB driver
*
* Copyright (C) 2011 Renesas Solutions Corp.
+ * Copyright (C) 2019 Renesas Electronics Corporation
* Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
*/
#ifndef RENESAS_USB_DRIVER_H
@@ -317,6 +318,7 @@ void usbhs_bus_send_sof_enable(struct usbhs_priv *priv);
void usbhs_bus_send_reset(struct usbhs_priv *priv);
int usbhs_bus_get_speed(struct usbhs_priv *priv);
int usbhs_vbus_ctrl(struct usbhs_priv *priv, int enable);
+int usbhsc_schedule_notify_hotplug(struct platform_device *pdev);
/*
* frame
diff --git a/drivers/usb/renesas_usbhs/mod.c b/drivers/usb/renesas_usbhs/mod.c
index 7475c4f..540472a 100644
--- a/drivers/usb/renesas_usbhs/mod.c
+++ b/drivers/usb/renesas_usbhs/mod.c
@@ -3,6 +3,7 @@
* Renesas USB driver
*
* Copyright (C) 2011 Renesas Solutions Corp.
+ * Copyright (C) 2019 Renesas Electronics Corporation
* Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
*/
#include <linux/interrupt.h>
@@ -41,7 +42,7 @@ static int usbhsm_autonomy_irq_vbus(struct usbhs_priv *priv,
{
struct platform_device *pdev = usbhs_priv_to_pdev(priv);
- renesas_usbhs_call_notify_hotplug(pdev);
+ usbhsc_schedule_notify_hotplug(pdev);
return 0;
}
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c
index 59cac40..0c1e8fa 100644
--- a/drivers/usb/renesas_usbhs/mod_gadget.c
+++ b/drivers/usb/renesas_usbhs/mod_gadget.c
@@ -3,6 +3,7 @@
* Renesas USB driver
*
* Copyright (C) 2011 Renesas Solutions Corp.
+ * Copyright (C) 2019 Renesas Electronics Corporation
* Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
*/
#include <linux/delay.h>
@@ -1023,7 +1024,7 @@ static int usbhsg_vbus_session(struct usb_gadget *gadget, int is_active)
gpriv->vbus_active = !!is_active;
- renesas_usbhs_call_notify_hotplug(pdev);
+ usbhsc_schedule_notify_hotplug(pdev);
return 0;
}
diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
index b2cba7c..ac601be 100644
--- a/include/linux/usb/renesas_usbhs.h
+++ b/include/linux/usb/renesas_usbhs.h
@@ -3,6 +3,7 @@
* Renesas USB
*
* Copyright (C) 2011 Renesas Solutions Corp.
+ * Copyright (C) 2019 Renesas Electronics Corporation
* Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
*
* This program is distributed in the hope that it will be useful,
@@ -33,17 +34,6 @@ enum {
};
/*
- * callback functions table for driver
- *
- * These functions are called from platform for driver.
- * Callback function's pointer will be set before
- * renesas_usbhs_platform_callback :: hardware_init was called
- */
-struct renesas_usbhs_driver_callback {
- int (*notify_hotplug)(struct platform_device *pdev);
-};
-
-/*
* callback functions for platform
*
* These functions are called from driver for platform
@@ -214,12 +204,6 @@ struct renesas_usbhs_platform_info {
struct renesas_usbhs_platform_callback platform_callback;
/*
- * driver set these callback functions pointer.
- * platform can use it on callback functions
- */
- struct renesas_usbhs_driver_callback driver_callback;
-
- /*
* option:
*
* driver use these param for some register
@@ -232,12 +216,4 @@ struct renesas_usbhs_platform_info {
*/
#define renesas_usbhs_get_info(pdev)\
((struct renesas_usbhs_platform_info *)(pdev)->dev.platform_data)
-
-#define renesas_usbhs_call_notify_hotplug(pdev) \
- ({ \
- struct renesas_usbhs_driver_callback *dc; \
- dc = &(renesas_usbhs_get_info(pdev)->driver_callback); \
- if (dc && dc->notify_hotplug) \
- dc->notify_hotplug(pdev); \
- })
#endif /* RENESAS_USB_H */
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 03/13] usb: renesas_usbhs: move macros from mod.c to the mod.h
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 01/13] usb: renesas_usbhs: revise the irq_vbus comments Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 02/13] usb: renesas_usbhs: remove notify_hotplug callback Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 04/13] usb: renesas_usbhs: Avoid to write platform_data's value Yoshihiro Shimoda
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
In the future, since other source code of this driver will use these
macros, this patch moves it to the header file.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/mod.c | 9 ---------
drivers/usb/renesas_usbhs/mod.h | 9 +++++++++
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/mod.c b/drivers/usb/renesas_usbhs/mod.c
index 540472a..984bb2f 100644
--- a/drivers/usb/renesas_usbhs/mod.c
+++ b/drivers/usb/renesas_usbhs/mod.c
@@ -11,15 +11,6 @@
#include "common.h"
#include "mod.h"
-#define usbhs_priv_to_modinfo(priv) (&priv->mod_info)
-#define usbhs_mod_info_call(priv, func, param...) \
-({ \
- struct usbhs_mod_info *info; \
- info = usbhs_priv_to_modinfo(priv); \
- !info->func ? 0 : \
- info->func(param); \
-})
-
/*
* autonomy
*
diff --git a/drivers/usb/renesas_usbhs/mod.h b/drivers/usb/renesas_usbhs/mod.h
index 7117729..6678e81 100644
--- a/drivers/usb/renesas_usbhs/mod.h
+++ b/drivers/usb/renesas_usbhs/mod.h
@@ -129,6 +129,15 @@ void usbhs_irq_callback_update(struct usbhs_priv *priv, struct usbhs_mod *mod);
mod->func(param); \
})
+#define usbhs_priv_to_modinfo(priv) (&priv->mod_info)
+#define usbhs_mod_info_call(priv, func, param...) \
+({ \
+ struct usbhs_mod_info *info; \
+ info = usbhs_priv_to_modinfo(priv); \
+ !info->func ? 0 : \
+ info->func(param); \
+})
+
/*
* host / gadget control
*/
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 04/13] usb: renesas_usbhs: Avoid to write platform_data's value
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (2 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 03/13] usb: renesas_usbhs: move macros from mod.c to the mod.h Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 05/13] usb: renesas_usbhs: Use a specific flag instead of type for multi_clks Yoshihiro Shimoda
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
The very old commit 482982062f1b ("usb: gadget: renesas_usbhs:
bugfix: don't modify platform data") changed to use copied whole
structures values to fix the "hung-up" issue. However, we also
can fix the issue if the driver copies the get_vbus function
pointer to the driver's value.
So, this patch adds get_vbus member into struct usbhs_mod_info and
use the pointer instead of struct renesas_usbhs_platform_callback.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 4 +++-
drivers/usb/renesas_usbhs/mod.c | 11 +++++++++--
drivers/usb/renesas_usbhs/mod.h | 7 +++++++
drivers/usb/renesas_usbhs/mod_gadget.c | 4 ++--
4 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index f6b136a..739fe4b 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -448,7 +448,7 @@ static void usbhsc_hotplug(struct usbhs_priv *priv)
/*
* get vbus status from platform
*/
- enable = usbhs_platform_call(priv, get_vbus, pdev);
+ enable = usbhs_mod_info_call(priv, get_vbus, pdev);
/*
* get id from platform
@@ -809,6 +809,8 @@ static int usbhs_probe(struct platform_device *pdev)
if (!usbhs_get_dparam(priv, runtime_pwctrl)) {
usbhsc_power_ctrl(priv, 1);
usbhs_mod_autonomy_mode(priv);
+ } else {
+ usbhs_mod_non_autonomy_mode(priv);
}
/*
diff --git a/drivers/usb/renesas_usbhs/mod.c b/drivers/usb/renesas_usbhs/mod.c
index 984bb2f..ddf0153 100644
--- a/drivers/usb/renesas_usbhs/mod.c
+++ b/drivers/usb/renesas_usbhs/mod.c
@@ -42,12 +42,19 @@ void usbhs_mod_autonomy_mode(struct usbhs_priv *priv)
{
struct usbhs_mod_info *info = usbhs_priv_to_modinfo(priv);
- info->irq_vbus = usbhsm_autonomy_irq_vbus;
- priv->pfunc.get_vbus = usbhsm_autonomy_get_vbus;
+ info->irq_vbus = usbhsm_autonomy_irq_vbus;
+ info->get_vbus = usbhsm_autonomy_get_vbus;
usbhs_irq_callback_update(priv, NULL);
}
+void usbhs_mod_non_autonomy_mode(struct usbhs_priv *priv)
+{
+ struct usbhs_mod_info *info = usbhs_priv_to_modinfo(priv);
+
+ info->get_vbus = priv->pfunc.get_vbus;
+}
+
/*
* host / gadget functions
*
diff --git a/drivers/usb/renesas_usbhs/mod.h b/drivers/usb/renesas_usbhs/mod.h
index 6678e81..65dc19c 100644
--- a/drivers/usb/renesas_usbhs/mod.h
+++ b/drivers/usb/renesas_usbhs/mod.h
@@ -93,6 +93,12 @@ struct usbhs_mod_info {
*/
int (*irq_vbus)(struct usbhs_priv *priv,
struct usbhs_irq_state *irq_state);
+
+ /*
+ * This function will be used on any gadget mode. To simplify the code,
+ * this member is in here.
+ */
+ int (*get_vbus)(struct platform_device *pdev);
};
/*
@@ -107,6 +113,7 @@ int usbhs_mod_probe(struct usbhs_priv *priv);
void usbhs_mod_remove(struct usbhs_priv *priv);
void usbhs_mod_autonomy_mode(struct usbhs_priv *priv);
+void usbhs_mod_non_autonomy_mode(struct usbhs_priv *priv);
/*
* status functions
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c
index 0c1e8fa..4d571a5 100644
--- a/drivers/usb/renesas_usbhs/mod_gadget.c
+++ b/drivers/usb/renesas_usbhs/mod_gadget.c
@@ -915,8 +915,8 @@ static void usbhs_mod_phy_mode(struct usbhs_priv *priv)
{
struct usbhs_mod_info *info = &priv->mod_info;
- info->irq_vbus = NULL;
- priv->pfunc.get_vbus = usbhsm_phy_get_vbus;
+ info->irq_vbus = NULL;
+ info->get_vbus = usbhsm_phy_get_vbus;
usbhs_irq_callback_update(priv, NULL);
}
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 05/13] usb: renesas_usbhs: Use a specific flag instead of type for multi_clks
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (3 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 04/13] usb: renesas_usbhs: Avoid to write platform_data's value Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 06/13] usb: renesas_usbhs: Remove type member from renesas_usbhs_driver_param Yoshihiro Shimoda
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
To remove the type of renesas_usbhs_driver_param in the future, this
patch uses a specific flag "multi_clks".
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 8 +++-----
include/linux/usb/renesas_usbhs.h | 1 +
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index 739fe4b..530e2eb7 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -288,11 +288,7 @@ static void usbhsc_set_buswait(struct usbhs_priv *priv)
static bool usbhsc_is_multi_clks(struct usbhs_priv *priv)
{
- if (priv->dparam.type == USBHS_TYPE_RCAR_GEN3 ||
- priv->dparam.type == USBHS_TYPE_RCAR_GEN3_WITH_PLL)
- return true;
-
- return false;
+ return priv->dparam.multi_clks;
}
static int usbhsc_clk_get(struct device *dev, struct usbhs_priv *priv)
@@ -544,6 +540,7 @@ static const struct usbhs_of_data rcar_gen3_data = {
.param = {
.type = USBHS_TYPE_RCAR_GEN3,
.has_usb_dmac = 1,
+ .multi_clks = 1,
.pipe_configs = usbhsc_new_pipe,
.pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
}
@@ -554,6 +551,7 @@ static const struct usbhs_of_data rcar_gen3_with_pll_data = {
.param = {
.type = USBHS_TYPE_RCAR_GEN3_WITH_PLL,
.has_usb_dmac = 1,
+ .multi_clks = 1,
.pipe_configs = usbhsc_new_pipe,
.pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
}
diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
index ac601be..e249c21 100644
--- a/include/linux/usb/renesas_usbhs.h
+++ b/include/linux/usb/renesas_usbhs.h
@@ -181,6 +181,7 @@ struct renesas_usbhs_driver_param {
u32 has_cnen:1;
u32 cfifo_byte_addr:1; /* CFIFO is byte addressable */
#define USBHS_USB_DMAC_XFER_SIZE 32 /* hardcode the xfer size */
+ u32 multi_clks:1;
};
#define USBHS_TYPE_RCAR_GEN2 1
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 06/13] usb: renesas_usbhs: Remove type member from renesas_usbhs_driver_param
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (4 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 05/13] usb: renesas_usbhs: Use a specific flag instead of type for multi_clks Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 07/13] usb: renesas_usbhs: Use dev_of_node macro instead of open coded Yoshihiro Shimoda
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
Now no one uses the type member so that this patch removes it.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 5 -----
include/linux/usb/renesas_usbhs.h | 7 -------
2 files changed, 12 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index 530e2eb7..1872756 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -528,7 +528,6 @@ int usbhsc_schedule_notify_hotplug(struct platform_device *pdev)
static const struct usbhs_of_data rcar_gen2_data = {
.platform_callback = &usbhs_rcar2_ops,
.param = {
- .type = USBHS_TYPE_RCAR_GEN2,
.has_usb_dmac = 1,
.pipe_configs = usbhsc_new_pipe,
.pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
@@ -538,7 +537,6 @@ static const struct usbhs_of_data rcar_gen2_data = {
static const struct usbhs_of_data rcar_gen3_data = {
.platform_callback = &usbhs_rcar3_ops,
.param = {
- .type = USBHS_TYPE_RCAR_GEN3,
.has_usb_dmac = 1,
.multi_clks = 1,
.pipe_configs = usbhsc_new_pipe,
@@ -549,7 +547,6 @@ static const struct usbhs_of_data rcar_gen3_data = {
static const struct usbhs_of_data rcar_gen3_with_pll_data = {
.platform_callback = &usbhs_rcar3_with_pll_ops,
.param = {
- .type = USBHS_TYPE_RCAR_GEN3_WITH_PLL,
.has_usb_dmac = 1,
.multi_clks = 1,
.pipe_configs = usbhsc_new_pipe,
@@ -560,7 +557,6 @@ static const struct usbhs_of_data rcar_gen3_with_pll_data = {
static const struct usbhs_of_data rza1_data = {
.platform_callback = &usbhs_rza1_ops,
.param = {
- .type = USBHS_TYPE_RZA1,
.pipe_configs = usbhsc_new_pipe,
.pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
}
@@ -569,7 +565,6 @@ static const struct usbhs_of_data rza1_data = {
static const struct usbhs_of_data rza2_data = {
.platform_callback = &usbhs_rza2_ops,
.param = {
- .type = USBHS_TYPE_RZA2,
.has_cnen = 1,
.cfifo_byte_addr = 1,
.pipe_configs = usbhsc_new_pipe,
diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
index e249c21..fee84b7 100644
--- a/include/linux/usb/renesas_usbhs.h
+++ b/include/linux/usb/renesas_usbhs.h
@@ -170,7 +170,6 @@ struct renesas_usbhs_driver_param {
*/
int pio_dma_border; /* default is 64byte */
- uintptr_t type;
u32 enable_gpio;
/*
@@ -184,12 +183,6 @@ struct renesas_usbhs_driver_param {
u32 multi_clks:1;
};
-#define USBHS_TYPE_RCAR_GEN2 1
-#define USBHS_TYPE_RCAR_GEN3 2
-#define USBHS_TYPE_RCAR_GEN3_WITH_PLL 3
-#define USBHS_TYPE_RZA1 4
-#define USBHS_TYPE_RZA2 5
-
/*
* option:
*
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 07/13] usb: renesas_usbhs: Use dev_of_node macro instead of open coded
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (5 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 06/13] usb: renesas_usbhs: Remove type member from renesas_usbhs_driver_param Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 08/13] usb: renesas_usbhs: Add has_new_pipe_configs flag Yoshihiro Shimoda
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
This patch uses the dev_of_node macro instead of open coded
to be better.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 14 +++++++-------
drivers/usb/renesas_usbhs/fifo.c | 3 ++-
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index 1872756..35b06e7 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -297,7 +297,7 @@ static int usbhsc_clk_get(struct device *dev, struct usbhs_priv *priv)
return 0;
/* The first clock should exist */
- priv->clks[0] = of_clk_get(dev->of_node, 0);
+ priv->clks[0] = of_clk_get(dev_of_node(dev), 0);
if (IS_ERR(priv->clks[0]))
return PTR_ERR(priv->clks[0]);
@@ -305,7 +305,7 @@ static int usbhsc_clk_get(struct device *dev, struct usbhs_priv *priv)
* To backward compatibility with old DT, this driver checks the return
* value if it's -ENOENT or not.
*/
- priv->clks[1] = of_clk_get(dev->of_node, 1);
+ priv->clks[1] = of_clk_get(dev_of_node(dev), 1);
if (PTR_ERR(priv->clks[1]) == -ENOENT)
priv->clks[1] = NULL;
else if (IS_ERR(priv->clks[1]))
@@ -648,10 +648,10 @@ static struct renesas_usbhs_platform_info *usbhs_parse_dt(struct device *dev)
*dparam = data->param;
info->platform_callback = *data->platform_callback;
- if (!of_property_read_u32(dev->of_node, "renesas,buswait", &tmp))
+ if (!of_property_read_u32(dev_of_node(dev), "renesas,buswait", &tmp))
dparam->buswait_bwait = tmp;
- gpio = of_get_named_gpio_flags(dev->of_node, "renesas,enable-gpio", 0,
- NULL);
+ gpio = of_get_named_gpio_flags(dev_of_node(dev), "renesas,enable-gpio",
+ 0, NULL);
if (gpio > 0)
dparam->enable_gpio = gpio;
@@ -666,7 +666,7 @@ static int usbhs_probe(struct platform_device *pdev)
int ret;
/* check device node */
- if (pdev->dev.of_node)
+ if (dev_of_node(&pdev->dev))
info = pdev->dev.platform_data = usbhs_parse_dt(&pdev->dev);
/* check platform information */
@@ -692,7 +692,7 @@ static int usbhs_probe(struct platform_device *pdev)
if (IS_ERR(priv->base))
return PTR_ERR(priv->base);
- if (of_property_read_bool(pdev->dev.of_node, "extcon")) {
+ if (of_property_read_bool(dev_of_node(&pdev->dev), "extcon")) {
priv->edev = extcon_get_edev_by_phandle(&pdev->dev, 0);
if (IS_ERR(priv->edev))
return PTR_ERR(priv->edev);
diff --git a/drivers/usb/renesas_usbhs/fifo.c b/drivers/usb/renesas_usbhs/fifo.c
index e84d2ac2..a345b2e 100644
--- a/drivers/usb/renesas_usbhs/fifo.c
+++ b/drivers/usb/renesas_usbhs/fifo.c
@@ -3,6 +3,7 @@
* Renesas USB driver
*
* Copyright (C) 2011 Renesas Solutions Corp.
+ * Copyright (C) 2019 Renesas Electronics Corporation
* Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
*/
#include <linux/delay.h>
@@ -1277,7 +1278,7 @@ static void usbhsf_dma_init(struct usbhs_priv *priv, struct usbhs_fifo *fifo,
{
struct device *dev = usbhs_priv_to_dev(priv);
- if (dev->of_node)
+ if (dev_of_node(dev))
usbhsf_dma_init_dt(dev, fifo, channel);
else
usbhsf_dma_init_pdev(fifo);
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 08/13] usb: renesas_usbhs: Add has_new_pipe_configs flag
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (6 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 07/13] usb: renesas_usbhs: Use dev_of_node macro instead of open coded Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 09/13] usb: renesas_usbhs: Add struct device * declaration in usbhs_probe() Yoshihiro Shimoda
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
In the future, each struct renesas_usbhs_driver_param is stored on
the each platform related source code (e.g. rcar3.c). So, to simplify
the source code, this patch adds a new flag has_new_pipe_configs.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 20 +++++++++-----------
include/linux/usb/renesas_usbhs.h | 1 +
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index 35b06e7..f9476a07 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -529,8 +529,7 @@ static const struct usbhs_of_data rcar_gen2_data = {
.platform_callback = &usbhs_rcar2_ops,
.param = {
.has_usb_dmac = 1,
- .pipe_configs = usbhsc_new_pipe,
- .pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
+ .has_new_pipe_configs = 1,
}
};
@@ -539,8 +538,7 @@ static const struct usbhs_of_data rcar_gen3_data = {
.param = {
.has_usb_dmac = 1,
.multi_clks = 1,
- .pipe_configs = usbhsc_new_pipe,
- .pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
+ .has_new_pipe_configs = 1,
}
};
@@ -549,16 +547,14 @@ static const struct usbhs_of_data rcar_gen3_with_pll_data = {
.param = {
.has_usb_dmac = 1,
.multi_clks = 1,
- .pipe_configs = usbhsc_new_pipe,
- .pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
+ .has_new_pipe_configs = 1,
}
};
static const struct usbhs_of_data rza1_data = {
.platform_callback = &usbhs_rza1_ops,
.param = {
- .pipe_configs = usbhsc_new_pipe,
- .pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
+ .has_new_pipe_configs = 1,
}
};
@@ -567,8 +563,7 @@ static const struct usbhs_of_data rza2_data = {
.param = {
.has_cnen = 1,
.cfifo_byte_addr = 1,
- .pipe_configs = usbhsc_new_pipe,
- .pipe_size = ARRAY_SIZE(usbhsc_new_pipe),
+ .has_new_pipe_configs = 1,
}
};
@@ -715,7 +710,10 @@ static int usbhs_probe(struct platform_device *pdev)
priv->pfunc = info->platform_callback;
/* set default param if platform doesn't have */
- if (!priv->dparam.pipe_configs) {
+ if (usbhs_get_dparam(priv, has_new_pipe_configs)) {
+ priv->dparam.pipe_configs = usbhsc_new_pipe;
+ priv->dparam.pipe_size = ARRAY_SIZE(usbhsc_new_pipe);
+ } else if (!priv->dparam.pipe_configs) {
priv->dparam.pipe_configs = usbhsc_default_pipe;
priv->dparam.pipe_size = ARRAY_SIZE(usbhsc_default_pipe);
}
diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
index fee84b7..6914475 100644
--- a/include/linux/usb/renesas_usbhs.h
+++ b/include/linux/usb/renesas_usbhs.h
@@ -181,6 +181,7 @@ struct renesas_usbhs_driver_param {
u32 cfifo_byte_addr:1; /* CFIFO is byte addressable */
#define USBHS_USB_DMAC_XFER_SIZE 32 /* hardcode the xfer size */
u32 multi_clks:1;
+ u32 has_new_pipe_configs:1;
};
/*
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 09/13] usb: renesas_usbhs: Add struct device * declaration in usbhs_probe()
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (7 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 08/13] usb: renesas_usbhs: Add has_new_pipe_configs flag Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 10/13] usb: renesas_usbhs: move device tree properties parsing Yoshihiro Shimoda
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
Since this can remove over 80 charactors in a line, this patch adds
struct device * declaration in usbhs_probe().
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index f9476a07..379b4a0e 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -658,27 +658,28 @@ static int usbhs_probe(struct platform_device *pdev)
struct renesas_usbhs_platform_info *info = renesas_usbhs_get_info(pdev);
struct usbhs_priv *priv;
struct resource *res, *irq_res;
+ struct device *dev = &pdev->dev;
int ret;
/* check device node */
- if (dev_of_node(&pdev->dev))
+ if (dev_of_node(dev))
info = pdev->dev.platform_data = usbhs_parse_dt(&pdev->dev);
/* check platform information */
if (!info) {
- dev_err(&pdev->dev, "no platform information\n");
+ dev_err(dev, "no platform information\n");
return -EINVAL;
}
/* platform data */
irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (!irq_res) {
- dev_err(&pdev->dev, "Not enough Renesas USB platform resources.\n");
+ dev_err(dev, "Not enough Renesas USB platform resources.\n");
return -ENODEV;
}
/* usb private data */
- priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
@@ -687,13 +688,13 @@ static int usbhs_probe(struct platform_device *pdev)
if (IS_ERR(priv->base))
return PTR_ERR(priv->base);
- if (of_property_read_bool(dev_of_node(&pdev->dev), "extcon")) {
- priv->edev = extcon_get_edev_by_phandle(&pdev->dev, 0);
+ if (of_property_read_bool(dev_of_node(dev), "extcon")) {
+ priv->edev = extcon_get_edev_by_phandle(dev, 0);
if (IS_ERR(priv->edev))
return PTR_ERR(priv->edev);
}
- priv->rsts = devm_reset_control_array_get_optional_shared(&pdev->dev);
+ priv->rsts = devm_reset_control_array_get_optional_shared(dev);
if (IS_ERR(priv->rsts))
return PTR_ERR(priv->rsts);
@@ -704,7 +705,7 @@ static int usbhs_probe(struct platform_device *pdev)
priv->dparam = info->driver_param;
if (!info->platform_callback.get_id) {
- dev_err(&pdev->dev, "no platform callbacks");
+ dev_err(dev, "no platform callbacks\n");
return -EINVAL;
}
priv->pfunc = info->platform_callback;
@@ -755,7 +756,7 @@ static int usbhs_probe(struct platform_device *pdev)
if (ret)
goto probe_fail_rst;
- ret = usbhsc_clk_get(&pdev->dev, priv);
+ ret = usbhsc_clk_get(dev, priv);
if (ret)
goto probe_fail_clks;
@@ -771,8 +772,7 @@ static int usbhs_probe(struct platform_device *pdev)
ret = !gpio_get_value(priv->dparam.enable_gpio);
gpio_free(priv->dparam.enable_gpio);
if (ret) {
- dev_warn(&pdev->dev,
- "USB function not selected (GPIO %d)\n",
+ dev_warn(dev, "USB function not selected (GPIO %d)\n",
priv->dparam.enable_gpio);
ret = -ENOTSUPP;
goto probe_end_mod_exit;
@@ -788,7 +788,7 @@ static int usbhs_probe(struct platform_device *pdev)
*/
ret = usbhs_platform_call(priv, hardware_init, pdev);
if (ret < 0) {
- dev_err(&pdev->dev, "platform init failed.\n");
+ dev_err(dev, "platform init failed.\n");
goto probe_end_mod_exit;
}
@@ -796,7 +796,7 @@ static int usbhs_probe(struct platform_device *pdev)
usbhs_platform_call(priv, phy_reset, pdev);
/* power control */
- pm_runtime_enable(&pdev->dev);
+ pm_runtime_enable(dev);
if (!usbhs_get_dparam(priv, runtime_pwctrl)) {
usbhsc_power_ctrl(priv, 1);
usbhs_mod_autonomy_mode(priv);
@@ -809,7 +809,7 @@ static int usbhs_probe(struct platform_device *pdev)
*/
usbhsc_schedule_notify_hotplug(pdev);
- dev_info(&pdev->dev, "probed\n");
+ dev_info(dev, "probed\n");
return ret;
@@ -824,7 +824,7 @@ static int usbhs_probe(struct platform_device *pdev)
probe_end_pipe_exit:
usbhs_pipe_remove(priv);
- dev_info(&pdev->dev, "probe failed (%d)\n", ret);
+ dev_info(dev, "probe failed (%d)\n", ret);
return ret;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 10/13] usb: renesas_usbhs: move device tree properties parsing
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (8 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 09/13] usb: renesas_usbhs: Add struct device * declaration in usbhs_probe() Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 11/13] usb: renesas_usbhs: Add a common function for the .get_id Yoshihiro Shimoda
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
In the future, each struct renesas_usbhs_driver_param is stored on
the each platform related source code (e.g. rcar3.c) to remove
usbhs_parse_dt(). So, this patch moves device tree properties
parsing to usbhs_probe().
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index 379b4a0e..dc5e80d 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -628,8 +628,6 @@ static struct renesas_usbhs_platform_info *usbhs_parse_dt(struct device *dev)
struct renesas_usbhs_platform_info *info;
struct renesas_usbhs_driver_param *dparam;
const struct usbhs_of_data *data;
- u32 tmp;
- int gpio;
info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
if (!info)
@@ -643,13 +641,6 @@ static struct renesas_usbhs_platform_info *usbhs_parse_dt(struct device *dev)
*dparam = data->param;
info->platform_callback = *data->platform_callback;
- if (!of_property_read_u32(dev_of_node(dev), "renesas,buswait", &tmp))
- dparam->buswait_bwait = tmp;
- gpio = of_get_named_gpio_flags(dev_of_node(dev), "renesas,enable-gpio",
- 0, NULL);
- if (gpio > 0)
- dparam->enable_gpio = gpio;
-
return info;
}
@@ -659,7 +650,8 @@ static int usbhs_probe(struct platform_device *pdev)
struct usbhs_priv *priv;
struct resource *res, *irq_res;
struct device *dev = &pdev->dev;
- int ret;
+ int ret, gpio;
+ u32 tmp;
/* check device node */
if (dev_of_node(dev))
@@ -720,6 +712,12 @@ static int usbhs_probe(struct platform_device *pdev)
}
if (!priv->dparam.pio_dma_border)
priv->dparam.pio_dma_border = 64; /* 64byte */
+ if (!of_property_read_u32(dev_of_node(dev), "renesas,buswait", &tmp))
+ priv->dparam.buswait_bwait = tmp;
+ gpio = of_get_named_gpio_flags(dev_of_node(dev), "renesas,enable-gpio",
+ 0, NULL);
+ if (gpio > 0)
+ priv->dparam.enable_gpio = gpio;
/* FIXME */
/* runtime power control ? */
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 11/13] usb: renesas_usbhs: Add a common function for the .get_id
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (9 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 10/13] usb: renesas_usbhs: move device tree properties parsing Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 12/13] usb: renesas_usbhs: Use renesas_usbhs_platform_info on of_device_id.data Yoshihiro Shimoda
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
All platform related codes (rcar[23].c and rza{2}.c) has its own
.get_id function as "USBHS_GADGET". So, we can use a common
function for it.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 5 +++++
drivers/usb/renesas_usbhs/common.h | 2 ++
drivers/usb/renesas_usbhs/rcar2.c | 8 ++------
drivers/usb/renesas_usbhs/rcar3.c | 11 +++--------
drivers/usb/renesas_usbhs/rza.c | 9 ++-------
drivers/usb/renesas_usbhs/rza2.c | 7 +------
6 files changed, 15 insertions(+), 27 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index dc5e80d..656f976 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -84,6 +84,11 @@ struct usbhs_priv *usbhs_pdev_to_priv(struct platform_device *pdev)
return dev_get_drvdata(&pdev->dev);
}
+int usbhs_get_id_as_gadget(struct platform_device *pdev)
+{
+ return USBHS_GADGET;
+}
+
/*
* syscfg functions
*/
diff --git a/drivers/usb/renesas_usbhs/common.h b/drivers/usb/renesas_usbhs/common.h
index b2b21fb..65e9abc 100644
--- a/drivers/usb/renesas_usbhs/common.h
+++ b/drivers/usb/renesas_usbhs/common.h
@@ -297,6 +297,8 @@ void usbhs_bset(struct usbhs_priv *priv, u32 reg, u16 mask, u16 data);
#define usbhs_lock(p, f) spin_lock_irqsave(usbhs_priv_to_lock(p), f)
#define usbhs_unlock(p, f) spin_unlock_irqrestore(usbhs_priv_to_lock(p), f)
+int usbhs_get_id_as_gadget(struct platform_device *pdev);
+
/*
* sysconfig
*/
diff --git a/drivers/usb/renesas_usbhs/rcar2.c b/drivers/usb/renesas_usbhs/rcar2.c
index 0027092..741bd81 100644
--- a/drivers/usb/renesas_usbhs/rcar2.c
+++ b/drivers/usb/renesas_usbhs/rcar2.c
@@ -3,6 +3,7 @@
* Renesas USB driver R-Car Gen. 2 initialization and power control
*
* Copyright (C) 2014 Ulrich Hecht
+ * Copyright (C) 2019 Renesas Electronics Corporation
*/
#include <linux/gpio.h>
@@ -62,14 +63,9 @@ static int usbhs_rcar2_power_ctrl(struct platform_device *pdev,
return retval;
}
-static int usbhs_rcar2_get_id(struct platform_device *pdev)
-{
- return USBHS_GADGET;
-}
-
const struct renesas_usbhs_platform_callback usbhs_rcar2_ops = {
.hardware_init = usbhs_rcar2_hardware_init,
.hardware_exit = usbhs_rcar2_hardware_exit,
.power_ctrl = usbhs_rcar2_power_ctrl,
- .get_id = usbhs_rcar2_get_id,
+ .get_id = usbhs_get_id_as_gadget,
};
diff --git a/drivers/usb/renesas_usbhs/rcar3.c b/drivers/usb/renesas_usbhs/rcar3.c
index 5e730e9..8dbbd14 100644
--- a/drivers/usb/renesas_usbhs/rcar3.c
+++ b/drivers/usb/renesas_usbhs/rcar3.c
@@ -2,7 +2,7 @@
/*
* Renesas USB driver R-Car Gen. 3 initialization and power control
*
- * Copyright (C) 2016 Renesas Electronics Corporation
+ * Copyright (C) 2016-2019 Renesas Electronics Corporation
*/
#include <linux/delay.h>
@@ -95,17 +95,12 @@ static int usbhs_rcar3_power_and_pll_ctrl(struct platform_device *pdev,
return 0;
}
-static int usbhs_rcar3_get_id(struct platform_device *pdev)
-{
- return USBHS_GADGET;
-}
-
const struct renesas_usbhs_platform_callback usbhs_rcar3_ops = {
.power_ctrl = usbhs_rcar3_power_ctrl,
- .get_id = usbhs_rcar3_get_id,
+ .get_id = usbhs_get_id_as_gadget,
};
const struct renesas_usbhs_platform_callback usbhs_rcar3_with_pll_ops = {
.power_ctrl = usbhs_rcar3_power_and_pll_ctrl,
- .get_id = usbhs_rcar3_get_id,
+ .get_id = usbhs_get_id_as_gadget,
};
diff --git a/drivers/usb/renesas_usbhs/rza.c b/drivers/usb/renesas_usbhs/rza.c
index 8c739bd..64ce584 100644
--- a/drivers/usb/renesas_usbhs/rza.c
+++ b/drivers/usb/renesas_usbhs/rza.c
@@ -3,7 +3,7 @@
* Renesas USB driver RZ/A initialization and power control
*
* Copyright (C) 2018 Chris Brandt
- * Copyright (C) 2018 Renesas Electronics Corporation
+ * Copyright (C) 2018-2019 Renesas Electronics Corporation
*/
#include <linux/delay.h>
@@ -41,12 +41,7 @@ static int usbhs_rza1_hardware_init(struct platform_device *pdev)
return 0;
}
-static int usbhs_rza_get_id(struct platform_device *pdev)
-{
- return USBHS_GADGET;
-}
-
const struct renesas_usbhs_platform_callback usbhs_rza1_ops = {
.hardware_init = usbhs_rza1_hardware_init,
- .get_id = usbhs_rza_get_id,
+ .get_id = usbhs_get_id_as_gadget,
};
diff --git a/drivers/usb/renesas_usbhs/rza2.c b/drivers/usb/renesas_usbhs/rza2.c
index 9d8551f..6e32768 100644
--- a/drivers/usb/renesas_usbhs/rza2.c
+++ b/drivers/usb/renesas_usbhs/rza2.c
@@ -59,14 +59,9 @@ static int usbhs_rza2_power_ctrl(struct platform_device *pdev,
return retval;
}
-static int usbhs_rza2_get_id(struct platform_device *pdev)
-{
- return USBHS_GADGET;
-}
-
const struct renesas_usbhs_platform_callback usbhs_rza2_ops = {
.hardware_init = usbhs_rza2_hardware_init,
.hardware_exit = usbhs_rza2_hardware_exit,
.power_ctrl = usbhs_rza2_power_ctrl,
- .get_id = usbhs_rza2_get_id,
+ .get_id = usbhs_get_id_as_gadget,
};
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 12/13] usb: renesas_usbhs: Use renesas_usbhs_platform_info on of_device_id.data
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (10 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 11/13] usb: renesas_usbhs: Add a common function for the .get_id Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-25 5:38 ` [PATCH 13/13] usb: renesas_usbhs: Use struct platform_callback pointer Yoshihiro Shimoda
2019-06-26 2:34 ` [PATCH 00/13] usb: renesas_usbhs: refactor this driver Greg KH
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
In device tree environment, the previous code allocates
renesas_usbhs_platform_info by using devm_kzalloc() and then copies
usbhs_of_data to the allocated memory. This reason is some values
(e.g. .platform_callback.get_vbus) are overwritten by the driver,
but the of_device_id.data is "const". Now the driver doesn't have
such a code, so this patch uses renesas_usbhs_platform_info on
of_device_id.data.
Note that the previous code set the pdev->dev.platform_data pointer
even if device tree environment, but the value is not used. So,
this patch also remove such a code.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 93 +++++++-------------------------------
drivers/usb/renesas_usbhs/common.h | 5 --
drivers/usb/renesas_usbhs/rcar2.c | 16 +++++--
drivers/usb/renesas_usbhs/rcar2.h | 3 +-
drivers/usb/renesas_usbhs/rcar3.c | 26 ++++++++---
drivers/usb/renesas_usbhs/rcar3.h | 5 +-
drivers/usb/renesas_usbhs/rza.c | 11 +++--
drivers/usb/renesas_usbhs/rza.h | 4 +-
drivers/usb/renesas_usbhs/rza2.c | 17 +++++--
9 files changed, 73 insertions(+), 107 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index 656f976..fe7dc91 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -530,128 +530,65 @@ int usbhsc_schedule_notify_hotplug(struct platform_device *pdev)
return 0;
}
-static const struct usbhs_of_data rcar_gen2_data = {
- .platform_callback = &usbhs_rcar2_ops,
- .param = {
- .has_usb_dmac = 1,
- .has_new_pipe_configs = 1,
- }
-};
-
-static const struct usbhs_of_data rcar_gen3_data = {
- .platform_callback = &usbhs_rcar3_ops,
- .param = {
- .has_usb_dmac = 1,
- .multi_clks = 1,
- .has_new_pipe_configs = 1,
- }
-};
-
-static const struct usbhs_of_data rcar_gen3_with_pll_data = {
- .platform_callback = &usbhs_rcar3_with_pll_ops,
- .param = {
- .has_usb_dmac = 1,
- .multi_clks = 1,
- .has_new_pipe_configs = 1,
- }
-};
-
-static const struct usbhs_of_data rza1_data = {
- .platform_callback = &usbhs_rza1_ops,
- .param = {
- .has_new_pipe_configs = 1,
- }
-};
-
-static const struct usbhs_of_data rza2_data = {
- .platform_callback = &usbhs_rza2_ops,
- .param = {
- .has_cnen = 1,
- .cfifo_byte_addr = 1,
- .has_new_pipe_configs = 1,
- }
-};
-
/*
* platform functions
*/
static const struct of_device_id usbhs_of_match[] = {
{
.compatible = "renesas,usbhs-r8a774c0",
- .data = &rcar_gen3_with_pll_data,
+ .data = &usbhs_rcar_gen3_with_pll_plat_info,
},
{
.compatible = "renesas,usbhs-r8a7790",
- .data = &rcar_gen2_data,
+ .data = &usbhs_rcar_gen2_plat_info,
},
{
.compatible = "renesas,usbhs-r8a7791",
- .data = &rcar_gen2_data,
+ .data = &usbhs_rcar_gen2_plat_info,
},
{
.compatible = "renesas,usbhs-r8a7794",
- .data = &rcar_gen2_data,
+ .data = &usbhs_rcar_gen2_plat_info,
},
{
.compatible = "renesas,usbhs-r8a7795",
- .data = &rcar_gen3_data,
+ .data = &usbhs_rcar_gen3_plat_info,
},
{
.compatible = "renesas,usbhs-r8a7796",
- .data = &rcar_gen3_data,
+ .data = &usbhs_rcar_gen3_plat_info,
},
{
.compatible = "renesas,usbhs-r8a77990",
- .data = &rcar_gen3_with_pll_data,
+ .data = &usbhs_rcar_gen3_with_pll_plat_info,
},
{
.compatible = "renesas,usbhs-r8a77995",
- .data = &rcar_gen3_with_pll_data,
+ .data = &usbhs_rcar_gen3_with_pll_plat_info,
},
{
.compatible = "renesas,rcar-gen2-usbhs",
- .data = &rcar_gen2_data,
+ .data = &usbhs_rcar_gen2_plat_info,
},
{
.compatible = "renesas,rcar-gen3-usbhs",
- .data = &rcar_gen3_data,
+ .data = &usbhs_rcar_gen3_plat_info,
},
{
.compatible = "renesas,rza1-usbhs",
- .data = &rza1_data,
+ .data = &usbhs_rza1_plat_info,
},
{
.compatible = "renesas,rza2-usbhs",
- .data = &rza2_data,
+ .data = &usbhs_rza2_plat_info,
},
{ },
};
MODULE_DEVICE_TABLE(of, usbhs_of_match);
-static struct renesas_usbhs_platform_info *usbhs_parse_dt(struct device *dev)
-{
- struct renesas_usbhs_platform_info *info;
- struct renesas_usbhs_driver_param *dparam;
- const struct usbhs_of_data *data;
-
- info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
- if (!info)
- return NULL;
-
- data = of_device_get_match_data(dev);
- if (!data)
- return NULL;
-
- dparam = &info->driver_param;
- *dparam = data->param;
- info->platform_callback = *data->platform_callback;
-
- return info;
-}
-
static int usbhs_probe(struct platform_device *pdev)
{
- struct renesas_usbhs_platform_info *info = renesas_usbhs_get_info(pdev);
+ const struct renesas_usbhs_platform_info *info;
struct usbhs_priv *priv;
struct resource *res, *irq_res;
struct device *dev = &pdev->dev;
@@ -660,7 +597,9 @@ static int usbhs_probe(struct platform_device *pdev)
/* check device node */
if (dev_of_node(dev))
- info = pdev->dev.platform_data = usbhs_parse_dt(&pdev->dev);
+ info = of_device_get_match_data(dev);
+ else
+ info = renesas_usbhs_get_info(pdev);
/* check platform information */
if (!info) {
diff --git a/drivers/usb/renesas_usbhs/common.h b/drivers/usb/renesas_usbhs/common.h
index 65e9abc..f6ffdb2 100644
--- a/drivers/usb/renesas_usbhs/common.h
+++ b/drivers/usb/renesas_usbhs/common.h
@@ -282,11 +282,6 @@ struct usbhs_priv {
struct clk *clks[2];
};
-struct usbhs_of_data {
- const struct renesas_usbhs_platform_callback *platform_callback;
- const struct renesas_usbhs_driver_param param;
-};
-
/*
* common
*/
diff --git a/drivers/usb/renesas_usbhs/rcar2.c b/drivers/usb/renesas_usbhs/rcar2.c
index 741bd81..440d213 100644
--- a/drivers/usb/renesas_usbhs/rcar2.c
+++ b/drivers/usb/renesas_usbhs/rcar2.c
@@ -63,9 +63,15 @@ static int usbhs_rcar2_power_ctrl(struct platform_device *pdev,
return retval;
}
-const struct renesas_usbhs_platform_callback usbhs_rcar2_ops = {
- .hardware_init = usbhs_rcar2_hardware_init,
- .hardware_exit = usbhs_rcar2_hardware_exit,
- .power_ctrl = usbhs_rcar2_power_ctrl,
- .get_id = usbhs_get_id_as_gadget,
+const struct renesas_usbhs_platform_info usbhs_rcar_gen2_plat_info = {
+ .platform_callback = {
+ .hardware_init = usbhs_rcar2_hardware_init,
+ .hardware_exit = usbhs_rcar2_hardware_exit,
+ .power_ctrl = usbhs_rcar2_power_ctrl,
+ .get_id = usbhs_get_id_as_gadget,
+ },
+ .driver_param = {
+ .has_usb_dmac = 1,
+ .has_new_pipe_configs = 1,
+ },
};
diff --git a/drivers/usb/renesas_usbhs/rcar2.h b/drivers/usb/renesas_usbhs/rcar2.h
index 45e3526..7d88732 100644
--- a/drivers/usb/renesas_usbhs/rcar2.h
+++ b/drivers/usb/renesas_usbhs/rcar2.h
@@ -1,5 +1,4 @@
// SPDX-License-Identifier: GPL-2.0
#include "common.h"
-extern const struct renesas_usbhs_platform_callback
- usbhs_rcar2_ops;
+extern const struct renesas_usbhs_platform_info usbhs_rcar_gen2_plat_info;
diff --git a/drivers/usb/renesas_usbhs/rcar3.c b/drivers/usb/renesas_usbhs/rcar3.c
index 8dbbd14..c181b2a 100644
--- a/drivers/usb/renesas_usbhs/rcar3.c
+++ b/drivers/usb/renesas_usbhs/rcar3.c
@@ -95,12 +95,26 @@ static int usbhs_rcar3_power_and_pll_ctrl(struct platform_device *pdev,
return 0;
}
-const struct renesas_usbhs_platform_callback usbhs_rcar3_ops = {
- .power_ctrl = usbhs_rcar3_power_ctrl,
- .get_id = usbhs_get_id_as_gadget,
+const struct renesas_usbhs_platform_info usbhs_rcar_gen3_plat_info = {
+ .platform_callback = {
+ .power_ctrl = usbhs_rcar3_power_ctrl,
+ .get_id = usbhs_get_id_as_gadget,
+ },
+ .driver_param = {
+ .has_usb_dmac = 1,
+ .multi_clks = 1,
+ .has_new_pipe_configs = 1,
+ },
};
-const struct renesas_usbhs_platform_callback usbhs_rcar3_with_pll_ops = {
- .power_ctrl = usbhs_rcar3_power_and_pll_ctrl,
- .get_id = usbhs_get_id_as_gadget,
+const struct renesas_usbhs_platform_info usbhs_rcar_gen3_with_pll_plat_info = {
+ .platform_callback = {
+ .power_ctrl = usbhs_rcar3_power_and_pll_ctrl,
+ .get_id = usbhs_get_id_as_gadget,
+ },
+ .driver_param = {
+ .has_usb_dmac = 1,
+ .multi_clks = 1,
+ .has_new_pipe_configs = 1,
+ },
};
diff --git a/drivers/usb/renesas_usbhs/rcar3.h b/drivers/usb/renesas_usbhs/rcar3.h
index 49e535a..c7c5ec1 100644
--- a/drivers/usb/renesas_usbhs/rcar3.h
+++ b/drivers/usb/renesas_usbhs/rcar3.h
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include "common.h"
-extern const struct renesas_usbhs_platform_callback usbhs_rcar3_ops;
-extern const struct renesas_usbhs_platform_callback usbhs_rcar3_with_pll_ops;
+extern const struct renesas_usbhs_platform_info usbhs_rcar_gen3_plat_info;
+extern const struct renesas_usbhs_platform_info
+ usbhs_rcar_gen3_with_pll_plat_info;
diff --git a/drivers/usb/renesas_usbhs/rza.c b/drivers/usb/renesas_usbhs/rza.c
index 64ce584..24de64edb 100644
--- a/drivers/usb/renesas_usbhs/rza.c
+++ b/drivers/usb/renesas_usbhs/rza.c
@@ -41,7 +41,12 @@ static int usbhs_rza1_hardware_init(struct platform_device *pdev)
return 0;
}
-const struct renesas_usbhs_platform_callback usbhs_rza1_ops = {
- .hardware_init = usbhs_rza1_hardware_init,
- .get_id = usbhs_get_id_as_gadget,
+const struct renesas_usbhs_platform_info usbhs_rza1_plat_info = {
+ .platform_callback = {
+ .hardware_init = usbhs_rza1_hardware_init,
+ .get_id = usbhs_get_id_as_gadget,
+ },
+ .driver_param = {
+ .has_new_pipe_configs = 1,
+ },
};
diff --git a/drivers/usb/renesas_usbhs/rza.h b/drivers/usb/renesas_usbhs/rza.h
index 073a53d..1ca42a6 100644
--- a/drivers/usb/renesas_usbhs/rza.h
+++ b/drivers/usb/renesas_usbhs/rza.h
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0
#include "common.h"
-extern const struct renesas_usbhs_platform_callback usbhs_rza1_ops;
-extern const struct renesas_usbhs_platform_callback usbhs_rza2_ops;
+extern const struct renesas_usbhs_platform_info usbhs_rza1_plat_info;
+extern const struct renesas_usbhs_platform_info usbhs_rza2_plat_info;
diff --git a/drivers/usb/renesas_usbhs/rza2.c b/drivers/usb/renesas_usbhs/rza2.c
index 6e32768..0217495 100644
--- a/drivers/usb/renesas_usbhs/rza2.c
+++ b/drivers/usb/renesas_usbhs/rza2.c
@@ -59,9 +59,16 @@ static int usbhs_rza2_power_ctrl(struct platform_device *pdev,
return retval;
}
-const struct renesas_usbhs_platform_callback usbhs_rza2_ops = {
- .hardware_init = usbhs_rza2_hardware_init,
- .hardware_exit = usbhs_rza2_hardware_exit,
- .power_ctrl = usbhs_rza2_power_ctrl,
- .get_id = usbhs_get_id_as_gadget,
+const struct renesas_usbhs_platform_info usbhs_rza2_plat_info = {
+ .platform_callback = {
+ .hardware_init = usbhs_rza2_hardware_init,
+ .hardware_exit = usbhs_rza2_hardware_exit,
+ .power_ctrl = usbhs_rza2_power_ctrl,
+ .get_id = usbhs_get_id_as_gadget,
+ },
+ .driver_param = {
+ .has_cnen = 1,
+ .cfifo_byte_addr = 1,
+ .has_new_pipe_configs = 1,
+ },
};
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 13/13] usb: renesas_usbhs: Use struct platform_callback pointer
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (11 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 12/13] usb: renesas_usbhs: Use renesas_usbhs_platform_info on of_device_id.data Yoshihiro Shimoda
@ 2019-06-25 5:38 ` Yoshihiro Shimoda
2019-06-26 2:34 ` [PATCH 00/13] usb: renesas_usbhs: refactor this driver Greg KH
13 siblings, 0 replies; 15+ messages in thread
From: Yoshihiro Shimoda @ 2019-06-25 5:38 UTC (permalink / raw)
To: gregkh; +Cc: linux-usb, linux-renesas-soc, Yoshihiro Shimoda
Now the driver fixes the issue of the commit 482982062f1b ("usb:
gadget: renesas_usbhs: bugfix: don't modify platform data") by
using usbhs_mod_info.get_vbus, this patches uses the pointer
instead of copied value to avoid redundancy. Note that struct
renesas_usbhs_driver_param has to use copied value because
the driver has to set some members (e.g. buswait_bwait).
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/renesas_usbhs/common.c | 8 ++++----
drivers/usb/renesas_usbhs/common.h | 2 +-
drivers/usb/renesas_usbhs/mod.c | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index fe7dc91..4c3de77 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -53,8 +53,8 @@
*/
#define usbhs_platform_call(priv, func, args...)\
(!(priv) ? -ENODEV : \
- !((priv)->pfunc.func) ? 0 : \
- (priv)->pfunc.func(args))
+ !((priv)->pfunc->func) ? 0 : \
+ (priv)->pfunc->func(args))
/*
* common functions
@@ -644,7 +644,7 @@ static int usbhs_probe(struct platform_device *pdev)
dev_err(dev, "no platform callbacks\n");
return -EINVAL;
}
- priv->pfunc = info->platform_callback;
+ priv->pfunc = &info->platform_callback;
/* set default param if platform doesn't have */
if (usbhs_get_dparam(priv, has_new_pipe_configs)) {
@@ -665,7 +665,7 @@ static int usbhs_probe(struct platform_device *pdev)
/* FIXME */
/* runtime power control ? */
- if (priv->pfunc.get_vbus)
+ if (priv->pfunc->get_vbus)
usbhs_get_dparam(priv, runtime_pwctrl) = 1;
/*
diff --git a/drivers/usb/renesas_usbhs/common.h b/drivers/usb/renesas_usbhs/common.h
index f6ffdb2..d1a0a35 100644
--- a/drivers/usb/renesas_usbhs/common.h
+++ b/drivers/usb/renesas_usbhs/common.h
@@ -252,7 +252,7 @@ struct usbhs_priv {
unsigned int irq;
unsigned long irqflags;
- struct renesas_usbhs_platform_callback pfunc;
+ const struct renesas_usbhs_platform_callback *pfunc;
struct renesas_usbhs_driver_param dparam;
struct delayed_work notify_hotplug_work;
diff --git a/drivers/usb/renesas_usbhs/mod.c b/drivers/usb/renesas_usbhs/mod.c
index ddf0153..10fc655 100644
--- a/drivers/usb/renesas_usbhs/mod.c
+++ b/drivers/usb/renesas_usbhs/mod.c
@@ -52,7 +52,7 @@ void usbhs_mod_non_autonomy_mode(struct usbhs_priv *priv)
{
struct usbhs_mod_info *info = usbhs_priv_to_modinfo(priv);
- info->get_vbus = priv->pfunc.get_vbus;
+ info->get_vbus = priv->pfunc->get_vbus;
}
/*
--
2.7.4
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 00/13] usb: renesas_usbhs: refactor this driver
2019-06-25 5:38 [PATCH 00/13] usb: renesas_usbhs: refactor this driver Yoshihiro Shimoda
` (12 preceding siblings ...)
2019-06-25 5:38 ` [PATCH 13/13] usb: renesas_usbhs: Use struct platform_callback pointer Yoshihiro Shimoda
@ 2019-06-26 2:34 ` Greg KH
13 siblings, 0 replies; 15+ messages in thread
From: Greg KH @ 2019-06-26 2:34 UTC (permalink / raw)
To: Yoshihiro Shimoda; +Cc: linux-usb, linux-renesas-soc
On Tue, Jun 25, 2019 at 02:38:44PM +0900, Yoshihiro Shimoda wrote:
> This patch series is based on Greg's usb.git / usb-next branch.
>
> The previous code had redundant memory allocations so that
> the code readability was not good. I believe this patch series
> makes it better.
Nice cleanups, thanks for this!
greg k-h
^ permalink raw reply [flat|nested] 15+ messages in thread