From e85bc74b307365e9a7b4adab51d646638db12fbd Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Sat, 5 Jun 2021 00:12:01 +0100 Subject: x1000: GPIO refactor The GPIO API was pretty clunky and pin settings were decentralized, making it hard to see what was happening and making GPIO stuff look like a mess, frankly. Instead of passing clunky (port, pin) pairs everywhere, GPIOs are now identified with a single int. The extra overhead should be minimal as GPIO configuration is generally not on a performance-critical path. Pin assignments are now mostly consolidated in gpio-target.h and put in various tables so gpio_init() can assign most pins at boot time. Most drivers no longer need to touch GPIOs and basic pin I/O stuff can happen without config since pins are put into the right state. IRQ pins still need to be configured manually before use. Change-Id: Ic5326284b0b2a2f613e9e76a41cb50e24af3aa47 --- firmware/target/mips/ingenic_x1000/i2c-x1000.c | 18 ------------------ 1 file changed, 18 deletions(-) (limited to 'firmware/target/mips/ingenic_x1000/i2c-x1000.c') diff --git a/firmware/target/mips/ingenic_x1000/i2c-x1000.c b/firmware/target/mips/ingenic_x1000/i2c-x1000.c index 8bf606227b..6a5d2e08d2 100644 --- a/firmware/target/mips/ingenic_x1000/i2c-x1000.c +++ b/firmware/target/mips/ingenic_x1000/i2c-x1000.c @@ -25,7 +25,6 @@ #include "kernel.h" #include "panic.h" #include "logf.h" -#include "gpio-x1000.h" #include "clk-x1000.h" #include "irq-x1000.h" #include "x1000/i2c.h" @@ -375,18 +374,6 @@ void i2c_init(void) /* Stuff only required during initialization is below, basically the same as * the old driver except for how the IRQs are initially set up. */ -static const struct { - int port; - unsigned pins; - int func; -} i2c_x1000_gpio_data[] = { - {GPIO_B, 3 << 23, GPIO_DEVICE(0)}, - {GPIO_C, 3 << 26, GPIO_DEVICE(0)}, - /* Note: I2C1 is also on the following pins (normally used by LCD) */ - /* {GPIO_A, 3 << 0, GPIO_DEVICE(2)}, */ - {GPIO_D, 3 << 0, GPIO_DEVICE(1)}, -}; - static void i2c_x1000_gate(int chn, int gate) { switch(chn) { @@ -468,11 +455,6 @@ void i2c_x1000_set_freq(int chn, int freq) jz_write(I2C_FHCNT(chn), t_HIGH); } - /* Claim pins */ - gpio_config(i2c_x1000_gpio_data[chn].port, - i2c_x1000_gpio_data[chn].pins, - i2c_x1000_gpio_data[chn].func); - /* Enable the controller */ i2c_x1000_enable(chn); } -- cgit v1.2.3