/* * Copyright (C) 2014 Freescale Semiconductor, Inc. * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef __GPIO_EXP_H #define __GPIO_EXP_H #ifndef CONFIG_IOEXP_DEV_PINS_NUM #define CONFIG_IOEXP_DEV_PINS_NUM 8 #endif #ifndef CONFIG_IOEXP_DEVICES_NUM #define CONFIG_IOEXP_DEVICES_NUM 1 #endif /*Define for building ioexp gpio, port starts from 1, index starts from 0*/ #define IOEXP_GPIO_NR(port, index) \ ((((port)-1)*CONFIG_IOEXP_DEV_PINS_NUM)+ \ ((index)&(CONFIG_IOEXP_DEV_PINS_NUM-1))) /*Get the device number from a ioexp gpio*/ #define IOEXP_GPIO_TO_DEVICE(gpio_nr) \ (gpio_nr / CONFIG_IOEXP_DEV_PINS_NUM) /*Get the port number from a ioexp gpio*/ #define IOEXP_GPIO_TO_PORT(gpio_nr) \ ((gpio_nr / CONFIG_IOEXP_DEV_PINS_NUM) + 1) /*Get the pin number from a ioexp gpio*/ #define IOEXP_GPIO_TO_PIN(gpio_nr) \ (gpio_nr % CONFIG_IOEXP_DEV_PINS_NUM) /** * Make a GPIO an input. * * @param gpio GPIO number * @return 0 if ok, -1 on error */ int gpio_exp_direction_input(unsigned gpio); /** * Make a GPIO an output, and set its value. * * @param gpio GPIO number * @param value GPIO value (0 for low or 1 for high) * @return 0 if ok, -1 on error */ int gpio_exp_direction_output(unsigned gpio, int value); /** * Setup the io expander's port. * * @param port IO expander port , starts from 1 * @param i2c_bus_id i2c bus index, starts from 0 * @param i2c_slave_addr i2c address of the io expander port * @return 0 if ok, -1 on error */ int gpio_exp_setup_port(int port, int i2c_bus_id, int i2c_slave_addr); #endif /*__GPIO_EXP_H*/