| Index: arch/arm/mach-tegra/nv/include/nvodm_services.h
|
| diff --git a/arch/arm/mach-tegra/nv/include/nvodm_services.h b/arch/arm/mach-tegra/nv/include/nvodm_services.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..904821ca80490d10ee706ad50499bd9e03ea8276
|
| --- /dev/null
|
| +++ b/arch/arm/mach-tegra/nv/include/nvodm_services.h
|
| @@ -0,0 +1,1694 @@
|
| +/*
|
| + * Copyright (c) 2007-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
|
| + * <b>NVIDIA Tegra ODM Kit:
|
| + * ODM Services API</b>
|
| + *
|
| + * @b Description: Defines the abstraction to SOC resources used by
|
| + * external peripherals.
|
| + */
|
| +
|
| +#ifndef INCLUDED_NVODM_SERVICES_H
|
| +#define INCLUDED_NVODM_SERVICES_H
|
| +
|
| +// Using addtogroup when defgroup resides in another file
|
| +/**
|
| + * @addtogroup nvodm_services
|
| + * @{
|
| + */
|
| +
|
| +#include "nvcommon.h"
|
| +#include "nvodm_modules.h"
|
| +#include "nvassert.h"
|
| +#include "nvcolor.h"
|
| +#include "nvodm_query_pinmux.h"
|
| +#include "nvodm_query.h"
|
| +
|
| +#if defined(__cplusplus)
|
| +extern "C"
|
| +{
|
| +#endif
|
| +
|
| +/*
|
| + * This header is split into two sections: OS abstraction APIs and basic I/O
|
| + * driver APIs.
|
| + */
|
| +
|
| +/** @name OS Abstraction APIs
|
| + * The Operating System APIs are portable to any NVIDIA-supported operating
|
| + * system and will appear in all of the engineering sample code.
|
| + */
|
| +/*@{*/
|
| +
|
| +/**
|
| + * Outputs a message to the console, if present. Do not use this for
|
| + * interacting with a user from an application.
|
| + *
|
| + * @param format A pointer to the format string. The format string and variable
|
| + * parameters exactly follow the posix printf standard.
|
| + */
|
| +void
|
| +NvOdmOsPrintf( const char *format, ...);
|
| +
|
| +/**
|
| + * Outputs a message to the debugging console, if present. Do not use this for
|
| + * interacting with a user from an application.
|
| + *
|
| + * @param format A pointer to the format string. The format string and variable
|
| + * parameters exactly follow the posix printf standard.
|
| + */
|
| +void
|
| +NvOdmOsDebugPrintf( const char *format, ... );
|
| +
|
| +/**
|
| + * Dynamically allocates memory. Alignment, if desired, must be done by the
|
| + * caller.
|
| + *
|
| + * @param size The size, in bytes, of the allocation request.
|
| + */
|
| +void *
|
| +NvOdmOsAlloc(size_t size);
|
| +
|
| +/**
|
| + * Frees a dynamic memory allocation.
|
| + *
|
| + * Freeing a NULL value is supported.
|
| + *
|
| + * @param ptr A pointer to the memory to free, which should be from NvOdmOsAlloc().
|
| + */
|
| +void
|
| +NvOdmOsFree(void *ptr);
|
| +
|
| +typedef struct NvOdmOsMutexRec *NvOdmOsMutexHandle;
|
| +typedef struct NvOdmOsSemaphoreRec *NvOdmOsSemaphoreHandle;
|
| +typedef struct NvOdmOsThreadRec *NvOdmOsThreadHandle;
|
| +
|
| +/**
|
| + * Copies a specified number of bytes from a source memory location to
|
| + * a destination memory location.
|
| + *
|
| + * @param dest A pointer to the destination of the copy.
|
| + * @param src A pointer to the source memory.
|
| + * @param size The length of the copy in bytes.
|
| + */
|
| +void
|
| +NvOdmOsMemcpy(void *dest, const void *src, size_t size);
|
| +
|
| +/**
|
| + * Sets a region of memory to a value.
|
| + *
|
| + * @param s A pointer to the memory region.
|
| + * @param c The value to set.
|
| + * @param size The length of the region in bytes.
|
| + */
|
| +void
|
| +NvOdmOsMemset(void *s, NvU8 c, size_t size);
|
| +
|
| +/**
|
| + * Create a new mutex.
|
| + *
|
| + * @note Mutexes can be locked recursively; if a thread owns the lock,
|
| + * it can lock it again as long as it unlocks it an equal number of times.
|
| + *
|
| + * @return NULL on failure.
|
| + */
|
| +NvOdmOsMutexHandle
|
| +NvOdmOsMutexCreate( void );
|
| +
|
| +/**
|
| + * Locks the given unlocked mutex.
|
| + *
|
| + * @note This is a recursive lock.
|
| + *
|
| + * @param mutex The mutex to lock.
|
| + */
|
| +void
|
| +NvOdmOsMutexLock( NvOdmOsMutexHandle mutex );
|
| +
|
| +/**
|
| + * Unlock a locked mutex.
|
| + *
|
| + * A mutex must be unlocked exactly as many times as it has been locked.
|
| + *
|
| + * @param mutex The mutex to unlock.
|
| + */
|
| +void
|
| +NvOdmOsMutexUnlock( NvOdmOsMutexHandle mutex );
|
| +
|
| +/**
|
| + * Frees the resources held by a mutex.
|
| + *
|
| + * @param mutex The mutex to destroy. Passing a NULL mutex is supported.
|
| + */
|
| +void
|
| +NvOdmOsMutexDestroy( NvOdmOsMutexHandle mutex );
|
| +
|
| +/**
|
| + * Creates a counting semaphore.
|
| + *
|
| + * @param value The initial semaphore value.
|
| + *
|
| + * @return NULL on failure.
|
| + */
|
| +NvOdmOsSemaphoreHandle
|
| +NvOdmOsSemaphoreCreate( NvU32 value );
|
| +
|
| +/**
|
| + * Waits until the semaphore value becomes non-zero.
|
| + *
|
| + * @param semaphore The semaphore for which to wait.
|
| + */
|
| +void
|
| +NvOdmOsSemaphoreWait( NvOdmOsSemaphoreHandle semaphore );
|
| +
|
| +/**
|
| + * Waits for the given semaphore value to become non-zero with timeout.
|
| + *
|
| + * @param semaphore The semaphore for which to wait.
|
| + * @param msec The timeout value in milliseconds. Use ::NV_WAIT_INFINITE
|
| + * to wait forever.
|
| + *
|
| + * @return NV_FALSE if the wait expires.
|
| + */
|
| +NvBool
|
| +NvOdmOsSemaphoreWaitTimeout( NvOdmOsSemaphoreHandle semaphore, NvU32 msec );
|
| +
|
| +/**
|
| + * Increments the semaphore value.
|
| + *
|
| + * @param semaphore The semaphore to signal.
|
| + */
|
| +void
|
| +NvOdmOsSemaphoreSignal( NvOdmOsSemaphoreHandle semaphore );
|
| +
|
| +/**
|
| + * Frees resources held by the semaphore.
|
| + *
|
| + * @param semaphore The semaphore to destroy. Passing in a NULL semaphore
|
| + * is supported (no op).
|
| + */
|
| +void
|
| +NvOdmOsSemaphoreDestroy( NvOdmOsSemaphoreHandle semaphore );
|
| +
|
| +/**
|
| + * Entry point for a thread.
|
| + */
|
| +typedef void (*NvOdmOsThreadFunction)(void *args);
|
| +
|
| +/**
|
| + * Creates a thread.
|
| + *
|
| + * @param function The thread entry point.
|
| + * @param args The thread arguments.
|
| + *
|
| + * @return The thread handle, or NULL on failure.
|
| + */
|
| +NvOdmOsThreadHandle
|
| +NvOdmOsThreadCreate(
|
| + NvOdmOsThreadFunction function,
|
| + void *args);
|
| +
|
| +/**
|
| + * Waits for the given thread to exit.
|
| + *
|
| + * The joined thread will be destroyed automatically. All OS resources
|
| + * will be reclaimed. There is no method for terminating a thread
|
| + * before it exits naturally.
|
| + *
|
| + * Passing in a NULL thread ID is ok (no op).
|
| + *
|
| + * @param thread The thread to wait for.
|
| + */
|
| +void
|
| +NvOdmOsThreadJoin(NvOdmOsThreadHandle thread);
|
| +
|
| +/**
|
| + * Unschedules the calling thread for at least the given
|
| + * number of milliseconds.
|
| + *
|
| + * Other threads may run during the sleep time.
|
| + *
|
| + * @param msec The number of milliseconds to sleep. This API should not be
|
| + * called from an ISR, can be called from the IST though!
|
| + */
|
| +void
|
| +NvOdmOsSleepMS(NvU32 msec);
|
| +
|
| +
|
| +/**
|
| + * Stalls the calling thread for at least the given number of
|
| + * microseconds. The actual time waited might be longer, so you cannot
|
| + * depend on this function for precise timing.
|
| + *
|
| + * @note It is safe to use this function at ISR time.
|
| + *
|
| + * @param usec The number of microseconds to wait.
|
| + */
|
| +void
|
| +NvOdmOsWaitUS(NvU32 usec);
|
| +
|
| +/**
|
| + * Gets the system time in milliseconds.
|
| + * The returned values are guaranteed to be monotonically increasing,
|
| + * but may wrap back to zero (after about 50 days of runtime).
|
| + *
|
| + * @return The system time in milliseconds.
|
| + */
|
| +NvU32
|
| +NvOdmOsGetTimeMS(void);
|
| +
|
| +/// Defines possible operating system types.
|
| +typedef enum
|
| +{
|
| + NvOdmOsOs_Unknown,
|
| + NvOdmOsOs_Windows,
|
| + NvOdmOsOs_Linux,
|
| + NvOdmOsOs_Aos,
|
| + NvOdmOsOs_Force32 = 0x7fffffffUL,
|
| +} NvOdmOsOs;
|
| +
|
| +/// Defines possible operating system SKUs.
|
| +typedef enum
|
| +{
|
| + NvOdmOsSku_Unknown,
|
| + NvOdmOsSku_CeBase,
|
| + NvOdmOsSku_Mobile_SmartFon,
|
| + NvOdmOsSku_Mobile_PocketPC,
|
| + NvOdmOsSku_Android,
|
| + NvOdmOsSku_Force32 = 0x7fffffffUL,
|
| +} NvOdmOsSku;
|
| +
|
| +/// Defines the OS information record.
|
| +typedef struct NvOdmOsOsInfoRec
|
| +{
|
| + NvOdmOsOs OsType;
|
| + NvOdmOsSku Sku;
|
| + NvU16 MajorVersion;
|
| + NvU16 MinorVersion;
|
| + NvU32 SubVersion;
|
| + NvU32 Caps;
|
| +} NvOdmOsOsInfo;
|
| +
|
| +/**
|
| + * Gets the current OS version.
|
| + *
|
| + * @param pOsInfo A pointer to the OS version.
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmOsGetOsInformation( NvOdmOsOsInfo *pOsInfo );
|
| +
|
| +/*@}*/
|
| +/** @name Basic I/O Driver APIs
|
| + * The basic I/O driver APIs are a set of common input/outputs
|
| + * that can be used to extend the functionality of the software stack
|
| + * for new devices that aren't explicity handled by the stack.
|
| + * GPIO, I2C, and SPI are currently supported.
|
| +*/
|
| +/*@{*/
|
| +
|
| +/**
|
| + * Defines an opaque handle to the ODM Services GPIO rec interface.
|
| + */
|
| +typedef struct NvOdmServicesGpioRec *NvOdmServicesGpioHandle;
|
| +/**
|
| + * Defines an opaque handle to the ODM Services GPIO intr interface.
|
| + */
|
| +typedef struct NvOdmServicesGpioIntrRec *NvOdmServicesGpioIntrHandle;
|
| +/**
|
| + * Defines an opaque handle to the ODM Services SPI interface.
|
| + */
|
| +typedef struct NvOdmServicesSpiRec *NvOdmServicesSpiHandle;
|
| +/**
|
| + * Defines an opaque handle to the ODM Services I2C interface.
|
| + */
|
| +typedef struct NvOdmServicesI2cRec *NvOdmServicesI2cHandle;
|
| +/**
|
| + * Defines an opaque handle to the ODM Services PMU interface.
|
| + */
|
| +typedef struct NvOdmServicesPmuRec *NvOdmServicesPmuHandle;
|
| +/**
|
| + * Defines an opaque handle to the ODM Services PWM interface.
|
| + */
|
| +typedef struct NvOdmServicesPwmRec *NvOdmServicesPwmHandle;
|
| +/**
|
| + * Defines an opaque handle to the ODM Services key list interface.
|
| + */
|
| +typedef struct NvOdmServicesKeyList *NvOdmServicesKeyListHandle;
|
| +
|
| +/**
|
| + * Defines an interrupt handler.
|
| + */
|
| +typedef void (*NvOdmInterruptHandler)(void *args);
|
| +
|
| +/**
|
| + * @brief Defines the possible GPIO pin modes.
|
| + */
|
| +typedef enum
|
| +{
|
| + /// Specifies that that the pin is tristated, which will consume less power.
|
| + NvOdmGpioPinMode_Tristate = 1,
|
| +
|
| + /// Specifies input mode with active low interrupt.
|
| + NvOdmGpioPinMode_InputInterruptLow,
|
| +
|
| + /// Specifies input mode with active high interrupt.
|
| + NvOdmGpioPinMode_InputInterruptHigh,
|
| +
|
| + /// Specifies input mode with no events.
|
| + NvOdmGpioPinMode_InputData,
|
| +
|
| + /// Specifies output mode.
|
| + NvOdmGpioPinMode_Output,
|
| +
|
| + /// Specifies special function.
|
| + NvOdmGpioPinMode_Function,
|
| +
|
| + /// Specifies input and interrupt on any edge.
|
| + NvOdmGpioPinMode_InputInterruptAny,
|
| +
|
| + /// Specifies input and interrupt on rising edge.
|
| + NvOdmGpioPinMode_InputInterruptRisingEdge,
|
| +
|
| + /// Specifies output and interrupt on falling edge.
|
| + NvOdmGpioPinMode_InputInterruptFallingEdge,
|
| +
|
| + /// Ignore -- Forces compilers to make 32-bit enums.
|
| + NvOdmGpioPinMode_Force32 = 0x7fffffff
|
| +
|
| +} NvOdmGpioPinMode;
|
| +
|
| +/**
|
| + * Defines the opaque handle to the GPIO pin.
|
| + */
|
| +typedef struct NvOdmGpioPinRec *NvOdmGpioPinHandle;
|
| +
|
| +/**
|
| + * Creates and opens a GPIO handle. The handle can then be used to
|
| + * access GPIO functions.
|
| + *
|
| + * @see NvOdmGpioClose
|
| + *
|
| + * @return The handle to the GPIO controller, or NULL if an error occurred.
|
| + */
|
| +NvOdmServicesGpioHandle NvOdmGpioOpen(void);
|
| +
|
| +/**
|
| + * Closes the GPIO handle. Any pin settings made while this handle is
|
| + * open will remain. All events enabled by this handle are
|
| + * disabled.
|
| + *
|
| + * @see NvOdmGpioOpen
|
| + *
|
| + * @param hOdmGpio The GPIO handle.
|
| + */
|
| +void NvOdmGpioClose(NvOdmServicesGpioHandle hOdmGpio);
|
| +
|
| +/**
|
| + * Acquires a pin handle to be used in subsequent calls to
|
| + * access the pin.
|
| + *
|
| + * @see NvOdmGpioClose
|
| + *
|
| + * @param hOdmGpio The GPIO handle.
|
| + * @param port The port.
|
| + * @param Pin The pin for which to return the handle.
|
| + *
|
| + * @return The pin handle, or NULL if an error occurred.
|
| + */
|
| +NvOdmGpioPinHandle
|
| +NvOdmGpioAcquirePinHandle(NvOdmServicesGpioHandle hOdmGpio,
|
| + NvU32 port, NvU32 Pin);
|
| +
|
| +/**
|
| + * Releases the pin handle that was acquired by NvOdmGpioAcquirePinHandle()
|
| + * and used by the rest of the GPIO ODM APIs.
|
| + *
|
| + * @see NvOdmGpioAcquirePinHandle
|
| + *
|
| + * @param hOdmGpio The GPIO handle.
|
| + * @param hPin The pin handle to release.
|
| + */
|
| +void
|
| +NvOdmGpioReleasePinHandle(NvOdmServicesGpioHandle hOdmGpio,
|
| + NvOdmGpioPinHandle hPin);
|
| +/**
|
| + * Sets the output state of a set of GPIO pins.
|
| + *
|
| + * @see NvOdmGpioOpen, NvOdmGpioGetState
|
| + *
|
| + * @param hOdmGpio The GPIO handle.
|
| + * @param hGpioPin The pin handle.
|
| + * @param PinValue The pin state to set. 0 means drive low, 1 means drive high.
|
| + */
|
| +void
|
| +NvOdmGpioSetState(NvOdmServicesGpioHandle hOdmGpio,
|
| + NvOdmGpioPinHandle hGpioPin,
|
| + NvU32 PinValue);
|
| +
|
| +/**
|
| + * Gets the output state of a specified set of GPIO pins in the port.
|
| + *
|
| + * @see NvOdmGpioOpen, NvOdmGpioSetState
|
| + *
|
| + * @param hOdmGpio The GPIO handle.
|
| + * @param hGpioPin The pin handle.
|
| + * @param pPinStateValue A pointer to the returned current state of the pin.
|
| + */
|
| +void
|
| +NvOdmGpioGetState(NvOdmServicesGpioHandle hOdmGpio,
|
| + NvOdmGpioPinHandle hGpioPin,
|
| + NvU32 *pPinStateValue);
|
| +
|
| +/**
|
| + * Configures the GPIO to specific mode. Don't use this API to configure the pin
|
| + * as interrupt pin, instead use the NvOdmGpioInterruptRegister
|
| + * and NvOdmGpioInterruptUnregister APIs which internally call this function.
|
| + *
|
| + * @param hOdmGpio The GPIO handle.
|
| + * @param hGpioPin The pin handle.
|
| + * @param Mode The mode type to configure.
|
| + */
|
| +void
|
| +NvOdmGpioConfig(NvOdmServicesGpioHandle hOdmGpio,
|
| + NvOdmGpioPinHandle hGpioPin,
|
| + NvOdmGpioPinMode Mode);
|
| +
|
| +/**
|
| + * Registers an interrupt callback function and the mode of interrupt for the
|
| + * GPIO pin specified.
|
| + *
|
| + * Callback uses the interrupt thread and the interrupt stack on Linux
|
| + * and IST on Windows CE; so, care should be taken on all the APIs used in
|
| + * the callback function.
|
| + *
|
| + * Interrupts are masked when they are triggered. It is up to the caller to
|
| + * re-enable the interrupts by calling NvOdmGpioInterruptDone().
|
| + *
|
| + * @param hOdmGpio The GPIO handle.
|
| + * @param hGpioIntr A pointer to the GPIO interrupt handle. Use this
|
| + * handle while unregistering the interrupt. On failure to hook
|
| + * up the interrupt, a NULL handle is returned.
|
| + * @param hGpioPin The pin handle.
|
| + * @param Mode The mode type to configure. Allowed mode values are:
|
| + * - NvOdmGpioPinMode_InputInterruptFallingEdge
|
| + * - NvOdmGpioPinMode_InputInterruptRisingEdge
|
| + * - NvOdmGpioPinMode_InputInterruptAny
|
| + * - NvOdmGpioPinMode_InputInterruptLow
|
| + * - NvOdmGpioPinMode_InputInterruptHigh
|
| + *
|
| + * @param Callback The callback function that is called when
|
| + * the interrupt triggers.
|
| + * @param arg The argument used when the callback is called by the ISR.
|
| + * @param DebounceTime The debounce time in milliseconds.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmGpioInterruptRegister(NvOdmServicesGpioHandle hOdmGpio,
|
| + NvOdmServicesGpioIntrHandle *hGpioIntr,
|
| + NvOdmGpioPinHandle hGpioPin,
|
| + NvOdmGpioPinMode Mode,
|
| + NvOdmInterruptHandler Callback,
|
| + void *arg,
|
| + NvU32 DebounceTime);
|
| +
|
| +/**
|
| + * Client of GPIO interrupt to re-enable the interrupt after
|
| + * the handling the interrupt.
|
| + *
|
| + * @param handle GPIO interrupt handle returned by a sucessfull call to
|
| + * NvOdmGpioInterruptRegister().
|
| + */
|
| +void NvOdmGpioInterruptDone( NvOdmServicesGpioIntrHandle handle );
|
| +
|
| +/**
|
| + * Mask/Unmask a gpio interrupt.
|
| + *
|
| + * Drivers can use this API to fend off interrupts. Mask means interrupts are
|
| + * not forwarded to the CPU. Unmask means, interrupts are forwarded to the CPU.
|
| + * In case of SMP systems, this API masks the interrutps to all the CPU, not
|
| + * just the calling CPU.
|
| + *
|
| + *
|
| + * @param handle Interrupt handle returned by NvOdmGpioInterruptRegister API.
|
| + * @param mask NV_FALSE to forrward the interrupt to CPU. NV_TRUE to
|
| + * mask the interupts to CPU.
|
| + */
|
| +void
|
| +NvOdmGpioInterruptMask(NvOdmServicesGpioIntrHandle handle, NvBool mask);
|
| +
|
| +/**
|
| + * Unregisters the GPIO interrupt handler.
|
| + *
|
| + * @param hOdmGpio The GPIO handle.
|
| + * @param hGpioPin The pin handle.
|
| + * @param handle The interrupt handle returned by a successfull call to
|
| + * NvOdmGpioInterruptRegister().
|
| + *
|
| + */
|
| +void
|
| +NvOdmGpioInterruptUnregister(NvOdmServicesGpioHandle hOdmGpio,
|
| + NvOdmGpioPinHandle hGpioPin,
|
| + NvOdmServicesGpioIntrHandle handle);
|
| +
|
| +/**
|
| + * Obtains a handle that can be used to access one of the serial peripheral
|
| + * interface (SPI) controllers.
|
| + *
|
| + * There may be one or more instances of the SPI, depending upon the SOC,
|
| + * and these instances start from 0.
|
| + *
|
| + * @see NvOdmSpiClose
|
| + *
|
| + * @param OdmIoModule The ODM I/O module for the SFLASH, SPI, or SLINK.
|
| + * @param ControllerId The SPI controlled ID for which a handle is required.
|
| + * Valid SPI channel IDs start from 0.
|
| + *
|
| + *
|
| + * @return The handle to the SPI controller, or NULL if an error occurred.
|
| + */
|
| +NvOdmServicesSpiHandle NvOdmSpiOpen(NvOdmIoModule OdmIoModule, NvU32 ControllerId);
|
| +
|
| +/**
|
| + * Obtains a handle that can be used to access one of the serial peripheral
|
| + * interface (SPI) controllers, for SPI controllers which are multiplexed
|
| + * between multiple pin mux configurations. The SPI controller's pin mux
|
| + * will be reset to the specified value every transaction, so that two handles
|
| + * to the same controller may safely interleave across pin mux configurations.
|
| + *
|
| + * The ODM pin mux query for the specified controller must be
|
| + * NvOdmSpiPinMap_Multiplexed in order to create a handle using this function.
|
| + *
|
| + * There may be one or more instances of the SPI, depending upon the SOC,
|
| + * and these instances start from 0.
|
| + *
|
| + * Currently, this function is only supported for OdmIoModule_Spi, instance 2.
|
| + *
|
| + * @see NvOdmSpiClose
|
| + *
|
| + * @param OdmIoModule The ODM I/O module for the SFLASH, SPI, or SLINK.
|
| + * @param ControllerId The SPI controlled ID for which a handle is required.
|
| + * Valid SPI channel IDs start from 0.
|
| + * @param PinMap The pin mux configuration to use for every transaction.
|
| + *
|
| + * @return The handle to the SPI controller, or NULL if an error occurred.
|
| + */
|
| +NvOdmServicesSpiHandle
|
| +NvOdmSpiPinMuxOpen(NvOdmIoModule OdmIoModule,
|
| + NvU32 ControllerId,
|
| + NvOdmSpiPinMap PinMap);
|
| +
|
| +
|
| +/**
|
| + * Obtains a handle that can be used to access one of the serial peripheral
|
| + * interface (SPI) controllers in slave mode.
|
| + *
|
| + * There may be one or more instances of the SPI, depending upon the SOC,
|
| + * and these instances start from 0.
|
| + *
|
| + * @see NvOdmSpiClose
|
| + *
|
| + * @param OdmIoModule The ODM I/O module for the SFLASH, SPI, or SLINK.
|
| + * @param ControllerId The SPI controlled ID for which a handle is required.
|
| + * Valid SPI channel IDs start from 0.
|
| + *
|
| + *
|
| + * @return The handle to the SPI controller, or NULL if an error occurred.
|
| + */
|
| +NvOdmServicesSpiHandle NvOdmSpiSlaveOpen(NvOdmIoModule OdmIoModule, NvU32 ControllerId);
|
| +
|
| +
|
| +/**
|
| + * Releases a handle to an SPI controller. This API must be called once per
|
| + * successful call to NvOdmSpiOpen().
|
| + *
|
| + * @param hOdmSpi A SPI handle allocated in a call to \c NvOdmSpiOpen. If \em hOdmSpi
|
| + * is NULL, this API has no effect.
|
| + */
|
| +void NvOdmSpiClose(NvOdmServicesSpiHandle hOdmSpi);
|
| +
|
| +/**
|
| + * Performs an SPI controller transaction. Every SPI transaction is by
|
| + * definition a simultaneous read and write transaction, so there are no
|
| + * separate APIs for read versus write. However, if you only need to do a read or
|
| + * write, this API allows you to declare that you are not interested in the read
|
| + * data, or that the write data is not of interest.
|
| + *
|
| + * This is a blocking API. When it returns, all of the data has been sent out
|
| + * over the pins of the SOC (the transaction). This is true even if the read data
|
| + * is being discarded, as it cannot merely have been queued up.
|
| + *
|
| + * Several SPI transactions may be performed in a single call to this API, but
|
| + * only if all of the transactions are to the same chip select and have the same
|
| + * packet size.
|
| + *
|
| + * Transaction sizes from 1 bit to 32 bits are supported. However, all
|
| + * of the buffers in memory are byte-aligned. To perform one transaction,
|
| + * the \em Size argument should be:
|
| + *
|
| + * <tt> <!-- typewriter font formats this nicely in the output document -->
|
| + * (PacketSize + 7)/8
|
| + * </tt>
|
| + *
|
| + * To perform n transactions, \em Size should be:
|
| + *
|
| + * <tt>
|
| + * n*((PacketSize + 7)/8)
|
| + * </tt>
|
| + *
|
| + * Within a given
|
| + * transaction with the packet size larger than 8 bits, the bytes are stored in
|
| + * order of the MSB (most significant byte) first.
|
| + * The Packet is formed with the first Byte will be in MSB and then next byte
|
| + * will be in the next MSB towards the LSB.
|
| + *
|
| + * For the example, if One packet need to be send and its size is the 20 bit
|
| + * then it will require the 3 bytes in the pWriteBuffer and arrangement of the
|
| + * data are as follows:
|
| + * The packet is 0x000ABCDE (Packet with length of 20 bit).
|
| + * pWriteBuff[0] = 0x0A
|
| + * pWriteBuff[1] = 0xBC
|
| + * pWtriteBuff[2] = 0xDE
|
| + *
|
| + * The most significant bit will be transmitted first i.e. bit20 is transmitted
|
| + * first and bit 0 will be transmitted last.
|
| + *
|
| + * If the transmitted packet (command + receive data) is more than 32 like 33 and
|
| + * want to transfer in the single call (CS should be active) then it can be transmitted
|
| + * in following way:
|
| + * The transfer is command(8 bit)+Dummy(1bit)+Read (24 bit) = 33 bit of transfer.
|
| + * - Send 33 bit as 33 byte and each byte have the 1 valid bit, So packet bit length = 1 and
|
| + * bytes requested = 33.
|
| + * NvU8 pSendData[33], pRecData[33];
|
| + * pSendData[0] = (Comamnd >>7) & 0x1;
|
| + * pSendData[1] = (Command >> 6)& 0x1;
|
| + * ::::::::::::::
|
| + * pSendData[8] = DummyBit;
|
| + * pSendData[9] to pSendData[32] = 0;
|
| + * Call NvOdmSpiTransaction(hRmSpi,ChipSelect,ClockSpeedInKHz,pRecData, pSendData, 33,1);
|
| + * Now You will get the read data from pRecData[9] to pRecData[32] on bit 0 on each byte.
|
| + *
|
| + * - The 33 bit transfer can be also done as 11 byte and each byte have the 3 valid bits.
|
| + * This need to rearrange the command in the pSendData in such a way that each byte have the
|
| + * 3 valid bits.
|
| + * NvU8 pSendData[11], pRecData[11];
|
| + * pSendData[0] = (Comamnd >>4) & 0x7;
|
| + * pSendData[1] = (Command >> 1)& 0x7;
|
| + * pSendData[2] = (((Command)& 0x3) <<1) | DummyBit;
|
| + * pSendData[3] to pSendData[10] = 0;
|
| + *
|
| + * Call NvOdmSpiTransaction(hRmSpi, ChipSelect,ClockSpeedInKHz,pRecData, pSendData, 11,3);
|
| + * Now You will get the read data from pRecData[4] to pRecData[10] on lower 3 bits on each byte.
|
| + *
|
| + * Similarly the 33 bit transfer can also be done as 6 byte and each 2 bytes contain the 11 valid bits.
|
| + * Call NvOdmSpiTransaction(hRmSpi, ChipSelect,ClockSpeedInKHz,pRecData, pSendData, 6,11);
|
| + *
|
| + *
|
| + * \em ReadBuf and \em WriteBuf may be the same pointer, in which case the write
|
| + * data is destroyed as we read in the read data. Unless they are identical pointers,
|
| + * however, \em ReadBuf and \em WriteBuf must not overlap.
|
| + *
|
| + * @param hOdmSpi The SPI handle allocated in a call to NvOdmSpiOpen().
|
| + * @param ChipSelect Select with which of the several external devices (attached
|
| + * to a single controller) we are communicating. Chip select indices
|
| + * start at 0.
|
| + * @param ClockSpeedInKHz The speed in kHz on which the device can communicate.
|
| + * @param ReadBuf A pointer to buffer to be filled in with read data. If this
|
| + * pointer is NULL, the read data will be discarded.
|
| + * @param WriteBuf A pointer to a buffer from which to obtain write data. If this
|
| + * pointer is NULL, the write data will be all zeros.
|
| + * @param Size The size of \em ReadBuf and \em WriteBuf buffers in bytes.
|
| + * @param PacketSize The packet size in bits of each SPI transaction.
|
| + */
|
| +void
|
| +NvOdmSpiTransaction(
|
| + NvOdmServicesSpiHandle hOdmSpi,
|
| + NvU32 ChipSelect,
|
| + NvU32 ClockSpeedInKHz,
|
| + NvU8 *ReadBuf,
|
| + const NvU8 *WriteBuf,
|
| + NvU32 Size,
|
| + NvU32 PacketSize);
|
| +
|
| +
|
| +/**
|
| + * Starts an SPI controller read and write simultaneously in the slave mode.
|
| + *
|
| + * This is a nonblocking API, which starts the data transfer and returns
|
| + * to the caller without waiting for the data transfer completion.
|
| + *
|
| + * @note This API is only supported for the SPI handle, which is opened in
|
| + * slave mode using NvOdmSpiSlaveOpen(). This API asserts if the opened SPI
|
| + * handle is the master type.
|
| + *
|
| + * @see NvOdmSpiSlaveGetTransactionData
|
| + *
|
| + * @par Read or Write Transactions
|
| + *
|
| + * Every SPI transaction is by definition a simultaneous read and write
|
| + * transaction, so there are no separate APIs for read versus write.
|
| + * However, if you only need to start a read or write transaction, this API
|
| + * allows you to declare that you are not interested in the read data,
|
| + * or that the write data is not of interest. If only read
|
| + * is required to start, then the client can pass NV_TRUE to the \a IsReadTransfer
|
| + * parameter and a NULL pointer to \a pWriteBuffer. The state of the data out
|
| + * will be set by NvOdmQuerySpiIdleSignalState::IsIdleDataOutHigh
|
| + * in nvodm_query.h. Similarly, if the client wants to send data only
|
| + * then it can pass NV_FALSE to the \a IsReadTransfer parameter.
|
| + *
|
| + * @par Transaction Sizes
|
| + *
|
| + * Transaction sizes from 1 to 32 bits are supported. However, all of the
|
| + * packets are byte-aligned in memory. So, if \a packetBitLength is 12 bits
|
| + * then the client needs the 2nd byte for the 1 packet. New packets start from the
|
| + * new bytes, e.g., byte0 and byte1 contain the first packet and byte2 and byte3
|
| + * will contain the second packets.
|
| + *
|
| + * To perform one transaction, the \a BytesRequested argument should be:
|
| + * <pre>
|
| + * (PacketSizeInBits + 7)/8
|
| + * </pre>
|
| + *
|
| + * To perform \a n transactions, \a BytesRequested should be:
|
| + * <pre>
|
| + * n*((PacketSizeInBits + 7)/8)
|
| + * </pre>
|
| + *
|
| + * Within a given transaction with the packet size larger than 8 bits,
|
| + * the bytes are stored in the order of the LSB (least significant byte) first.
|
| + * The packet is formed with the first byte will be in LSB and then next byte
|
| + * will be in the next LSB towards the MSB.
|
| + *
|
| + * For example, if one packet needs to be sent and its size is 20 bits,
|
| + * then it will require the 3 bytes in the \a pWriteBuffer and arrangement of
|
| + * the data are as follows:
|
| + * - The packet is 0x000ABCDE (Packet with length of 20 bit).
|
| + * - pWriteBuff[0] = 0xDE
|
| + * - pWriteBuff[1] = 0xBC
|
| + * - pWtriteBuff[2] = 0x0A
|
| + *
|
| + * The most significant bit will be transmitted first, i.e., bit20 is transmitted
|
| + * first and bit0 will be transmitted last.
|
| + *
|
| + * @par Transfer Size Limitations
|
| + *
|
| + * The limitation on the maximum transfer size of SPI slave communication
|
| + * depends upon the hardware. The maximum size of byte transfer is 64 K bytes
|
| + * if the number of packets requested is a multiple of:
|
| + * - 4 for 8-bit packet length, or
|
| + * - 2 for 16-bit packet length, or
|
| + * - any number of packets for 32-bit packet length.
|
| + *
|
| + * For all other cases, the maximum transfer bytes size is limited to 16 K
|
| + * packets, that is:
|
| + * <pre>
|
| + * 16K*((PacketBitLength +7)/8))
|
| + * </pre>
|
| + *
|
| + * For the example:
|
| + * - Non-multiples of 4 for the 8-bit packet length
|
| + * - Non multiples of 2 for the 16-bit packet length
|
| + * - Any other bit length except for the 32-bit packet length
|
| + *
|
| + * This limitation comes from the:
|
| + * - Maximum HW DMA transfer of 64 KB
|
| + * - Maximum packet transfer for HW S-LINK controller of 64 K packets
|
| + * - The design of packed/unpacked format of the S-LINK controller
|
| + *
|
| + * @par CAIF Use Case
|
| + *
|
| + * The following describes a typical use case for the CAIF interface. The steps
|
| + * for doing the transfer are:
|
| + * -# ACPU calls the NvOdmSpiSlaveStartTransaction() to configure the SPI
|
| + * controller to set in the receive or transmit mode and make ready for the
|
| + * data transfer.
|
| + * -# ACPU then send the signal to the CCPU to send the SPICLK (by activating
|
| + * the SPI_INT) and start the transaction. CCPU get this signal and start sending
|
| + * SPICLK.
|
| + * -# ACPU will call the NvOdmSpiSlaveGetTransactionData() to get the
|
| + * data/information about the transaction.
|
| + * -# After completion of the transfer ACPU inactivate the SPI_INT.
|
| + *
|
| + * @param hOdmSpi The SPI handle allocated in a call to NvOdmSpiSlaveOpen().
|
| + * @param ChipSelectId The chip select ID on which device is connected.
|
| + * @param ClockSpeedInKHz The clock speed in kHz on which device can communicate.
|
| + * @param IsReadTransfer Tells that whether or not the read transfer is required.
|
| + * If it is NV_TRUE then read transfer is required and the read data will be
|
| + * available in the local buffer of the driver. The client will get the received
|
| + * data after calling the \c NvRmSpiGetTransactionData() function.
|
| + * @param pWriteBuffer A pointer to a buffer from which to obtain write data.
|
| + * If this pointer is NULL, the write data will be all zeros.
|
| + * @param BytesRequested The size of \a pReadBuffer and \a pWriteBuffer buffers
|
| + * in bytes.
|
| + * @param PacketSizeInBits The packet size in bits of each SPI transaction.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| + NvBool NvOdmSpiSlaveStartTransaction(
|
| + NvOdmServicesSpiHandle hOdmSpi,
|
| + NvU32 ChipSelectId,
|
| + NvU32 ClockSpeedInKHz,
|
| + NvBool IsReadTransfer,
|
| + NvU8 * pWriteBuffer,
|
| + NvU32 BytesRequested,
|
| + NvU32 PacketSizeInBits );
|
| +
|
| +/**
|
| + * Gets the SPI transaction status that is started for the slave mode and waits,
|
| + * if required, until the transfer completes for a given timeout error.
|
| + * If a read transaction has been started, then it returns the receive data to
|
| + * the client.
|
| + *
|
| + * This is a blocking API and waits for the data transfer completion until the
|
| + * transfer completes or a timeout happens.
|
| + *
|
| + * @see NvOdmSpiSlaveStartTransaction
|
| + *
|
| + * @param hOdmSpi The SPI handle allocated in a call to NvOdmSpiSlaveOpen().
|
| + * @param pReadBuffer A pointer to a buffer to be filled in with read data. If this
|
| + * pointer is NULL, the read data will be discarded.
|
| + * @param BytesRequested The size of \a pReadBuffer and \a pWriteBuffer buffers
|
| + * in bytes.
|
| + * @param pBytesTransfererd A pointer to the number of bytes transferred.
|
| + * @param WaitTimeout The timeout in millisecond to wait for the transaction to be
|
| + * completed.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + *
|
| + */
|
| + NvBool NvOdmSpiSlaveGetTransactionData(
|
| + NvOdmServicesSpiHandle hOdmSpi,
|
| + NvU8 * pReadBuffer,
|
| + NvU32 BytesRequested,
|
| + NvU32 * pBytesTransfererd,
|
| + NvU32 WaitTimeout );
|
| +
|
| +/**
|
| + * Sets the signal mode for the SPI communication for a given chip select.
|
| + * After calling this API, further communication happens with the newly
|
| + * configured signal modes.
|
| + * The default value of the signal mode is taken from ODM Query, and this
|
| + * API overrides the signal mode that is read from the query.
|
| + *
|
| + * @param hOdmSpi The SPI handle allocated in a call to NvOdmSpiOpen().
|
| + * @param ChipSelectId The chip select ID to which the device is connected.
|
| + * @param SpiSignalMode The ODM signal mode to be set.
|
| + *
|
| + */
|
| +void
|
| +NvOdmSpiSetSignalMode(
|
| + NvOdmServicesSpiHandle hOdmSpi,
|
| + NvU32 ChipSelectId,
|
| + NvOdmQuerySpiSignalMode SpiSignalMode);
|
| +
|
| +/// Contains the error flags for the I2C transaction.
|
| +typedef enum
|
| +{
|
| + NvOdmI2cStatus_Success = 0,
|
| + NvOdmI2cStatus_Timeout,
|
| + NvOdmI2cStatus_SlaveNotFound,
|
| + NvOdmI2cStatus_InvalidTransferSize,
|
| + NvOdmI2cStatus_ReadFailed,
|
| + NvOdmI2cStatus_WriteFailed,
|
| + NvOdmI2cStatus_InternalError,
|
| + NvOdmI2cStatus_ArbitrationFailed,
|
| + NvOdmI2cStatus_Force32 = 0x7FFFFFFF
|
| +} NvOdmI2cStatus;
|
| +
|
| +/// Flag to indicate the I2C write/read operation.
|
| +#define NVODM_I2C_IS_WRITE 0x00000001
|
| +/// Flag to indicate the I2C slave address type as 10-bit or 7-bit.
|
| +#define NVODM_I2C_IS_10_BIT_ADDRESS 0x00000002
|
| +/// Flag to indicate the I2C transaction with repeat start.
|
| +#define NVODM_I2C_USE_REPEATED_START 0x00000004
|
| +/// Flag to indicate that the I2C slave will not generate ACK.
|
| +#define NVODM_I2C_NO_ACK 0x00000008
|
| +/// Flag to indicate software I2C using GPIO.
|
| +#define NVODM_I2C_SOFTWARE_CONTROLLER 0x00000010
|
| +
|
| +
|
| +/// Contians the I2C transaction details.
|
| +typedef struct
|
| +{
|
| + /// Flags to indicate the transaction details, like write/read operation,
|
| + /// slave address type 10-bit or 7-bit and the transaction uses repeat
|
| + /// start or a normal transaction.
|
| + NvU32 Flags;
|
| + /// I2C slave device address.
|
| + NvU32 Address;
|
| + /// Number of bytes to be transferred.
|
| + NvU32 NumBytes;
|
| + /// Send/receive buffer. For I2C send operation this buffer should be
|
| + /// filled with the data to be sent to the slave device. For I2C receive
|
| + /// operation this buffer is filled with the data received from the slave device.
|
| + NvU8 *Buf;
|
| +} NvOdmI2cTransactionInfo;
|
| +
|
| +/**
|
| + * Initializes and opens the I2C channel. This function allocates the
|
| + * handle for the I2C channel and provides it to the client.
|
| + *
|
| + * @see NvOdmI2cClose
|
| + *
|
| + * @param OdmIoModuleId The ODM I/O module for I2C.
|
| + * @param instance The instance of the I2C driver to be opened.
|
| + *
|
| + * @return The handle to the I2C controller, or NULL if an error occurred.
|
| + */
|
| +NvOdmServicesI2cHandle
|
| +NvOdmI2cOpen(
|
| + NvOdmIoModule OdmIoModuleId,
|
| + NvU32 instance);
|
| +
|
| +/**
|
| + * Obtains a handle that can be used to access one of the I2C controllers,
|
| + * for I2C controllers which are multiplexed between multiple pin mux
|
| + * configurations. The I2C controller's pin mux will be reset to the specified
|
| + * value every transaction, so that two handles to the same controller may
|
| + * safely interleave across pin mux configurations.
|
| + *
|
| + * The ODM pin mux query for the specified controller must be
|
| + * NvOdmI2cPinMap_Multiplexed in order to create a handle using this function.
|
| + *
|
| + * There may be one or more instances of the I2C, depending upon the SOC,
|
| + * and these instances start from 0.
|
| + *
|
| + * Currently, this function is only supported for OdmIoModule_I2C, instance 1.
|
| + *
|
| + * @see NvOdmI2cClose
|
| + *
|
| + * @param OdmIoModule The ODM I/O module for the I2C.
|
| + * @param ControllerId The I2C controlled ID for which a handle is required.
|
| + * Valid I2C controller IDs start from 0.
|
| + * @param PinMap The pin mux configuration to use for every transaction.
|
| + *
|
| + * @return The handle to the I2C controller, or NULL if an error occurred.
|
| + */
|
| +NvOdmServicesI2cHandle
|
| +NvOdmI2cPinMuxOpen(NvOdmIoModule OdmIoModule,
|
| + NvU32 ControllerId,
|
| + NvOdmI2cPinMap PinMap);
|
| +
|
| +/**
|
| + * Closes the I2C channel. This function frees the memory allocated for
|
| + * the I2C handle and de-initializes the I2C ODM channel.
|
| + *
|
| + * @see NvOdmI2cOpen
|
| + *
|
| + * @param hOdmI2c The handle to the I2C channel.
|
| + */
|
| +void NvOdmI2cClose(NvOdmServicesI2cHandle hOdmI2c);
|
| +
|
| +/**
|
| + * Does the I2C send or receive transactions with the slave deivces. This is a
|
| + * blocking call (with timeout). This API works for both the normal I2C transactions
|
| + * or I2C transactions in repeat start mode.
|
| + *
|
| + * For the I2C transactions with slave devices, a pointer to the list of required
|
| + * transactions must be passed and the corresponding number of transactions must
|
| + * be passed.
|
| + *
|
| + * The transaction information structure contains the flags (to indicate the
|
| + * transaction information, such as read or write transaction, transaction is with
|
| + * repeat-start or normal transaction and the slave device address type is 7-bit or
|
| + * 10-bit), slave deivce address, buffer to be transferred and number of bytes
|
| + * to be transferred.
|
| + *
|
| + * @param hOdmI2c The handle to the I2C channel.
|
| + * @param TransactionInfo A pointer to the array of I2C transaction structures.
|
| + * @param NumberOfTransactions The number of I2C transactions.
|
| + * @param ClockSpeedKHz Specifies the clock speed for the I2C transactions.
|
| + * @param WaitTimeoutInMilliSeconds The timeout in milliseconds.
|
| + * ::NV_WAIT_INFINITE specifies to wait forever.
|
| + *
|
| + * @retval NvOdmI2cStatus_Success If successful, or the appropriate error code.
|
| + */
|
| +NvOdmI2cStatus
|
| +NvOdmI2cTransaction(
|
| + NvOdmServicesI2cHandle hOdmI2c,
|
| + NvOdmI2cTransactionInfo *TransactionInfo,
|
| + NvU32 NumberOfTransactions,
|
| + NvU32 ClockSpeedKHz,
|
| + NvU32 WaitTimeoutInMilliSeconds);
|
| +
|
| +/**
|
| + * Defines the PMU VDD rail capabilities.
|
| + */
|
| +typedef struct NvOdmServicesPmuVddRailCapabilitiesRec
|
| +{
|
| + /// Specifies ODM protection attribute; if \c NV_TRUE PMU hardware
|
| + /// or ODM Kit would protect this voltage from being changed by NvDdk client.
|
| + NvBool RmProtected;
|
| +
|
| + /// Specifies the minimum voltage level in mV.
|
| + NvU32 MinMilliVolts;
|
| +
|
| + /// Specifies the step voltage level in mV.
|
| + NvU32 StepMilliVolts;
|
| +
|
| + /// Specifies the maximum voltage level in mV.
|
| + NvU32 MaxMilliVolts;
|
| +
|
| + /// Specifies the request voltage level in mV.
|
| + NvU32 requestMilliVolts;
|
| +
|
| +} NvOdmServicesPmuVddRailCapabilities;
|
| +
|
| +/// Special level to indicate voltage plane is disabled.
|
| +#define NVODM_VOLTAGE_OFF (0UL)
|
| +
|
| +/**
|
| + * Initializes and opens the PMU driver. The handle that is returned by this
|
| + * driver is used for all the other PMU operations.
|
| + *
|
| + * @see NvOdmPmuClose
|
| + *
|
| + * @return The handle to the PMU driver, or NULL if an error occurred.
|
| + */
|
| +NvOdmServicesPmuHandle NvOdmServicesPmuOpen(void);
|
| +
|
| +/**
|
| + * Closes the PMU handle.
|
| + *
|
| + * @see NvOdmServicesPmuOpen
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + */
|
| +void NvOdmServicesPmuClose(NvOdmServicesPmuHandle handle);
|
| +
|
| +/**
|
| + * Gets capabilities for the specified PMU rail.
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + * @param vddId The ODM-defined PMU rail ID.
|
| + * @param pCapabilities A pointer to the targeted
|
| + * capabilities returned by the ODM.
|
| + *
|
| + */
|
| +void NvOdmServicesPmuGetCapabilities(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvU32 vddId,
|
| + NvOdmServicesPmuVddRailCapabilities * pCapabilities );
|
| +
|
| +/**
|
| + * Gets current voltage level for the specified PMU rail.
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + * @param vddId The ODM-defined PMU rail ID.
|
| + * @param pMilliVolts A pointer to the voltage level returned
|
| + * by the ODM.
|
| + */
|
| +void NvOdmServicesPmuGetVoltage(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvU32 vddId,
|
| + NvU32 * pMilliVolts );
|
| +
|
| +/**
|
| + * Sets new voltage level for the specified PMU rail.
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + * @param vddId The ODM-defined PMU rail ID.
|
| + * @param MilliVolts The new voltage level to be set in millivolts (mV).
|
| + * Set to ::NVODM_VOLTAGE_OFF to turn off the target voltage.
|
| + * @param pSettleMicroSeconds A pointer to the settling time in microseconds (uS),
|
| + * which is the time for supply voltage to settle after this function
|
| + * returns; this may or may not include PMU control interface transaction time,
|
| + * depending on the ODM implementation. If NULL this parameter is ignored.
|
| + */
|
| +void NvOdmServicesPmuSetVoltage(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvU32 vddId,
|
| + NvU32 MilliVolts,
|
| + NvU32 * pSettleMicroSeconds );
|
| +
|
| +/**
|
| + * Configures SoC power rail controls for the upcoming PMU voltage transition.
|
| + *
|
| + * @note Should be called just before PMU rail On/Off, or Off/On transition.
|
| + * Should not be called if rail voltage level is changing within On range.
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + * @param vddId The ODM-defined PMU rail ID.
|
| + * @param Enable Set NV_TRUE if target voltage is about to be turned On, or
|
| + * NV_FALSE if target voltage is about to be turned Off.
|
| + */
|
| +void NvOdmServicesPmuSetSocRailPowerState(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvU32 vddId,
|
| + NvBool Enable );
|
| +
|
| +/**
|
| + * Defines battery instances.
|
| + */
|
| +typedef enum
|
| +{
|
| + /// Specifies main battery.
|
| + NvOdmServicesPmuBatteryInst_Main,
|
| +
|
| + /// Specifies backup battery.
|
| + NvOdmServicesPmuBatteryInst_Backup,
|
| +
|
| + /// Ignore -- Forces compilers to make 32-bit enums.
|
| + NvOdmServicesPmuBatteryInstance_Force32 = 0x7FFFFFFF
|
| +} NvOdmServicesPmuBatteryInstance;
|
| +
|
| +/**
|
| + * Gets the battery status.
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + * @param batteryInst The battery type.
|
| + * @param pStatus A pointer to the battery
|
| + * status returned by the ODM.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmServicesPmuGetBatteryStatus(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvOdmServicesPmuBatteryInstance batteryInst,
|
| + NvU8 * pStatus);
|
| +
|
| +/**
|
| + * Defines battery data.
|
| + */
|
| +typedef struct NvOdmServicesPmuBatteryDataRec
|
| +{
|
| + /// Specifies battery life percent.
|
| + NvU32 batteryLifePercent;
|
| +
|
| + /// Specifies battery life time.
|
| + NvU32 batteryLifeTime;
|
| +
|
| + /// Specifies voltage.
|
| + NvU32 batteryVoltage;
|
| +
|
| + /// Specifies battery current.
|
| + NvS32 batteryCurrent;
|
| +
|
| + /// Specifies battery average current.
|
| + NvS32 batteryAverageCurrent;
|
| +
|
| + /// Specifies battery interval.
|
| + NvU32 batteryAverageInterval;
|
| +
|
| + /// Specifies the mAH consumed.
|
| + NvU32 batteryMahConsumed;
|
| +
|
| + /// Specifies battery temperature.
|
| + NvU32 batteryTemperature;
|
| +} NvOdmServicesPmuBatteryData;
|
| +
|
| +/**
|
| + * Gets the battery data.
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + * @param batteryInst The battery type.
|
| + * @param pData A pointer to the battery
|
| + * data returned by the ODM.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmServicesPmuGetBatteryData(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvOdmServicesPmuBatteryInstance batteryInst,
|
| + NvOdmServicesPmuBatteryData * pData);
|
| +
|
| +/**
|
| + * Gets the battery full lifetime.
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + * @param batteryInst The battery type.
|
| + * @param pLifeTime A pointer to the battery
|
| + * full lifetime returned by the ODM.
|
| + */
|
| +void
|
| +NvOdmServicesPmuGetBatteryFullLifeTime(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvOdmServicesPmuBatteryInstance batteryInst,
|
| + NvU32 * pLifeTime);
|
| +
|
| +/**
|
| + * Defines battery chemistry.
|
| + */
|
| +typedef enum
|
| +{
|
| + /// Specifies an alkaline battery.
|
| + NvOdmServicesPmuBatteryChemistry_Alkaline,
|
| +
|
| + /// Specifies a nickel-cadmium (NiCd) battery.
|
| + NvOdmServicesPmuBatteryChemistry_NICD,
|
| +
|
| + /// Specifies a nickel-metal hydride (NiMH) battery.
|
| + NvOdmServicesPmuBatteryChemistry_NIMH,
|
| +
|
| + /// Specifies a lithium-ion (Li-ion) battery.
|
| + NvOdmServicesPmuBatteryChemistry_LION,
|
| +
|
| + /// Specifies a lithium-ion polymer (Li-poly) battery.
|
| + NvOdmServicesPmuBatteryChemistry_LIPOLY,
|
| +
|
| + /// Specifies a zinc-air battery.
|
| + NvOdmServicesPmuBatteryChemistry_XINCAIR,
|
| +
|
| + /// Ignore -- Forces compilers to make 32-bit enums.
|
| + NvOdmServicesPmuBatteryChemistry_Force32 = 0x7FFFFFFF
|
| +} NvOdmServicesPmuBatteryChemistry;
|
| +
|
| +/**
|
| + * Gets the battery chemistry.
|
| + *
|
| + * @param handle The handle to the PMU driver.
|
| + * @param batteryInst The battery type.
|
| + * @param pChemistry A pointer to the battery
|
| + * chemistry returned by the ODM.
|
| + */
|
| +void
|
| +NvOdmServicesPmuGetBatteryChemistry(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvOdmServicesPmuBatteryInstance batteryInst,
|
| + NvOdmServicesPmuBatteryChemistry * pChemistry);
|
| +
|
| +/**
|
| + * Defines the charging path.
|
| + */
|
| +typedef enum
|
| +{
|
| + /// Specifies external wall plug charger.
|
| + NvOdmServicesPmuChargingPath_MainPlug,
|
| +
|
| + /// Specifies external USB bus charger.
|
| + NvOdmServicesPmuChargingPath_UsbBus,
|
| +
|
| + /// Ignore -- Forces compilers to make 32-bit enums.
|
| + NvOdmServicesPmuChargingPath_Force32 = 0x7FFFFFFF
|
| +} NvOdmServicesPmuChargingPath;
|
| +
|
| +/**
|
| +* Sets the charging current limit.
|
| +*
|
| +* @param handle The Rm device handle.
|
| +* @param ChargingPath The charging path.
|
| +* @param ChargingCurrentLimitMa The charging current limit in mA.
|
| +* @param ChargerType The charger type.
|
| +*/
|
| +void
|
| +NvOdmServicesPmuSetChargingCurrentLimit(
|
| + NvOdmServicesPmuHandle handle,
|
| + NvOdmServicesPmuChargingPath ChargingPath,
|
| + NvU32 ChargingCurrentLimitMa,
|
| + NvOdmUsbChargerType ChargerType);
|
| +
|
| +/**
|
| + * Obtains a handle to set or get state of keys, for example, the state of the
|
| + * hold switch.
|
| + *
|
| + * @see NvOdmServicesKeyListClose()
|
| + *
|
| + * @return A handle to the key-list, or NULL if this open call fails.
|
| + */
|
| +NvOdmServicesKeyListHandle
|
| +NvOdmServicesKeyListOpen(void);
|
| +
|
| +/**
|
| + * Releases the handle obtained during the NvOdmServicesKeyListOpen() call and
|
| + * any other resources allocated.
|
| + *
|
| + * @param handle The handle returned from the \c NvOdmServicesKeyListOpen call.
|
| + */
|
| +void NvOdmServicesKeyListClose(NvOdmServicesKeyListHandle handle);
|
| +
|
| +/**
|
| + * Searches the list of keys present and returns the value of the appropriate
|
| + * key.
|
| + * @param handle The handle obtained from NvOdmServicesKeyListOpen().
|
| + * @param KeyID The ID of the key whose value is required.
|
| + *
|
| + * @return The value of the corresponding key, or 0 if the key is not
|
| + * present in the list.
|
| + */
|
| +NvU32
|
| +NvOdmServicesGetKeyValue(
|
| + NvOdmServicesKeyListHandle handle,
|
| + NvU32 KeyID);
|
| +
|
| +/**
|
| + * Searches the list of keys present and sets the value of the key to the value
|
| + * given. If the key is not present, it adds the key to the list and sets the
|
| + * value.
|
| + * @param handle The handle obtained from NvOdmServicesKeyListOpen().
|
| + * @param Key The ID of the key whose value is to be set.
|
| + * @param Value The value to be set for the corresponding key.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmServicesSetKeyValuePair(
|
| + NvOdmServicesKeyListHandle handle,
|
| + NvU32 Key,
|
| + NvU32 Value);
|
| +
|
| +/**
|
| + * @brief Defines the possible PWM modes.
|
| + */
|
| +
|
| +typedef enum
|
| +{
|
| + /// Specifies Pwm disabled mode.
|
| + NvOdmPwmMode_Disable = 1,
|
| +
|
| + /// Specifies Pwm enabled mode.
|
| + NvOdmPwmMode_Enable,
|
| +
|
| + /// Specifies Blink LED enabled mode
|
| + NvOdmPwmMode_Blink_LED,
|
| +
|
| + /// Specifies Blink output 32KHz clock enable mode
|
| + NvOdmPwmMode_Blink_32KHzClockOutput,
|
| +
|
| + /// Specifies Blink disabled mode
|
| + NvOdmPwmMode_Blink_Disable,
|
| +
|
| + NvOdmPwmMode_Force32 = 0x7fffffffUL
|
| +
|
| +} NvOdmPwmMode;
|
| +
|
| +/**
|
| + * @brief Defines the possible PWM output pin.
|
| + */
|
| +
|
| +typedef enum
|
| +{
|
| + /// Specifies PWM Output-0.
|
| + NvOdmPwmOutputId_PWM0 = 1,
|
| +
|
| + /// Specifies PWM Output-1.
|
| + NvOdmPwmOutputId_PWM1,
|
| +
|
| + /// Specifies PWM Output-2.
|
| + NvOdmPwmOutputId_PWM2,
|
| +
|
| + /// Specifies PWM Output-3.
|
| + NvOdmPwmOutputId_PWM3,
|
| +
|
| + /// Specifies PMC Blink LED.
|
| + NvOdmPwmOutputId_Blink,
|
| +
|
| + NvOdmPwmOutputId_Force32 = 0x7fffffffUL
|
| +
|
| +} NvOdmPwmOutputId;
|
| +
|
| +/**
|
| + * Creates and opens a PWM handle. The handle can be used to
|
| + * access PWM functions.
|
| + *
|
| + * @note Only the service client knows when the service can go idle,
|
| + * like in the case of vibrator, so the client suspend entry code
|
| + * must call NvOdmPwmClose() to close the PWM service.
|
| + *
|
| + * @return The handle to the PWM controller, or NULL if an error occurred.
|
| + */
|
| +NvOdmServicesPwmHandle NvOdmPwmOpen(void);
|
| +
|
| +/**
|
| + * Releases a handle to a PWM controller. This API must be called once per
|
| + * successful call to NvOdmPwmOpen().
|
| + *
|
| + * @param hOdmPwm The handle to the PWM controller.
|
| + */
|
| +void NvOdmPwmClose(NvOdmServicesPwmHandle hOdmPwm);
|
| +
|
| +/**
|
| + * @brief Configures PWM module as disable/enable. This API is also
|
| + * used to set the PWM duty cycle and frequency. Beside that, it is
|
| + * used to configure PMC' blinking LED if OutputId is
|
| + * NvOdmPwmOutputId_Blink
|
| + *
|
| + * @param hOdmPwm The PWM handle obtained from NvOdmPwmOpen().
|
| + * @param OutputId The PWM output pin to configure. Allowed values are
|
| + * defined in ::NvOdmPwmOutputId.
|
| + * @param Mode The mode type to configure. Allowed values are
|
| + * defined in ::NvOdmPwmMode.
|
| + * @param DutyCycle The duty cycle is an unsigned 15.16 fixed point
|
| + * value that represents the PWM duty cycle in percentage range from
|
| + * 0.00 to 100.00. For example, 10.5 percentage duty cycle would be
|
| + * represented as 0x000A8000. This parameter is ignored if NvOdmPwmMode
|
| + * is NvOdmMode_Blink_32KHzClockOutput or NvOdmMode_Blink_Disable
|
| + * @param pRequestedFreqHzOrPeriod A pointer to the request frequency in Hz
|
| + * or period in second
|
| + * A requested frequency value beyond the maximum supported value will be
|
| + * clamped to the maximum supported value. If \em pRequestedFreqHzOrPeriod
|
| + * is NULL, it returns the maximum supported frequency. This parameter is
|
| + * ignored if NvOdmPwmMode is NvOdmMode_Blink_32KHzClockOutput or
|
| + * NvOdmMode_Blink_Disable
|
| + * @param pCurrentFreqHzOrPeriod A pointer to the returned frequency of
|
| + * that mode. If PMC Blink LED is used then it is the pointer to the returns
|
| + * period time. This parameter is ignored if NvOdmPwmMode is
|
| + * NvOdmMode_Blink_32KHzClockOutput or NvOdmMode_Blink_Disable
|
| + */
|
| +void
|
| +NvOdmPwmConfig(NvOdmServicesPwmHandle hOdmPwm,
|
| + NvOdmPwmOutputId OutputId,
|
| + NvOdmPwmMode Mode,
|
| + NvU32 DutyCycle,
|
| + NvU32 *pRequestedFreqHzOrPeriod,
|
| + NvU32 *pCurrentFreqHzOrPeriod);
|
| +
|
| +/**
|
| + * Enables and disables external clock interfaces (e.g., CDEV and CSUS pins)
|
| + * for the specified peripheral. External clock sources should be enabled
|
| + * prior to programming peripherals reliant on them. If multiple peripherals use
|
| + * the same external clock source, it is safe to call this API multiple times.
|
| + *
|
| + * @param Guid The ODM-defined GUID of the peripheral to be configured. The
|
| + * peripheral should have an @see NvOdmIoAddress entry for the
|
| + * NvOdmIoModule_ExternalClock device interface. If multiple
|
| + * external clock interfaces are specified, all will be
|
| + * enabled (disabled).
|
| + *
|
| + * @param EnableTristate NV_TRUE will tristate the specified clock sources,
|
| + * NV_FALSE will drive them.
|
| + *
|
| + * @param pInstances Returns the list of clocks that were enabled.
|
| + *
|
| + * @param pFrequencies Returns the frequency, in kHz, that is
|
| + * being output on each clock pin
|
| + *
|
| + * @param pNum Returns the number of clocks that were enabled.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmExternalClockConfig(
|
| + NvU64 Guid,
|
| + NvBool EnableTristate,
|
| + NvU32 *pInstances,
|
| + NvU32 *pFrequencies,
|
| + NvU32 *pNum);
|
| +
|
| +/**
|
| + * Defines SoC strap groups.
|
| + */
|
| +typedef enum
|
| +{
|
| + /// Specifies the ram_code strap group.
|
| + NvOdmStrapGroup_RamCode = 1,
|
| +
|
| + NvOdmStrapGroup_Num,
|
| + NvOdmStrapGroup_Force32 = 0x7FFFFFFF
|
| +} NvOdmStrapGroup;
|
| +
|
| +/**
|
| + * Gets SoC strap value for the given strap group.
|
| + *
|
| + * @note The strap assignment on each platform must be consistent with SoC
|
| + * bootrom specifications and platform-specific BCT contents. The strap
|
| + * value usage in ODM queries, however, is not limited to bootrom defined
|
| + * functionality. The mapping between strap values and platforms is the ODM's
|
| + * responsibility. ODMs should also ensure that they are using strap groups
|
| + * that match the SOC in their product.
|
| + *
|
| + * @param StrapGroup The strap group to be read.
|
| + * @param pStrapValue A pointer to the returned strap group value.
|
| + * This value can be used by ODM queries to identify ODM platforms and to
|
| + * provide the respective configuration settings.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool NvOdmGetStraps(NvOdmStrapGroup StrapGroup, NvU32* pStrapValue);
|
| +
|
| +/**
|
| + * File input/output.
|
| + */
|
| +typedef void* NvOdmOsFileHandle;
|
| +
|
| +/**
|
| + * Defines the OS file types.
|
| + */
|
| +typedef enum
|
| +{
|
| + NvOdmOsFileType_Unknown = 0,
|
| + NvOdmOsFileType_File,
|
| + NvOdmOsFileType_Directory,
|
| + NvOdmOsFileType_Fifo,
|
| +
|
| + NvOdmOsFileType_Force32 = 0x7FFFFFFF
|
| +} NvOdmOsFileType;
|
| +
|
| +/**
|
| + * Defines the OS status type.
|
| + */
|
| +typedef struct NvOdmOsStatTypeRec
|
| +{
|
| + NvU64 size;
|
| + NvOdmOsFileType type;
|
| +} NvOdmOsStatType;
|
| +
|
| +/** Open a file with read permissions. */
|
| +#define NVODMOS_OPEN_READ 0x1
|
| +
|
| +/** Open a file with write persmissions. */
|
| +#define NVODMOS_OPEN_WRITE 0x2
|
| +
|
| +/** Create a file if is not present on the file system. */
|
| +#define NVODMOS_OPEN_CREATE 0x4
|
| +
|
| +/**
|
| + * Opens a file stream.
|
| + *
|
| + * If the ::NVODMOS_OPEN_CREATE flag is specified, ::NVODMOS_OPEN_WRITE must also
|
| + * be specified.
|
| + *
|
| + * If ::NVODMOS_OPEN_WRITE is specified the file will be opened for write and
|
| + * will be truncated if it was previously existing.
|
| + *
|
| + * If ::NVODMOS_OPEN_WRITE and ::NVODMOS_OPEN_READ is specified the file will not
|
| + * be truncated.
|
| + *
|
| + * @param path A pointer to the path to the file.
|
| + * @param flags ORed flags for the open operation (NVODMOS_OPEN_*).
|
| + * @param file [out] A pointer to the file that will be opened, if successful.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmOsFopen(const char *path, NvU32 flags, NvOdmOsFileHandle *file);
|
| +
|
| +/**
|
| + * Closes a file stream.
|
| + * Passing in a NULL handle is okay.
|
| + *
|
| + * @param stream The file stream to close.
|
| + */
|
| +void NvOdmOsFclose(NvOdmOsFileHandle stream);
|
| +
|
| +/**
|
| + * Writes to a file stream.
|
| + *
|
| + * @param stream The file stream.
|
| + * @param ptr A pointer to the data to write.
|
| + * @param size The length of the write.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmOsFwrite(NvOdmOsFileHandle stream, const void *ptr, size_t size);
|
| +
|
| +/**
|
| + * Reads a file stream.
|
| + *
|
| + * To detect short reads (less that specified amount), pass in \a bytes
|
| + * and check its value to the expected value. The \a bytes parameter may
|
| + * be NULL.
|
| + *
|
| + * @param stream The file stream.
|
| + * @param ptr A pointer to the buffer for the read data.
|
| + * @param size The length of the read.
|
| + * @param bytes [out] A pointer to the number of bytes read -- may be NULL.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmOsFread(NvOdmOsFileHandle stream, void *ptr, size_t size, size_t *bytes);
|
| +
|
| +/**
|
| + * Gets file information.
|
| + *
|
| + * @param filename A pointer to the file to get information about.
|
| + * @param stat [out] A pointer to the information structure.
|
| + *
|
| + * @return NV_TRUE if successful, or NV_FALSE otherwise.
|
| + */
|
| +NvBool
|
| +NvOdmOsStat(const char *filename, NvOdmOsStatType *stat);
|
| +
|
| +/**
|
| + * Enables or disables USB OTG circuitry.
|
| + *
|
| + * @param Enable NV_TRUE to enable, or NV_FALSE to disable.
|
| + */
|
| +void NvOdmEnableOtgCircuitry(NvBool Enable);
|
| +
|
| +/**
|
| + * Checks whether or not USB is connected.
|
| + *
|
| + * @pre The USB circuit is enabled by calling NvOdmEnableOtgCircuitry().
|
| + * To reduce power consumption, disable the USB circuit when not connected
|
| + * by calling \c NvOdmEnableOtgCircuitry(NV_FALSE).
|
| + *
|
| + * @return NV_TRUE if USB is successfully connected, otherwise NV_FALSE.
|
| + */
|
| +NvBool NvOdmUsbIsConnected(void);
|
| +
|
| +/**
|
| + * Checks the current charging type.
|
| + *
|
| + * @pre The USB circuit is enabled by calling NvOdmEnableOtgCircuitry().
|
| + * To reduce power consumption, disable the USB circuit when not connected
|
| + * by calling \c NvOdmEnableOtgCircuitry(NV_FALSE).
|
| + *
|
| + * @param Instance Set to 0 by default.
|
| + * @return The current charging type.
|
| + */
|
| +NvOdmUsbChargerType NvOdmUsbChargingType(NvU32 Instance);
|
| +
|
| +#if defined(__cplusplus)
|
| +}
|
| +#endif
|
| +
|
| +/*@}*/
|
| +/** @} */
|
| +
|
| +#endif // INCLUDED_NVODM_SERVICES_H
|
|
|