diff --git a/bdk/input/touch.c b/bdk/input/touch.c index 2d6ef034..205089a2 100644 --- a/bdk/input/touch.c +++ b/bdk/input/touch.c @@ -2,7 +2,7 @@ * Touch driver for Nintendo Switch's STM FingerTip S (FTM4CD60DA1BE/FTM4CD50TA1BE) touch controller * * Copyright (c) 2018 langerhans - * Copyright (c) 2018-2023 CTCaer + * Copyright (c) 2018-2026 CTCaer * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -367,6 +367,7 @@ int touch_execute_autotune() // Trim low power oscillator. if (touch_command(STMFTS_LP_TIMER_CALIB, NULL, 0)) return 0; + msleep(200); // Apply Mutual Sense Compensation tuning. @@ -401,11 +402,6 @@ static int touch_init() int touch_power_on() { - // Configure Touscreen and GCAsic shared GPIO. - PINMUX_AUX(PINMUX_AUX_CAM_I2C_SDA) = PINMUX_LPDR | PINMUX_INPUT_ENABLE | PINMUX_TRISTATE | PINMUX_PULL_UP | 2; - PINMUX_AUX(PINMUX_AUX_CAM_I2C_SCL) = PINMUX_IO_HV | PINMUX_LPDR | PINMUX_TRISTATE | PINMUX_PULL_DOWN | 2; // Unused. - gpio_config(GPIO_PORT_S, GPIO_PIN_3, GPIO_MODE_GPIO); // GC detect. - // Configure touchscreen Touch Reset pin. PINMUX_AUX(PINMUX_AUX_DAP4_SCLK) = PINMUX_PULL_DOWN | 1; gpio_direction_output(GPIO_PORT_J, GPIO_PIN_7, GPIO_LOW); diff --git a/bdk/soc/pinmux.c b/bdk/soc/pinmux.c index 84969c67..e11be09b 100644 --- a/bdk/soc/pinmux.c +++ b/bdk/soc/pinmux.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2018 naehrwert - * Copyright (c) 2018-2024 CTCaer + * Copyright (c) 2018-2026 CTCaer * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -15,6 +15,7 @@ * along with this program. If not, see . */ +#include #include #include @@ -30,6 +31,13 @@ void pinmux_config_i2c(u32 idx) { PINMUX_AUX(PINMUX_AUX_X_I2C_SCL(idx)) = PINMUX_INPUT_ENABLE; PINMUX_AUX(PINMUX_AUX_X_I2C_SDA(idx)) = PINMUX_INPUT_ENABLE; + + // Detach I2C4 pins from I2C3 function. + if (idx == I2C_3 || idx == I2C_4) + { + PINMUX_AUX(PINMUX_AUX_X_I2C_SCL(I2C_4)) |= 1; + PINMUX_AUX(PINMUX_AUX_X_I2C_SDA(I2C_4)) |= 1; + } } void pinmux_config_i2s(u32 idx)