blob: fc9969aab149f9e328be400c7941faf629dae319 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/* Copyright 2020 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* NXP PCA(L)6408 I/O expander
*/
#ifndef __CROS_EC_IOEXPANDER_PCAL6408_H
#define __CROS_EC_IOEXPANDER_PCAL6408_H
#define PCAL6408_I2C_ADDR0 0x20
#define PCAL6408_I2C_ADDR1 0x21
#define PCAL6408_REG_INPUT 0x00
#define PCAL6408_REG_OUTPUT 0x01
#define PCAL6408_REG_POLARITY_INVERSION 0x02
#define PCAL6408_REG_CONFIG 0x03
#define PCAL6408_REG_OUT_STRENGTH0 0x40
#define PCAL6408_REG_OUT_STRENGTH1 0x41
#define PCAL6408_REG_INPUT_LATCH 0x42
#define PCAL6408_REG_PULL_ENABLE 0x43
#define PCAL6408_REG_PULL_UP_DOWN 0x44
#define PCAL6408_REG_INT_MASK 0x45
#define PCAL6408_REG_INT_STATUS 0x46
#define PCAL6408_REG_OUT_CONFIG 0x4f
#define PCAL6408_VALID_GPIO_MASK 0xff
#define PCAL6408_OUTPUT 0
#define PCAL6408_INPUT 1
#define PCAL6408_OUT_CONFIG_OPEN_DRAIN 0x01
/*
* Check which IO's interrupt event is triggered. If any, call its
* registered interrupt handler.
*/
int pcal6408_ioex_event_handler(int ioex);
extern const struct ioexpander_drv pcal6408_ioexpander_drv;
#endif /* __CROS_EC_IOEXPANDER_PCAL6408_H */
|