Now, all this driver does can be covered by the generic EHCI driver (drivers/usb/host/ehci-generic.c). UniPhier SoCs have switched to use it. Delete this driver rather than bothering to convert it to Driver Model. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Acked-by: Marek Vasut <marex@denx.de>master
parent
cd0847fe63
commit
75d297ec1f
@ -1,75 +0,0 @@ |
|||||||
/*
|
|
||||||
* Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com> |
|
||||||
* |
|
||||||
* SPDX-License-Identifier: GPL-2.0+ |
|
||||||
*/ |
|
||||||
|
|
||||||
#include <common.h> |
|
||||||
#include <linux/err.h> |
|
||||||
#include <linux/io.h> |
|
||||||
#include <usb.h> |
|
||||||
#include <mach/mio-regs.h> |
|
||||||
#include <fdtdec.h> |
|
||||||
#include "ehci.h" |
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR; |
|
||||||
|
|
||||||
#define FDT gd->fdt_blob |
|
||||||
#define COMPAT "socionext,uniphier-ehci" |
|
||||||
|
|
||||||
static int get_uniphier_ehci_base(int index, struct ehci_hccr **base) |
|
||||||
{ |
|
||||||
int offset; |
|
||||||
|
|
||||||
for (offset = fdt_node_offset_by_compatible(FDT, 0, COMPAT); |
|
||||||
offset >= 0; |
|
||||||
offset = fdt_node_offset_by_compatible(FDT, offset, COMPAT)) { |
|
||||||
if (index == 0) { |
|
||||||
*base = (struct ehci_hccr *) |
|
||||||
fdtdec_get_addr(FDT, offset, "reg"); |
|
||||||
return 0; |
|
||||||
} |
|
||||||
index--; |
|
||||||
} |
|
||||||
|
|
||||||
return -ENODEV; /* not found */ |
|
||||||
} |
|
||||||
|
|
||||||
static void uniphier_ehci_reset(int index, int on) |
|
||||||
{ |
|
||||||
u32 tmp; |
|
||||||
|
|
||||||
tmp = readl(MIO_USB_RSTCTRL(index)); |
|
||||||
if (on) |
|
||||||
tmp &= ~MIO_USB_RSTCTRL_XRST; |
|
||||||
else |
|
||||||
tmp |= MIO_USB_RSTCTRL_XRST; |
|
||||||
writel(tmp, MIO_USB_RSTCTRL(index)); |
|
||||||
} |
|
||||||
|
|
||||||
int ehci_hcd_init(int index, enum usb_init_type init, struct ehci_hccr **hccr, |
|
||||||
struct ehci_hcor **hcor) |
|
||||||
{ |
|
||||||
int ret; |
|
||||||
struct ehci_hccr *cr; |
|
||||||
struct ehci_hcor *or; |
|
||||||
|
|
||||||
uniphier_ehci_reset(index, 0); |
|
||||||
|
|
||||||
ret = get_uniphier_ehci_base(index, &cr); |
|
||||||
if (ret < 0) |
|
||||||
return ret; |
|
||||||
or = (void *)cr + HC_LENGTH(ehci_readl(&cr->cr_capbase)); |
|
||||||
|
|
||||||
*hccr = cr; |
|
||||||
*hcor = or; |
|
||||||
|
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
int ehci_hcd_stop(int index) |
|
||||||
{ |
|
||||||
uniphier_ehci_reset(index, 1); |
|
||||||
|
|
||||||
return 0; |
|
||||||
} |
|
Loading…
Reference in new issue