openMMC
Open Source Modular MMC for AMCs
Loading...
Searching...
No Matches
mcp23016.h
Go to the documentation of this file.
1/*
2 * openMMC -- Open Source modular IPM Controller firmware
3 *
4 * Copyright (C) 2021 Krzysztof Macias <krzysztof.macias@creotech.pl>
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 *
19 * @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+>
20 */
21
30#ifndef MCP23016_H_
31#define MCP23016_H_
32
33#include "mmc_error.h"
34#include "port.h"
35
51#define MCP23016_GP_REG 0x0
52
57#define MCP23016_OLAT_REG 0x2
58
63#define MCP23016_IPOL_REG 0x4
64
69#define MCP23016_IODIR_REG 0x6
70
75#define MCP23016_INTCAP_REG 0x8
76
81#define MCP23016_IOCON_REG 0xA
82
88/* Pins Read/Write */
97mmc_err mcp23016_read_port( uint8_t port_num, uint8_t *readout );
98
108mmc_err mcp23016_read_pin( uint8_t port_num, uint8_t pin, uint8_t *status );
109
118mmc_err mcp23016_write_port( uint8_t port_num, uint8_t data );
119
129mmc_err mcp23016_write_pin( uint8_t port_num, uint8_t pin, bool data );
130
131/* Polarity Control */
140mmc_err mcp23016_set_port_pol( uint8_t port_num, uint8_t pol );
141
150mmc_err mcp23016_get_port_pol( uint8_t port_num, uint8_t *pol );
151
152/* Pins direction (output/input) */
161mmc_err mcp23016_set_port_dir( uint8_t port_num, uint8_t dir );
162
171mmc_err mcp23016_get_port_dir( uint8_t port_num, uint8_t *dir );
172
173mmc_err mcp23016_read_reg_pair( uint8_t reg, uint16_t *readout);
174mmc_err mcp23016_write_reg_pair( uint8_t reg, uint16_t data);
175
176#endif
mmc_err mcp23016_set_port_pol(uint8_t port_num, uint8_t pol)
Set port pins polarity.
Definition mcp23016.c:151
mmc_err mcp23016_read_pin(uint8_t port_num, uint8_t pin, uint8_t *status)
Read a pin status.
Definition mcp23016.c:114
mmc_err mcp23016_write_reg_pair(uint8_t reg, uint16_t data)
Definition mcp23016.c:195
mmc_err mcp23016_write_pin(uint8_t port_num, uint8_t pin, bool data)
Write a output pin.
Definition mcp23016.c:133
mmc_err mcp23016_read_port(uint8_t port_num, uint8_t *readout)
Read port pins status.
Definition mcp23016.c:109
mmc_err mcp23016_set_port_dir(uint8_t port_num, uint8_t dir)
Set port pins direction.
Definition mcp23016.c:162
mmc_err mcp23016_get_port_pol(uint8_t port_num, uint8_t *pol)
Read port pins polarity.
Definition mcp23016.c:156
mmc_err mcp23016_read_reg_pair(uint8_t reg, uint16_t *readout)
Definition mcp23016.c:173
mmc_err mcp23016_get_port_dir(uint8_t port_num, uint8_t *dir)
Read port pins direction.
Definition mcp23016.c:167
mmc_err mcp23016_write_port(uint8_t port_num, uint8_t data)
Write port output pins.
Definition mcp23016.c:128
Error handling functions and codes.
mmc_err
Definition mmc_error.h:36
Port layer (includes all portable functions headers)