From patchwork Wed Feb 6 07:23:39 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chao Xie X-Patchwork-Id: 2102381 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork2.kernel.org (Postfix) with ESMTP id 4A5A4DFE82 for ; Wed, 6 Feb 2013 07:27:36 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1U2zNi-0003mo-UC; Wed, 06 Feb 2013 07:25:23 +0000 Received: from na3sys009aog104.obsmtp.com ([74.125.149.73]) by merlin.infradead.org with smtps (Exim 4.76 #1 (Red Hat Linux)) id 1U2zMe-0003OC-C4 for linux-arm-kernel@lists.infradead.org; Wed, 06 Feb 2013 07:24:17 +0000 Received: from MSI-MTA.marvell.com ([65.219.4.132]) (using TLSv1) by na3sys009aob104.postini.com ([74.125.148.12]) with SMTP ID DSNKURIFG9WKCWDWj8VPMX+UOPjT66QyeP6L@postini.com; Tue, 05 Feb 2013 23:24:16 PST Received: from maili.marvell.com ([10.68.76.210]) by MSI-MTA.marvell.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 5 Feb 2013 23:23:55 -0800 Received: from localhost (unknown [10.38.36.239]) by maili.marvell.com (Postfix) with ESMTP id D525E4E513; Tue, 5 Feb 2013 23:23:54 -0800 (PST) From: Chao Xie To: linux-usb@vger.kernel.org, linux-arm-kernel@lists.infradead.org, haojian.zhuang@gmail.com, stern@rowland.harvard.edu, balbi@ti.com, gregkh@linuxfoundation.org, xiechao.mail@gmail.com Subject: [V6 PATCH 04/16] usb: otg: mv_otg: use PHY driver for otg Date: Wed, 6 Feb 2013 02:23:39 -0500 Message-Id: <1360135431-27280-5-git-send-email-chao.xie@marvell.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1360135431-27280-1-git-send-email-chao.xie@marvell.com> References: <1360135431-27280-1-git-send-email-chao.xie@marvell.com> X-OriginalArrivalTime: 06 Feb 2013 07:23:55.0303 (UTC) FILETIME=[EBEBB370:01CE043A] X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130206_022416_588822_66BD0230 X-CRM114-Status: GOOD ( 13.57 ) X-Spam-Score: -4.2 (----) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-4.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/, medium trust [74.125.149.73 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: Chao Xie X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Originaly, otg driver will call the callbacks in platform data for PHY initialization and shut down. With PHY driver, it will call the APIs provided by PHY driver for PHY initialization and shut down. It removes the callbacks in platform data, and at same time it removes one block in the way of enabling device tree for otg driver. Signed-off-by: Chao Xie --- drivers/usb/otg/mv_otg.c | 33 ++++++++++++--------------------- drivers/usb/otg/mv_otg.h | 2 +- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/drivers/usb/otg/mv_otg.c b/drivers/usb/otg/mv_otg.c index b6a9be3..44ddf25 100644 --- a/drivers/usb/otg/mv_otg.c +++ b/drivers/usb/otg/mv_otg.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include "mv_otg.h" @@ -261,8 +262,8 @@ static int mv_otg_enable_internal(struct mv_otg *mvotg) dev_dbg(&mvotg->pdev->dev, "otg enabled\n"); otg_clock_enable(mvotg); - if (mvotg->pdata->phy_init) { - retval = mvotg->pdata->phy_init(mvotg->phy_regs); + if (mvotg->mvphy->init) { + retval = mvotg->mvphy->init(mvotg->mvphy); if (retval) { dev_err(&mvotg->pdev->dev, "init phy error %d\n", retval); @@ -288,8 +289,8 @@ static void mv_otg_disable_internal(struct mv_otg *mvotg) { if (mvotg->active) { dev_dbg(&mvotg->pdev->dev, "otg disabled\n"); - if (mvotg->pdata->phy_deinit) - mvotg->pdata->phy_deinit(mvotg->phy_regs); + if (mvotg->mvphy->shutdown) + mvotg->mvphy->shutdown(mvotg->mvphy); otg_clock_disable(mvotg); mvotg->active = 0; } @@ -741,23 +742,8 @@ static int mv_otg_probe(struct platform_device *pdev) for (i = 0; i < OTG_TIMER_NUM; i++) init_timer(&mvotg->otg_ctrl.timer[i]); - r = platform_get_resource_byname(mvotg->pdev, - IORESOURCE_MEM, "phyregs"); - if (r == NULL) { - dev_err(&pdev->dev, "no phy I/O memory resource defined\n"); - retval = -ENODEV; - goto err_destroy_workqueue; - } - - mvotg->phy_regs = devm_ioremap(&pdev->dev, r->start, resource_size(r)); - if (mvotg->phy_regs == NULL) { - dev_err(&pdev->dev, "failed to map phy I/O memory\n"); - retval = -EFAULT; - goto err_destroy_workqueue; - } - - r = platform_get_resource_byname(mvotg->pdev, - IORESOURCE_MEM, "capregs"); + r = platform_get_resource(mvotg->pdev, + IORESOURCE_MEM, 0); if (r == NULL) { dev_err(&pdev->dev, "no I/O memory resource defined\n"); retval = -ENODEV; @@ -770,6 +756,11 @@ static int mv_otg_probe(struct platform_device *pdev) retval = -EFAULT; goto err_destroy_workqueue; } + mvotg->mvphy = mv_usb2_get_phy(); + if (mvotg->mvphy == NULL) { + retval = -ENODEV; + goto err_destroy_workqueue; + } /* we will acces controller register, so enable the udc controller */ retval = mv_otg_enable_internal(mvotg); diff --git a/drivers/usb/otg/mv_otg.h b/drivers/usb/otg/mv_otg.h index 8a9e351..7b9629a 100644 --- a/drivers/usb/otg/mv_otg.h +++ b/drivers/usb/otg/mv_otg.h @@ -137,10 +137,10 @@ struct mv_otg_regs { struct mv_otg { struct usb_phy phy; + struct mv_usb2_phy *mvphy; struct mv_otg_ctrl otg_ctrl; /* base address */ - void __iomem *phy_regs; void __iomem *cap_regs; struct mv_otg_regs __iomem *op_regs;