cregit-Linux how code gets into the kernel

Release 4.11 drivers/usb/host/ehci-w90x900.c

Directory: drivers/usb/host
/*
 * linux/driver/usb/host/ehci-w90x900.c
 *
 * Copyright (c) 2008 Nuvoton technology corporation.
 *
 * Wan ZongShun <mcuos.com@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation;version 2 of the License.
 *
 */

#include <linux/dma-mapping.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/usb.h>
#include <linux/usb/hcd.h>

#include "ehci.h"

/* enable phy0 and phy1 for w90p910 */

#define	ENPHY		(0x01<<8)

#define PHY0_CTR	(0xA4)

#define PHY1_CTR	(0xA8)


#define DRIVER_DESC "EHCI w90x900 driver"


static const char hcd_name[] = "ehci-w90x900 ";


static struct hc_driver __read_mostly ehci_w90x900_hc_driver;


static int ehci_w90x900_probe(struct platform_device *pdev) { struct usb_hcd *hcd; struct ehci_hcd *ehci; struct resource *res; int retval = 0, irq; unsigned long val; hcd = usb_create_hcd(&ehci_w90x900_hc_driver, &pdev->dev, "w90x900 EHCI"); if (!hcd) { retval = -ENOMEM; goto err1; } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); hcd->regs = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(hcd->regs)) { retval = PTR_ERR(hcd->regs); goto err2; } hcd->rsrc_start = res->start; hcd->rsrc_len = resource_size(res); ehci = hcd_to_ehci(hcd); ehci->caps = hcd->regs; ehci->regs = hcd->regs + HC_LENGTH(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase)); /* enable PHY 0,1,the regs only apply to w90p910 * 0xA4,0xA8 were offsets of PHY0 and PHY1 controller of * w90p910 IC relative to ehci->regs. */ val = __raw_readl(ehci->regs+PHY0_CTR); val |= ENPHY; __raw_writel(val, ehci->regs+PHY0_CTR); val = __raw_readl(ehci->regs+PHY1_CTR); val |= ENPHY; __raw_writel(val, ehci->regs+PHY1_CTR); irq = platform_get_irq(pdev, 0); if (irq < 0) { retval = irq; goto err2; } retval = usb_add_hcd(hcd, irq, IRQF_SHARED); if (retval != 0) goto err2; device_wakeup_enable(hcd->self.controller); return retval; err2: usb_put_hcd(hcd); err1: return retval; }

Contributors

PersonTokensPropCommitsCommitProp
Wan ZongShun23078.50%112.50%
Varka Bhadram237.85%112.50%
Jingoo Han175.80%112.50%
Peter Chen93.07%112.50%
Julia Lawall62.05%112.50%
Majunath Goudar41.37%112.50%
Jan Andersson20.68%112.50%
Joe Perches20.68%112.50%
Total293100.00%8100.00%


static int ehci_w90x900_remove(struct platform_device *pdev) { struct usb_hcd *hcd = platform_get_drvdata(pdev); usb_remove_hcd(hcd); usb_put_hcd(hcd); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Wan ZongShun2882.35%150.00%
Majunath Goudar617.65%150.00%
Total34100.00%2100.00%

static struct platform_driver ehci_hcd_w90x900_driver = { .probe = ehci_w90x900_probe, .remove = ehci_w90x900_remove, .driver = { .name = "w90x900-ehci", }, };
static int __init ehci_w90X900_init(void) { if (usb_disabled()) return -ENODEV; pr_info("%s: " DRIVER_DESC "\n", hcd_name); ehci_init_driver(&ehci_w90x900_hc_driver, NULL); return platform_driver_register(&ehci_hcd_w90x900_driver); }

Contributors

PersonTokensPropCommitsCommitProp
Manjunath Goudar42100.00%1100.00%
Total42100.00%1100.00%

module_init(ehci_w90X900_init);
static void __exit ehci_w90X900_cleanup(void) { platform_driver_unregister(&ehci_hcd_w90x900_driver); }

Contributors

PersonTokensPropCommitsCommitProp
Manjunath Goudar15100.00%1100.00%
Total15100.00%1100.00%

module_exit(ehci_w90X900_cleanup); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_AUTHOR("Wan ZongShun <mcuos.com@gmail.com>"); MODULE_ALIAS("platform:w90p910-ehci"); MODULE_LICENSE("GPL v2");

Overall Contributors

PersonTokensPropCommitsCommitProp
Wan ZongShun31663.20%110.00%
Manjunath Goudar11422.80%110.00%
Varka Bhadram234.60%110.00%
Jingoo Han173.40%110.00%
Majunath Goudar102.00%110.00%
Peter Chen91.80%110.00%
Julia Lawall61.20%110.00%
Joe Perches20.40%110.00%
Jan Andersson20.40%110.00%
Justin P. Mattock10.20%110.00%
Total500100.00%10100.00%
Directory: drivers/usb/host
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.