blob: 4df21c58cb04e15417871a8060c5fbbcd4f568b3 [file] [log] [blame]
Felix Held3f3eca92020-01-23 17:12:32 +01001/* SPDX-License-Identifier: GPL-2.0-or-later */
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -07002
Edward O'Callaghan1b3acb12014-06-01 18:04:05 +10003#ifndef SUPERIO_ITE_IT8772F_H
4#define SUPERIO_ITE_IT8772F_H
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -07005
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -07006#define IT8772F_FDC 0x00 /* Floppy disk controller */
7#define IT8772F_SP1 0x01 /* Com1 */
8#define IT8772F_EC 0x04 /* Environment controller */
9#define IT8772F_KBCK 0x05 /* Keyboard */
10#define IT8772F_KBCM 0x06 /* Mouse */
11#define IT8772F_GPIO 0x07 /* GPIO */
12#define IT8772F_IR 0x0a /* Consumer IR */
13
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -070014
15/* GPIO interface */
16#define IT8772F_GPIO_LED_BLINK1_PINMAP 0xf8
david80ef7b72015-01-19 17:11:36 +080017
18#define SIO_GPIO_BLINK_GPIO10 0x08
Matt DeVilliera5b528f2016-11-16 15:07:52 -060019#define SIO_GPIO_BLINK_GPIO22 0x12
david80ef7b72015-01-19 17:11:36 +080020#define SIO_GPIO_BLINK_GPIO45 0x25
21
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -070022#define IT8772F_GPIO_LED_BLINK1_CONTROL 0xf9
23
david80ef7b72015-01-19 17:11:36 +080024#define IT8772F_GPIO_BLINK_FREQUENCY_4_HZ (0<<1)
25#define IT8772F_GPIO_BLINK_FREQUENCY_1_HZ (1<<1)
26#define IT8772F_GPIO_BLINK_FREQUENCY_1_4_HZ (2<<1)
27#define IT8772F_GPIO_BLINK_FREQUENCY_1_8_HZ (3<<1)
28
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -070029#define GPIO_REG_SELECT(x) (0x25 + (x))
david80ef7b72015-01-19 17:11:36 +080030
31/* GPIO Polarity Select: 1: Inverting, 0: Non-inverting */
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -070032#define GPIO_REG_POLARITY(x) (0xb0 + (x))
david80ef7b72015-01-19 17:11:36 +080033
Martin Roth26f97f92021-10-01 14:53:22 -060034/* GPIO Internal Pull-up: 1: Enable, 0: Disable */
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -070035#define GPIO_REG_PULLUP(x) (0xb8 + (x))
david80ef7b72015-01-19 17:11:36 +080036
Elyes HAOUAS6de65712018-08-07 12:12:58 +020037/* GPIO Function Select: 1: Simple I/O, 0: Alternate function */
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -070038#define GPIO_REG_ENABLE(x) (0xc0 + (x))
david80ef7b72015-01-19 17:11:36 +080039
40/* GPIO Mode: 0: input mode, 1: output mode */
Stefan Reinauerb0dd1d92012-03-30 15:04:07 -070041#define GPIO_REG_OUTPUT(x) (0xc8 + (x))
42
Kyösti Mälkki3855c012019-03-03 08:45:19 +020043#include <device/pnp_type.h>
Edward O'Callaghan1f9653a2014-07-14 16:31:25 +100044#include <stdint.h>
45
Edward O'Callaghan85836c22014-07-09 20:26:25 +100046void it8772f_gpio_setup(pnp_devfn_t dev, int set, u8 select, u8 polarity,
Edward O'Callaghan1f9653a2014-07-14 16:31:25 +100047 u8 pullup, u8 output, u8 enable);
48
david80ef7b72015-01-19 17:11:36 +080049void it8772f_gpio_led(pnp_devfn_t dev, int set, u8 select, u8 polarity, u8 pullup,
50 u8 output, u8 enable, u8 led_pin_map, u8 led_freq);
51
Edward O'Callaghan1b3acb12014-06-01 18:04:05 +100052#endif /* SUPERIO_ITE_IT8772F_H */