linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 0/6] remove the clock name from pdata
@ 2013-03-25  7:06 Chao Xie
  2013-03-25  7:06 ` [PATCH V2 1/6] usb: gadget: mv_udc_core: remove unused clock Chao Xie
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Chao Xie @ 2013-03-25  7:06 UTC (permalink / raw)
  To: linux-arm-kernel

The clock is defined by device, so the driver knows how many
clocks needed by the device.
The orignal way that passing the clock name by pdata is not correct.
The following patches fix it.

V2->V1:
   typo fix
   rebased on latest usb-next

Chao Xie (6):
  usb: gadget: mv_udc_core: remove unused clock
  usb: otg: mv_otg: remove unused clock
  usb: ehci: mv_ehci: remove unused clock
  arm: mmp: remove clock from usb pdata for aspenite
  arm: mmp: remove clock name from usb pdata for ttc
  usb: mv_usb: remove clock name from pdata

 arch/arm/mach-mmp/aspenite.c         |    6 -----
 arch/arm/mach-mmp/ttc_dkb.c          |    6 -----
 drivers/usb/gadget/mv_udc.h          |    3 +-
 drivers/usb/gadget/mv_udc_core.c     |   27 ++++++-------------------
 drivers/usb/host/ehci-mv.c           |   35 +++++++++------------------------
 drivers/usb/phy/phy-mv-usb.c         |   28 ++++++--------------------
 drivers/usb/phy/phy-mv-usb.h         |    3 +-
 include/linux/platform_data/mv_usb.h |    2 -
 8 files changed, 26 insertions(+), 84 deletions(-)

-- 
1.7.4.1

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

* [PATCH V2 1/6] usb: gadget: mv_udc_core: remove unused clock
  2013-03-25  7:06 [PATCH V2 0/6] remove the clock name from pdata Chao Xie
@ 2013-03-25  7:06 ` Chao Xie
  2013-03-25  7:06 ` [PATCH V2 2/6] usb: otg: mv_otg: " Chao Xie
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Chao Xie @ 2013-03-25  7:06 UTC (permalink / raw)
  To: linux-arm-kernel

The origianl understanding of clock is wrong. The UDC controller
only have one clock input.
Passing clock name by pdata is wrong. The clock is defined by device
iteself.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
---
 drivers/usb/gadget/mv_udc.h      |    3 +--
 drivers/usb/gadget/mv_udc_core.c |   27 +++++++--------------------
 2 files changed, 8 insertions(+), 22 deletions(-)

diff --git a/drivers/usb/gadget/mv_udc.h b/drivers/usb/gadget/mv_udc.h
index 9073436..be77f20 100644
--- a/drivers/usb/gadget/mv_udc.h
+++ b/drivers/usb/gadget/mv_udc.h
@@ -222,8 +222,7 @@ struct mv_udc {
 	struct mv_usb_platform_data     *pdata;
 
 	/* some SOC has mutiple clock sources for USB*/
-	unsigned int    clknum;
-	struct clk      *clk[0];
+	struct clk      *clk;
 };
 
 /* endpoint data structure */
diff --git a/drivers/usb/gadget/mv_udc_core.c b/drivers/usb/gadget/mv_udc_core.c
index 9a68c05..593147b 100644
--- a/drivers/usb/gadget/mv_udc_core.c
+++ b/drivers/usb/gadget/mv_udc_core.c
@@ -972,18 +972,12 @@ static struct usb_ep_ops mv_ep_ops = {
 
 static void udc_clock_enable(struct mv_udc *udc)
 {
-	unsigned int i;
-
-	for (i = 0; i < udc->clknum; i++)
-		clk_prepare_enable(udc->clk[i]);
+	clk_prepare_enable(udc->clk);
 }
 
 static void udc_clock_disable(struct mv_udc *udc)
 {
-	unsigned int i;
-
-	for (i = 0; i < udc->clknum; i++)
-		clk_disable_unprepare(udc->clk[i]);
+	clk_disable_unprepare(udc->clk);
 }
 
 static void udc_stop(struct mv_udc *udc)
@@ -2105,7 +2099,6 @@ static int mv_udc_probe(struct platform_device *pdev)
 	struct mv_usb_platform_data *pdata = pdev->dev.platform_data;
 	struct mv_udc *udc;
 	int retval = 0;
-	int clk_i = 0;
 	struct resource *r;
 	size_t size;
 
@@ -2114,8 +2107,7 @@ static int mv_udc_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	size = sizeof(*udc) + sizeof(struct clk *) * pdata->clknum;
-	udc = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
+	udc = devm_kzalloc(&pdev->dev, sizeof(*udc), GFP_KERNEL);
 	if (udc == NULL) {
 		dev_err(&pdev->dev, "failed to allocate memory for udc\n");
 		return -ENOMEM;
@@ -2141,15 +2133,10 @@ static int mv_udc_probe(struct platform_device *pdev)
 		}
 	}
 
-	udc->clknum = pdata->clknum;
-	for (clk_i = 0; clk_i < udc->clknum; clk_i++) {
-		udc->clk[clk_i] = devm_clk_get(&pdev->dev,
-					pdata->clkname[clk_i]);
-		if (IS_ERR(udc->clk[clk_i])) {
-			retval = PTR_ERR(udc->clk[clk_i]);
-			return retval;
-		}
-	}
+	/* udc only have one sysclk. */
+	udc->clk = devm_clk_get(&pdev->dev, NULL);
+	if (IS_ERR(udc->clk))
+		return PTR_ERR(udc->clk);
 
 	r = platform_get_resource_byname(udc->dev, IORESOURCE_MEM, "capregs");
 	if (r == NULL) {
-- 
1.7.4.1

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

* [PATCH V2 2/6] usb: otg: mv_otg: remove unused clock
  2013-03-25  7:06 [PATCH V2 0/6] remove the clock name from pdata Chao Xie
  2013-03-25  7:06 ` [PATCH V2 1/6] usb: gadget: mv_udc_core: remove unused clock Chao Xie
@ 2013-03-25  7:06 ` Chao Xie
  2013-03-25  7:06 ` [PATCH V2 3/6] usb: ehci: mv_ehci: " Chao Xie
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Chao Xie @ 2013-03-25  7:06 UTC (permalink / raw)
  To: linux-arm-kernel

The origianl understanding of clock is wrong. The OTG controller
only have one clock input.
Passing clock name by pdata is wrong. The clock is defined by device
iteself.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
---
 drivers/usb/phy/phy-mv-usb.c |   28 +++++++---------------------
 drivers/usb/phy/phy-mv-usb.h |    3 +--
 2 files changed, 8 insertions(+), 23 deletions(-)

diff --git a/drivers/usb/phy/phy-mv-usb.c b/drivers/usb/phy/phy-mv-usb.c
index 6872bf0..c987bbe 100644
--- a/drivers/usb/phy/phy-mv-usb.c
+++ b/drivers/usb/phy/phy-mv-usb.c
@@ -237,18 +237,12 @@ static void mv_otg_start_periphrals(struct mv_otg *mvotg, int on)
 
 static void otg_clock_enable(struct mv_otg *mvotg)
 {
-	unsigned int i;
-
-	for (i = 0; i < mvotg->clknum; i++)
-		clk_prepare_enable(mvotg->clk[i]);
+	clk_prepare_enable(mvotg->clk);
 }
 
 static void otg_clock_disable(struct mv_otg *mvotg)
 {
-	unsigned int i;
-
-	for (i = 0; i < mvotg->clknum; i++)
-		clk_disable_unprepare(mvotg->clk[i]);
+	clk_disable_unprepare(mvotg->clk);
 }
 
 static int mv_otg_enable_internal(struct mv_otg *mvotg)
@@ -684,16 +678,14 @@ static int mv_otg_probe(struct platform_device *pdev)
 	struct mv_otg *mvotg;
 	struct usb_otg *otg;
 	struct resource *r;
-	int retval = 0, clk_i, i;
-	size_t size;
+	int retval = 0, i;
 
 	if (pdata == NULL) {
 		dev_err(&pdev->dev, "failed to get platform data\n");
 		return -ENODEV;
 	}
 
-	size = sizeof(*mvotg) + sizeof(struct clk *) * pdata->clknum;
-	mvotg = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
+	mvotg = devm_kzalloc(&pdev->dev, sizeof(*mvotg), GFP_KERNEL);
 	if (!mvotg) {
 		dev_err(&pdev->dev, "failed to allocate memory!\n");
 		return -ENOMEM;
@@ -708,15 +700,9 @@ static int mv_otg_probe(struct platform_device *pdev)
 	mvotg->pdev = pdev;
 	mvotg->pdata = pdata;
 
-	mvotg->clknum = pdata->clknum;
-	for (clk_i = 0; clk_i < mvotg->clknum; clk_i++) {
-		mvotg->clk[clk_i] = devm_clk_get(&pdev->dev,
-						pdata->clkname[clk_i]);
-		if (IS_ERR(mvotg->clk[clk_i])) {
-			retval = PTR_ERR(mvotg->clk[clk_i]);
-			return retval;
-		}
-	}
+	mvotg->clk = devm_clk_get(&pdev->dev, NULL);
+	if (IS_ERR(mvotg->clk))
+		return PTR_ERR(mvotg->clk);
 
 	mvotg->qwork = create_singlethread_workqueue("mv_otg_queue");
 	if (!mvotg->qwork) {
diff --git a/drivers/usb/phy/phy-mv-usb.h b/drivers/usb/phy/phy-mv-usb.h
index 8a9e351..551da6e 100644
--- a/drivers/usb/phy/phy-mv-usb.h
+++ b/drivers/usb/phy/phy-mv-usb.h
@@ -158,8 +158,7 @@ struct mv_otg {
 
 	unsigned int active;
 	unsigned int clock_gating;
-	unsigned int clknum;
-	struct clk *clk[0];
+	struct clk *clk;
 };
 
 #endif
-- 
1.7.4.1

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

* [PATCH V2 3/6] usb: ehci: mv_ehci: remove unused clock
  2013-03-25  7:06 [PATCH V2 0/6] remove the clock name from pdata Chao Xie
  2013-03-25  7:06 ` [PATCH V2 1/6] usb: gadget: mv_udc_core: remove unused clock Chao Xie
  2013-03-25  7:06 ` [PATCH V2 2/6] usb: otg: mv_otg: " Chao Xie
@ 2013-03-25  7:06 ` Chao Xie
  2013-03-28  0:52   ` Chao Xie
  2013-03-25  7:06 ` [PATCH V2 4/6] arm: mmp: remove clock from usb pdata for aspenite Chao Xie
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Chao Xie @ 2013-03-25  7:06 UTC (permalink / raw)
  To: linux-arm-kernel

The origianl understanding of clock is wrong. The EHCI controller
only have one clock input.
Passing clock name by pdata is wrong. The clock is defined by device
iteself.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
---
 drivers/usb/host/ehci-mv.c |   35 ++++++++++-------------------------
 1 files changed, 10 insertions(+), 25 deletions(-)

diff --git a/drivers/usb/host/ehci-mv.c b/drivers/usb/host/ehci-mv.c
index 3804820..6bad41a 100644
--- a/drivers/usb/host/ehci-mv.c
+++ b/drivers/usb/host/ehci-mv.c
@@ -33,25 +33,17 @@ struct ehci_hcd_mv {
 
 	struct mv_usb_platform_data *pdata;
 
-	/* clock source and total clock number */
-	unsigned int clknum;
-	struct clk *clk[0];
+	struct clk *clk;
 };
 
 static void ehci_clock_enable(struct ehci_hcd_mv *ehci_mv)
 {
-	unsigned int i;
-
-	for (i = 0; i < ehci_mv->clknum; i++)
-		clk_prepare_enable(ehci_mv->clk[i]);
+	clk_prepare_enable(ehci_mv->clk);
 }
 
 static void ehci_clock_disable(struct ehci_hcd_mv *ehci_mv)
 {
-	unsigned int i;
-
-	for (i = 0; i < ehci_mv->clknum; i++)
-		clk_disable_unprepare(ehci_mv->clk[i]);
+	clk_disable_unprepare(ehci_mv->clk);
 }
 
 static int mv_ehci_enable(struct ehci_hcd_mv *ehci_mv)
@@ -144,9 +136,8 @@ static int mv_ehci_probe(struct platform_device *pdev)
 	struct ehci_hcd *ehci;
 	struct ehci_hcd_mv *ehci_mv;
 	struct resource *r;
-	int clk_i, retval = -ENODEV;
+	int retval = -ENODEV;
 	u32 offset;
-	size_t size;
 
 	if (!pdata) {
 		dev_err(&pdev->dev, "missing platform_data\n");
@@ -160,8 +151,7 @@ static int mv_ehci_probe(struct platform_device *pdev)
 	if (!hcd)
 		return -ENOMEM;
 
-	size = sizeof(*ehci_mv) + sizeof(struct clk *) * pdata->clknum;
-	ehci_mv = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
+	ehci_mv = devm_kzalloc(&pdev->dev, sizeof(*ehci_mv), GFP_KERNEL);
 	if (ehci_mv == NULL) {
 		dev_err(&pdev->dev, "cannot allocate ehci_hcd_mv\n");
 		retval = -ENOMEM;
@@ -172,16 +162,11 @@ static int mv_ehci_probe(struct platform_device *pdev)
 	ehci_mv->pdata = pdata;
 	ehci_mv->hcd = hcd;
 
-	ehci_mv->clknum = pdata->clknum;
-	for (clk_i = 0; clk_i < ehci_mv->clknum; clk_i++) {
-		ehci_mv->clk[clk_i] =
-		    devm_clk_get(&pdev->dev, pdata->clkname[clk_i]);
-		if (IS_ERR(ehci_mv->clk[clk_i])) {
-			dev_err(&pdev->dev, "error get clck \"%s\"\n",
-				pdata->clkname[clk_i]);
-			retval = PTR_ERR(ehci_mv->clk[clk_i]);
-			goto err_clear_drvdata;
-		}
+	ehci_mv->clk = devm_clk_get(&pdev->dev, NULL);
+	if (IS_ERR(ehci_mv->clk)) {
+		dev_err(&pdev->dev, "error getting clock\n");
+		retval = PTR_ERR(ehci_mv->clk);
+		goto err_clear_drvdata;
 	}
 
 	r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phyregs");
-- 
1.7.4.1

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

* [PATCH V2 4/6] arm: mmp: remove clock from usb pdata for aspenite
  2013-03-25  7:06 [PATCH V2 0/6] remove the clock name from pdata Chao Xie
                   ` (2 preceding siblings ...)
  2013-03-25  7:06 ` [PATCH V2 3/6] usb: ehci: mv_ehci: " Chao Xie
@ 2013-03-25  7:06 ` Chao Xie
  2013-03-28  0:59   ` Chao Xie
  2013-03-25  7:06 ` [PATCH V2 5/6] arm: mmp: remove clock name from usb pdata for ttc Chao Xie
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Chao Xie @ 2013-03-25  7:06 UTC (permalink / raw)
  To: linux-arm-kernel

The clock name will directly get by driver. Removing
the name from pdata.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
---
 arch/arm/mach-mmp/aspenite.c |    6 ------
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
index 9f64d56..76901f4 100644
--- a/arch/arm/mach-mmp/aspenite.c
+++ b/arch/arm/mach-mmp/aspenite.c
@@ -223,13 +223,7 @@ static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = {
 };
 
 #if defined(CONFIG_USB_EHCI_MV)
-static char *pxa168_sph_clock_name[] = {
-	[0] = "PXA168-USBCLK",
-};
-
 static struct mv_usb_platform_data pxa168_sph_pdata = {
-	.clknum         = 1,
-	.clkname        = pxa168_sph_clock_name,
 	.mode           = MV_USB_MODE_HOST,
 	.phy_init	= pxa_usb_phy_init,
 	.phy_deinit	= pxa_usb_phy_deinit,
-- 
1.7.4.1

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

* [PATCH V2 5/6] arm: mmp: remove clock name from usb pdata for ttc
  2013-03-25  7:06 [PATCH V2 0/6] remove the clock name from pdata Chao Xie
                   ` (3 preceding siblings ...)
  2013-03-25  7:06 ` [PATCH V2 4/6] arm: mmp: remove clock from usb pdata for aspenite Chao Xie
@ 2013-03-25  7:06 ` Chao Xie
  2013-03-28  1:42   ` Haojian Zhuang
  2013-03-25  7:06 ` [PATCH V2 6/6] usb: mv_usb: remove clock name from pdata Chao Xie
  2013-03-27 13:14 ` [PATCH V2 0/6] remove the " Felipe Balbi
  6 siblings, 1 reply; 16+ messages in thread
From: Chao Xie @ 2013-03-25  7:06 UTC (permalink / raw)
  To: linux-arm-kernel

The clock name will directly get by driver. Removing
the name from pdata.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
---
 arch/arm/mach-mmp/ttc_dkb.c |    6 ------
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c
index 22a9058..6528a5f 100644
--- a/arch/arm/mach-mmp/ttc_dkb.c
+++ b/arch/arm/mach-mmp/ttc_dkb.c
@@ -162,13 +162,7 @@ static struct i2c_board_info ttc_dkb_i2c_info[] = {
 #ifdef CONFIG_USB_SUPPORT
 #if defined(CONFIG_USB_MV_UDC) || defined(CONFIG_USB_EHCI_MV_U2O)
 
-static char *pxa910_usb_clock_name[] = {
-	[0] = "U2OCLK",
-};
-
 static struct mv_usb_platform_data ttc_usb_pdata = {
-	.clknum		= 1,
-	.clkname	= pxa910_usb_clock_name,
 	.vbus		= NULL,
 	.mode		= MV_USB_MODE_OTG,
 	.otg_force_a_bus_req = 1,
-- 
1.7.4.1

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

* [PATCH V2 6/6] usb: mv_usb: remove clock name from pdata
  2013-03-25  7:06 [PATCH V2 0/6] remove the clock name from pdata Chao Xie
                   ` (4 preceding siblings ...)
  2013-03-25  7:06 ` [PATCH V2 5/6] arm: mmp: remove clock name from usb pdata for ttc Chao Xie
@ 2013-03-25  7:06 ` Chao Xie
  2013-04-02  8:14   ` Felipe Balbi
  2013-03-27 13:14 ` [PATCH V2 0/6] remove the " Felipe Balbi
  6 siblings, 1 reply; 16+ messages in thread
From: Chao Xie @ 2013-03-25  7:06 UTC (permalink / raw)
  To: linux-arm-kernel

Using pdata to pass clock name is not correct.
Directly get clock from usb drivers.

Signed-off-by: Chao Xie <chao.xie@marvell.com>
---
 include/linux/platform_data/mv_usb.h |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/include/linux/platform_data/mv_usb.h b/include/linux/platform_data/mv_usb.h
index 944b01d..98b7925 100644
--- a/include/linux/platform_data/mv_usb.h
+++ b/include/linux/platform_data/mv_usb.h
@@ -34,8 +34,6 @@ struct mv_usb_addon_irq {
 };
 
 struct mv_usb_platform_data {
-	unsigned int		clknum;
-	char			**clkname;
 	struct mv_usb_addon_irq	*id;	/* Only valid for OTG. ID pin change*/
 	struct mv_usb_addon_irq	*vbus;	/* valid for OTG/UDC. VBUS change*/
 
-- 
1.7.4.1

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

* [PATCH V2 0/6] remove the clock name from pdata
  2013-03-25  7:06 [PATCH V2 0/6] remove the clock name from pdata Chao Xie
                   ` (5 preceding siblings ...)
  2013-03-25  7:06 ` [PATCH V2 6/6] usb: mv_usb: remove clock name from pdata Chao Xie
@ 2013-03-27 13:14 ` Felipe Balbi
  2013-03-28  0:50   ` Chao Xie
  6 siblings, 1 reply; 16+ messages in thread
From: Felipe Balbi @ 2013-03-27 13:14 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Mon, Mar 25, 2013 at 03:06:51AM -0400, Chao Xie wrote:
> The clock is defined by device, so the driver knows how many
> clocks needed by the device.
> The orignal way that passing the clock name by pdata is not correct.
> The following patches fix it.
> 
> V2->V1:
>    typo fix
>    rebased on latest usb-next
> 
> Chao Xie (6):
>   usb: gadget: mv_udc_core: remove unused clock
>   usb: otg: mv_otg: remove unused clock
>   usb: ehci: mv_ehci: remove unused clock
>   arm: mmp: remove clock from usb pdata for aspenite
>   arm: mmp: remove clock name from usb pdata for ttc
>   usb: mv_usb: remove clock name from pdata

how should this series be handled ?

If you want me to carry all patches, I need Acks from other maintainers
for ehci and arch/arm/ parts.

Until then, I'm dropping this from my TODO list.

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130327/fdd5d4a4/attachment.sig>

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

* [PATCH V2 0/6] remove the clock name from pdata
  2013-03-27 13:14 ` [PATCH V2 0/6] remove the " Felipe Balbi
@ 2013-03-28  0:50   ` Chao Xie
  0 siblings, 0 replies; 16+ messages in thread
From: Chao Xie @ 2013-03-28  0:50 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Mar 27, 2013 at 9:14 PM, Felipe Balbi <balbi@ti.com> wrote:
> Hi,
>
> On Mon, Mar 25, 2013 at 03:06:51AM -0400, Chao Xie wrote:
>> The clock is defined by device, so the driver knows how many
>> clocks needed by the device.
>> The orignal way that passing the clock name by pdata is not correct.
>> The following patches fix it.
>>
>> V2->V1:
>>    typo fix
>>    rebased on latest usb-next
>>
>> Chao Xie (6):
>>   usb: gadget: mv_udc_core: remove unused clock
>>   usb: otg: mv_otg: remove unused clock
>>   usb: ehci: mv_ehci: remove unused clock
>>   arm: mmp: remove clock from usb pdata for aspenite
>>   arm: mmp: remove clock name from usb pdata for ttc
>>   usb: mv_usb: remove clock name from pdata
>
> how should this series be handled ?
>
> If you want me to carry all patches, I need Acks from other maintainers
> for ehci and arch/arm/ parts.
>
> Until then, I'm dropping this from my TODO list.
>
> --
> balbi

hi, Alan

Can you help me to review the EHCI parts?
It changes the way of getting clock. The orginal way uses the pdata to
get the clock name, and it is not correct, and the patch fix it.
Thanks.

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

* [PATCH V2 3/6] usb: ehci: mv_ehci: remove unused clock
  2013-03-25  7:06 ` [PATCH V2 3/6] usb: ehci: mv_ehci: " Chao Xie
@ 2013-03-28  0:52   ` Chao Xie
  2013-03-28 14:38     ` Alan Stern
  0 siblings, 1 reply; 16+ messages in thread
From: Chao Xie @ 2013-03-28  0:52 UTC (permalink / raw)
  To: linux-arm-kernel

hi, Alan

This is the patch for EHCI clock fix. Can you help to review and ack it? Thanks.

On Mon, Mar 25, 2013 at 3:06 PM, Chao Xie <chao.xie@marvell.com> wrote:
> The origianl understanding of clock is wrong. The EHCI controller
> only have one clock input.
> Passing clock name by pdata is wrong. The clock is defined by device
> iteself.
>
> Signed-off-by: Chao Xie <chao.xie@marvell.com>
> ---
>  drivers/usb/host/ehci-mv.c |   35 ++++++++++-------------------------
>  1 files changed, 10 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-mv.c b/drivers/usb/host/ehci-mv.c
> index 3804820..6bad41a 100644
> --- a/drivers/usb/host/ehci-mv.c
> +++ b/drivers/usb/host/ehci-mv.c
> @@ -33,25 +33,17 @@ struct ehci_hcd_mv {
>
>         struct mv_usb_platform_data *pdata;
>
> -       /* clock source and total clock number */
> -       unsigned int clknum;
> -       struct clk *clk[0];
> +       struct clk *clk;
>  };
>
>  static void ehci_clock_enable(struct ehci_hcd_mv *ehci_mv)
>  {
> -       unsigned int i;
> -
> -       for (i = 0; i < ehci_mv->clknum; i++)
> -               clk_prepare_enable(ehci_mv->clk[i]);
> +       clk_prepare_enable(ehci_mv->clk);
>  }
>
>  static void ehci_clock_disable(struct ehci_hcd_mv *ehci_mv)
>  {
> -       unsigned int i;
> -
> -       for (i = 0; i < ehci_mv->clknum; i++)
> -               clk_disable_unprepare(ehci_mv->clk[i]);
> +       clk_disable_unprepare(ehci_mv->clk);
>  }
>
>  static int mv_ehci_enable(struct ehci_hcd_mv *ehci_mv)
> @@ -144,9 +136,8 @@ static int mv_ehci_probe(struct platform_device *pdev)
>         struct ehci_hcd *ehci;
>         struct ehci_hcd_mv *ehci_mv;
>         struct resource *r;
> -       int clk_i, retval = -ENODEV;
> +       int retval = -ENODEV;
>         u32 offset;
> -       size_t size;
>
>         if (!pdata) {
>                 dev_err(&pdev->dev, "missing platform_data\n");
> @@ -160,8 +151,7 @@ static int mv_ehci_probe(struct platform_device *pdev)
>         if (!hcd)
>                 return -ENOMEM;
>
> -       size = sizeof(*ehci_mv) + sizeof(struct clk *) * pdata->clknum;
> -       ehci_mv = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
> +       ehci_mv = devm_kzalloc(&pdev->dev, sizeof(*ehci_mv), GFP_KERNEL);
>         if (ehci_mv == NULL) {
>                 dev_err(&pdev->dev, "cannot allocate ehci_hcd_mv\n");
>                 retval = -ENOMEM;
> @@ -172,16 +162,11 @@ static int mv_ehci_probe(struct platform_device *pdev)
>         ehci_mv->pdata = pdata;
>         ehci_mv->hcd = hcd;
>
> -       ehci_mv->clknum = pdata->clknum;
> -       for (clk_i = 0; clk_i < ehci_mv->clknum; clk_i++) {
> -               ehci_mv->clk[clk_i] =
> -                   devm_clk_get(&pdev->dev, pdata->clkname[clk_i]);
> -               if (IS_ERR(ehci_mv->clk[clk_i])) {
> -                       dev_err(&pdev->dev, "error get clck \"%s\"\n",
> -                               pdata->clkname[clk_i]);
> -                       retval = PTR_ERR(ehci_mv->clk[clk_i]);
> -                       goto err_clear_drvdata;
> -               }
> +       ehci_mv->clk = devm_clk_get(&pdev->dev, NULL);
> +       if (IS_ERR(ehci_mv->clk)) {
> +               dev_err(&pdev->dev, "error getting clock\n");
> +               retval = PTR_ERR(ehci_mv->clk);
> +               goto err_clear_drvdata;
>         }
>
>         r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phyregs");
> --
> 1.7.4.1
>

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

* [PATCH V2 4/6] arm: mmp: remove clock from usb pdata for aspenite
  2013-03-25  7:06 ` [PATCH V2 4/6] arm: mmp: remove clock from usb pdata for aspenite Chao Xie
@ 2013-03-28  0:59   ` Chao Xie
  2013-03-28  1:42     ` Haojian Zhuang
  0 siblings, 1 reply; 16+ messages in thread
From: Chao Xie @ 2013-03-28  0:59 UTC (permalink / raw)
  To: linux-arm-kernel

hi, Haojian
The patches correct the wrong usage of clock. It finally do not need
pass clock by pdata. Can you help to review the patches relates to
arch-mmp, and ack it?Thanks.

On Mon, Mar 25, 2013 at 3:06 PM, Chao Xie <chao.xie@marvell.com> wrote:
> The clock name will directly get by driver. Removing
> the name from pdata.
>
> Signed-off-by: Chao Xie <chao.xie@marvell.com>
> ---
>  arch/arm/mach-mmp/aspenite.c |    6 ------
>  1 files changed, 0 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
> index 9f64d56..76901f4 100644
> --- a/arch/arm/mach-mmp/aspenite.c
> +++ b/arch/arm/mach-mmp/aspenite.c
> @@ -223,13 +223,7 @@ static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = {
>  };
>
>  #if defined(CONFIG_USB_EHCI_MV)
> -static char *pxa168_sph_clock_name[] = {
> -       [0] = "PXA168-USBCLK",
> -};
> -
>  static struct mv_usb_platform_data pxa168_sph_pdata = {
> -       .clknum         = 1,
> -       .clkname        = pxa168_sph_clock_name,
>         .mode           = MV_USB_MODE_HOST,
>         .phy_init       = pxa_usb_phy_init,
>         .phy_deinit     = pxa_usb_phy_deinit,
> --
> 1.7.4.1
>

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

* [PATCH V2 4/6] arm: mmp: remove clock from usb pdata for aspenite
  2013-03-28  0:59   ` Chao Xie
@ 2013-03-28  1:42     ` Haojian Zhuang
  0 siblings, 0 replies; 16+ messages in thread
From: Haojian Zhuang @ 2013-03-28  1:42 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 28, 2013 at 8:59 AM, Chao Xie <xiechao.mail@gmail.com> wrote:
> hi, Haojian
> The patches correct the wrong usage of clock. It finally do not need
> pass clock by pdata. Can you help to review the patches relates to
> arch-mmp, and ack it?Thanks.
>
> On Mon, Mar 25, 2013 at 3:06 PM, Chao Xie <chao.xie@marvell.com> wrote:
>> The clock name will directly get by driver. Removing
>> the name from pdata.
>>
>> Signed-off-by: Chao Xie <chao.xie@marvell.com>
>> ---
>>  arch/arm/mach-mmp/aspenite.c |    6 ------
>>  1 files changed, 0 insertions(+), 6 deletions(-)
>>
>> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
>> index 9f64d56..76901f4 100644
>> --- a/arch/arm/mach-mmp/aspenite.c
>> +++ b/arch/arm/mach-mmp/aspenite.c
>> @@ -223,13 +223,7 @@ static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = {
>>  };
>>
>>  #if defined(CONFIG_USB_EHCI_MV)
>> -static char *pxa168_sph_clock_name[] = {
>> -       [0] = "PXA168-USBCLK",
>> -};
>> -
>>  static struct mv_usb_platform_data pxa168_sph_pdata = {
>> -       .clknum         = 1,
>> -       .clkname        = pxa168_sph_clock_name,
>>         .mode           = MV_USB_MODE_HOST,
>>         .phy_init       = pxa_usb_phy_init,
>>         .phy_deinit     = pxa_usb_phy_deinit,
>> --
>> 1.7.4.1
>>

Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>

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

* [PATCH V2 5/6] arm: mmp: remove clock name from usb pdata for ttc
  2013-03-25  7:06 ` [PATCH V2 5/6] arm: mmp: remove clock name from usb pdata for ttc Chao Xie
@ 2013-03-28  1:42   ` Haojian Zhuang
  0 siblings, 0 replies; 16+ messages in thread
From: Haojian Zhuang @ 2013-03-28  1:42 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Mar 25, 2013 at 3:06 PM, Chao Xie <chao.xie@marvell.com> wrote:
> The clock name will directly get by driver. Removing
> the name from pdata.
>
> Signed-off-by: Chao Xie <chao.xie@marvell.com>
> ---
>  arch/arm/mach-mmp/ttc_dkb.c |    6 ------
>  1 files changed, 0 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c
> index 22a9058..6528a5f 100644
> --- a/arch/arm/mach-mmp/ttc_dkb.c
> +++ b/arch/arm/mach-mmp/ttc_dkb.c
> @@ -162,13 +162,7 @@ static struct i2c_board_info ttc_dkb_i2c_info[] = {
>  #ifdef CONFIG_USB_SUPPORT
>  #if defined(CONFIG_USB_MV_UDC) || defined(CONFIG_USB_EHCI_MV_U2O)
>
> -static char *pxa910_usb_clock_name[] = {
> -       [0] = "U2OCLK",
> -};
> -
>  static struct mv_usb_platform_data ttc_usb_pdata = {
> -       .clknum         = 1,
> -       .clkname        = pxa910_usb_clock_name,
>         .vbus           = NULL,
>         .mode           = MV_USB_MODE_OTG,
>         .otg_force_a_bus_req = 1,
> --
> 1.7.4.1
>

Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>

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

* [PATCH V2 3/6] usb: ehci: mv_ehci: remove unused clock
  2013-03-28  0:52   ` Chao Xie
@ 2013-03-28 14:38     ` Alan Stern
  0 siblings, 0 replies; 16+ messages in thread
From: Alan Stern @ 2013-03-28 14:38 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, 28 Mar 2013, Chao Xie wrote:

> hi, Alan
> 
> This is the patch for EHCI clock fix. Can you help to review and ack it? Thanks.
> 
> On Mon, Mar 25, 2013 at 3:06 PM, Chao Xie <chao.xie@marvell.com> wrote:
> > The origianl understanding of clock is wrong. The EHCI controller
> > only have one clock input.
> > Passing clock name by pdata is wrong. The clock is defined by device
> > iteself.
> >
> > Signed-off-by: Chao Xie <chao.xie@marvell.com>
> > ---
> >  drivers/usb/host/ehci-mv.c |   35 ++++++++++-------------------------
> >  1 files changed, 10 insertions(+), 25 deletions(-)
> >
> > diff --git a/drivers/usb/host/ehci-mv.c b/drivers/usb/host/ehci-mv.c
> > index 3804820..6bad41a 100644
> > --- a/drivers/usb/host/ehci-mv.c
> > +++ b/drivers/usb/host/ehci-mv.c
> > @@ -33,25 +33,17 @@ struct ehci_hcd_mv {
> >
> >         struct mv_usb_platform_data *pdata;
> >
> > -       /* clock source and total clock number */
> > -       unsigned int clknum;
> > -       struct clk *clk[0];
> > +       struct clk *clk;
> >  };
> >
> >  static void ehci_clock_enable(struct ehci_hcd_mv *ehci_mv)
> >  {
> > -       unsigned int i;
> > -
> > -       for (i = 0; i < ehci_mv->clknum; i++)
> > -               clk_prepare_enable(ehci_mv->clk[i]);
> > +       clk_prepare_enable(ehci_mv->clk);
> >  }
> >
> >  static void ehci_clock_disable(struct ehci_hcd_mv *ehci_mv)
> >  {
> > -       unsigned int i;
> > -
> > -       for (i = 0; i < ehci_mv->clknum; i++)
> > -               clk_disable_unprepare(ehci_mv->clk[i]);
> > +       clk_disable_unprepare(ehci_mv->clk);
> >  }
> >
> >  static int mv_ehci_enable(struct ehci_hcd_mv *ehci_mv)
> > @@ -144,9 +136,8 @@ static int mv_ehci_probe(struct platform_device *pdev)
> >         struct ehci_hcd *ehci;
> >         struct ehci_hcd_mv *ehci_mv;
> >         struct resource *r;
> > -       int clk_i, retval = -ENODEV;
> > +       int retval = -ENODEV;
> >         u32 offset;
> > -       size_t size;
> >
> >         if (!pdata) {
> >                 dev_err(&pdev->dev, "missing platform_data\n");
> > @@ -160,8 +151,7 @@ static int mv_ehci_probe(struct platform_device *pdev)
> >         if (!hcd)
> >                 return -ENOMEM;
> >
> > -       size = sizeof(*ehci_mv) + sizeof(struct clk *) * pdata->clknum;
> > -       ehci_mv = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
> > +       ehci_mv = devm_kzalloc(&pdev->dev, sizeof(*ehci_mv), GFP_KERNEL);
> >         if (ehci_mv == NULL) {
> >                 dev_err(&pdev->dev, "cannot allocate ehci_hcd_mv\n");
> >                 retval = -ENOMEM;
> > @@ -172,16 +162,11 @@ static int mv_ehci_probe(struct platform_device *pdev)
> >         ehci_mv->pdata = pdata;
> >         ehci_mv->hcd = hcd;
> >
> > -       ehci_mv->clknum = pdata->clknum;
> > -       for (clk_i = 0; clk_i < ehci_mv->clknum; clk_i++) {
> > -               ehci_mv->clk[clk_i] =
> > -                   devm_clk_get(&pdev->dev, pdata->clkname[clk_i]);
> > -               if (IS_ERR(ehci_mv->clk[clk_i])) {
> > -                       dev_err(&pdev->dev, "error get clck \"%s\"\n",
> > -                               pdata->clkname[clk_i]);
> > -                       retval = PTR_ERR(ehci_mv->clk[clk_i]);
> > -                       goto err_clear_drvdata;
> > -               }
> > +       ehci_mv->clk = devm_clk_get(&pdev->dev, NULL);
> > +       if (IS_ERR(ehci_mv->clk)) {
> > +               dev_err(&pdev->dev, "error getting clock\n");
> > +               retval = PTR_ERR(ehci_mv->clk);
> > +               goto err_clear_drvdata;
> >         }
> >
> >         r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phyregs");

Looks okay to me.

Acked-by: Alan Stern <stern@rowland.harvard.edu>

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

* [PATCH V2 6/6] usb: mv_usb: remove clock name from pdata
  2013-03-25  7:06 ` [PATCH V2 6/6] usb: mv_usb: remove clock name from pdata Chao Xie
@ 2013-04-02  8:14   ` Felipe Balbi
  2013-04-02  8:42     ` Yu Xu
  0 siblings, 1 reply; 16+ messages in thread
From: Felipe Balbi @ 2013-04-02  8:14 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Mon, Mar 25, 2013 at 03:06:57AM -0400, Chao Xie wrote:
> Using pdata to pass clock name is not correct.
> Directly get clock from usb drivers.
> 
> Signed-off-by: Chao Xie <chao.xie@marvell.com>
> ---
>  include/linux/platform_data/mv_usb.h |    2 --
>  1 files changed, 0 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/platform_data/mv_usb.h b/include/linux/platform_data/mv_usb.h
> index 944b01d..98b7925 100644
> --- a/include/linux/platform_data/mv_usb.h
> +++ b/include/linux/platform_data/mv_usb.h
> @@ -34,8 +34,6 @@ struct mv_usb_addon_irq {
>  };
>  
>  struct mv_usb_platform_data {
> -	unsigned int		clknum;
> -	char			**clkname;

this patch breaks mv_u3d_core.c, I have added another patch to the
series (see below), let me know if this isn't the right fix.

>From 49c1bfb43cbd1228abfffbc8d0ebb2e510b93bd7 Mon Sep 17 00:00:00 2001
From: Felipe Balbi <balbi@ti.com>
Date: Tue, 2 Apr 2013 11:12:11 +0300
Subject: [PATCH] usb: gadget: mv_u3d_core: remove unused clock

The origianl understanding of clock is wrong. The UDC controller
only have one clock input.
Passing clock name by pdata is wrong. The clock is defined by device
iteself.

Cc: Chao Xie <chao.xie@marvell.com>
Cc: Yu Xu <yuxu@marvell.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
 drivers/usb/gadget/mv_u3d_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/mv_u3d_core.c b/drivers/usb/gadget/mv_u3d_core.c
index 9675227..58288e9 100644
--- a/drivers/usb/gadget/mv_u3d_core.c
+++ b/drivers/usb/gadget/mv_u3d_core.c
@@ -1821,7 +1821,7 @@ static int mv_u3d_probe(struct platform_device *dev)
 	u3d->dev = &dev->dev;
 	u3d->vbus = pdata->vbus;
 
-	u3d->clk = clk_get(&dev->dev, pdata->clkname[0]);
+	u3d->clk = clk_get(&dev->dev, NULL);
 	if (IS_ERR(u3d->clk)) {
 		retval = PTR_ERR(u3d->clk);
 		goto err_get_clk;
-- 
1.8.2

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130402/7a99e4ac/attachment.sig>

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

* [PATCH V2 6/6] usb: mv_usb: remove clock name from pdata
  2013-04-02  8:14   ` Felipe Balbi
@ 2013-04-02  8:42     ` Yu Xu
  0 siblings, 0 replies; 16+ messages in thread
From: Yu Xu @ 2013-04-02  8:42 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

> -----Original Message-----
> From: Felipe Balbi [mailto:balbi at ti.com]
> Sent: 2013?4?2? 16:15
> To: Chao Xie
> Cc: linux-usb at vger.kernel.org; linux-arm-kernel at lists.infradead.org;
> haojian.zhuang at gmail.com; balbi at ti.com; xiechao.mail at gmail.com; Yu Xu
> Subject: Re: [PATCH V2 6/6] usb: mv_usb: remove clock name from pdata
> 
> Hi,
> 
> On Mon, Mar 25, 2013 at 03:06:57AM -0400, Chao Xie wrote:
> > Using pdata to pass clock name is not correct.
> > Directly get clock from usb drivers.
> >
> > Signed-off-by: Chao Xie <chao.xie@marvell.com>
> > ---
> >  include/linux/platform_data/mv_usb.h |    2 --
> >  1 files changed, 0 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/linux/platform_data/mv_usb.h
> > b/include/linux/platform_data/mv_usb.h
> > index 944b01d..98b7925 100644
> > --- a/include/linux/platform_data/mv_usb.h
> > +++ b/include/linux/platform_data/mv_usb.h
> > @@ -34,8 +34,6 @@ struct mv_usb_addon_irq {  };
> >
> >  struct mv_usb_platform_data {
> > -	unsigned int		clknum;
> > -	char			**clkname;
> 
> this patch breaks mv_u3d_core.c, I have added another patch to the
> series (see below), let me know if this isn't the right fix.
> 
> From 49c1bfb43cbd1228abfffbc8d0ebb2e510b93bd7 Mon Sep 17 00:00:00 2001
> From: Felipe Balbi <balbi@ti.com>
> Date: Tue, 2 Apr 2013 11:12:11 +0300
> Subject: [PATCH] usb: gadget: mv_u3d_core: remove unused clock
> 
> The origianl understanding of clock is wrong. The UDC controller only
> have one clock input.
> Passing clock name by pdata is wrong. The clock is defined by device
> iteself.
> 
> Cc: Chao Xie <chao.xie@marvell.com>
> Cc: Yu Xu <yuxu@marvell.com>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
>  drivers/usb/gadget/mv_u3d_core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/gadget/mv_u3d_core.c
> b/drivers/usb/gadget/mv_u3d_core.c
> index 9675227..58288e9 100644
> --- a/drivers/usb/gadget/mv_u3d_core.c
> +++ b/drivers/usb/gadget/mv_u3d_core.c
> @@ -1821,7 +1821,7 @@ static int mv_u3d_probe(struct platform_device
> *dev)
>  	u3d->dev = &dev->dev;
>  	u3d->vbus = pdata->vbus;
> 
> -	u3d->clk = clk_get(&dev->dev, pdata->clkname[0]);
> +	u3d->clk = clk_get(&dev->dev, NULL);
>  	if (IS_ERR(u3d->clk)) {
>  		retval = PTR_ERR(u3d->clk);
>  		goto err_get_clk;
> --
> 1.8.2
> 
> --
> balbi

Acked-by: Yu Xu <yuxu@marvell.com>

Regards,
Yu Xu

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

end of thread, other threads:[~2013-04-02  8:42 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-25  7:06 [PATCH V2 0/6] remove the clock name from pdata Chao Xie
2013-03-25  7:06 ` [PATCH V2 1/6] usb: gadget: mv_udc_core: remove unused clock Chao Xie
2013-03-25  7:06 ` [PATCH V2 2/6] usb: otg: mv_otg: " Chao Xie
2013-03-25  7:06 ` [PATCH V2 3/6] usb: ehci: mv_ehci: " Chao Xie
2013-03-28  0:52   ` Chao Xie
2013-03-28 14:38     ` Alan Stern
2013-03-25  7:06 ` [PATCH V2 4/6] arm: mmp: remove clock from usb pdata for aspenite Chao Xie
2013-03-28  0:59   ` Chao Xie
2013-03-28  1:42     ` Haojian Zhuang
2013-03-25  7:06 ` [PATCH V2 5/6] arm: mmp: remove clock name from usb pdata for ttc Chao Xie
2013-03-28  1:42   ` Haojian Zhuang
2013-03-25  7:06 ` [PATCH V2 6/6] usb: mv_usb: remove clock name from pdata Chao Xie
2013-04-02  8:14   ` Felipe Balbi
2013-04-02  8:42     ` Yu Xu
2013-03-27 13:14 ` [PATCH V2 0/6] remove the " Felipe Balbi
2013-03-28  0:50   ` Chao Xie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).