/** * ulpi.c - DesignWare USB3 Controller's ULPI PHY interface * * Copyright (C) 2015 Intel Corporation * * Author: Heikki Krogerus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include #include "core.h" #include "io.h" #define DWC3_ULPI_ADDR(a) \ ((a >= ULPI_EXT_VENDOR_SPECIFIC) ? \ DWC3_GUSB2PHYACC_ADDR(ULPI_ACCESS_EXTENDED) | \ DWC3_GUSB2PHYACC_EXTEND_ADDR(a) : DWC3_GUSB2PHYACC_ADDR(a)) static int dwc3_ulpi_busyloop(struct dwc3 *dwc) { unsigned count = 1000; u32 reg; while (count--) { reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYACC(0)); if (!(reg & DWC3_GUSB2PHYACC_BUSY)) return 0; cpu_relax(); } return -ETIMEDOUT; } static int dwc3_ulpi_read(struct device *dev, u8 addr) { struct dwc3 *dwc = dev_get_drvdata(dev); u32 reg; int ret; reg = DWC3_GUSB2PHYACC_NEWREGREQ | DWC3_ULPI_ADDR(addr); dwc3_writel(dwc->regs, DWC3_GUSB2PHYACC(0), reg); ret = dwc3_ulpi_busyloop(dwc); if (ret) return ret; reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYACC(0)); return DWC3_GUSB2PHYACC_DATA(reg); } static int dwc3_ulpi_write(struct device *dev, u8 addr, u8 val) { struct dwc3 *dwc = dev_get_drvdata(dev); u32 reg; reg = DWC3_GUSB2PHYACC_NEWREGREQ | DWC3_ULPI_ADDR(addr); reg |= DWC3_GUSB2PHYACC_WRITE | val; dwc3_writel(dwc->regs, DWC3_GUSB2PHYACC(0), reg); return dwc3_ulpi_busyloop(dwc); } static const struct ulpi_ops dwc3_ulpi_ops = { .read = dwc3_ulpi_read, .write = dwc3_ulpi_write, }; int dwc3_ulpi_init(struct dwc3 *dwc) { /* Register the interface */ dwc->ulpi = ulpi_register_interface(dwc->dev, &dwc3_ulpi_ops); if (IS_ERR(dwc->ulpi)) { dev_err(dwc->dev, "failed to register ULPI interface"); return PTR_ERR(dwc->ulpi); } return 0; } void dwc3_ulpi_exit(struct dwc3 *dwc) { if (dwc->ulpi) { ulpi_unregister_interface(dwc->ulpi); dwc->ulpi = NULL; } } ' action='/cgit.cgi/linux/net-next.git/log/include'>
AgeCommit message (Expand)AuthorFilesLines
2017-02-08netfilter: nft_ct: add zone id get supportFlorian Westphal1-0/+2
2017-02-08netfilter: nf_tables: add space notation to setsPablo Neira Ayuso1-0/+2
2017-02-08netfilter: nf_tables: rename struct nft_set_estimate class fieldPablo Neira Ayuso1-2/+2
2017-02-08netfilter: nf_tables: add flush field to struct nft_set_iterPablo Neira Ayuso1-0/+1
2017-02-08netfilter: nf_tables: rename deactivate_one() to flush()Pablo Neira Ayuso1-4/+4
2017-02-08netfilter: nf_tables: pass netns to set->ops->remove()Pablo Neira Ayuso1-1/+2
2017-02-08netfilter: nft_exthdr: Add support for existence checkPhil Sutter1-0/+6
2017-02-03net: remove support for per driver ndo_busy_poll()Eric Dumazet2-5/+0
2017-02-03Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-nextDavid S. Miller11-40/+60
2017-02-03sched: cls_flower: expose priority to offloading netdeviceJiri Pirko1-0/+1
2017-02-03lib: Introduce priority array area managerJiri Pirko1-0/+76
2017-02-03list: introduce list_for_each_entry_from_reverse helperJiri Pirko1-0/+13
2017-02-03trace: rename trace_print_hex_seq arg and add kdocDaniel Borkmann2-3/+3
2017-02-03bridge: uapi: add per vlan tunnel infoRoopa Prabhu3-0/+13
2017-02-03vxlan: support fdb and learning in COLLECT_METADATA modeRoopa Prabhu1-0/+1
2017-02-03ip_tunnels: new IP_TUNNEL_INFO_BRIDGE flag for ip_tunnel_info modeRoopa Prabhu1-0/+1
2017-02-03net/sched: act_ife: Change to use ife moduleYotam Gigi2-10/+1
2017-02-03net: Introduce ife encapsulation moduleYotam Gigi3-0/+70
2017-02-03net/sched: act_ife: Unexport ife_tlv_meta_encodeYotam Gigi1-2/+0
2017-02-03tcp: add tcp_mss_clamp() helperEric Dumazet1-0/+9
2017-02-02net: add LINUX_MIB_PFMEMALLOCDROP counterEric Dumazet1-0/+1
2017-02-02net: phy: marvell: Add support for 88e1545 PHYAndrew Lunn1-0/+1
2017-02-02unix: add ioctl to open a unix socket file with O_PATHAndrey Vagin1-0/+2
2017-02-02net: phy: Marvell: Add mv88e6390 internal PHYAndrew Lunn1-0/+6
2017-02-02Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/netDavid S. Miller9-30/+40
2017-02-02netfilter: allow logging from non-init namespacesMichal Kubeček1-0/+3
2017-02-02ipvs: free ip_vs_dest structs when refcnt=0David Windsor1-1/+1
2017-02-02netfilter: merge ctinfo into nfct pointer storage areaFlorian Westphal2-17/+15
2017-02-02netfilter: guarantee 8 byte minalign for template addressesFlorian Westphal1-0/+2
2017-02-02netfilter: add and use nf_ct_set helperFlorian Westphal2-2/+9
2017-02-02skbuff: add and use skb_nfct helperFlorian Westphal2-4/+11
2017-02-02netfilter: reduce direct skb->nfct usageFlorian Westphal1-3/+6
2017-02-02netfilter: conntrack: no need to pass ctinfo to error handlerFlorian Westphal1-1/+1