Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(455)

Unified Diff: arch/arm/mach-tegra/nv/include/nvddk_usbphy.h

Issue 3256004: [ARM] tegra: add nvos/nvrm/nvmap drivers (Closed) Base URL: ssh://git@gitrw.chromium.org/kernel.git
Patch Set: remove ap15 headers Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvddk_uart.h ('k') | arch/arm/mach-tegra/nv/include/nvec.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
+
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvddk_uart.h ('k') | arch/arm/mach-tegra/nv/include/nvec.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698