zephyr/include/pinmux.h
Andre Guedes 5f1988f284 pinmux: Change returning type from pinmux.h APIs
All driver APIs (i2c, spi, gpio, etc.) return 'int' type, but pinmux
APIs. So this patch changes the returning type from 'uint32_t' to
'int' from include/pinmux.h and fixes all pinmux drivers according.

Besides keeping consistency between all drivers APIs, this patch is
also applicable for the errno.h code transition. Pinmux drivers will
return negative errno.h codes so returning 'int' is more suitable
than 'uint32_t'.

Change-Id: I2a6e92d567a0e21fec363226da6197df94657d4b
Signed-off-by: Andre Guedes <andre.guedes@intel.com>
2016-03-16 19:46:05 +00:00

115 lines
2.5 KiB
C

/*
* Copyright (c) 2015 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* Public APIs for Pinmux drivers
*/
#ifndef __INCLUDE_PINMUX_H
#define __INCLUDE_PINMUX_H
/**
* @brief Pinmux Interface
* @defgroup pinmux_interface Pinmux Interface
* @ingroup io_interfaces
* @{
*/
#include <stdint.h>
#include <device.h>
#ifdef __cplusplus
extern "C" {
#endif
#define PINMUX_NAME "pinmux"
#define PINMUX_FUNC_A 0
#define PINMUX_FUNC_B 1
#define PINMUX_FUNC_C 2
#define PINMUX_FUNC_D 3
#define PINMUX_PULLUP_ENABLE (0x1)
#define PINMUX_PULLUP_DISABLE (0x0)
#define PINMUX_INPUT_ENABLED (0x1)
#define PINMUX_OUTPUT_ENABLED (0x0)
typedef int (*pmux_set)(struct device *dev, uint32_t pin, uint32_t func);
typedef int (*pmux_get)(struct device *dev, uint32_t pin, uint32_t *func);
typedef int (*pmux_pullup)(struct device *dev, uint32_t pin, uint8_t func);
typedef int (*pmux_input)(struct device *dev, uint32_t pin, uint8_t func);
struct pinmux_driver_api {
pmux_set set;
pmux_get get;
pmux_pullup pullup;
pmux_input input;
};
static inline int pinmux_pin_set(struct device *dev,
uint32_t pin,
uint32_t func)
{
struct pinmux_driver_api *api;
api = (struct pinmux_driver_api *) dev->driver_api;
return api->set(dev, pin, func);
}
static inline int pinmux_pin_get(struct device *dev,
uint32_t pin,
uint32_t *func)
{
struct pinmux_driver_api *api;
api = (struct pinmux_driver_api *) dev->driver_api;
return api->get(dev, pin, func);
}
static inline int pinmux_pin_pullup(struct device *dev,
uint32_t pin,
uint8_t func)
{
struct pinmux_driver_api *api;
api = (struct pinmux_driver_api *) dev->driver_api;
return api->pullup(dev, pin, func);
}
static inline int pinmux_pin_input_enable(struct device *dev,
uint32_t pin,
uint8_t func)
{
struct pinmux_driver_api *api;
api = (struct pinmux_driver_api *) dev->driver_api;
return api->input(dev, pin, func);
}
#ifdef __cplusplus
}
#endif
/**
*
* @}
*/
#endif /* __INCLUDE_PINMUX_H */