/* * Copyright 2004-2014 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 #ifdef __KERNEL__ #include /* 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__ */