Felix Held | 3f3eca9 | 2020-01-23 17:12:32 +0100 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 2 | |
| 3 | #include <arch/io.h> |
Elyes HAOUAS | 9b54dfa | 2020-08-26 18:36:13 +0200 | [diff] [blame] | 4 | #include <device/pnp_def.h> |
Kyösti Mälkki | 3855c01 | 2019-03-03 08:45:19 +0200 | [diff] [blame] | 5 | #include <device/pnp_ops.h> |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 6 | |
| 7 | #include "it8772f.h" |
Joel Linn | fb51661 | 2024-03-29 14:08:35 +0100 | [diff] [blame^] | 8 | #include "../common/ite.h" |
| 9 | |
| 10 | #define IT8772F_CONFIG_REG_CC 0x02 /* Configure Control (write-only). */ |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 11 | |
| 12 | /* NOTICE: This file is deprecated, use ite/common instead */ |
| 13 | |
Joel Linn | fb51661 | 2024-03-29 14:08:35 +0100 | [diff] [blame^] | 14 | static void it8772f_enter_conf(pnp_devfn_t dev) |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 15 | { |
| 16 | u16 port = dev >> 8; |
| 17 | |
| 18 | outb(0x87, port); |
| 19 | outb(0x01, port); |
| 20 | outb(0x55, port); |
| 21 | outb((port == 0x4e) ? 0xaa : 0x55, port); |
| 22 | } |
| 23 | |
Joel Linn | fb51661 | 2024-03-29 14:08:35 +0100 | [diff] [blame^] | 24 | static void it8772f_exit_conf(pnp_devfn_t dev) |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 25 | { |
Felix Held | 6c244bd | 2019-10-07 18:47:29 +0200 | [diff] [blame] | 26 | pnp_write_config(dev, IT8772F_CONFIG_REG_CC, 0x02); |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 27 | } |
| 28 | |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 29 | /* Configure a set of GPIOs */ |
Edward O'Callaghan | 85836c2 | 2014-07-09 20:26:25 +1000 | [diff] [blame] | 30 | void it8772f_gpio_setup(pnp_devfn_t dev, int set, u8 select, u8 polarity, |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 31 | u8 pullup, u8 output, u8 enable) |
| 32 | { |
| 33 | set--; /* Set 1 is offset 0 */ |
| 34 | it8772f_enter_conf(dev); |
Joel Linn | fb51661 | 2024-03-29 14:08:35 +0100 | [diff] [blame^] | 35 | pnp_set_logical_device(dev); |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 36 | if (set < 5) { |
Felix Held | 6c244bd | 2019-10-07 18:47:29 +0200 | [diff] [blame] | 37 | pnp_write_config(dev, GPIO_REG_SELECT(set), select); |
| 38 | pnp_write_config(dev, GPIO_REG_ENABLE(set), enable); |
| 39 | pnp_write_config(dev, GPIO_REG_POLARITY(set), polarity); |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 40 | } |
Felix Held | 6c244bd | 2019-10-07 18:47:29 +0200 | [diff] [blame] | 41 | pnp_write_config(dev, GPIO_REG_OUTPUT(set), output); |
| 42 | pnp_write_config(dev, GPIO_REG_PULLUP(set), pullup); |
Edward O'Callaghan | 1f9653a | 2014-07-14 16:31:25 +1000 | [diff] [blame] | 43 | it8772f_exit_conf(dev); |
| 44 | } |
david | 80ef7b7 | 2015-01-19 17:11:36 +0800 | [diff] [blame] | 45 | |
| 46 | /* Configure LED GPIOs */ |
| 47 | void it8772f_gpio_led(pnp_devfn_t dev,int set, u8 select, u8 polarity, u8 pullup, |
| 48 | u8 output, u8 enable, u8 led_pin_map, u8 led_freq) |
| 49 | { |
| 50 | set--; /* Set 1 is offset 0 */ |
| 51 | it8772f_enter_conf(dev); |
Joel Linn | fb51661 | 2024-03-29 14:08:35 +0100 | [diff] [blame^] | 52 | pnp_set_logical_device(dev); |
david | 80ef7b7 | 2015-01-19 17:11:36 +0800 | [diff] [blame] | 53 | if (set < 5) { |
Felix Held | 6c244bd | 2019-10-07 18:47:29 +0200 | [diff] [blame] | 54 | pnp_write_config(dev, IT8772F_GPIO_LED_BLINK1_PINMAP, led_pin_map); |
| 55 | pnp_write_config(dev, IT8772F_GPIO_LED_BLINK1_CONTROL, led_freq); |
| 56 | pnp_write_config(dev, GPIO_REG_SELECT(set), select); |
| 57 | pnp_write_config(dev, GPIO_REG_ENABLE(set), enable); |
| 58 | pnp_write_config(dev, GPIO_REG_POLARITY(set), polarity); |
david | 80ef7b7 | 2015-01-19 17:11:36 +0800 | [diff] [blame] | 59 | } |
Felix Held | 6c244bd | 2019-10-07 18:47:29 +0200 | [diff] [blame] | 60 | pnp_write_config(dev, GPIO_REG_OUTPUT(set), output); |
| 61 | pnp_write_config(dev, GPIO_REG_PULLUP(set), pullup); |
david | 80ef7b7 | 2015-01-19 17:11:36 +0800 | [diff] [blame] | 62 | it8772f_exit_conf(dev); |
| 63 | } |