1/* 2 * omap_usb.h -- omap usb2 phy header file 3 * 4 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * Author: Kishon Vijay Abraham I <kishon@ti.com> 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 */ 18 19#ifndef __DRIVERS_OMAP_USB2_H 20#define __DRIVERS_OMAP_USB2_H 21 22#include <linux/io.h> 23#include <linux/usb/otg.h> 24 25struct usb_dpll_params { 26 u16 m; 27 u8 n; 28 u8 freq:3; 29 u8 sd; 30 u32 mf; 31}; 32 33struct omap_usb { 34 struct usb_phy phy; 35 struct phy_companion *comparator; 36 void __iomem *pll_ctrl_base; 37 void __iomem *phy_base; 38 struct device *dev; 39 struct device *control_dev; 40 struct clk *wkupclk; 41 struct clk *optclk; 42 u8 flags; 43}; 44 45struct usb_phy_data { 46 const char *label; 47 u8 flags; 48}; 49 50/* Driver Flags */ 51#define OMAP_USB2_HAS_START_SRP (1 << 0) 52#define OMAP_USB2_HAS_SET_VBUS (1 << 1) 53#define OMAP_USB2_CALIBRATE_FALSE_DISCONNECT (1 << 2) 54 55#define phy_to_omapusb(x) container_of((x), struct omap_usb, phy) 56 57#if defined(CONFIG_OMAP_USB2) || defined(CONFIG_OMAP_USB2_MODULE) 58extern int omap_usb2_set_comparator(struct phy_companion *comparator); 59#else 60static inline int omap_usb2_set_comparator(struct phy_companion *comparator) 61{ 62 return -ENODEV; 63} 64#endif 65 66static inline u32 omap_usb_readl(void __iomem *addr, unsigned offset) 67{ 68 return __raw_readl(addr + offset); 69} 70 71static inline void omap_usb_writel(void __iomem *addr, unsigned offset, 72 u32 data) 73{ 74 __raw_writel(data, addr + offset); 75} 76 77#endif /* __DRIVERS_OMAP_USB_H */ 78