/* * Copyright (C) 2011 Google, Inc. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #include #include #include #include #include #include #define ULPI_VIEW_WAKEUP (1 << 31) #define ULPI_VIEW_RUN (1 << 30) #define ULPI_VIEW_WRITE (1 << 29) #define ULPI_VIEW_READ (0 << 29) #define ULPI_VIEW_ADDR(x) (((x) & 0xff) << 16) #define ULPI_VIEW_DATA_READ(x) (((x) >> 8) & 0xff) #define ULPI_VIEW_DATA_WRITE(x) ((x) & 0xff) static int ulpi_viewport_wait(void __iomem *view, u32 mask) { unsigned long usec = 2000; while (usec--) { if (!(readl(view) & mask)) return 0; udelay(1); } return -ETIMEDOUT; } static int ulpi_viewport_read(struct usb_phy *otg, u32 reg) { int ret; void __iomem *view = otg->io_priv; writel(ULPI_VIEW_WAKEUP | ULPI_VIEW_WRITE, view); ret = ulpi_viewport_wait(view, ULPI_VIEW_WAKEUP); if (ret) return ret; writel(ULPI_VIEW_RUN | ULPI_VIEW_READ | ULPI_VIEW_ADDR(reg), view); ret = ulpi_viewport_wait(view, ULPI_VIEW_RUN); if (ret) return ret; return ULPI_VIEW_DATA_READ(readl(view)); } static int ulpi_viewport_write(struct usb_phy *otg, u32 val, u32 reg) { int ret; void __iomem *view = otg->io_priv; writel(ULPI_VIEW_WAKEUP | ULPI_VIEW_WRITE, view); ret = ulpi_viewport_wait(view, ULPI_VIEW_WAKEUP); if (ret) return ret; writel(ULPI_VIEW_RUN | ULPI_VIEW_WRITE | ULPI_VIEW_DATA_WRITE(val) | ULPI_VIEW_ADDR(reg), view); return ulpi_viewport_wait(view, ULPI_VIEW_RUN); } struct usb_phy_io_ops ulpi_viewport_access_ops = { .read = ulpi_viewport_read, .write = ulpi_viewport_write, }; EXPORT_SYMBOL_GPL(ulpi_viewport_access_ops); cgit.cgi/linux/net-next.git/log/include/net/dn_dev.h'>
ame='id' value='04d8a0a5f3b6887543850d991a5e37c4ec90e250'/>
AgeCommit message (Expand)AuthorFilesLines
context:
space:
mode:
authorRaju Lakkaraju <Raju.Lakkaraju@microsemi.com>2017-02-07 19:10:26 +0530
committerDavid S. Miller <davem@davemloft.net>2017-02-08 13:29:04 -0500
commit04d8a0a5f3b6887543850d991a5e37c4ec90e250 (patch)
treeee1fafb2122c2b29c7cb19e571bd7229afdbf847 /include/trace/events/task.h
parentff4cf0e5ce952488074aa7f47734af1794f55fbc (diff)
net: phy: Add LED mode driver for Microsemi PHYs.
LED Mode: Microsemi PHY support 2 LEDs (LED[0] and LED[1]) to display different status information that can be selected by setting LED mode. LED Mode parameter (vsc8531, led-0-mode) and (vsc8531, led-1-mode) get from Device Tree. Signed-off-by: Raju Lakkaraju <Raju.Lakkaraju@microsemi.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/trace/events/task.h')