blob: a127c7117e136db209ce73e6b1943cf08b78851c [file] [log] [blame]
/*
* Copyright 2004-2015 Freescale Semiconductor, Inc. All Rights Reserved.
*/
/*
* The code contained herein is licensed under the GNU Lesser General
* Public License. You may obtain a copy of the GNU Lesser General
* Public License Version 2.1 or later at the following locations:
*
* http://www.opensource.org/licenses/lgpl-license.html
* http://www.gnu.org/copyleft/lgpl.html
*/
#ifndef __ASM_ARCH_MXC_PMIC_STATUS_H__
#define __ASM_ARCH_MXC_PMIC_STATUS_H__
#include <asm-generic/errno-base.h>
#ifdef __KERNEL__
#include <asm/uaccess.h> /* copy_{from,to}_user() */
#endif
/*!
* @file arch-mxc/pmic_status.h
* @brief PMIC APIs return code definition.
*
* @ingroup PMIC_CORE
*/
/*!
* @enum PMIC_STATUS
* @brief Define return values for all PMIC APIs.
*
* These return values are used by all of the PMIC APIs.
*
* @ingroup PMIC
*/
typedef enum {
PMIC_SUCCESS = 0, /*!< The requested operation was successfully
completed. */
PMIC_ERROR = -1, /*!< The requested operation could not be completed
due to an error. */
PMIC_PARAMETER_ERROR = -2, /*!< The requested operation failed because
one or more of the parameters was
invalid. */
PMIC_NOT_SUPPORTED = -3, /*!< The requested operation could not be
completed because the PMIC hardware
does not support it. */
PMIC_SYSTEM_ERROR_EINTR = -EINTR,
PMIC_MALLOC_ERROR = -5, /*!< Error in malloc function */
PMIC_UNSUBSCRIBE_ERROR = -6, /*!< Error in un-subscribe event */
PMIC_EVENT_NOT_SUBSCRIBED = -7, /*!< Event occur and not subscribed */
PMIC_EVENT_CALL_BACK = -8, /*!< Error - bad call back */
PMIC_CLIENT_NBOVERFLOW = -9, /*!< The requested operation could not be
completed because there are too many
PMIC client requests */
} PMIC_STATUS;
/*
* Bitfield macros that use rely on bitfield width/shift information.
*/
#define BITFMASK(field) (((1U << (field ## _WID)) - 1) << (field ## _LSH))
#define BITFVAL(field, val) ((val) << (field ## _LSH))
#define BITFEXT(var, bit) ((var & BITFMASK(bit)) >> (bit ## _LSH))
/*
* Macros implementing error handling
*/
#define CHECK_ERROR(a) \
do { \
int ret = (a); \
if (ret != PMIC_SUCCESS) \
return ret; \
} while (0)
#define CHECK_ERROR_KFREE(func, freeptrs) \
do { \
int ret = (func); \
if (ret != PMIC_SUCCESS) { \
freeptrs; \
return ret; \
} \
} while (0);
#endif /* __ASM_ARCH_MXC_PMIC_STATUS_H__ */