Index: arch/arm/mach-tegra/nv/include/nvddk_usbphy.h |
diff --git a/arch/arm/mach-tegra/nv/include/nvddk_usbphy.h b/arch/arm/mach-tegra/nv/include/nvddk_usbphy.h |
new file mode 100755 |
index 0000000000000000000000000000000000000000..ef1be673e8d46102ca4490966b9c01fa484291b0 |
--- /dev/null |
+++ b/arch/arm/mach-tegra/nv/include/nvddk_usbphy.h |
@@ -0,0 +1,330 @@ |
+/* |
+ * Copyright (c) 2009 NVIDIA Corporation. |
+ * All rights reserved. |
+ * |
+ * Redistribution and use in source and binary forms, with or without |
+ * modification, are permitted provided that the following conditions are met: |
+ * |
+ * Redistributions of source code must retain the above copyright notice, |
+ * this list of conditions and the following disclaimer. |
+ * |
+ * Redistributions in binary form must reproduce the above copyright notice, |
+ * this list of conditions and the following disclaimer in the documentation |
+ * and/or other materials provided with the distribution. |
+ * |
+ * Neither the name of the NVIDIA Corporation nor the names of its contributors |
+ * may be used to endorse or promote products derived from this software |
+ * without specific prior written permission. |
+ * |
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
+ * POSSIBILITY OF SUCH DAMAGE. |
+ * |
+ */ |
+ |
+/** |
+ * @file |
+ * @brief <b>NVIDIA Driver Development Kit: |
+ * NvDDK USB PHY functions</b> |
+ * |
+ * @b Description: Defines USB PHY private functions |
+ * |
+ */ |
+ |
+#ifndef INCLUDED_NVDDK_USBPHY_H |
+#define INCLUDED_NVDDK_USBPHY_H |
+ |
+#include "nvcommon.h" |
+#include "nvrm_init.h" |
+#include "nvos.h" |
+ |
+ |
+#if defined(__cplusplus) |
+extern "C" |
+{ |
+#endif |
+ |
+ |
+/** |
+ * Opaque handle to a Usb phy device. |
+ */ |
+typedef struct NvDdkUsbPhyRec *NvDdkUsbPhyHandle; |
+ |
+ |
+/** |
+ * Enum defining USB Phy-specific IOCTL types. |
+ */ |
+typedef enum |
+{ |
+ /** |
+ * Gets the USB VBUS status. |
+ * |
+ * @par Inputs: |
+ * None. |
+ * |
+ * @par Outputs: |
+ * ::NvDdkUsbPhyIoctl_VBusStatusOutputArgs. |
+ * |
+ * @retval NvError_Success |
+ * @retval NvError_BadParameter Output Argument is invalid. |
+ */ |
+ NvDdkUsbPhyIoctlType_VBusStatus, |
+ |
+ /** |
+ * Configures the VBUS Interrupt. |
+ * |
+ * @par Inputs: |
+ * ::NvDdkUsbPhyIoctl_VBusInterruptInputArgs. |
+ * |
+ * @par Outputs: |
+ * None. |
+ * |
+ * @retval NvError_Success |
+ * @retval NvError_BadParameter Input Argument is invalid. |
+ */ |
+ NvDdkUsbPhyIoctlType_VBusInterrupt, |
+ |
+ /** |
+ * Gets the USB ID pin status. |
+ * |
+ * @par Inputs: |
+ * None. |
+ * |
+ * @par Outputs: |
+ * ::NvDdkUsbPhyIoctl_IdPinStatusOutputArgs. |
+ * |
+ * @retval NvError_Success |
+ * @retval NvError_BadParameter Output Argument is invalid. |
+ */ |
+ NvDdkUsbPhyIoctlType_IdPinStatus, |
+ |
+ /** |
+ * Configures the USB Id pin Interrupt. |
+ * |
+ * @par Inputs: |
+ * ::NvDdkUsbPhyIoctl_IdPinInterruptInputArgs. |
+ * |
+ * @par Outputs: |
+ * None. |
+ * |
+ * @retval NvError_Success |
+ * @retval NvError_BadParameter Input Argument is invalid. |
+ */ |
+ NvDdkUsbPhyIoctlType_IdPinInterrupt, |
+ |
+ /** |
+ * Gets the USB Dedicated charger status. |
+ * |
+ * @par Inputs: |
+ * None. |
+ * |
+ * @par Outputs: |
+ * ::NvDdkUsbPhyIoctl_DedicatedChargerStatusOutputArgs. |
+ * |
+ * @retval NvError_Success |
+ * @retval NvError_BadParameter Output Argument is invalid. |
+ */ |
+ NvDdkUsbPhyIoctlType_DedicatedChargerStatus, |
+ |
+ /** |
+ * Configures the USB dedicated charger detection. |
+ * |
+ * @par Inputs: |
+ * ::NvDdkUsbPhyIoctl_DedicatedChargerDetectionInputArgs. |
+ * |
+ * @par Outputs: |
+ * None. |
+ * |
+ * @retval NvError_Success |
+ * @retval NvError_BadParameter Input Argument is invalid. |
+ */ |
+ NvDdkUsbPhyIoctlType_DedicatedChargerDetection, |
+ |
+ /** |
+ * Configures the Busy hints for the USB controller |
+ * |
+ * @par Inputs: |
+ * ::NvDdkUsbPhyIoctl_UsbBusyHintsOnOffInputArgs. |
+ * |
+ * @par Outputs: |
+ * None. |
+ * |
+ * @retval NvError_Success |
+ * @retval NvError_BadParameter Input Argument is invalid. |
+ */ |
+ NvDdkUsbPhyIoctlType_UsbBusyHintsOnOff, |
+ |
+ |
+ NvDdkUsbPhyIoctlType_Num, |
+ /** |
+ * Ignore -- Forces compilers to make 32-bit enums. |
+ */ |
+ NvDdkUsbPhyIoctlType_Force32 = 0x7FFFFFFF |
+} NvDdkUsbPhyIoctlType; |
+ |
+/** |
+ * VBUS status IOCTL output arguments. |
+ */ |
+typedef struct NvDdkUsbPhyIoctl_VBusStatusOutputArgsRec |
+{ |
+ // VBUS status: If Set to NV_TRUE VBUS is detected else VBUS is not detected. |
+ NvBool VBusDetected; |
+} NvDdkUsbPhyIoctl_VBusStatusOutputArgs; |
+ |
+/** |
+ * VBUS Interrupt configuration IOCTL input arguments. |
+ */ |
+typedef struct NvDdkUsbPhyIoctl_VBusInterruptInputArgsRec |
+{ |
+ // VBUS Interrupt: If Set to NV_TRUE VBUS interrupt is enabled else disabled. |
+ NvBool EnableVBusInterrupt; |
+} NvDdkUsbPhyIoctl_VBusInterruptInputArgs; |
+ |
+/** |
+ * USB Id pin status IOCTL output arguments. |
+ */ |
+typedef struct NvDdkUsbPhyIoctl_IdPinStatusOutputArgsRec |
+{ |
+ // VBUS status: If Set to NV_TRUE Id pin is low else Id pin is high. |
+ NvBool IdPinSetToLow; |
+} NvDdkUsbPhyIoctl_IdPinStatusOutputArgs; |
+ |
+/* |
+ * USB Id pin Interrupt configuration IOCTL input arguments. |
+ */ |
+typedef struct NvDdkUsbPhyIoctl_IdPinInterruptInputArgsRec |
+{ |
+ // VBUS Interrupt: If Set to NV_TRUE Id pin interrupt is enabled else disabled. |
+ NvBool EnableIdPinInterrupt; |
+} NvDdkUsbPhyIoctl_IdPinInterruptInputArgs; |
+ |
+ |
+/** |
+ * USB dedicated charger status IOCTL output arguments. |
+ */ |
+typedef struct NvDdkUsbPhyIoctl_DedicatedChargerStatusOutputArgsRec |
+{ |
+ // Dedicated Charger status: If Set to NV_TRUE charger is detected else Id not detected. |
+ NvBool ChargerDetected; |
+} NvDdkUsbPhyIoctl_DedicatedChargerStatusOutputArgs; |
+ |
+/* |
+ * USB dedicated charger configuration IOCTL input arguments. |
+ */ |
+typedef struct NvDdkUsbPhyIoctl_DedicatedChargerDetectionInputArgsRec |
+{ |
+ // Charger Interrupt: If Set to NV_TRUE charger interrupt is enabled else disabled. |
+ NvBool EnableChargerInterrupt; |
+ // Charger detection: If set to NV_TRUE enables the charger detection else disables. |
+ NvBool EnableChargerDetection; |
+} NvDdkUsbPhyIoctl_DedicatedChargerDetectionInputArgs; |
+ |
+ |
+ |
+/** |
+ * USB busy hints configuration IOCTL input arguments. |
+ */ |
+typedef struct NvDdkUsbPhyIoctl_UsbBusyHintsOnOffInputArgsRec |
+{ |
+ // Busy hints on/off: If set to NV_TRUE enables the busy hintson else disables. |
+ NvBool OnOff; |
+ // Requested boost duration in milliseconds. |
+ // if BoostDurationMs = NV_WAIT_INFINITE, then busy hints will be on untill |
+ // busy hints are off. This is valid only if OnOff = NV_TRUE |
+ NvU32 BoostDurationMs; |
+} NvDdkUsbPhyIoctl_UsbBusyHintsOnOffInputArgs; |
+ |
+ |
+/** |
+ * Opens the Usb Phy, allocates the resources and initializes the phy. |
+ * |
+ * @param hRmDevice Handle to the Rm device, which is required to |
+ * acquire the resources from RM. |
+ * @param Instance Instance of specific device. |
+ * @param hUsbPhy returns the USB phy handle. |
+ * |
+ * @retval NvSuccess |
+ * @retval NvError_Timeout If phy clock is not stable in expected time. |
+ */ |
+NvError NvDdkUsbPhyOpen( |
+ NvRmDeviceHandle hRm, |
+ NvU32 Instance, |
+ NvDdkUsbPhyHandle *hUsbPhy); |
+ |
+/** |
+ * Power down the Phy safely and release all the resources allocated. |
+ * |
+ * @param hUsbPhy Handle acquired during the NvDdkUsbPhyOpen() call. |
+ * |
+ */ |
+void NvDdkUsbPhyClose(NvDdkUsbPhyHandle hUsbPhy); |
+ |
+/** |
+ * Powers up the device. It could be taking out of low power mode or |
+ * reinitializing. |
+ * |
+ * @param hUsbPhy Handle acquired during the NvDdkUsbPhyOpen() call. |
+ * @param IsHostMode indicates the host mode or not. |
+ * @param IsDpd Deep sleep power up or not . |
+ * |
+ * @retval NvSuccess |
+ * @retval NvError_Timeout If phy clock is not stable in expected time. |
+ */ |
+NvError NvDdkUsbPhyPowerUp(NvDdkUsbPhyHandle hUsbPhy, NvBool IsHostMode, NvBool IsDpd); |
+ |
+/** |
+ * Powers down the PHY. It could be low power mode or shutdown. |
+ * |
+ * @param hUsbPhy Handle acquired during the NvDdkUsbPhyOpen() call. |
+ * @param IsHostMode indicates the host mode or not. |
+ * @param IsDpd Handle Deep sleep power down or not . |
+ * |
+ * @retval NvSuccess |
+ */ |
+NvError NvDdkUsbPhyPowerDown(NvDdkUsbPhyHandle hUsbPhy, NvBool IsHostMode, NvBool IsDpd); |
+ |
+/** |
+ * Perform an I/O control operation on the device. |
+ * |
+ * @param hBlockDev Handle acquired during the NvDdkXxxBlockDevOpen() call. |
+ * @param IoctlType Type of control operation to perform. |
+ * @param InputArgs A pointer to input arguments buffer. |
+ * @param OutputArgs A pointer to output arguments buffer. |
+ * |
+ * @retval NvError_Success IOCTL is successful. |
+ * @retval NvError_NotSupported \a Opcode is not recognized. |
+ * @retval NvError_InvalidParameter \a InputArgs or \a OutputArgs is |
+ * incorrect. |
+ */ |
+NvError NvDdkUsbPhyIoctl( |
+ NvDdkUsbPhyHandle hUsbPhy, |
+ NvDdkUsbPhyIoctlType IoctlType, |
+ const void *InputArgs, |
+ void *OutputArgs); |
+ |
+/** |
+ * Waits until Phy clock is stable. |
+ * |
+ * @param hUsbPhy Handle acquired during the NvDdkUsbPhyOpen() call. |
+ * |
+ * @retval NvSuccess If phy clock is stable. |
+ * @retval NvError_Timeout If phy clock is not stable in expected time. |
+ */ |
+NvError NvDdkUsbPhyWaitForStableClock(NvDdkUsbPhyHandle hUsbPhy); |
+ |
+ |
+#if defined(__cplusplus) |
+} |
+#endif |
+ |
+/** @}*/ |
+#endif // INCLUDED_NVDDK_USBPHY_H |
+ |