Skip to content

Commit

Permalink
usb:hsotg:samsung: Wrappers for USB PHY methods
Browse files Browse the repository at this point in the history
Wrappers for PHY methods have been added for readability and reduction
of code repetition.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
  • Loading branch information
Lukasz Majewski authored and Felipe Balbi committed May 4, 2012
1 parent d77039c commit 4118878
Showing 1 changed file with 43 additions and 5 deletions.
48 changes: 43 additions & 5 deletions drivers/usb/gadget/s3c-hsotg.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@

#include <mach/map.h>

#include <plat/regs-usb-hsotg-phy.h>
#include "s3c-hsotg.h"
#include <linux/platform_data/s3c-hsotg.h>

Expand Down Expand Up @@ -2571,6 +2570,39 @@ static int s3c_hsotg_corereset(struct s3c_hsotg *hsotg)
return 0;
}

/**
* s3c_hsotg_phy_enable - enable platform phy dev
*
* @param: The driver state
*
* A wrapper for platform code responsible for controlling
* low-level USB code
*/
static void s3c_hsotg_phy_enable(struct s3c_hsotg *hsotg)
{
struct platform_device *pdev = to_platform_device(hsotg->dev);

dev_dbg(hsotg->dev, "pdev 0x%p\n", pdev);
if (hsotg->plat->phy_init)
hsotg->plat->phy_init(pdev, hsotg->plat->phy_type);
}

/**
* s3c_hsotg_phy_disable - disable platform phy dev
*
* @param: The driver state
*
* A wrapper for platform code responsible for controlling
* low-level USB code
*/
static void s3c_hsotg_phy_disable(struct s3c_hsotg *hsotg)
{
struct platform_device *pdev = to_platform_device(hsotg->dev);

if (hsotg->plat->phy_exit)
hsotg->plat->phy_exit(pdev, hsotg->plat->phy_type);
}

static int s3c_hsotg_start(struct usb_gadget_driver *driver,
int (*bind)(struct usb_gadget *))
{
Expand Down Expand Up @@ -3216,8 +3248,6 @@ static void __devexit s3c_hsotg_delete_debug(struct s3c_hsotg *hsotg)
debugfs_remove(hsotg->debug_root);
}

static struct s3c_hsotg_plat s3c_hsotg_default_pdata;

static int __devinit s3c_hsotg_probe(struct platform_device *pdev)
{
struct s3c_hsotg_plat *plat = pdev->dev.platform_data;
Expand All @@ -3227,8 +3257,11 @@ static int __devinit s3c_hsotg_probe(struct platform_device *pdev)
int epnum;
int ret;

if (!plat)
plat = &s3c_hsotg_default_pdata;
plat = pdev->dev.platform_data;
if (!plat) {
dev_err(&pdev->dev, "no platform data defined\n");
return -EINVAL;
}

hsotg = kzalloc(sizeof(struct s3c_hsotg) +
sizeof(struct s3c_hsotg_ep) * S3C_HSOTG_EPS,
Expand Down Expand Up @@ -3317,6 +3350,8 @@ static int __devinit s3c_hsotg_probe(struct platform_device *pdev)

clk_enable(hsotg->clk);

/* usb phy enable */
s3c_hsotg_phy_enable(hsotg);

s3c_hsotg_corereset(hsotg);
s3c_hsotg_init(hsotg);
Expand All @@ -3337,6 +3372,8 @@ static int __devinit s3c_hsotg_probe(struct platform_device *pdev)
return 0;

err_add_udc:
s3c_hsotg_phy_disable(hsotg);

clk_disable(hsotg->clk);
clk_put(hsotg->clk);

Expand Down Expand Up @@ -3369,6 +3406,7 @@ static int __devexit s3c_hsotg_remove(struct platform_device *pdev)
release_resource(hsotg->regs_res);
kfree(hsotg->regs_res);

s3c_hsotg_phy_disable(hsotg);

clk_disable(hsotg->clk);
clk_put(hsotg->clk);
Expand Down

0 comments on commit 4118878

Please sign in to comment.