From a522b1f15627c69f94cbc814968be5a63519b8e3 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 16 Jan 2024 13:26:40 +1100 Subject: i2c: rename read/write register functions (#22905) --- drivers/oled/oled_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/oled/oled_driver.c') diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c index 4a2121cd7c..c674675d11 100644 --- a/drivers/oled/oled_driver.c +++ b/drivers/oled/oled_driver.c @@ -253,7 +253,7 @@ __attribute__((weak)) bool oled_send_data(const uint8_t *data, uint16_t size) { spi_stop(); return true; #elif defined(OLED_TRANSPORT_I2C) - i2c_status_t status = i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), I2C_DATA, data, size, OLED_I2C_TIMEOUT); + i2c_status_t status = i2c_write_register((OLED_DISPLAY_ADDRESS << 1), I2C_DATA, data, size, OLED_I2C_TIMEOUT); return (status == I2C_STATUS_SUCCESS); #endif } -- cgit v1.2.3 From e9bd7d7ad308f9c72c86863bf9f19382c7e2d892 Mon Sep 17 00:00:00 2001 From: David Hoelscher Date: Wed, 17 Jan 2024 07:05:38 -0600 Subject: I2C driver cleanup (#21273) * remove i2c_start and i2c_stop from i2c drivers * remove static i2c_address variable from chibios i2c driver --- docs/i2c_driver.md | 36 +++++----- docs/ja/i2c_driver.md | 3 +- drivers/gpio/pca9505.c | 2 - drivers/gpio/pca9555.c | 2 - drivers/oled/oled_driver.c | 7 +- drivers/painter/comms/qp_comms_i2c.c | 8 +-- drivers/sensors/cirque_pinnacle_i2c.c | 2 - .../keymaps/default_pimoroni/pimoroni_trackball.c | 4 +- .../keymaps/default_pimoroni/pimoroni_trackball.h | 4 +- keyboards/bajjak/bajjak.c | 47 ++++-------- keyboards/bajjak/bajjak.h | 4 +- keyboards/bajjak/matrix.c | 16 ++--- keyboards/dc01/left/matrix.c | 36 ++-------- keyboards/ergodox_ez/ergodox_ez.c | 51 ++++--------- keyboards/ergodox_ez/ergodox_ez.h | 4 +- keyboards/ergodox_ez/led_i2c.c | 27 ++++--- keyboards/ergodox_ez/matrix.c | 17 ++--- keyboards/ferris/0_2/matrix.c | 24 +++---- keyboards/gboards/ergotaco/ergotaco.c | 28 +++----- keyboards/gboards/ergotaco/ergotaco.h | 5 +- keyboards/gboards/ergotaco/matrix.c | 18 ++--- keyboards/gboards/georgi/georgi.c | 26 +++---- keyboards/gboards/georgi/georgi.h | 5 +- keyboards/gboards/georgi/matrix.c | 17 ++--- keyboards/gboards/gergo/gergo.c | 24 +++---- keyboards/gboards/gergo/gergo.h | 5 +- keyboards/gboards/gergo/matrix.c | 20 ++---- keyboards/gboards/gergoplex/gergoplex.c | 34 +++------ keyboards/gboards/gergoplex/gergoplex.h | 4 +- keyboards/gboards/gergoplex/matrix.c | 28 +++----- keyboards/handwired/d48/ds1307.c | 1 - keyboards/handwired/frenchdev/frenchdev.c | 27 +++---- keyboards/handwired/frenchdev/frenchdev.h | 4 +- keyboards/handwired/frenchdev/matrix.c | 28 +++----- .../handwired/onekey/keymaps/i2c_scanner/keymap.c | 15 +--- keyboards/handwired/pterodactyl/matrix.c | 83 ++++++---------------- keyboards/hotdox/left.c | 34 +++------ keyboards/hotdox/left.h | 7 +- keyboards/ingrained/matrix.c | 14 ++-- keyboards/kagizaraya/chidori/board.c | 3 +- keyboards/nek_type_a/nek_type_a.h | 4 +- keyboards/system76/launch_1/usb_mux.c | 77 ++++---------------- keyboards/ymdk/sp64/matrix.c | 4 +- keyboards/ymdk/sp64/sp64.c | 6 +- keyboards/ymdk/sp64/sp64.h | 4 +- platforms/avr/drivers/i2c_master.c | 31 ++++++-- platforms/avr/drivers/i2c_master.h | 7 +- platforms/chibios/drivers/i2c_master.c | 39 ++++------ platforms/chibios/drivers/i2c_master.h | 3 +- 49 files changed, 288 insertions(+), 611 deletions(-) (limited to 'drivers/oled/oled_driver.c') diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md index 2457e8e7b9..868715a62c 100644 --- a/docs/i2c_driver.md +++ b/docs/i2c_driver.md @@ -138,23 +138,6 @@ void i2c_init(void) { --- -### `i2c_status_t i2c_start(uint8_t address, uint16_t timeout)` :id=api-i2c-start - -Start an I2C transaction. - -#### Arguments :id=api-i2c-start-arguments - - - `uint8_t address` - The 7-bit I2C address of the device (ie. without the read/write bit - this will be set automatically). - - `uint16_t timeout` - The time in milliseconds to wait for a response from the target device. - -#### Return Value :id=api-i2c-start-return - -`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`. - ---- - ### `i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)` :id=api-i2c-transmit Send multiple bytes to the selected I2C device. @@ -285,6 +268,21 @@ Reads from a register with a 16-bit address (big endian) on the I2C device. --- -### `i2c_status_t i2c_stop(void)` :id=api-i2c-stop +### `i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)` :id=api-i2c-ping-address -Stop the current I2C transaction. +Pings the I2C bus for a specific address. + +On ChibiOS a "best effort" attempt is made by reading a single byte from register 0 at the requested address. This should generally work except for I2C devices that do not not respond to a register 0 read request, which will result in a false negative result (unsucessful response to ping attempt). + +This function is weakly defined, meaning it can be overridden if necessary for your particular use case: + +#### Arguments + + - `uint8_t address` + The 7-bit I2C address of the device (ie. without the read/write bit - this will be set automatically). + - `uint16_t timeout` + The time in milliseconds to wait for a response from the target device. + +#### Return Value + +`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`. diff --git a/docs/ja/i2c_driver.md b/docs/ja/i2c_driver.md index 1d8f70e163..92c4185370 100644 --- a/docs/ja/i2c_driver.md +++ b/docs/ja/i2c_driver.md @@ -23,12 +23,11 @@ I2C アドレスと他の技術詳細について、さらなる情報を得る | 関数 | 説明 | |-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `void i2c_init(void);` | I2C ドライバを初期化します。他のあらゆるトランザクションを開始する前に、この関数を一度だけ呼ぶ必要があります。 | -| `i2c_status_t i2c_start(uint8_t address, uint16_t timeout);` | I2C トランザクションを開始します。アドレスは方向ビットのない7ビットスレーブアドレスです。 | | `i2c_status_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを送信します。アドレスは方向ビットのない7ビットスレーブアドレスです。トランザクションのステータスを返します。 | | `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由でデータを受信します。アドレスは方向ビットのない7ビットスレーブアドレスです。 `length` で指定した長さのバイト列を `data` に保存し、トランザクションのステータスを返します。 | | `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_transmit` と同様ですが、 `regaddr` でスレーブのデータ書き込み先のレジスタを指定します。 | | `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_receive` と同様ですが、 `regaddr` でスレーブのデータ読み込み先のレジスタを指定します。 | -| `i2c_status_t i2c_stop(void);` | I2C トランザクションを終了します。 | +| `i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout);` | I2C アドレスをテストします。アドレスは方向ビットのない7ビットスレーブアドレスです。 | ### 関数の戻り値 :id=function-return diff --git a/drivers/gpio/pca9505.c b/drivers/gpio/pca9505.c index 4a11724ecf..5617a14a8b 100644 --- a/drivers/gpio/pca9505.c +++ b/drivers/gpio/pca9505.c @@ -41,8 +41,6 @@ void pca9505_init(uint8_t slave_addr) { } // TODO: could check device connected - // i2c_start(SLAVE_TO_ADDR(slave) | I2C_WRITE); - // i2c_stop(); } bool pca9505_set_config(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) { diff --git a/drivers/gpio/pca9555.c b/drivers/gpio/pca9555.c index 23727d21b3..0fc30099ac 100644 --- a/drivers/gpio/pca9555.c +++ b/drivers/gpio/pca9555.c @@ -29,8 +29,6 @@ void pca9555_init(uint8_t slave_addr) { } // TODO: could check device connected - // i2c_start(SLAVE_TO_ADDR(slave) | I2C_WRITE); - // i2c_stop(); } bool pca9555_set_config(uint8_t slave_addr, pca9555_port_t port, uint8_t conf) { diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c index c674675d11..8cca41394f 100644 --- a/drivers/oled/oled_driver.c +++ b/drivers/oled/oled_driver.c @@ -223,13 +223,8 @@ __attribute__((weak)) bool oled_send_cmd_P(const uint8_t *data, uint16_t size) { spi_stop(); return (status >= 0); # elif defined(OLED_TRANSPORT_I2C) - i2c_status_t status = i2c_start((OLED_DISPLAY_ADDRESS << 1) | I2C_WRITE, OLED_I2C_TIMEOUT); - for (uint16_t i = 0; i < size && status >= 0; i++) { - status = i2c_write(pgm_read_byte((const char *)data++), OLED_I2C_TIMEOUT); - } - - i2c_stop(); + i2c_status_t status = i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), data, size, OLED_I2C_TIMEOUT); return (status == I2C_STATUS_SUCCESS); # endif diff --git a/drivers/painter/comms/qp_comms_i2c.c b/drivers/painter/comms/qp_comms_i2c.c index ec45ddfb3b..93f503f3dd 100644 --- a/drivers/painter/comms/qp_comms_i2c.c +++ b/drivers/painter/comms/qp_comms_i2c.c @@ -28,18 +28,14 @@ bool qp_comms_i2c_init(painter_device_t device) { } bool qp_comms_i2c_start(painter_device_t device) { - painter_driver_t * driver = (painter_driver_t *)device; - qp_comms_i2c_config_t *comms_config = (qp_comms_i2c_config_t *)driver->comms_config; - return i2c_start(comms_config->chip_address << 1) == I2C_STATUS_SUCCESS; + return true; } uint32_t qp_comms_i2c_send_data(painter_device_t device, const void *data, uint32_t byte_count) { return qp_comms_i2c_send_raw(device, data, byte_count); } -void qp_comms_i2c_stop(painter_device_t device) { - i2c_stop(); -} +void qp_comms_i2c_stop(painter_device_t device) {} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Command+Data I2C support diff --git a/drivers/sensors/cirque_pinnacle_i2c.c b/drivers/sensors/cirque_pinnacle_i2c.c index c9b9bece5f..a3622e9d60 100644 --- a/drivers/sensors/cirque_pinnacle_i2c.c +++ b/drivers/sensors/cirque_pinnacle_i2c.c @@ -19,7 +19,6 @@ void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) { pd_dprintf("error cirque_pinnacle i2c_read_register\n"); touchpad_init = false; } - i2c_stop(); } } @@ -32,6 +31,5 @@ void RAP_Write(uint8_t address, uint8_t data) { pd_dprintf("error cirque_pinnacle i2c_write_register\n"); touchpad_init = false; } - i2c_stop(); } } diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c index 35a85b5476..0db58bfabd 100644 --- a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c +++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c @@ -38,7 +38,7 @@ static uint16_t i2c_timeout_timer; void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white) { uint8_t data[] = {0x00, red, green, blue, white}; - i2c_transmit(TRACKBALL_WRITE, data, sizeof(data), I2C_TIMEOUT); + i2c_transmit(TRACKBALL_ADDRESS, data, sizeof(data), I2C_TIMEOUT); } int16_t mouse_offset(uint8_t positive, uint8_t negative, int16_t scale) { @@ -120,7 +120,7 @@ bool pointing_device_task(void) { static uint16_t debounce_timer; uint8_t state[5] = {}; if (timer_elapsed(i2c_timeout_timer) > I2C_WAITCHECK) { - if (i2c_read_register(TRACKBALL_WRITE, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) { + if (i2c_read_register(TRACKBALL_ADDRESS, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) { if (!state[4] && !debounce) { if (scrolling) { #ifdef PIMORONI_TRACKBALL_INVERT_X diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h index cfcd5a47a1..ca2559bec7 100644 --- a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h +++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h @@ -20,10 +20,8 @@ #include "pointing_device.h" #ifndef TRACKBALL_ADDRESS -# define TRACKBALL_ADDRESS 0x0A +# define TRACKBALL_ADDRESS (0x0A << 1) #endif -#define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE) -#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ) void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white); void trackball_check_click(bool pressed, report_mouse_t *mouse); diff --git a/keyboards/bajjak/bajjak.c b/keyboards/bajjak/bajjak.c index 74e2b2aa8c..e6102e817b 100644 --- a/keyboards/bajjak/bajjak.c +++ b/keyboards/bajjak/bajjak.c @@ -137,23 +137,16 @@ uint8_t init_mcp23018(void) { // - unused : input : 1 // - input : input : 1 // - driving : output : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(IODIRA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - i2c_stop(); - - // set pull-up - // - unused : on : 1 - // - input : on : 1 - // - driving : off : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPPUA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b01111111, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - -out: - i2c_stop(); + uint8_t data[] = {0b00000000, 0b00111111}; + mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, 2, BAJJAK_EZ_I2C_TIMEOUT); + + if (!mcp23018_status) { + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, 2, BAJJAK_EZ_I2C_TIMEOUT); + } #ifdef LEFT_LEDS if (!mcp23018_status) mcp23018_status = bajjak_left_leds_update(); @@ -176,21 +169,11 @@ uint8_t bajjak_left_leds_update(void) { // - unused : hi-Z : 1 // - input : hi-Z : 1 // - driving : hi-Z : 1 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(OLATA, BAJJAK_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b11111111 - & ~(bajjak_left_led_1<. #include "i2c_master.h" // I2C aliases and register addresses (see "mcp23018.md") -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define I2C_ADDR (0b0100000<<1) #define IODIRA 0x00 // i/o direction register #define IODIRB 0x01 #define GPPUA 0x0C // GPIO pull-up resistor register diff --git a/keyboards/bajjak/matrix.c b/keyboards/bajjak/matrix.c index 20fc3c8f23..424bc29e4e 100644 --- a/keyboards/bajjak/matrix.c +++ b/keyboards/bajjak/matrix.c @@ -145,12 +145,7 @@ static matrix_row_t read_cols(uint8_t row) { uint8_t data = 0; // reading GPIOB (column port) since in mcp23018's sequential mode // it is addressed directly after writing to GPIOA in select_row() - mcp23018_status = i2c_start(I2C_ADDR_READ, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_read_nack(BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out; - data = ~((uint8_t)mcp23018_status); - mcp23018_status = I2C_STATUS_SUCCESS; - out: - i2c_stop(); + mcp23018_status = i2c_receive(I2C_ADDR, &data, 1, BAJJAK_EZ_I2C_TIMEOUT); return data; } } else { @@ -195,11 +190,10 @@ static void select_row(uint8_t row) { if (!mcp23018_status) { // set active row low : 0 // set other rows hi-Z : 1 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0xFF & ~(1 << row), BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - out: - i2c_stop(); + uint8_t data; + data = 0xFF & ~(1 << row); + mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, BAJJAK_EZ_I2C_TIMEOUT); + } } else { // select on teensy diff --git a/keyboards/dc01/left/matrix.c b/keyboards/dc01/left/matrix.c index d384c6a4bc..fd21d4333b 100644 --- a/keyboards/dc01/left/matrix.c +++ b/keyboards/dc01/left/matrix.c @@ -387,37 +387,13 @@ static void unselect_cols(void) // Complete rows from other modules over i2c i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset) { - i2c_status_t status = i2c_start(address, 5); - if (status < 0) { - goto error; - } - - status = i2c_write(0x01, 50); - if (status < 0) { - goto error; - } - - status = i2c_start(address | I2C_READ, 50); + uint8_t data[MATRIX_ROWS + 1]; + i2c_status_t status = i2c_readReg(address, 0x01, data, (MATRIX_ROWS + 1), 5); - status = i2c_read_ack(50); - if (status != 0x55) { //synchronization byte - goto error; + for (uint8_t i = 0; i < (MATRIX_ROWS) && status >= 0; i++) { //assemble slave matrix in main matrix + matrix[i] &= mask; //mask bits to keep + matrix[i] |= ((uint32_t)data[i+1] << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end } - for (uint8_t i = 0; i < MATRIX_ROWS-1 && status >= 0; i++) { //assemble slave matrix in main matrix - matrix[i] &= mask; //mask bits to keep - status = i2c_read_ack(50); - matrix[i] |= ((uint32_t)status << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end - } - //last read request must be followed by a NACK - if (status >= 0) { - matrix[MATRIX_ROWS - 1] &= mask; //mask bits to keep - status = i2c_read_nack(50); - matrix[MATRIX_ROWS - 1] |= ((uint32_t)status << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end - } - -error: - i2c_stop(); - - return (status < 0) ? status : I2C_STATUS_SUCCESS; + return status; } diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c index f088036c4a..3d6272ae66 100644 --- a/keyboards/ergodox_ez/ergodox_ez.c +++ b/keyboards/ergodox_ez/ergodox_ez.c @@ -155,31 +155,16 @@ uint8_t init_mcp23018(void) { // - unused : input : 1 // - input : input : 1 // - driving : output : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - i2c_stop(); - - // set pull-up - // - unused : on : 1 - // - input : on : 1 - // - driving : off : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - -out: - i2c_stop(); + uint8_t data[] = {0b00000000, 0b00111111}; + mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, 2, ERGODOX_EZ_I2C_TIMEOUT); + + if (!mcp23018_status) { + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, 2, ERGODOX_EZ_I2C_TIMEOUT); + } #ifdef LEFT_LEDS if (!mcp23018_status) mcp23018_status = ergodox_left_leds_update(); @@ -203,17 +188,11 @@ uint8_t ergodox_left_leds_update(void) { // - unused : hi-Z : 1 // - input : hi-Z : 1 // - driving : hi-Z : 1 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(OLATA, ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b11111111 & ~(ergodox_left_led_3 << LEFT_LED_3_SHIFT), ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b11111111 & ~(ergodox_left_led_2 << LEFT_LED_2_SHIFT) & ~(ergodox_left_led_1 << LEFT_LED_1_SHIFT), ERGODOX_EZ_I2C_TIMEOUT); - if (mcp23018_status) goto out; - -out: - i2c_stop(); + uint8_t data[2]; + data[0] = 0b11111111 & ~(ergodox_left_led_3 << LEFT_LED_3_SHIFT); + data[1] = 0b11111111 & ~(ergodox_left_led_2 << LEFT_LED_2_SHIFT) & ~(ergodox_left_led_1 << LEFT_LED_1_SHIFT); + mcp23018_status = i2c_writeReg(I2C_ADDR, OLATA, data, 2, ERGODOX_EZ_I2C_TIMEOUT); + return mcp23018_status; } #endif diff --git a/keyboards/ergodox_ez/ergodox_ez.h b/keyboards/ergodox_ez/ergodox_ez.h index befc114617..df2dbed715 100644 --- a/keyboards/ergodox_ez/ergodox_ez.h +++ b/keyboards/ergodox_ez/ergodox_ez.h @@ -26,9 +26,7 @@ along with this program. If not, see . #include "i2c_master.h" // I2C aliases and register addresses (see "mcp23018.md") -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define I2C_ADDR (0b0100000<<1) #define IODIRA 0x00 // i/o direction register #define IODIRB 0x01 #define GPPUA 0x0C // GPIO pull-up resistor register diff --git a/keyboards/ergodox_ez/led_i2c.c b/keyboards/ergodox_ez/led_i2c.c index a8802858ec..80dabf4815 100644 --- a/keyboards/ergodox_ez/led_i2c.c +++ b/keyboards/ergodox_ez/led_i2c.c @@ -24,30 +24,41 @@ along with this program. If not, see . # include "ws2812.h" void setleds_custom(rgb_led_t *led, uint16_t led_num) { - i2c_init(); - i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT); + uint16_t length = 0; int i = 0; + int j = 0; +# ifdef RGBW + int bytes_per_led = 4; +# else + int bytes_per_led = 3; +# endif # if defined(ERGODOX_LED_30) // prevent right-half code from trying to bitbang all 30 // so with 30 LEDs, we count from 29 to 15 here, and the // other half does 0 to 14. uint8_t half_led_num = RGBLIGHT_LED_COUNT / 2; + length = half_led_num * bytes_per_led; + uint8_t data[length]; for (i = half_led_num + half_led_num - 1; i >= half_led_num; --i) # elif defined(ERGODOX_LED_15_MIRROR) + length = led_num * bytes_per_led; + uint8_t data[length]; for (i = 0; i < led_num; ++i) # else // ERGDOX_LED_15 non-mirrored + length = led_num * bytes_per_led; + uint8_t data[length]; for (i = led_num - 1; i >= 0; --i) # endif { - uint8_t *data = (uint8_t *)(led + i); - i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT); - i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT); - i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT); + uint8_t *data_byte = (uint8_t *)(led + i); + data[j++] = data_byte[0]; + data[j++] = data_byte[1]; + data[j++] = data_byte[2]; #ifdef RGBW - i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT); + data[j++] = data_byte[3]; #endif } - i2c_stop(); + i2c_transmit(0x84, data, sizeof(data), ERGODOX_EZ_I2C_TIMEOUT); ws2812_setleds(led, led_num); } diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c index e84a5e2bd3..28bee05779 100644 --- a/keyboards/ergodox_ez/matrix.c +++ b/keyboards/ergodox_ez/matrix.c @@ -146,13 +146,8 @@ static matrix_row_t read_cols(uint8_t row) { uint8_t data = 0; // reading GPIOB (column port) since in mcp23018's sequential mode // it is addressed directly after writing to GPIOA in select_row() - mcp23018_status = i2c_start(I2C_ADDR_READ, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_read_nack(ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out; - data = ~((uint8_t)mcp23018_status); - mcp23018_status = I2C_STATUS_SUCCESS; - out: - i2c_stop(); - return data; + mcp23018_status = i2c_receive(I2C_ADDR, &data, 1, ERGODOX_EZ_I2C_TIMEOUT); + return ~data; } } else { /* read from teensy @@ -196,11 +191,9 @@ static void select_row(uint8_t row) { if (!mcp23018_status) { // set active row low : 0 // set other rows hi-Z : 1 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0xFF & ~(1 << row), ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - out: - i2c_stop(); + uint8_t data; + data = 0xFF & ~(1 << row); + mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, ERGODOX_EZ_I2C_TIMEOUT); } } else { // select on teensy diff --git a/keyboards/ferris/0_2/matrix.c b/keyboards/ferris/0_2/matrix.c index af4b045eb8..cf26385f4c 100644 --- a/keyboards/ferris/0_2/matrix.c +++ b/keyboards/ferris/0_2/matrix.c @@ -42,9 +42,7 @@ extern i2c_status_t mcp23017_status; // All address pins of the mcp23017 are connected to the ground on the ferris // | 0 | 1 | 0 | 0 | A2 | A1 | A0 | // | 0 | 1 | 0 | 0 | 0 | 0 | 0 | -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE) -#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ) +#define I2C_ADDR (0b0100000 << 1) // Register addresses // See https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library/blob/master/Adafruit_MCP23017.h @@ -77,9 +75,9 @@ uint8_t init_mcp23017(void) { // - driving : output : 0 // This means: we will read all the bits on GPIOA // This means: we will write to the pins 0-4 on GPIOB (in select_rows) - uint8_t buf[] = {IODIRA, 0b11111111, 0b11110000}; + uint8_t buf[] = {0b11111111, 0b11110000}; print("before transmit\n"); - mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), MCP23017_I2C_TIMEOUT); + mcp23017_status = i2c_writeReg(I2C_ADDR, IODIRA, buf, sizeof(buf), MCP23017_I2C_TIMEOUT) uprintf("after transmit %i\n", mcp23017_status); if (!mcp23017_status) { // set pull-up @@ -88,8 +86,7 @@ uint8_t init_mcp23017(void) { // - driving : off : 0 // This means: we will read all the bits on GPIOA // This means: we will write to the pins 0-4 on GPIOB (in select_rows) - uint8_t pullup_buf[] = {GPPUA, 0b11111111, 0b11110000}; - mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, pullup_buf, sizeof(pullup_buf), MCP23017_I2C_TIMEOUT); + mcp23017_status = i2c_writeReg(I2C_ADDR, GPPUA, buf, sizeof(buf), MCP23017_I2C_TIMEOUT) uprintf("after transmit2 %i\n", mcp23017_status); } return mcp23017_status; @@ -189,18 +186,13 @@ static matrix_row_t read_cols(uint8_t row) { if (mcp23017_status) { // if there was an error return 0; } else { - uint8_t buf[] = {MCP23017_GPIOA}; - mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), MCP23017_I2C_TIMEOUT); // We read all the pins on GPIOA. // The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero. // The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys. // Since the pins connected to eact columns are sequential, and counting from zero up (col 5 -> GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones. uint8_t data[] = {0}; - if (!mcp23017_status) { - mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), MCP23017_I2C_TIMEOUT); - data[0] = ~(data[0]); - } - return data[0]; + mcp23017_status = i2c_readReg(I2C_ADDR, MCP23017_GPIOA, data, sizeof(data), MCP23017_I2C_TIMEOUT); + return ~data[0]; } } } @@ -244,8 +236,8 @@ static void select_row(uint8_t row) { } else { // Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one. // Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus. - uint8_t buf[] = {MCP23017_GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))}; - mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); + uint8_t buf[] = {0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))}; + mcp23017_status = i2c_writeReg(I2C_ADDR, MCP23017_GPIOB, buf, sizeof(buf), MCP23017_I2C_TIMEOUT); } } } diff --git a/keyboards/gboards/ergotaco/ergotaco.c b/keyboards/gboards/ergotaco/ergotaco.c index daeba1e0a6..694e07f031 100644 --- a/keyboards/gboards/ergotaco/ergotaco.c +++ b/keyboards/gboards/ergotaco/ergotaco.c @@ -49,23 +49,17 @@ uint8_t init_mcp23018(void) { // - unused : input : 1 // - input : input : 1 // - driving : output : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - i2c_stop(); - - // set pull-up - // - unused : on : 1 - // - input : on : 1 - // - driving : off : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - -out: - i2c_stop(); + uint8_t data[] = {0b00000000, 0b00111111}; + mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, sizeof(data), ERGODOX_EZ_I2C_TIMEOUT); + + if (!mcp23018_status) { + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, sizeof(data), ERGODOX_EZ_I2C_TIMEOUT); + } + // SREG=sreg_prev; //uprintf("Init %x\n", mcp23018_status); return mcp23018_status; diff --git a/keyboards/gboards/ergotaco/ergotaco.h b/keyboards/gboards/ergotaco/ergotaco.h index e23fc264f4..6ab47ced74 100644 --- a/keyboards/gboards/ergotaco/ergotaco.h +++ b/keyboards/gboards/ergotaco/ergotaco.h @@ -11,10 +11,7 @@ extern i2c_status_t mcp23018_status; #define ERGODOX_EZ_I2C_TIMEOUT 1000 // I2C aliases and register addresses (see "mcp23018.md") -//#define I2C_ADDR 0b0100000 -#define I2C_ADDR 0x20 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define I2C_ADDR (0x20<<1) #define IODIRA 0x00 // i/o direction register #define IODIRB 0x01 #define GPPUA 0x0C // GPIO pull-up resistor register diff --git a/keyboards/gboards/ergotaco/matrix.c b/keyboards/gboards/ergotaco/matrix.c index 63d4c4f5f3..3c49f2802e 100644 --- a/keyboards/gboards/ergotaco/matrix.c +++ b/keyboards/gboards/ergotaco/matrix.c @@ -234,15 +234,8 @@ static matrix_row_t read_cols(uint8_t row) return 0; } else { uint8_t data = 0; - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOB, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_start(I2C_ADDR_READ, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_read_nack(ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out; - data = (~((uint8_t)mcp23018_status) >> 2) & 0x01 ; - mcp23018_status = I2C_STATUS_SUCCESS; - out: - i2c_stop(); - + mcp23018_status = i2c_readReg(I2C_ADDR, GPIOB, &data, 1, ERGODOX_EZ_I2C_TIMEOUT); + data = (~((uint8_t)data) >> 2) & 0x01 ; #ifdef DEBUG_MATRIX if (data != 0x00) xprintf("I2C: %d\n", data); #endif @@ -274,11 +267,8 @@ static void select_row(uint8_t row) if (mcp23018_status) { // do nothing on error // Read using bitmask } else { // set active row low : 0 // set other rows hi-Z : 1 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(~(1<> 1) | ((PINF & (COL1 | COL2 | COL3)) >> 3)) & 0xF); @@ -213,14 +205,10 @@ static void select_row(uint8_t row) { // select on mcp23018 if (mcp23018_status) { // do nothing on error } else { // set active row low : 0 // set other rows hi-Z : 1 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); - if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0xFF & ~(1 << (row + 1)), I2C_TIMEOUT); - if (mcp23018_status) goto out; - out: - i2c_stop(); + uint8_t data; + data = 0xFF & ~(1 << (row + 1)); + mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT); + } } else { setPinOutput(row_pins[row - MATRIX_ROWS_PER_SIDE]); diff --git a/keyboards/handwired/d48/ds1307.c b/keyboards/handwired/d48/ds1307.c index 2b3a88f315..5f4931bbf8 100644 --- a/keyboards/handwired/d48/ds1307.c +++ b/keyboards/handwired/d48/ds1307.c @@ -14,7 +14,6 @@ void ds1307_set_time(uint8_t h, uint8_t m, uint8_t s) { void ds1307_get_time(uint8_t *h, uint8_t *m, uint8_t *s) { uint8_t data[3]; i2c_read_register(DS1307_ADDR, 0, data, 3, 100); - i2c_stop(); *s = (data[0] & 0b1111) + ((data[0] & 0b1110000) >> 4) * 10; *m = (data[1] & 0b1111) + ((data[1] & 0b1110000) >> 4) * 10; *h = (data[2] & 0b1111) + ((data[2] & 0b0110000) >> 4) * 10; diff --git a/keyboards/handwired/frenchdev/frenchdev.c b/keyboards/handwired/frenchdev/frenchdev.c index 6eed4de5ff..65f1ccce4b 100644 --- a/keyboards/handwired/frenchdev/frenchdev.c +++ b/keyboards/handwired/frenchdev/frenchdev.c @@ -83,23 +83,16 @@ uint8_t init_mcp23018(void) { // - unused : input : 1 // - input : input : 1 // - driving : output : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(IODIRA, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111, I2C_TIMEOUT); if (mcp23018_status) goto out; - i2c_stop(); - - // set pull-up - // - unused : on : 1 - // - input : on : 1 - // - driving : off : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPPUA, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111, I2C_TIMEOUT); if (mcp23018_status) goto out; - -out: - i2c_stop(); + uint8_t data[] = {0b00000000, 0b00111111}; + mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, sizeof(data), I2C_TIMEOUT); + + if (!mcp23018_status) { + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, sizeof(data), I2C_TIMEOUT); + } // SREG=sreg_prev; diff --git a/keyboards/handwired/frenchdev/frenchdev.h b/keyboards/handwired/frenchdev/frenchdev.h index 6bea49d87b..0f1ac7dcaa 100644 --- a/keyboards/handwired/frenchdev/frenchdev.h +++ b/keyboards/handwired/frenchdev/frenchdev.h @@ -7,9 +7,7 @@ #include // I2C aliases and register addresses (see "mcp23018.md" on tmk repository) -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define I2C_ADDR (0b0100000<<1) #define IODIRA 0x00 // i/o direction register #define IODIRB 0x01 #define GPPUA 0x0C // GPIO pull-up resistor register diff --git a/keyboards/handwired/frenchdev/matrix.c b/keyboards/handwired/frenchdev/matrix.c index 3e859d47ef..3afc6dcee6 100644 --- a/keyboards/handwired/frenchdev/matrix.c +++ b/keyboards/handwired/frenchdev/matrix.c @@ -224,15 +224,9 @@ static matrix_row_t read_cols(uint8_t row) return 0; } else { uint8_t data = 0; - mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOB, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); if (mcp23018_status) goto out; - data = i2c_read_nack(I2C_TIMEOUT); if (mcp23018_status < 0) goto out; - data = ~((uint8_t)mcp23018_status); - mcp23018_status = I2C_STATUS_SUCCESS; - out: - i2c_stop(); - return data; + mcp23018_status = i2c_readReg(I2C_ADDR, GPIOB, &data, 1, I2C_TIMEOUT); + + return ~data; } } else { // read from teensy @@ -263,11 +257,10 @@ static void unselect_rows(void) // do nothing } else { // set all rows hi-Z : 1 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write( 0xFF & ~(0<<8), I2C_TIMEOUT); if (mcp23018_status) goto out; - out: - i2c_stop(); + uint8_t data; + data = 0xFF & ~(0<<8); + mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT); + } // unselect on teensy @@ -289,11 +282,8 @@ static void select_row(uint8_t row) } else { // set active row low : 0 // set other rows hi-Z : 1 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write( 0xFF & ~(1<. #define I2C_TIMEOUT 100 -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define I2C_ADDR (0b0100000<<1) #define IODIRA 0x00 // i/o direction register #define IODIRB 0x01 #define GPPUA 0x0C // GPIO pull-up resistor register @@ -159,9 +157,6 @@ void init_expander(void) { #endif } - expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(IODIRA, I2C_TIMEOUT); if (expander_status) goto out; - /* Pin direction and pull-up depends on both the diode direction and on whether the column register is GPIOA or GPIOB @@ -176,50 +171,27 @@ void init_expander(void) { #if (EXPANDER_COL_REGISTER == GPIOA) # if (DIODE_DIRECTION == COL2ROW) - expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out; + uint8_t data[] = { expander_input_pin_mask, 0}; # elif (DIODE_DIRECTION == ROW2COL) - expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out; + uint8_t data[] = { 0, expander_input_pin_mask}; # endif #elif (EXPANDER_COL_REGISTER == GPIOB) # if (DIODE_DIRECTION == COL2ROW) - expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out; + uint8_t data[] = { 0, expander_input_pin_mask}; # elif (DIODE_DIRECTION == ROW2COL) - expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out; -# endif -#endif - - i2c_stop(); - - // set pull-up - // - unused : off : 0 - // - input : on : 1 - // - driving : off : 0 - expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(GPPUA, I2C_TIMEOUT); if (expander_status) goto out; -#if (EXPANDER_COL_REGISTER == GPIOA) -# if (DIODE_DIRECTION == COL2ROW) - expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out; -# elif (DIODE_DIRECTION == ROW2COL) - expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out; -# endif -#elif (EXPANDER_COL_REGISTER == GPIOB) -# if (DIODE_DIRECTION == COL2ROW) - expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out; -# elif (DIODE_DIRECTION == ROW2COL) - expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out; + uint8_t data[] = { expander_input_pin_mask, 0}; # endif #endif + expander_status = i2c_writeReg(I2C_ADDR, IODIRA, data, sizeof(data), I2C_TIMEOUT); + + if (!expander_status) { + // set pull-up + // - unused : off : 0 + // - input : on : 1 + // - driving : off : 0 + expander_status = i2c_writeReg(I2C_ADDR, GPPUA, data, sizeof(data), I2C_TIMEOUT); + } -out: - i2c_stop(); } uint8_t matrix_scan(void) @@ -332,14 +304,9 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) // Read columns from expander, unless it's in an error state if (! expander_status) { - expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(EXPANDER_COL_REGISTER, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); if (expander_status) goto out; - - current_matrix[current_row] |= (~i2c_read_nack(I2C_TIMEOUT)) & expander_input_pin_mask; - - out: - i2c_stop(); + uint8_t data; + i2c_readReg(I2C_ADDR, EXPANDER_COL_REGISTER, &data, 1, I2C_TIMEOUT); + current_matrix[current_row] |= (~data) & expander_input_pin_mask; } // Read columns from onboard pins @@ -361,11 +328,8 @@ static void select_row(uint8_t row) { if (! expander_status) { // set active row low : 0 // set other rows hi-Z : 1 - expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(EXPANDER_ROW_REGISTER, I2C_TIMEOUT); if (expander_status) goto out; - expander_status = i2c_write(0xFF & ~(1< GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones. uint8_t data[] = {0}; if (!mcp23017_status) { - mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), I2C_TIMEOUT); + mcp23017_status = i2c_receive(I2C_ADDR, data, sizeof(data), I2C_TIMEOUT); data[0] = ~(data[0]); } return data[0]; @@ -249,7 +247,7 @@ static void select_row(uint8_t row) { // Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one. // Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus. uint8_t buf[] = {GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))}; - mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT); + mcp23017_status = i2c_transmit(I2C_ADDR, buf, sizeof(buf), I2C_TIMEOUT); } } } diff --git a/keyboards/kagizaraya/chidori/board.c b/keyboards/kagizaraya/chidori/board.c index 117a4c0127..34e57a8874 100644 --- a/keyboards/kagizaraya/chidori/board.c +++ b/keyboards/kagizaraya/chidori/board.c @@ -124,10 +124,9 @@ static void board_slave_init(void) { if (board_is_master(board)) { continue; } - if (i2c_start(EXPANDER_ADDR(board->i2c_address), BOARD_I2C_TIMEOUT) != I2C_STATUS_SUCCESS) { + if (i2c_ping_address(EXPANDER_ADDR(board->i2c_address), BOARD_I2C_TIMEOUT) != I2C_STATUS_SUCCESS) { continue; } - i2c_stop(); if (board_slave_config(board)) { board->initialized = true; } diff --git a/keyboards/nek_type_a/nek_type_a.h b/keyboards/nek_type_a/nek_type_a.h index dda9e2bdde..fe6fb27a45 100644 --- a/keyboards/nek_type_a/nek_type_a.h +++ b/keyboards/nek_type_a/nek_type_a.h @@ -21,9 +21,7 @@ #include #include -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define I2C_ADDR (0b0100000<<1) #define IODIRA 0x00 // i/o direction register #define IODIRB 0x01 #define GPPUA 0x0C // GPIO pull-up resistor register diff --git a/keyboards/system76/launch_1/usb_mux.c b/keyboards/system76/launch_1/usb_mux.c index 1c6dd2376e..dd51b7c4b2 100644 --- a/keyboards/system76/launch_1/usb_mux.c +++ b/keyboards/system76/launch_1/usb_mux.c @@ -77,51 +77,14 @@ i2c_status_t usb7206_read_reg(struct USB7206* self, uint32_t addr, uint8_t* data return status; } - uint8_t read[2] = { - 0x00, // Buffer address MSB: always 0 - 0x06, // Buffer address LSB: 6 to skip header - }; - - status = i2c_start((self->addr << 1) | I2C_WRITE, I2C_TIMEOUT); - if (status >= 0) { - for (uint16_t i = 0; i < sizeof(read); i++) { - status = i2c_write(read[i], I2C_TIMEOUT); - if (status < 0) { - goto error; - } - } - } else { - goto error; - } - - status = i2c_start((self->addr << 1) | I2C_READ, I2C_TIMEOUT); - if (status < 0) { - goto error; - } - - // Read and ignore buffer length - status = i2c_read_ack(I2C_TIMEOUT); - if (status < 0) { - goto error; - } + uint16_t read = 0x0006; // Buffer address 6 to skip header + uint8_t data_with_buffer_length[length]; + status = i2c_readReg16((self->addr << 1), read, data_with_buffer_length, length, I2C_TIMEOUT); for (uint16_t i = 0; i < (length - 1) && status >= 0; i++) { - status = i2c_read_ack(I2C_TIMEOUT); - if (status >= 0) { - data[i] = (uint8_t)status; - } + data[i] = data_with_buffer_length[i+1]; } - if (status >= 0) { - status = i2c_read_nack(I2C_TIMEOUT); - if (status >= 0) { - data[(length - 1)] = (uint8_t)status; - } - } - -error: - i2c_stop(); - return (status < 0) ? status : length; } @@ -160,35 +123,21 @@ i2c_status_t usb7206_write_reg(struct USB7206* self, uint32_t addr, uint8_t* dat (uint8_t)(addr >> 8), // Register address byte 1 (uint8_t)(addr >> 0), // Register address byte 0 }; + uint8_t send_buffer_length = sizeof(register_write) + length; + uint8_t send_buffer[send_buffer_length]; + uint8_t j = 0; - status = i2c_start((self->addr << 1) | I2C_WRITE, I2C_TIMEOUT); - if (status >= 0) { - for (uint16_t i = 0; i < sizeof(register_write); i++) { - status = i2c_write(register_write[i], I2C_TIMEOUT); - if (status < 0) { - goto error; - } - } + for (uint16_t i = 0; i < sizeof(register_write); i++) { + send_buffer[j++] = register_write[i]; + } - for (uint16_t i = 0; i < length; i++) { - status = i2c_write(data[i], I2C_TIMEOUT); - if (status < 0) { - goto error; - } - } - } else { - goto error; + for (uint16_t i = 0; i < length; i++) { + send_buffer[j++] = data[i]; } - i2c_stop(); + status = i2c_transmit((self->addr << 1), send_buffer, send_buffer_length, I2C_TIMEOUT); status = usb7206_register_access(self); - if (status < 0) { - goto error; - } - -error: - i2c_stop(); return (status < 0) ? status : length; } diff --git a/keyboards/ymdk/sp64/matrix.c b/keyboards/ymdk/sp64/matrix.c index b5f0e10462..6f8c7962eb 100644 --- a/keyboards/ymdk/sp64/matrix.c +++ b/keyboards/ymdk/sp64/matrix.c @@ -114,7 +114,7 @@ uint8_t matrix_scan(void) #ifdef RIGHT_HALF uint8_t data = 0x7F; // Receive the columns from right half - i2c_receive(I2C_ADDR_WRITE, &data, 1, MCP23018_I2C_TIMEOUT); + i2c_receive(I2C_ADDR, &data, 1, MCP23018_I2C_TIMEOUT); cols |= ((~(data) & 0x7F) << 7); #endif @@ -162,7 +162,7 @@ static void matrix_select_row(uint8_t row) //Set the remote row on port A txdata[0] = GPIOA; txdata[1] = 0xFF & ~(1<= 0; i++) { + status = i2c_write(pgm_read_byte((const char*)data++), timeout); + } + + i2c_stop(); + + return status; +} + i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) { i2c_status_t status = i2c_start(address | I2C_ACTION_READ, timeout); @@ -293,7 +311,8 @@ error: return (status < 0) ? status : I2C_STATUS_SUCCESS; } -void i2c_stop(void) { - // transmit STOP condition - TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO); -} +__attribute__((weak)) i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout) { + i2c_status_t status = i2c_start(address, timeout); + i2c_stop(); + return status; +} \ No newline at end of file diff --git a/platforms/avr/drivers/i2c_master.h b/platforms/avr/drivers/i2c_master.h index 18587c4a57..b797997619 100644 --- a/platforms/avr/drivers/i2c_master.h +++ b/platforms/avr/drivers/i2c_master.h @@ -41,14 +41,11 @@ typedef int16_t i2c_status_t; #define I2C_TIMEOUT_INFINITE (0xFFFF) void i2c_init(void); -i2c_status_t i2c_start(uint8_t address, uint16_t timeout); -i2c_status_t i2c_write(uint8_t data, uint16_t timeout); -int16_t i2c_read_ack(uint16_t timeout); -int16_t i2c_read_nack(uint16_t timeout); i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); -void i2c_stop(void); +i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout); diff --git a/platforms/chibios/drivers/i2c_master.c b/platforms/chibios/drivers/i2c_master.c index 5ee2738e6d..ad11d850dd 100644 --- a/platforms/chibios/drivers/i2c_master.c +++ b/platforms/chibios/drivers/i2c_master.c @@ -1,5 +1,6 @@ /* Copyright 2018 Jack Humbert * Copyright 2018 Yiancar + * Copyright 2023 customMK * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -90,8 +91,6 @@ # endif #endif -static uint8_t i2c_address; - static const I2CConfig i2cconfig = { #if defined(USE_I2CV1_CONTRIB) I2C1_CLOCK_SPEED, @@ -125,7 +124,7 @@ static i2c_status_t i2c_epilogue(const msg_t status) { // From ChibiOS HAL: "After a timeout the driver must be stopped and // restarted because the bus is in an uncertain state." We also issue that // hard stop in case of any error. - i2c_stop(); + i2cStop(&I2C_DRIVER); return status == MSG_TIMEOUT ? I2C_STATUS_TIMEOUT : I2C_STATUS_ERROR; } @@ -150,28 +149,19 @@ __attribute__((weak)) void i2c_init(void) { } } -i2c_status_t i2c_start(uint8_t address) { - i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - return I2C_STATUS_SUCCESS; -} - i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = address; i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); + msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); return i2c_epilogue(status); } i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = address; i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout)); + msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (address >> 1), data, length, TIME_MS2I(timeout)); return i2c_epilogue(status); } i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = devaddr; i2cStart(&I2C_DRIVER, &i2cconfig); uint8_t complete_packet[length + 1]; @@ -180,12 +170,11 @@ i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* } complete_packet[0] = regaddr; - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout)); + msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout)); return i2c_epilogue(status); } i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = devaddr; i2cStart(&I2C_DRIVER, &i2cconfig); uint8_t complete_packet[length + 2]; @@ -195,25 +184,27 @@ i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8 complete_packet[0] = regaddr >> 8; complete_packet[1] = regaddr & 0xFF; - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 2, 0, 0, TIME_MS2I(timeout)); + msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), complete_packet, length + 2, 0, 0, TIME_MS2I(timeout)); return i2c_epilogue(status); } i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = devaddr; i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), ®addr, 1, data, length, TIME_MS2I(timeout)); + msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), ®addr, 1, data, length, TIME_MS2I(timeout)); return i2c_epilogue(status); } i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = devaddr; i2cStart(&I2C_DRIVER, &i2cconfig); uint8_t register_packet[2] = {regaddr >> 8, regaddr & 0xFF}; - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), register_packet, 2, data, length, TIME_MS2I(timeout)); + msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), register_packet, 2, data, length, TIME_MS2I(timeout)); return i2c_epilogue(status); } -void i2c_stop(void) { - i2cStop(&I2C_DRIVER); -} +__attribute__((weak)) i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout) { + // ChibiOS does not provide low level enough control to check for an ack. + // Best effort instead tries reading register 0 which will either succeed or timeout. + // This approach may produce false negative results for I2C devices that do not respond to a register 0 read request. + uint8_t data = 0; + return i2c_readReg(address, 0, &data, sizeof(data), timeout); +} \ No newline at end of file diff --git a/platforms/chibios/drivers/i2c_master.h b/platforms/chibios/drivers/i2c_master.h index 5f16367831..132ffd14c0 100644 --- a/platforms/chibios/drivers/i2c_master.h +++ b/platforms/chibios/drivers/i2c_master.h @@ -40,11 +40,10 @@ typedef int16_t i2c_status_t; #define I2C_STATUS_TIMEOUT (-2) void i2c_init(void); -i2c_status_t i2c_start(uint8_t address); i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); -void i2c_stop(void); +i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout); -- cgit v1.2.3 From 2d1aed78a67b3d2b002cc739ef087963b05b76b8 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 18 Feb 2024 17:08:27 +1100 Subject: Update GPIO macro usages in core (#23093) --- drivers/bluetooth/bluefruit_le.cpp | 18 ++++---- drivers/eeprom/eeprom_i2c.c | 12 +++--- drivers/gpio/sn74x138.c | 24 +++++------ drivers/gpio/sn74x154.c | 18 ++++---- drivers/haptic/solenoid.c | 14 +++---- drivers/lcd/hd44780.c | 48 +++++++++++----------- drivers/lcd/st7565.c | 16 ++++---- drivers/led/apa102.c | 24 +++++------ drivers/led/aw20216s.c | 4 +- drivers/led/issi/is31fl3218-mono.c | 4 +- drivers/led/issi/is31fl3218.c | 4 +- drivers/led/issi/is31fl3731-mono.c | 4 +- drivers/led/issi/is31fl3731.c | 4 +- drivers/led/issi/is31fl3733-mono.c | 4 +- drivers/led/issi/is31fl3733.c | 4 +- drivers/led/issi/is31fl3736-mono.c | 4 +- drivers/led/issi/is31fl3736.c | 4 +- drivers/led/issi/is31fl3737-mono.c | 4 +- drivers/led/issi/is31fl3737.c | 4 +- drivers/led/issi/is31fl3741-mono.c | 4 +- drivers/led/issi/is31fl3741.c | 4 +- drivers/led/issi/is31fl3742a-mono.c | 4 +- drivers/led/issi/is31fl3742a.c | 4 +- drivers/led/issi/is31fl3743a-mono.c | 4 +- drivers/led/issi/is31fl3743a.c | 4 +- drivers/led/issi/is31fl3745-mono.c | 4 +- drivers/led/issi/is31fl3745.c | 4 +- drivers/led/issi/is31fl3746a-mono.c | 4 +- drivers/led/issi/is31fl3746a.c | 4 +- drivers/led/snled27351-mono.c | 4 +- drivers/led/snled27351.c | 4 +- drivers/oled/oled_driver.c | 20 ++++----- drivers/painter/comms/qp_comms_spi.c | 20 ++++----- drivers/sensors/adns5050.c | 32 +++++++-------- drivers/sensors/adns9800.c | 2 +- drivers/sensors/analog_joystick.c | 8 ++-- drivers/sensors/paw3204.c | 24 +++++------ drivers/sensors/pmw3320.c | 32 +++++++-------- drivers/usb2422.c | 10 ++--- .../onekey/keymaps/chibios_waiting_test/keymap.c | 12 +++--- platforms/avr/drivers/audio_pwm_hardware.c | 4 +- platforms/avr/drivers/backlight_pwm.c | 6 +-- platforms/avr/drivers/ps2/ps2_io.c | 20 ++++----- platforms/avr/drivers/serial.c | 10 ++--- platforms/avr/drivers/spi_master.c | 16 ++++---- platforms/chibios/drivers/serial.c | 12 +++--- platforms/chibios/drivers/spi_master.c | 14 +++---- platforms/chibios/drivers/ws2812_bitbang.c | 8 ++-- quantum/backlight/backlight_driver_common.c | 10 ++--- quantum/dip_switch.c | 4 +- quantum/encoder.c | 8 ++-- quantum/haptic.c | 8 ++-- quantum/haptic.h | 16 ++++---- quantum/joystick.c | 2 +- quantum/led.c | 30 +++++++------- quantum/matrix.c | 14 +++---- quantum/pointing_device/pointing_device.c | 8 ++-- quantum/split_common/split_util.c | 16 ++++---- tmk_core/protocol/arm_atsam/shift_register.c | 24 +++++------ tmk_core/protocol/arm_atsam/spi_master.c | 8 ++-- tmk_core/protocol/usb_util.c | 4 +- 61 files changed, 334 insertions(+), 334 deletions(-) (limited to 'drivers/oled/oled_driver.c') diff --git a/drivers/bluetooth/bluefruit_le.cpp b/drivers/bluetooth/bluefruit_le.cpp index 39c14ddd13..218eca2195 100644 --- a/drivers/bluetooth/bluefruit_le.cpp +++ b/drivers/bluetooth/bluefruit_le.cpp @@ -188,7 +188,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) { bool ready = false; do { - ready = readPin(BLUEFRUIT_LE_IRQ_PIN); + ready = gpio_read_pin(BLUEFRUIT_LE_IRQ_PIN); if (ready) { break; } @@ -231,7 +231,7 @@ static void resp_buf_read_one(bool greedy) { return; } - if (readPin(BLUEFRUIT_LE_IRQ_PIN)) { + if (gpio_read_pin(BLUEFRUIT_LE_IRQ_PIN)) { struct sdep_msg msg; again: @@ -242,7 +242,7 @@ static void resp_buf_read_one(bool greedy) { dprintf("recv latency %dms\n", TIMER_DIFF_16(timer_read(), last_send)); } - if (greedy && resp_buf.peek(last_send) && readPin(BLUEFRUIT_LE_IRQ_PIN)) { + if (greedy && resp_buf.peek(last_send) && gpio_read_pin(BLUEFRUIT_LE_IRQ_PIN)) { goto again; } } @@ -293,16 +293,16 @@ void bluefruit_le_init(void) { state.configured = false; state.is_connected = false; - setPinInput(BLUEFRUIT_LE_IRQ_PIN); + gpio_set_pin_input(BLUEFRUIT_LE_IRQ_PIN); spi_init(); // Perform a hardware reset - setPinOutput(BLUEFRUIT_LE_RST_PIN); - writePinHigh(BLUEFRUIT_LE_RST_PIN); - writePinLow(BLUEFRUIT_LE_RST_PIN); + gpio_set_pin_output(BLUEFRUIT_LE_RST_PIN); + gpio_write_pin_high(BLUEFRUIT_LE_RST_PIN); + gpio_write_pin_low(BLUEFRUIT_LE_RST_PIN); wait_ms(10); - writePinHigh(BLUEFRUIT_LE_RST_PIN); + gpio_write_pin_high(BLUEFRUIT_LE_RST_PIN); wait_ms(1000); // Give it a second to initialize @@ -508,7 +508,7 @@ void bluefruit_le_task(void) { resp_buf_read_one(true); send_buf_send_one(SdepShortTimeout); - if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(BLUEFRUIT_LE_IRQ_PIN)) { + if (resp_buf.empty() && (state.event_flags & UsingEvents) && gpio_read_pin(BLUEFRUIT_LE_IRQ_PIN)) { // Must be an event update if (at_command_P(PSTR("AT+EVENTSTATUS"), resbuf, sizeof(resbuf))) { uint32_t mask = strtoul(resbuf, NULL, 16); diff --git a/drivers/eeprom/eeprom_i2c.c b/drivers/eeprom/eeprom_i2c.c index a74a010415..0d3d5ccbe5 100644 --- a/drivers/eeprom/eeprom_i2c.c +++ b/drivers/eeprom/eeprom_i2c.c @@ -57,8 +57,8 @@ void eeprom_driver_init(void) { i2c_init(); #if defined(EXTERNAL_EEPROM_WP_PIN) /* We are setting the WP pin to high in a way that requires at least two bit-flips to change back to 0 */ - writePin(EXTERNAL_EEPROM_WP_PIN, 1); - setPinInputHigh(EXTERNAL_EEPROM_WP_PIN); + gpio_write_pin(EXTERNAL_EEPROM_WP_PIN, 1); + gpio_set_pin_input_high(EXTERNAL_EEPROM_WP_PIN); #endif } @@ -100,8 +100,8 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) { uintptr_t target_addr = (uintptr_t)addr; #if defined(EXTERNAL_EEPROM_WP_PIN) - setPinOutput(EXTERNAL_EEPROM_WP_PIN); - writePin(EXTERNAL_EEPROM_WP_PIN, 0); + gpio_set_pin_output(EXTERNAL_EEPROM_WP_PIN); + gpio_write_pin(EXTERNAL_EEPROM_WP_PIN, 0); #endif while (len > 0) { @@ -134,7 +134,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) { #if defined(EXTERNAL_EEPROM_WP_PIN) /* We are setting the WP pin to high in a way that requires at least two bit-flips to change back to 0 */ - writePin(EXTERNAL_EEPROM_WP_PIN, 1); - setPinInputHigh(EXTERNAL_EEPROM_WP_PIN); + gpio_write_pin(EXTERNAL_EEPROM_WP_PIN, 1); + gpio_set_pin_input_high(EXTERNAL_EEPROM_WP_PIN); #endif } diff --git a/drivers/gpio/sn74x138.c b/drivers/gpio/sn74x138.c index 222e5db56c..1cf8e54f56 100644 --- a/drivers/gpio/sn74x138.c +++ b/drivers/gpio/sn74x138.c @@ -27,39 +27,39 @@ static const pin_t address_pins[ADDRESS_PIN_COUNT] = SN74X138_ADDRESS_PINS; void sn74x138_init(void) { for (int i = 0; i < ADDRESS_PIN_COUNT; i++) { - setPinOutput(address_pins[i]); - writePinLow(address_pins[i]); + gpio_set_pin_output(address_pins[i]); + gpio_write_pin_low(address_pins[i]); } #if defined(SN74X138_E1_PIN) - setPinOutput(SN74X138_E1_PIN); - writePinHigh(SN74X138_E1_PIN); + gpio_set_pin_output(SN74X138_E1_PIN); + gpio_write_pin_high(SN74X138_E1_PIN); #endif #if defined(SN74X138_E2_PIN) - setPinOutput(SN74X138_E2_PIN); - writePinHigh(SN74X138_E2_PIN); + gpio_set_pin_output(SN74X138_E2_PIN); + gpio_write_pin_high(SN74X138_E2_PIN); #endif #if defined(SN74X138_E3_PIN) - setPinOutput(SN74X138_E3_PIN); - writePinLow(SN74X138_E3_PIN); + gpio_set_pin_output(SN74X138_E3_PIN); + gpio_write_pin_low(SN74X138_E3_PIN); #endif } void sn74x138_set_enabled(bool enabled) { #if defined(SN74X138_E1_PIN) - writePin(SN74X138_E1_PIN, !enabled); + gpio_write_pin(SN74X138_E1_PIN, !enabled); #endif #if defined(SN74X138_E2_PIN) - writePin(SN74X138_E2_PIN, !enabled); + gpio_write_pin(SN74X138_E2_PIN, !enabled); #endif #if defined(SN74X138_E3_PIN) - writePin(SN74X138_E3_PIN, enabled); + gpio_write_pin(SN74X138_E3_PIN, enabled); #endif } void sn74x138_set_addr(uint8_t address) { for (int i = 0; i < ADDRESS_PIN_COUNT; i++) { - writePin(address_pins[i], address & (1 << i)); + gpio_write_pin(address_pins[i], address & (1 << i)); } } diff --git a/drivers/gpio/sn74x154.c b/drivers/gpio/sn74x154.c index 5f21f12b55..6226adf27e 100644 --- a/drivers/gpio/sn74x154.c +++ b/drivers/gpio/sn74x154.c @@ -27,32 +27,32 @@ static const pin_t address_pins[ADDRESS_PIN_COUNT] = SN74X154_ADDRESS_PINS; void sn74x154_init(void) { for (int i = 0; i < ADDRESS_PIN_COUNT; i++) { - setPinOutput(address_pins[i]); - writePinLow(address_pins[i]); + gpio_set_pin_output(address_pins[i]); + gpio_write_pin_low(address_pins[i]); } #if defined(SN74X154_E0_PIN) - setPinOutput(SN74X154_E0_PIN); - writePinHigh(SN74X154_E0_PIN); + gpio_set_pin_output(SN74X154_E0_PIN); + gpio_write_pin_high(SN74X154_E0_PIN); #endif #if defined(SN74X154_E1_PIN) - setPinOutput(SN74X154_E1_PIN); - writePinHigh(SN74X154_E1_PIN); + gpio_set_pin_output(SN74X154_E1_PIN); + gpio_write_pin_high(SN74X154_E1_PIN); #endif } void sn74x154_set_enabled(bool enabled) { #if defined(SN74X154_E0_PIN) - writePin(SN74X154_E0_PIN, !enabled); + gpio_write_pin(SN74X154_E0_PIN, !enabled); #endif #if defined(SN74X154_E1_PIN) - writePin(SN74X154_E1_PIN, !enabled); + gpio_write_pin(SN74X154_E1_PIN, !enabled); #endif } void sn74x154_set_addr(uint8_t address) { for (int i = 0; i < ADDRESS_PIN_COUNT; i++) { - writePin(address_pins[i], address & (1 << i)); + gpio_write_pin(address_pins[i], address & (1 << i)); } } diff --git a/drivers/haptic/solenoid.c b/drivers/haptic/solenoid.c index da4095cda4..346b88bbc4 100644 --- a/drivers/haptic/solenoid.c +++ b/drivers/haptic/solenoid.c @@ -61,7 +61,7 @@ void solenoid_set_dwell(uint8_t dwell) { * @param index select which solenoid to check/stop */ void solenoid_stop(uint8_t index) { - writePin(solenoid_pads[index], !solenoid_active_state[index]); + gpio_write_pin(solenoid_pads[index], !solenoid_active_state[index]); solenoid_on[index] = false; solenoid_buzzing[index] = false; } @@ -78,7 +78,7 @@ void solenoid_fire(uint8_t index) { solenoid_on[index] = true; solenoid_buzzing[index] = true; solenoid_start[index] = timer_read(); - writePin(solenoid_pads[index], solenoid_active_state[index]); + gpio_write_pin(solenoid_pads[index], solenoid_active_state[index]); } /** @@ -128,12 +128,12 @@ void solenoid_check(void) { if ((elapsed[i] % (SOLENOID_BUZZ_ACTUATED + SOLENOID_BUZZ_NONACTUATED)) < SOLENOID_BUZZ_ACTUATED) { if (!solenoid_buzzing[i]) { solenoid_buzzing[i] = true; - writePin(solenoid_pads[i], solenoid_active_state[i]); + gpio_write_pin(solenoid_pads[i], solenoid_active_state[i]); } } else { if (solenoid_buzzing[i]) { solenoid_buzzing[i] = false; - writePin(solenoid_pads[i], !solenoid_active_state[i]); + gpio_write_pin(solenoid_pads[i], !solenoid_active_state[i]); } } } @@ -156,8 +156,8 @@ void solenoid_setup(void) { #else solenoid_active_state[i] = high; #endif - writePin(solenoid_pads[i], !solenoid_active_state[i]); - setPinOutput(solenoid_pads[i]); + gpio_write_pin(solenoid_pads[i], !solenoid_active_state[i]); + gpio_set_pin_output(solenoid_pads[i]); if ((!HAPTIC_OFF_IN_LOW_POWER) || (usb_device_state == USB_DEVICE_STATE_CONFIGURED)) { solenoid_fire(i); } @@ -170,6 +170,6 @@ void solenoid_setup(void) { */ void solenoid_shutdown(void) { for (uint8_t i = 0; i < NUMBER_OF_SOLENOIDS; i++) { - writePin(solenoid_pads[i], !solenoid_active_state[i]); + gpio_write_pin(solenoid_pads[i], !solenoid_active_state[i]); } } diff --git a/drivers/lcd/hd44780.c b/drivers/lcd/hd44780.c index ccc50117ab..9b4e2f0226 100644 --- a/drivers/lcd/hd44780.c +++ b/drivers/lcd/hd44780.c @@ -57,67 +57,67 @@ static const pin_t data_pins[4] = HD44780_DATA_PINS; #define HD44780_ENABLE_DELAY_US 1 static void hd44780_latch(void) { - writePinHigh(HD44780_E_PIN); + gpio_write_pin_high(HD44780_E_PIN); wait_us(HD44780_ENABLE_DELAY_US); - writePinLow(HD44780_E_PIN); + gpio_write_pin_low(HD44780_E_PIN); } void hd44780_write(uint8_t data, bool isData) { - writePin(HD44780_RS_PIN, isData); - writePinLow(HD44780_RW_PIN); + gpio_write_pin(HD44780_RS_PIN, isData); + gpio_write_pin_low(HD44780_RW_PIN); for (int i = 0; i < 4; i++) { - setPinOutput(data_pins[i]); + gpio_set_pin_output(data_pins[i]); } // Write high nibble for (int i = 0; i < 4; i++) { - writePin(data_pins[i], (data >> 4) & (1 << i)); + gpio_write_pin(data_pins[i], (data >> 4) & (1 << i)); } hd44780_latch(); // Write low nibble for (int i = 0; i < 4; i++) { - writePin(data_pins[i], data & (1 << i)); + gpio_write_pin(data_pins[i], data & (1 << i)); } hd44780_latch(); for (int i = 0; i < 4; i++) { - writePinHigh(data_pins[i]); + gpio_write_pin_high(data_pins[i]); } } uint8_t hd44780_read(bool isData) { uint8_t data = 0; - writePin(HD44780_RS_PIN, isData); - writePinHigh(HD44780_RW_PIN); + gpio_write_pin(HD44780_RS_PIN, isData); + gpio_write_pin_high(HD44780_RW_PIN); for (int i = 0; i < 4; i++) { - setPinInput(data_pins[i]); + gpio_set_pin_input(data_pins[i]); } - writePinHigh(HD44780_E_PIN); + gpio_write_pin_high(HD44780_E_PIN); wait_us(HD44780_ENABLE_DELAY_US); // Read high nibble for (int i = 0; i < 4; i++) { - data |= (readPin(data_pins[i]) << i); + data |= (gpio_read_pin(data_pins[i]) << i); } data <<= 4; - writePinLow(HD44780_E_PIN); + gpio_write_pin_low(HD44780_E_PIN); wait_us(HD44780_ENABLE_DELAY_US); - writePinHigh(HD44780_E_PIN); + gpio_write_pin_high(HD44780_E_PIN); wait_us(HD44780_ENABLE_DELAY_US); // Read low nibble for (int i = 0; i < 4; i++) { - data |= (readPin(data_pins[i]) << i); + data |= (gpio_read_pin(data_pins[i]) << i); } - writePinLow(HD44780_E_PIN); + gpio_write_pin_low(HD44780_E_PIN); return data; } @@ -171,20 +171,20 @@ void hd44780_set_ddram_address(uint8_t address) { } void hd44780_init(bool cursor, bool blink) { - setPinOutput(HD44780_RS_PIN); - setPinOutput(HD44780_RW_PIN); - setPinOutput(HD44780_E_PIN); + gpio_set_pin_output(HD44780_RS_PIN); + gpio_set_pin_output(HD44780_RW_PIN); + gpio_set_pin_output(HD44780_E_PIN); for (int i = 0; i < 4; i++) { - setPinOutput(data_pins[i]); + gpio_set_pin_output(data_pins[i]); } wait_ms(HD44780_INIT_DELAY_MS); // Manually configure for 4-bit mode - can't use hd44780_command() yet // HD44780U datasheet, Fig. 24 (p46) - writePinHigh(data_pins[0]); // Function set - writePinHigh(data_pins[1]); // DL = 1 + gpio_write_pin_high(data_pins[0]); // Function set + gpio_write_pin_high(data_pins[1]); // DL = 1 hd44780_latch(); wait_ms(5); // Send again @@ -194,7 +194,7 @@ void hd44780_init(bool cursor, bool blink) { hd44780_latch(); wait_us(64); - writePinLow(data_pins[0]); // DL = 0 + gpio_write_pin_low(data_pins[0]); // DL = 0 hd44780_latch(); wait_us(64); diff --git a/drivers/lcd/st7565.c b/drivers/lcd/st7565.c index 47ee02804b..4fce40edbe 100644 --- a/drivers/lcd/st7565.c +++ b/drivers/lcd/st7565.c @@ -92,10 +92,10 @@ static void InvertCharacter(uint8_t *cursor) { } bool st7565_init(display_rotation_t rotation) { - setPinOutput(ST7565_A0_PIN); - writePinHigh(ST7565_A0_PIN); - setPinOutput(ST7565_RST_PIN); - writePinHigh(ST7565_RST_PIN); + gpio_set_pin_output(ST7565_A0_PIN); + gpio_write_pin_high(ST7565_A0_PIN); + gpio_set_pin_output(ST7565_RST_PIN); + gpio_write_pin_high(ST7565_RST_PIN); st7565_rotation = st7565_init_user(rotation); @@ -488,18 +488,18 @@ void st7565_task(void) { __attribute__((weak)) void st7565_task_user(void) {} void st7565_reset(void) { - writePinLow(ST7565_RST_PIN); + gpio_write_pin_low(ST7565_RST_PIN); wait_ms(20); - writePinHigh(ST7565_RST_PIN); + gpio_write_pin_high(ST7565_RST_PIN); wait_ms(20); } spi_status_t st7565_send_cmd(uint8_t cmd) { - writePinLow(ST7565_A0_PIN); + gpio_write_pin_low(ST7565_A0_PIN); return spi_write(cmd); } spi_status_t st7565_send_data(uint8_t *data, uint16_t length) { - writePinHigh(ST7565_A0_PIN); + gpio_write_pin_high(ST7565_A0_PIN); return spi_transmit(data, length); } diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c index 548b8f094e..d6d4327495 100644 --- a/drivers/led/apa102.c +++ b/drivers/led/apa102.c @@ -43,14 +43,14 @@ } \ } while (0) -#define APA102_SEND_BIT(byte, bit) \ - do { \ - writePin(APA102_DI_PIN, (byte >> bit) & 1); \ - io_wait; \ - writePinHigh(APA102_CI_PIN); \ - io_wait; \ - writePinLow(APA102_CI_PIN); \ - io_wait; \ +#define APA102_SEND_BIT(byte, bit) \ + do { \ + gpio_write_pin(APA102_DI_PIN, (byte >> bit) & 1); \ + io_wait; \ + gpio_write_pin_high(APA102_CI_PIN); \ + io_wait; \ + gpio_write_pin_low(APA102_CI_PIN); \ + io_wait; \ } while (0) uint8_t apa102_led_brightness = APA102_DEFAULT_BRIGHTNESS; @@ -114,11 +114,11 @@ static void apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t } void apa102_init(void) { - setPinOutput(APA102_DI_PIN); - setPinOutput(APA102_CI_PIN); + gpio_set_pin_output(APA102_DI_PIN); + gpio_set_pin_output(APA102_CI_PIN); - writePinLow(APA102_DI_PIN); - writePinLow(APA102_CI_PIN); + gpio_write_pin_low(APA102_DI_PIN); + gpio_write_pin_low(APA102_CI_PIN); } void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) { diff --git a/drivers/led/aw20216s.c b/drivers/led/aw20216s.c index fa4454b6b1..704794f5b5 100644 --- a/drivers/led/aw20216s.c +++ b/drivers/led/aw20216s.c @@ -114,8 +114,8 @@ void aw20216s_init_drivers(void) { spi_init(); #if defined(AW20216S_EN_PIN) - setPinOutput(AW20216S_EN_PIN); - writePinHigh(AW20216S_EN_PIN); + gpio_set_pin_output(AW20216S_EN_PIN); + gpio_write_pin_high(AW20216S_EN_PIN); #endif aw20216s_init(AW20216S_CS_PIN_1); diff --git a/drivers/led/issi/is31fl3218-mono.c b/drivers/led/issi/is31fl3218-mono.c index cb5a069160..0174da7ab3 100644 --- a/drivers/led/issi/is31fl3218-mono.c +++ b/drivers/led/issi/is31fl3218-mono.c @@ -68,8 +68,8 @@ void is31fl3218_init(void) { i2c_init(); #if defined(IS31FL3218_SDB_PIN) - setPinOutput(IS31FL3218_SDB_PIN); - writePinHigh(IS31FL3218_SDB_PIN); + gpio_set_pin_output(IS31FL3218_SDB_PIN); + gpio_write_pin_high(IS31FL3218_SDB_PIN); #endif // In case we ever want to reinitialize (?) diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c index c3a0946e83..dd97d236f7 100644 --- a/drivers/led/issi/is31fl3218.c +++ b/drivers/led/issi/is31fl3218.c @@ -68,8 +68,8 @@ void is31fl3218_init(void) { i2c_init(); #if defined(IS31FL3218_SDB_PIN) - setPinOutput(IS31FL3218_SDB_PIN); - writePinHigh(IS31FL3218_SDB_PIN); + gpio_set_pin_output(IS31FL3218_SDB_PIN); + gpio_write_pin_high(IS31FL3218_SDB_PIN); #endif // In case we ever want to reinitialize (?) diff --git a/drivers/led/issi/is31fl3731-mono.c b/drivers/led/issi/is31fl3731-mono.c index 5ff8f8b7c5..33a863b982 100644 --- a/drivers/led/issi/is31fl3731-mono.c +++ b/drivers/led/issi/is31fl3731-mono.c @@ -99,8 +99,8 @@ void is31fl3731_init_drivers(void) { i2c_init(); #if defined(IS31FL3731_SDB_PIN) - setPinOutput(IS31FL3731_SDB_PIN); - writePinHigh(IS31FL3731_SDB_PIN); + gpio_set_pin_output(IS31FL3731_SDB_PIN); + gpio_write_pin_high(IS31FL3731_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3731_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c index 380861d5b8..86d953ef25 100644 --- a/drivers/led/issi/is31fl3731.c +++ b/drivers/led/issi/is31fl3731.c @@ -98,8 +98,8 @@ void is31fl3731_init_drivers(void) { i2c_init(); #if defined(IS31FL3731_SDB_PIN) - setPinOutput(IS31FL3731_SDB_PIN); - writePinHigh(IS31FL3731_SDB_PIN); + gpio_set_pin_output(IS31FL3731_SDB_PIN); + gpio_write_pin_high(IS31FL3731_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3731_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3733-mono.c b/drivers/led/issi/is31fl3733-mono.c index 13f2d9b983..740fe06097 100644 --- a/drivers/led/issi/is31fl3733-mono.c +++ b/drivers/led/issi/is31fl3733-mono.c @@ -144,8 +144,8 @@ void is31fl3733_init_drivers(void) { i2c_init(); #if defined(IS31FL3733_SDB_PIN) - setPinOutput(IS31FL3733_SDB_PIN); - writePinHigh(IS31FL3733_SDB_PIN); + gpio_set_pin_output(IS31FL3733_SDB_PIN); + gpio_write_pin_high(IS31FL3733_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3733_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c index ac6f4b4c89..a1d6899114 100644 --- a/drivers/led/issi/is31fl3733.c +++ b/drivers/led/issi/is31fl3733.c @@ -143,8 +143,8 @@ void is31fl3733_init_drivers(void) { i2c_init(); #if defined(IS31FL3733_SDB_PIN) - setPinOutput(IS31FL3733_SDB_PIN); - writePinHigh(IS31FL3733_SDB_PIN); + gpio_set_pin_output(IS31FL3733_SDB_PIN); + gpio_write_pin_high(IS31FL3733_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3733_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3736-mono.c b/drivers/led/issi/is31fl3736-mono.c index 0d3b5db4e4..7a5415c725 100644 --- a/drivers/led/issi/is31fl3736-mono.c +++ b/drivers/led/issi/is31fl3736-mono.c @@ -115,8 +115,8 @@ void is31fl3736_init_drivers(void) { i2c_init(); #if defined(IS31FL3736_SDB_PIN) - setPinOutput(IS31FL3736_SDB_PIN); - writePinHigh(IS31FL3736_SDB_PIN); + gpio_set_pin_output(IS31FL3736_SDB_PIN); + gpio_write_pin_high(IS31FL3736_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3736_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c index 990e6c8905..3ab42e2f7c 100644 --- a/drivers/led/issi/is31fl3736.c +++ b/drivers/led/issi/is31fl3736.c @@ -115,8 +115,8 @@ void is31fl3736_init_drivers(void) { i2c_init(); #if defined(IS31FL3736_SDB_PIN) - setPinOutput(IS31FL3736_SDB_PIN); - writePinHigh(IS31FL3736_SDB_PIN); + gpio_set_pin_output(IS31FL3736_SDB_PIN); + gpio_write_pin_high(IS31FL3736_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3736_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3737-mono.c b/drivers/led/issi/is31fl3737-mono.c index 37d684cff0..7b2e5a3576 100644 --- a/drivers/led/issi/is31fl3737-mono.c +++ b/drivers/led/issi/is31fl3737-mono.c @@ -117,8 +117,8 @@ void is31fl3737_init_drivers(void) { i2c_init(); #if defined(IS31FL3737_SDB_PIN) - setPinOutput(IS31FL3737_SDB_PIN); - writePinHigh(IS31FL3737_SDB_PIN); + gpio_set_pin_output(IS31FL3737_SDB_PIN); + gpio_write_pin_high(IS31FL3737_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3737_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c index fb760cda5e..b27a4cbb0f 100644 --- a/drivers/led/issi/is31fl3737.c +++ b/drivers/led/issi/is31fl3737.c @@ -117,8 +117,8 @@ void is31fl3737_init_drivers(void) { i2c_init(); #if defined(IS31FL3737_SDB_PIN) - setPinOutput(IS31FL3737_SDB_PIN); - writePinHigh(IS31FL3737_SDB_PIN); + gpio_set_pin_output(IS31FL3737_SDB_PIN); + gpio_write_pin_high(IS31FL3737_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3737_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3741-mono.c b/drivers/led/issi/is31fl3741-mono.c index e4857b72d4..dbccba0fc8 100644 --- a/drivers/led/issi/is31fl3741-mono.c +++ b/drivers/led/issi/is31fl3741-mono.c @@ -143,8 +143,8 @@ void is31fl3741_init_drivers(void) { i2c_init(); #if defined(IS31FL3741_SDB_PIN) - setPinOutput(IS31FL3741_SDB_PIN); - writePinHigh(IS31FL3741_SDB_PIN); + gpio_set_pin_output(IS31FL3741_SDB_PIN); + gpio_write_pin_high(IS31FL3741_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3741_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c index a6cb661d91..3614d1c104 100644 --- a/drivers/led/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c @@ -143,8 +143,8 @@ void is31fl3741_init_drivers(void) { i2c_init(); #if defined(IS31FL3741_SDB_PIN) - setPinOutput(IS31FL3741_SDB_PIN); - writePinHigh(IS31FL3741_SDB_PIN); + gpio_set_pin_output(IS31FL3741_SDB_PIN); + gpio_write_pin_high(IS31FL3741_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3741_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3742a-mono.c b/drivers/led/issi/is31fl3742a-mono.c index a33865260c..c63db1a7fc 100644 --- a/drivers/led/issi/is31fl3742a-mono.c +++ b/drivers/led/issi/is31fl3742a-mono.c @@ -116,8 +116,8 @@ void is31fl3742a_init_drivers(void) { i2c_init(); #if defined(IS31FL3742A_SDB_PIN) - setPinOutput(IS31FL3742A_SDB_PIN); - writePinHigh(IS31FL3742A_SDB_PIN); + gpio_set_pin_output(IS31FL3742A_SDB_PIN); + gpio_write_pin_high(IS31FL3742A_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3742A_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3742a.c b/drivers/led/issi/is31fl3742a.c index 8900ae666f..b8e9a58759 100644 --- a/drivers/led/issi/is31fl3742a.c +++ b/drivers/led/issi/is31fl3742a.c @@ -116,8 +116,8 @@ void is31fl3742a_init_drivers(void) { i2c_init(); #if defined(IS31FL3742A_SDB_PIN) - setPinOutput(IS31FL3742A_SDB_PIN); - writePinHigh(IS31FL3742A_SDB_PIN); + gpio_set_pin_output(IS31FL3742A_SDB_PIN); + gpio_write_pin_high(IS31FL3742A_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3742A_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3743a-mono.c b/drivers/led/issi/is31fl3743a-mono.c index 99b1af160e..6413dbef04 100644 --- a/drivers/led/issi/is31fl3743a-mono.c +++ b/drivers/led/issi/is31fl3743a-mono.c @@ -138,8 +138,8 @@ void is31fl3743a_init_drivers(void) { i2c_init(); #if defined(IS31FL3743A_SDB_PIN) - setPinOutput(IS31FL3743A_SDB_PIN); - writePinHigh(IS31FL3743A_SDB_PIN); + gpio_set_pin_output(IS31FL3743A_SDB_PIN); + gpio_write_pin_high(IS31FL3743A_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3743A_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3743a.c b/drivers/led/issi/is31fl3743a.c index 135e20710d..6f13925f27 100644 --- a/drivers/led/issi/is31fl3743a.c +++ b/drivers/led/issi/is31fl3743a.c @@ -138,8 +138,8 @@ void is31fl3743a_init_drivers(void) { i2c_init(); #if defined(IS31FL3743A_SDB_PIN) - setPinOutput(IS31FL3743A_SDB_PIN); - writePinHigh(IS31FL3743A_SDB_PIN); + gpio_set_pin_output(IS31FL3743A_SDB_PIN); + gpio_write_pin_high(IS31FL3743A_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3743A_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3745-mono.c b/drivers/led/issi/is31fl3745-mono.c index c5d083b272..a6ab699245 100644 --- a/drivers/led/issi/is31fl3745-mono.c +++ b/drivers/led/issi/is31fl3745-mono.c @@ -138,8 +138,8 @@ void is31fl3745_init_drivers(void) { i2c_init(); #if defined(IS31FL3745_SDB_PIN) - setPinOutput(IS31FL3745_SDB_PIN); - writePinHigh(IS31FL3745_SDB_PIN); + gpio_set_pin_output(IS31FL3745_SDB_PIN); + gpio_write_pin_high(IS31FL3745_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3745_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3745.c b/drivers/led/issi/is31fl3745.c index 273fddf1d4..1e3b437e02 100644 --- a/drivers/led/issi/is31fl3745.c +++ b/drivers/led/issi/is31fl3745.c @@ -138,8 +138,8 @@ void is31fl3745_init_drivers(void) { i2c_init(); #if defined(IS31FL3745_SDB_PIN) - setPinOutput(IS31FL3745_SDB_PIN); - writePinHigh(IS31FL3745_SDB_PIN); + gpio_set_pin_output(IS31FL3745_SDB_PIN); + gpio_write_pin_high(IS31FL3745_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3745_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3746a-mono.c b/drivers/led/issi/is31fl3746a-mono.c index 69d5079929..6bff10723f 100644 --- a/drivers/led/issi/is31fl3746a-mono.c +++ b/drivers/led/issi/is31fl3746a-mono.c @@ -116,8 +116,8 @@ void is31fl3746a_init_drivers(void) { i2c_init(); #if defined(IS31FL3746A_SDB_PIN) - setPinOutput(IS31FL3746A_SDB_PIN); - writePinHigh(IS31FL3746A_SDB_PIN); + gpio_set_pin_output(IS31FL3746A_SDB_PIN); + gpio_write_pin_high(IS31FL3746A_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3746A_DRIVER_COUNT; i++) { diff --git a/drivers/led/issi/is31fl3746a.c b/drivers/led/issi/is31fl3746a.c index c9dfbc5c40..1ef0b2d632 100644 --- a/drivers/led/issi/is31fl3746a.c +++ b/drivers/led/issi/is31fl3746a.c @@ -116,8 +116,8 @@ void is31fl3746a_init_drivers(void) { i2c_init(); #if defined(IS31FL3746A_SDB_PIN) - setPinOutput(IS31FL3746A_SDB_PIN); - writePinHigh(IS31FL3746A_SDB_PIN); + gpio_set_pin_output(IS31FL3746A_SDB_PIN); + gpio_write_pin_high(IS31FL3746A_SDB_PIN); #endif for (uint8_t i = 0; i < IS31FL3746A_DRIVER_COUNT; i++) { diff --git a/drivers/led/snled27351-mono.c b/drivers/led/snled27351-mono.c index e13fd8a343..d87b856db6 100644 --- a/drivers/led/snled27351-mono.c +++ b/drivers/led/snled27351-mono.c @@ -105,8 +105,8 @@ void snled27351_init_drivers(void) { i2c_init(); #if defined(SNLED27351_SDB_PIN) - setPinOutput(SNLED27351_SDB_PIN); - writePinHigh(SNLED27351_SDB_PIN); + gpio_set_pin_output(SNLED27351_SDB_PIN); + gpio_write_pin_high(SNLED27351_SDB_PIN); #endif for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++) { diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c index 293685b01b..8ebf681bdb 100644 --- a/drivers/led/snled27351.c +++ b/drivers/led/snled27351.c @@ -105,8 +105,8 @@ void snled27351_init_drivers(void) { i2c_init(); #if defined(SNLED27351_SDB_PIN) - setPinOutput(SNLED27351_SDB_PIN); - writePinHigh(SNLED27351_SDB_PIN); + gpio_set_pin_output(SNLED27351_SDB_PIN); + gpio_write_pin_high(SNLED27351_SDB_PIN); #endif for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++) { diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c index 8cca41394f..1d1c2a90c4 100644 --- a/drivers/oled/oled_driver.c +++ b/drivers/oled/oled_driver.c @@ -192,7 +192,7 @@ __attribute__((weak)) bool oled_send_cmd(const uint8_t *data, uint16_t size) { return false; } // Command Mode - writePinLow(OLED_DC_PIN); + gpio_write_pin_low(OLED_DC_PIN); // Send the commands if (spi_transmit(&data[1], size - 1) != SPI_STATUS_SUCCESS) { spi_stop(); @@ -215,7 +215,7 @@ __attribute__((weak)) bool oled_send_cmd_P(const uint8_t *data, uint16_t size) { } spi_status_t status = SPI_STATUS_SUCCESS; // Command Mode - writePinLow(OLED_DC_PIN); + gpio_write_pin_low(OLED_DC_PIN); // Send the commands for (uint16_t i = 1; i < size && status >= 0; i++) { status = spi_write(pgm_read_byte((const char *)&data[i])); @@ -239,7 +239,7 @@ __attribute__((weak)) bool oled_send_data(const uint8_t *data, uint16_t size) { return false; } // Data Mode - writePinHigh(OLED_DC_PIN); + gpio_write_pin_high(OLED_DC_PIN); // Send the commands if (spi_transmit(data, size) != SPI_STATUS_SUCCESS) { spi_stop(); @@ -256,17 +256,17 @@ __attribute__((weak)) bool oled_send_data(const uint8_t *data, uint16_t size) { __attribute__((weak)) void oled_driver_init(void) { #if defined(OLED_TRANSPORT_SPI) spi_init(); - setPinOutput(OLED_CS_PIN); - writePinHigh(OLED_CS_PIN); + gpio_set_pin_output(OLED_CS_PIN); + gpio_write_pin_high(OLED_CS_PIN); - setPinOutput(OLED_DC_PIN); - writePinLow(OLED_DC_PIN); + gpio_set_pin_output(OLED_DC_PIN); + gpio_write_pin_low(OLED_DC_PIN); # ifdef OLED_RST_PIN /* Reset device */ - setPinOutput(OLED_RST_PIN); - writePinLow(OLED_RST_PIN); + gpio_set_pin_output(OLED_RST_PIN); + gpio_write_pin_low(OLED_RST_PIN); wait_ms(20); - writePinHigh(OLED_RST_PIN); + gpio_write_pin_high(OLED_RST_PIN); wait_ms(20); # endif #elif defined(OLED_TRANSPORT_I2C) diff --git a/drivers/painter/comms/qp_comms_spi.c b/drivers/painter/comms/qp_comms_spi.c index 9f52bc7d1f..4e6067394b 100644 --- a/drivers/painter/comms/qp_comms_spi.c +++ b/drivers/painter/comms/qp_comms_spi.c @@ -17,8 +17,8 @@ bool qp_comms_spi_init(painter_device_t device) { spi_init(); // Set up CS as output high - setPinOutput(comms_config->chip_select_pin); - writePinHigh(comms_config->chip_select_pin); + gpio_set_pin_output(comms_config->chip_select_pin); + gpio_write_pin_high(comms_config->chip_select_pin); return true; } @@ -49,7 +49,7 @@ void qp_comms_spi_stop(painter_device_t device) { painter_driver_t * driver = (painter_driver_t *)device; qp_comms_spi_config_t *comms_config = (qp_comms_spi_config_t *)driver->comms_config; spi_stop(); - writePinHigh(comms_config->chip_select_pin); + gpio_write_pin_high(comms_config->chip_select_pin); } const painter_comms_vtable_t spi_comms_vtable = { @@ -74,16 +74,16 @@ bool qp_comms_spi_dc_reset_init(painter_device_t device) { // Set up D/C as output low, if specified if (comms_config->dc_pin != NO_PIN) { - setPinOutput(comms_config->dc_pin); - writePinLow(comms_config->dc_pin); + gpio_set_pin_output(comms_config->dc_pin); + gpio_write_pin_low(comms_config->dc_pin); } // Set up RST as output, if specified, performing a reset in the process if (comms_config->reset_pin != NO_PIN) { - setPinOutput(comms_config->reset_pin); - writePinLow(comms_config->reset_pin); + gpio_set_pin_output(comms_config->reset_pin); + gpio_write_pin_low(comms_config->reset_pin); wait_ms(20); - writePinHigh(comms_config->reset_pin); + gpio_write_pin_high(comms_config->reset_pin); wait_ms(20); } @@ -93,14 +93,14 @@ bool qp_comms_spi_dc_reset_init(painter_device_t device) { uint32_t qp_comms_spi_dc_reset_send_data(painter_device_t device, const void *data, uint32_t byte_count) { painter_driver_t * driver = (painter_driver_t *)device; qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config; - writePinHigh(comms_config->dc_pin); + gpio_write_pin_high(comms_config->dc_pin); return qp_comms_spi_send_data(device, data, byte_count); } void qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd) { painter_driver_t * driver = (painter_driver_t *)device; qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config; - writePinLow(comms_config->dc_pin); + gpio_write_pin_low(comms_config->dc_pin); spi_write(cmd); } diff --git a/drivers/sensors/adns5050.c b/drivers/sensors/adns5050.c index b76268fba2..97daa8db09 100644 --- a/drivers/sensors/adns5050.c +++ b/drivers/sensors/adns5050.c @@ -47,9 +47,9 @@ void adns5050_init(void) { // Initialize the ADNS serial pins. - setPinOutput(ADNS5050_SCLK_PIN); - setPinOutput(ADNS5050_SDIO_PIN); - setPinOutput(ADNS5050_CS_PIN); + gpio_set_pin_output(ADNS5050_SCLK_PIN); + gpio_set_pin_output(ADNS5050_SDIO_PIN); + gpio_set_pin_output(ADNS5050_CS_PIN); // reboot the adns. // if the adns hasn't initialized yet, this is harmless. @@ -69,30 +69,30 @@ void adns5050_init(void) { // Just as with the serial protocol, this is used by the slave to send a // synchronization signal to the master. void adns5050_sync(void) { - writePinLow(ADNS5050_CS_PIN); + gpio_write_pin_low(ADNS5050_CS_PIN); wait_us(1); - writePinHigh(ADNS5050_CS_PIN); + gpio_write_pin_high(ADNS5050_CS_PIN); } void adns5050_cs_select(void) { - writePinLow(ADNS5050_CS_PIN); + gpio_write_pin_low(ADNS5050_CS_PIN); } void adns5050_cs_deselect(void) { - writePinHigh(ADNS5050_CS_PIN); + gpio_write_pin_high(ADNS5050_CS_PIN); } uint8_t adns5050_serial_read(void) { - setPinInput(ADNS5050_SDIO_PIN); + gpio_set_pin_input(ADNS5050_SDIO_PIN); uint8_t byte = 0; for (uint8_t i = 0; i < 8; ++i) { - writePinLow(ADNS5050_SCLK_PIN); + gpio_write_pin_low(ADNS5050_SCLK_PIN); wait_us(1); - byte = (byte << 1) | readPin(ADNS5050_SDIO_PIN); + byte = (byte << 1) | gpio_read_pin(ADNS5050_SDIO_PIN); - writePinHigh(ADNS5050_SCLK_PIN); + gpio_write_pin_high(ADNS5050_SCLK_PIN); wait_us(1); } @@ -100,19 +100,19 @@ uint8_t adns5050_serial_read(void) { } void adns5050_serial_write(uint8_t data) { - setPinOutput(ADNS5050_SDIO_PIN); + gpio_set_pin_output(ADNS5050_SDIO_PIN); for (int8_t b = 7; b >= 0; b--) { - writePinLow(ADNS5050_SCLK_PIN); + gpio_write_pin_low(ADNS5050_SCLK_PIN); if (data & (1 << b)) - writePinHigh(ADNS5050_SDIO_PIN); + gpio_write_pin_high(ADNS5050_SDIO_PIN); else - writePinLow(ADNS5050_SDIO_PIN); + gpio_write_pin_low(ADNS5050_SDIO_PIN); wait_us(2); - writePinHigh(ADNS5050_SCLK_PIN); + gpio_write_pin_high(ADNS5050_SCLK_PIN); } // tSWR. See page 15 of the ADNS spec sheet. diff --git a/drivers/sensors/adns9800.c b/drivers/sensors/adns9800.c index 083ab34d9f..f34529ee90 100644 --- a/drivers/sensors/adns9800.c +++ b/drivers/sensors/adns9800.c @@ -100,7 +100,7 @@ uint8_t adns9800_read(uint8_t reg_addr) { } void adns9800_init(void) { - setPinOutput(ADNS9800_CS_PIN); + gpio_set_pin_output(ADNS9800_CS_PIN); spi_init(); diff --git a/drivers/sensors/analog_joystick.c b/drivers/sensors/analog_joystick.c index 221625075c..15b35a45f2 100644 --- a/drivers/sensors/analog_joystick.c +++ b/drivers/sensors/analog_joystick.c @@ -122,17 +122,17 @@ report_analog_joystick_t analog_joystick_read(void) { report.y = axisToMouseComponent(ANALOG_JOYSTICK_Y_AXIS_PIN, yOrigin, maxCursorSpeed, 1); } #ifdef ANALOG_JOYSTICK_CLICK_PIN - report.button = !readPin(ANALOG_JOYSTICK_CLICK_PIN); + report.button = !gpio_read_pin(ANALOG_JOYSTICK_CLICK_PIN); #endif return report; } void analog_joystick_init(void) { - setPinInputHigh(ANALOG_JOYSTICK_X_AXIS_PIN); - setPinInputHigh(ANALOG_JOYSTICK_Y_AXIS_PIN); + gpio_set_pin_input_high(ANALOG_JOYSTICK_X_AXIS_PIN); + gpio_set_pin_input_high(ANALOG_JOYSTICK_Y_AXIS_PIN); #ifdef ANALOG_JOYSTICK_CLICK_PIN - setPinInputHigh(ANALOG_JOYSTICK_CLICK_PIN); + gpio_set_pin_input_high(ANALOG_JOYSTICK_CLICK_PIN); #endif // Account for drift xOrigin = analogReadPin(ANALOG_JOYSTICK_X_AXIS_PIN); diff --git a/drivers/sensors/paw3204.c b/drivers/sensors/paw3204.c index a13753dd6f..28c47522ed 100644 --- a/drivers/sensors/paw3204.c +++ b/drivers/sensors/paw3204.c @@ -51,8 +51,8 @@ uint8_t paw3204_read_reg(uint8_t reg_addr); void paw3204_write_reg(uint8_t reg_addr, uint8_t data); void paw3204_init(void) { - setPinOutput(PAW3204_SCLK_PIN); // setclockpin to output - setPinInputHigh(PAW3204_SDIO_PIN); // set datapin input high + gpio_set_pin_output(PAW3204_SCLK_PIN); // setclockpin to output + gpio_set_pin_input_high(PAW3204_SDIO_PIN); // set datapin input high paw3204_write_reg(REG_SETUP, 0x86); // reset sensor and set 1600cpi wait_us(5); @@ -64,16 +64,16 @@ void paw3204_init(void) { } uint8_t paw3204_serial_read(void) { - setPinInput(PAW3204_SDIO_PIN); + gpio_set_pin_input(PAW3204_SDIO_PIN); uint8_t byte = 0; for (uint8_t i = 0; i < 8; ++i) { - writePinLow(PAW3204_SCLK_PIN); + gpio_write_pin_low(PAW3204_SCLK_PIN); wait_us(1); - byte = (byte << 1) | readPin(PAW3204_SDIO_PIN); + byte = (byte << 1) | gpio_read_pin(PAW3204_SDIO_PIN); - writePinHigh(PAW3204_SCLK_PIN); + gpio_write_pin_high(PAW3204_SCLK_PIN); wait_us(1); } @@ -81,17 +81,17 @@ uint8_t paw3204_serial_read(void) { } void paw3204_serial_write(uint8_t data) { - writePinLow(PAW3204_SDIO_PIN); - setPinOutput(PAW3204_SDIO_PIN); + gpio_write_pin_low(PAW3204_SDIO_PIN); + gpio_set_pin_output(PAW3204_SDIO_PIN); for (int8_t b = 7; b >= 0; b--) { - writePinLow(PAW3204_SCLK_PIN); + gpio_write_pin_low(PAW3204_SCLK_PIN); if (data & (1 << b)) { - writePinHigh(PAW3204_SDIO_PIN); + gpio_write_pin_high(PAW3204_SDIO_PIN); } else { - writePinLow(PAW3204_SDIO_PIN); + gpio_write_pin_low(PAW3204_SDIO_PIN); } - writePinHigh(PAW3204_SCLK_PIN); + gpio_write_pin_high(PAW3204_SCLK_PIN); } wait_us(4); diff --git a/drivers/sensors/pmw3320.c b/drivers/sensors/pmw3320.c index 69a584f4e1..f19fbfd1ab 100644 --- a/drivers/sensors/pmw3320.c +++ b/drivers/sensors/pmw3320.c @@ -24,9 +24,9 @@ void pmw3320_init(void) { // Initialize sensor serial pins. - setPinOutput(PMW3320_SCLK_PIN); - setPinOutput(PMW3320_SDIO_PIN); - setPinOutput(PMW3320_CS_PIN); + gpio_set_pin_output(PMW3320_SCLK_PIN); + gpio_set_pin_output(PMW3320_SDIO_PIN); + gpio_set_pin_output(PMW3320_CS_PIN); // reboot the sensor. pmw3320_write_reg(REG_Power_Up_Reset, 0x5a); @@ -54,30 +54,30 @@ void pmw3320_init(void) { // Just as with the serial protocol, this is used by the slave to send a // synchronization signal to the master. void pmw3320_sync(void) { - writePinLow(PMW3320_CS_PIN); + gpio_write_pin_low(PMW3320_CS_PIN); wait_us(1); - writePinHigh(PMW3320_CS_PIN); + gpio_write_pin_high(PMW3320_CS_PIN); } void pmw3320_cs_select(void) { - writePinLow(PMW3320_CS_PIN); + gpio_write_pin_low(PMW3320_CS_PIN); } void pmw3320_cs_deselect(void) { - writePinHigh(PMW3320_CS_PIN); + gpio_write_pin_high(PMW3320_CS_PIN); } uint8_t pmw3320_serial_read(void) { - setPinInput(PMW3320_SDIO_PIN); + gpio_set_pin_input(PMW3320_SDIO_PIN); uint8_t byte = 0; for (uint8_t i = 0; i < 8; ++i) { - writePinLow(PMW3320_SCLK_PIN); + gpio_write_pin_low(PMW3320_SCLK_PIN); wait_us(1); - byte = (byte << 1) | readPin(PMW3320_SDIO_PIN); + byte = (byte << 1) | gpio_read_pin(PMW3320_SDIO_PIN); - writePinHigh(PMW3320_SCLK_PIN); + gpio_write_pin_high(PMW3320_SCLK_PIN); wait_us(1); } @@ -85,19 +85,19 @@ uint8_t pmw3320_serial_read(void) { } void pmw3320_serial_write(uint8_t data) { - setPinOutput(PMW3320_SDIO_PIN); + gpio_set_pin_output(PMW3320_SDIO_PIN); for (int8_t b = 7; b >= 0; b--) { - writePinLow(PMW3320_SCLK_PIN); + gpio_write_pin_low(PMW3320_SCLK_PIN); if (data & (1 << b)) - writePinHigh(PMW3320_SDIO_PIN); + gpio_write_pin_high(PMW3320_SDIO_PIN); else - writePinLow(PMW3320_SDIO_PIN); + gpio_write_pin_low(PMW3320_SDIO_PIN); wait_us(2); - writePinHigh(PMW3320_SCLK_PIN); + gpio_write_pin_high(PMW3320_SCLK_PIN); } // This was taken from ADNS5050 driver. diff --git a/drivers/usb2422.c b/drivers/usb2422.c index 1d33b5acf8..de0e399f87 100644 --- a/drivers/usb2422.c +++ b/drivers/usb2422.c @@ -346,10 +346,10 @@ static void USB2422_write_block(void) { void USB2422_init(void) { #ifdef USB2422_RESET_PIN - setPinOutput(USB2422_RESET_PIN); + gpio_set_pin_output(USB2422_RESET_PIN); #endif #ifdef USB2422_ACTIVE_PIN - setPinInput(USB2422_ACTIVE_PIN); + gpio_set_pin_input(USB2422_ACTIVE_PIN); #endif i2c_init(); // IC2 clk must be high at USB2422 reset release time to signal SMB configuration @@ -387,15 +387,15 @@ void USB2422_configure(void) { void USB2422_reset(void) { #ifdef USB2422_RESET_PIN - writePinLow(USB2422_RESET_PIN); + gpio_write_pin_low(USB2422_RESET_PIN); wait_us(2); - writePinHigh(USB2422_RESET_PIN); + gpio_write_pin_high(USB2422_RESET_PIN); #endif } bool USB2422_active(void) { #ifdef USB2422_ACTIVE_PIN - return readPin(USB2422_ACTIVE_PIN); + return gpio_read_pin(USB2422_ACTIVE_PIN); #else return 1; #endif diff --git a/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c index 65983c8dd8..361a08a760 100644 --- a/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c +++ b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c @@ -13,20 +13,20 @@ static inline void chThdSleepMicroseconds(uint32_t us) { #endif void keyboard_post_init_user(void) { - setPinOutput(QMK_WAITING_TEST_BUSY_PIN); - setPinOutput(QMK_WAITING_TEST_YIELD_PIN); + gpio_set_pin_output(QMK_WAITING_TEST_BUSY_PIN); + gpio_set_pin_output(QMK_WAITING_TEST_YIELD_PIN); } static inline void wait_us_polling_with_strobe(uint32_t us) { - writePinHigh(QMK_WAITING_TEST_BUSY_PIN); + gpio_write_pin_high(QMK_WAITING_TEST_BUSY_PIN); wait_us(us); - writePinLow(QMK_WAITING_TEST_BUSY_PIN); + gpio_write_pin_low(QMK_WAITING_TEST_BUSY_PIN); } static inline void wait_us_yield_with_strobe(uint32_t us) { - writePinHigh(QMK_WAITING_TEST_YIELD_PIN); + gpio_write_pin_high(QMK_WAITING_TEST_YIELD_PIN); chThdSleepMicroseconds(us); - writePinLow(QMK_WAITING_TEST_YIELD_PIN); + gpio_write_pin_low(QMK_WAITING_TEST_YIELD_PIN); } static const uint32_t waiting_values[] = {0, 1, 5, 10, 25, 50, 100, 150, 200, 500, 1000}; diff --git a/platforms/avr/drivers/audio_pwm_hardware.c b/platforms/avr/drivers/audio_pwm_hardware.c index 6799cf2fdd..d484fba00f 100644 --- a/platforms/avr/drivers/audio_pwm_hardware.c +++ b/platforms/avr/drivers/audio_pwm_hardware.c @@ -216,12 +216,12 @@ void channel_2_stop(void) { void audio_driver_initialize(void) { #ifdef AUDIO1_PIN_SET channel_1_stop(); - setPinOutput(AUDIO1_PIN); + gpio_set_pin_output(AUDIO1_PIN); #endif #ifdef AUDIO2_PIN_SET channel_2_stop(); - setPinOutput(AUDIO2_PIN); + gpio_set_pin_output(AUDIO2_PIN); #endif // TCCR3A / TCCR3B: Timer/Counter #3 Control Registers TCCR3A/TCCR3B, TCCR1A/TCCR1B diff --git a/platforms/avr/drivers/backlight_pwm.c b/platforms/avr/drivers/backlight_pwm.c index 74d25753a4..f6ab9391e2 100644 --- a/platforms/avr/drivers/backlight_pwm.c +++ b/platforms/avr/drivers/backlight_pwm.c @@ -291,11 +291,11 @@ ISR(TIMERx_OVF_vect) { #endif // BACKLIGHT_BREATHING void backlight_init_ports(void) { - setPinOutput(BACKLIGHT_PIN); + gpio_set_pin_output(BACKLIGHT_PIN); #if BACKLIGHT_ON_STATE == 1 - writePinLow(BACKLIGHT_PIN); + gpio_write_pin_low(BACKLIGHT_PIN); #else - writePinHigh(BACKLIGHT_PIN); + gpio_write_pin_high(BACKLIGHT_PIN); #endif // I could write a wall of text here to explain... but TL;DW diff --git a/platforms/avr/drivers/ps2/ps2_io.c b/platforms/avr/drivers/ps2/ps2_io.c index b75a1ab0be..fb87474372 100644 --- a/platforms/avr/drivers/ps2/ps2_io.c +++ b/platforms/avr/drivers/ps2/ps2_io.c @@ -19,18 +19,18 @@ void clock_init(void) {} void clock_lo(void) { // Transition from input with pull-up to output low via Hi-Z instead of output high - writePinLow(PS2_CLOCK_PIN); - setPinOutput(PS2_CLOCK_PIN); + gpio_write_pin_low(PS2_CLOCK_PIN); + gpio_set_pin_output(PS2_CLOCK_PIN); } void clock_hi(void) { - setPinInputHigh(PS2_CLOCK_PIN); + gpio_set_pin_input_high(PS2_CLOCK_PIN); } bool clock_in(void) { - setPinInputHigh(PS2_CLOCK_PIN); + gpio_set_pin_input_high(PS2_CLOCK_PIN); wait_us(1); - return readPin(PS2_CLOCK_PIN); + return gpio_read_pin(PS2_CLOCK_PIN); } /* @@ -40,16 +40,16 @@ void data_init(void) {} void data_lo(void) { // Transition from input with pull-up to output low via Hi-Z instead of output high - writePinLow(PS2_DATA_PIN); - setPinOutput(PS2_DATA_PIN); + gpio_write_pin_low(PS2_DATA_PIN); + gpio_set_pin_output(PS2_DATA_PIN); } void data_hi(void) { - setPinInputHigh(PS2_DATA_PIN); + gpio_set_pin_input_high(PS2_DATA_PIN); } bool data_in(void) { - setPinInputHigh(PS2_DATA_PIN); + gpio_set_pin_input_high(PS2_DATA_PIN); wait_us(1); - return readPin(PS2_DATA_PIN); + return gpio_read_pin(PS2_DATA_PIN); } diff --git a/platforms/avr/drivers/serial.c b/platforms/avr/drivers/serial.c index 730d9b7a01..b529f9b45e 100644 --- a/platforms/avr/drivers/serial.c +++ b/platforms/avr/drivers/serial.c @@ -239,28 +239,28 @@ inline static void serial_delay_half2(void) { inline static void serial_output(void) ALWAYS_INLINE; inline static void serial_output(void) { - setPinOutput(SOFT_SERIAL_PIN); + gpio_set_pin_output(SOFT_SERIAL_PIN); } // make the serial pin an input with pull-up resistor inline static void serial_input_with_pullup(void) ALWAYS_INLINE; inline static void serial_input_with_pullup(void) { - setPinInputHigh(SOFT_SERIAL_PIN); + gpio_set_pin_input_high(SOFT_SERIAL_PIN); } inline static uint8_t serial_read_pin(void) ALWAYS_INLINE; inline static uint8_t serial_read_pin(void) { - return !!readPin(SOFT_SERIAL_PIN); + return !!gpio_read_pin(SOFT_SERIAL_PIN); } inline static void serial_low(void) ALWAYS_INLINE; inline static void serial_low(void) { - writePinLow(SOFT_SERIAL_PIN); + gpio_write_pin_low(SOFT_SERIAL_PIN); } inline static void serial_high(void) ALWAYS_INLINE; inline static void serial_high(void) { - writePinHigh(SOFT_SERIAL_PIN); + gpio_write_pin_high(SOFT_SERIAL_PIN); } void soft_serial_initiator_init(void) { diff --git a/platforms/avr/drivers/spi_master.c b/platforms/avr/drivers/spi_master.c index ae9df03c02..74b847c71a 100644 --- a/platforms/avr/drivers/spi_master.c +++ b/platforms/avr/drivers/spi_master.c @@ -41,10 +41,10 @@ static uint8_t currentSlaveConfig = 0; static bool currentSlave2X = false; void spi_init(void) { - writePinHigh(SPI_SS_PIN); - setPinOutput(SPI_SCK_PIN); - setPinOutput(SPI_MOSI_PIN); - setPinInput(SPI_MISO_PIN); + gpio_write_pin_high(SPI_SS_PIN); + gpio_set_pin_output(SPI_SCK_PIN); + gpio_set_pin_output(SPI_MOSI_PIN); + gpio_set_pin_input(SPI_MISO_PIN); SPCR = (_BV(SPE) | _BV(MSTR)); } @@ -105,8 +105,8 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { SPSR |= _BV(SPI2X); } currentSlavePin = slavePin; - setPinOutput(currentSlavePin); - writePinLow(currentSlavePin); + gpio_set_pin_output(currentSlavePin); + gpio_write_pin_low(currentSlavePin); return true; } @@ -169,8 +169,8 @@ spi_status_t spi_receive(uint8_t *data, uint16_t length) { void spi_stop(void) { if (currentSlavePin != NO_PIN) { - setPinOutput(currentSlavePin); - writePinHigh(currentSlavePin); + gpio_set_pin_output(currentSlavePin); + gpio_write_pin_high(currentSlavePin); currentSlavePin = NO_PIN; SPSR &= ~(_BV(SPI2X)); SPCR &= ~(currentSlaveConfig); diff --git a/platforms/chibios/drivers/serial.c b/platforms/chibios/drivers/serial.c index f199716a2b..fa8481d2dc 100644 --- a/platforms/chibios/drivers/serial.c +++ b/platforms/chibios/drivers/serial.c @@ -62,25 +62,25 @@ inline static void serial_delay_blip(void) { wait_us(1); } inline static void serial_output(void) { - setPinOutput(SOFT_SERIAL_PIN); + gpio_set_pin_output(SOFT_SERIAL_PIN); } inline static void serial_input(void) { - setPinInputHigh(SOFT_SERIAL_PIN); + gpio_set_pin_input_high(SOFT_SERIAL_PIN); } inline static bool serial_read_pin(void) { - return !!readPin(SOFT_SERIAL_PIN); + return !!gpio_read_pin(SOFT_SERIAL_PIN); } inline static void serial_low(void) { - writePinLow(SOFT_SERIAL_PIN); + gpio_write_pin_low(SOFT_SERIAL_PIN); } inline static void serial_high(void) { - writePinHigh(SOFT_SERIAL_PIN); + gpio_write_pin_high(SOFT_SERIAL_PIN); } void interrupt_handler(void *arg); // Use thread + palWaitLineTimeout instead of palSetLineCallback -// - Methods like setPinOutput and palEnableLineEvent/palDisableLineEvent +// - Methods like gpio_set_pin_output and palEnableLineEvent/palDisableLineEvent // cause the interrupt to lock up, which would limit to only receiving data... static THD_WORKING_AREA(waThread1, 128); static THD_FUNCTION(Thread1, arg) { diff --git a/platforms/chibios/drivers/spi_master.c b/platforms/chibios/drivers/spi_master.c index 481a2e422a..57fc53d49f 100644 --- a/platforms/chibios/drivers/spi_master.c +++ b/platforms/chibios/drivers/spi_master.c @@ -32,12 +32,12 @@ __attribute__((weak)) void spi_init(void) { is_initialised = true; // Try releasing special pins for a short time - setPinInput(SPI_SCK_PIN); + gpio_set_pin_input(SPI_SCK_PIN); if (SPI_MOSI_PIN != NO_PIN) { - setPinInput(SPI_MOSI_PIN); + gpio_set_pin_input(SPI_MOSI_PIN); } if (SPI_MISO_PIN != NO_PIN) { - setPinInput(SPI_MISO_PIN); + gpio_set_pin_input(SPI_MISO_PIN); } chThdSleepMilliseconds(10); @@ -271,10 +271,10 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { #if SPI_SELECT_MODE == SPI_SELECT_MODE_PAD spiConfig.ssport = PAL_PORT(slavePin); spiConfig.sspad = PAL_PAD(slavePin); - setPinOutput(slavePin); + gpio_set_pin_output(slavePin); #elif SPI_SELECT_MODE == SPI_SELECT_MODE_NONE if (slavePin != NO_PIN) { - setPinOutput(slavePin); + gpio_set_pin_output(slavePin); } #else # error "Unsupported SPI_SELECT_MODE" @@ -284,7 +284,7 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { spiSelect(&SPI_DRIVER); #if SPI_SELECT_MODE == SPI_SELECT_MODE_NONE if (slavePin != NO_PIN) { - writePinLow(slavePin); + gpio_write_pin_low(slavePin); } #endif @@ -319,7 +319,7 @@ void spi_stop(void) { if (spiStarted) { #if SPI_SELECT_MODE == SPI_SELECT_MODE_NONE if (currentSlavePin != NO_PIN) { - writePinHigh(currentSlavePin); + gpio_write_pin_high(currentSlavePin); } #endif spiUnselect(&SPI_DRIVER); diff --git a/platforms/chibios/drivers/ws2812_bitbang.c b/platforms/chibios/drivers/ws2812_bitbang.c index 883a845d88..593377068b 100644 --- a/platforms/chibios/drivers/ws2812_bitbang.c +++ b/platforms/chibios/drivers/ws2812_bitbang.c @@ -57,15 +57,15 @@ void sendByte(uint8_t byte) { // using something like wait_ns(is_one ? T1L : T0L) here throws off timings if (is_one) { // 1 - writePinHigh(WS2812_DI_PIN); + gpio_write_pin_high(WS2812_DI_PIN); wait_ns(WS2812_T1H); - writePinLow(WS2812_DI_PIN); + gpio_write_pin_low(WS2812_DI_PIN); wait_ns(WS2812_T1L); } else { // 0 - writePinHigh(WS2812_DI_PIN); + gpio_write_pin_high(WS2812_DI_PIN); wait_ns(WS2812_T0H); - writePinLow(WS2812_DI_PIN); + gpio_write_pin_low(WS2812_DI_PIN); wait_ns(WS2812_T0L); } } diff --git a/quantum/backlight/backlight_driver_common.c b/quantum/backlight/backlight_driver_common.c index 8c3fe461d7..fb2770ee3c 100644 --- a/quantum/backlight/backlight_driver_common.c +++ b/quantum/backlight/backlight_driver_common.c @@ -26,23 +26,23 @@ static const pin_t backlight_pin = BACKLIGHT_PIN; static inline void backlight_on(pin_t backlight_pin) { #if BACKLIGHT_ON_STATE == 0 - writePinLow(backlight_pin); + gpio_write_pin_low(backlight_pin); #else - writePinHigh(backlight_pin); + gpio_write_pin_high(backlight_pin); #endif } static inline void backlight_off(pin_t backlight_pin) { #if BACKLIGHT_ON_STATE == 0 - writePinHigh(backlight_pin); + gpio_write_pin_high(backlight_pin); #else - writePinLow(backlight_pin); + gpio_write_pin_low(backlight_pin); #endif } void backlight_pins_init(void) { // Setup backlight pin as output and output to off state. - FOR_EACH_LED(setPinOutput(backlight_pin); backlight_off(backlight_pin);) + FOR_EACH_LED(gpio_set_pin_output(backlight_pin); backlight_off(backlight_pin);) } void backlight_pins_on(void) { diff --git a/quantum/dip_switch.c b/quantum/dip_switch.c index e901f3e0c4..69cf665291 100644 --- a/quantum/dip_switch.c +++ b/quantum/dip_switch.c @@ -94,7 +94,7 @@ void dip_switch_init(void) { } # endif for (uint8_t i = 0; i < NUM_DIP_SWITCHES; i++) { - setPinInputHigh(dip_switch_pad[i]); + gpio_set_pin_input_high(dip_switch_pad[i]); } dip_switch_read(true); #endif @@ -123,7 +123,7 @@ void dip_switch_read(bool forced) { for (uint8_t i = 0; i < NUM_DIP_SWITCHES; i++) { #ifdef DIP_SWITCH_PINS - dip_switch_state[i] = !readPin(dip_switch_pad[i]); + dip_switch_state[i] = !gpio_read_pin(dip_switch_pad[i]); #endif #ifdef DIP_SWITCH_MATRIX_GRID dip_switch_state[i] = peek_matrix(dip_switch_pad[i].row, dip_switch_pad[i].col, read_raw); diff --git a/quantum/encoder.c b/quantum/encoder.c index 7ab194ed52..efb780c474 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -162,12 +162,12 @@ void encoder_init(void) { #endif // defined(SPLIT_KEYBOARD) && defined(ENCODER_RESOLUTIONS) for (uint8_t i = 0; i < thisCount; i++) { - setPinInputHigh(encoders_pad_a[i]); - setPinInputHigh(encoders_pad_b[i]); + gpio_set_pin_input_high(encoders_pad_a[i]); + gpio_set_pin_input_high(encoders_pad_b[i]); } encoder_wait_pullup_charge(); for (uint8_t i = 0; i < thisCount; i++) { - encoder_state[i] = (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); + encoder_state[i] = (gpio_read_pin(encoders_pad_a[i]) << 0) | (gpio_read_pin(encoders_pad_b[i]) << 1); } } @@ -247,7 +247,7 @@ static bool encoder_update(uint8_t index, uint8_t state) { bool encoder_read(void) { bool changed = false; for (uint8_t i = 0; i < thisCount; i++) { - uint8_t new_status = (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); + uint8_t new_status = (gpio_read_pin(encoders_pad_a[i]) << 0) | (gpio_read_pin(encoders_pad_b[i]) << 1); if ((encoder_state[i] & 0x3) != new_status) { encoder_state[i] <<= 2; encoder_state[i] |= new_status; diff --git a/quantum/haptic.c b/quantum/haptic.c index a1fea29625..6a466293a7 100644 --- a/quantum/haptic.c +++ b/quantum/haptic.c @@ -96,10 +96,10 @@ void haptic_init(void) { #endif eeconfig_debug_haptic(); #ifdef HAPTIC_ENABLE_PIN - setPinOutput(HAPTIC_ENABLE_PIN); + gpio_set_pin_output(HAPTIC_ENABLE_PIN); #endif #ifdef HAPTIC_ENABLE_STATUS_LED - setPinOutput(HAPTIC_ENABLE_STATUS_LED); + gpio_set_pin_output(HAPTIC_ENABLE_STATUS_LED); #endif } @@ -356,9 +356,9 @@ void haptic_shutdown(void) { void haptic_notify_usb_device_state_change(void) { update_haptic_enable_gpios(); #if defined(HAPTIC_ENABLE_PIN) - setPinOutput(HAPTIC_ENABLE_PIN); + gpio_set_pin_output(HAPTIC_ENABLE_PIN); #endif #if defined(HAPTIC_ENABLE_STATUS_LED) - setPinOutput(HAPTIC_ENABLE_STATUS_LED); + gpio_set_pin_output(HAPTIC_ENABLE_STATUS_LED); #endif } diff --git a/quantum/haptic.h b/quantum/haptic.h index 5bd1a71916..b283d5d268 100644 --- a/quantum/haptic.h +++ b/quantum/haptic.h @@ -84,22 +84,22 @@ void haptic_notify_usb_device_state_change(void); # ifndef HAPTIC_ENABLE_PIN # error HAPTIC_ENABLE_PIN not defined # endif -# define HAPTIC_ENABLE_PIN_WRITE_ACTIVE() writePinLow(HAPTIC_ENABLE_PIN) -# define HAPTIC_ENABLE_PIN_WRITE_INACTIVE() writePinHigh(HAPTIC_ENABLE_PIN) +# define HAPTIC_ENABLE_PIN_WRITE_ACTIVE() gpio_write_pin_low(HAPTIC_ENABLE_PIN) +# define HAPTIC_ENABLE_PIN_WRITE_INACTIVE() gpio_write_pin_high(HAPTIC_ENABLE_PIN) #else -# define HAPTIC_ENABLE_PIN_WRITE_ACTIVE() writePinHigh(HAPTIC_ENABLE_PIN) -# define HAPTIC_ENABLE_PIN_WRITE_INACTIVE() writePinLow(HAPTIC_ENABLE_PIN) +# define HAPTIC_ENABLE_PIN_WRITE_ACTIVE() gpio_write_pin_high(HAPTIC_ENABLE_PIN) +# define HAPTIC_ENABLE_PIN_WRITE_INACTIVE() gpio_write_pin_low(HAPTIC_ENABLE_PIN) #endif #ifdef HAPTIC_ENABLE_STATUS_LED_ACTIVE_LOW # ifndef HAPTIC_ENABLE_STATUS_LED # error HAPTIC_ENABLE_STATUS_LED not defined # endif -# define HAPTIC_ENABLE_STATUS_LED_WRITE_ACTIVE() writePinLow(HAPTIC_ENABLE_STATUS_LED) -# define HAPTIC_ENABLE_STATUS_LED_WRITE_INACTIVE() writePinHigh(HAPTIC_ENABLE_STATUS_LED) +# define HAPTIC_ENABLE_STATUS_LED_WRITE_ACTIVE() gpio_write_pin_low(HAPTIC_ENABLE_STATUS_LED) +# define HAPTIC_ENABLE_STATUS_LED_WRITE_INACTIVE() gpio_write_pin_high(HAPTIC_ENABLE_STATUS_LED) #else -# define HAPTIC_ENABLE_STATUS_LED_WRITE_ACTIVE() writePinHigh(HAPTIC_ENABLE_STATUS_LED) -# define HAPTIC_ENABLE_STATUS_LED_WRITE_INACTIVE() writePinLow(HAPTIC_ENABLE_STATUS_LED) +# define HAPTIC_ENABLE_STATUS_LED_WRITE_ACTIVE() gpio_write_pin_high(HAPTIC_ENABLE_STATUS_LED) +# define HAPTIC_ENABLE_STATUS_LED_WRITE_INACTIVE() gpio_write_pin_low(HAPTIC_ENABLE_STATUS_LED) #endif #ifndef HAPTIC_OFF_IN_LOW_POWER diff --git a/quantum/joystick.c b/quantum/joystick.c index 3e9edeb8e2..32f19b2cd9 100644 --- a/quantum/joystick.c +++ b/quantum/joystick.c @@ -43,7 +43,7 @@ __attribute__((weak)) void joystick_axis_init(uint8_t axis) { if (axis >= JOYSTICK_AXIS_COUNT) return; #if defined(JOYSTICK_ANALOG) - setPinInput(joystick_axes[axis].input_pin); + gpio_set_pin_input(joystick_axes[axis].input_pin); #endif } diff --git a/quantum/led.c b/quantum/led.c index 1e7ee9db76..e2b5985109 100644 --- a/quantum/led.c +++ b/quantum/led.c @@ -98,19 +98,19 @@ __attribute__((weak)) void led_update_ports(led_t led_state) { #endif #ifdef LED_NUM_LOCK_PIN - writePin(LED_NUM_LOCK_PIN, led_state.num_lock); + gpio_write_pin(LED_NUM_LOCK_PIN, led_state.num_lock); #endif #ifdef LED_CAPS_LOCK_PIN - writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock); + gpio_write_pin(LED_CAPS_LOCK_PIN, led_state.caps_lock); #endif #ifdef LED_SCROLL_LOCK_PIN - writePin(LED_SCROLL_LOCK_PIN, led_state.scroll_lock); + gpio_write_pin(LED_SCROLL_LOCK_PIN, led_state.scroll_lock); #endif #ifdef LED_COMPOSE_PIN - writePin(LED_COMPOSE_PIN, led_state.compose); + gpio_write_pin(LED_COMPOSE_PIN, led_state.compose); #endif #ifdef LED_KANA_PIN - writePin(LED_KANA_PIN, led_state.kana); + gpio_write_pin(LED_KANA_PIN, led_state.kana); #endif } @@ -118,24 +118,24 @@ __attribute__((weak)) void led_update_ports(led_t led_state) { */ __attribute__((weak)) void led_init_ports(void) { #ifdef LED_NUM_LOCK_PIN - setPinOutput(LED_NUM_LOCK_PIN); - writePin(LED_NUM_LOCK_PIN, !LED_PIN_ON_STATE); + gpio_set_pin_output(LED_NUM_LOCK_PIN); + gpio_write_pin(LED_NUM_LOCK_PIN, !LED_PIN_ON_STATE); #endif #ifdef LED_CAPS_LOCK_PIN - setPinOutput(LED_CAPS_LOCK_PIN); - writePin(LED_CAPS_LOCK_PIN, !LED_PIN_ON_STATE); + gpio_set_pin_output(LED_CAPS_LOCK_PIN); + gpio_write_pin(LED_CAPS_LOCK_PIN, !LED_PIN_ON_STATE); #endif #ifdef LED_SCROLL_LOCK_PIN - setPinOutput(LED_SCROLL_LOCK_PIN); - writePin(LED_SCROLL_LOCK_PIN, !LED_PIN_ON_STATE); + gpio_set_pin_output(LED_SCROLL_LOCK_PIN); + gpio_write_pin(LED_SCROLL_LOCK_PIN, !LED_PIN_ON_STATE); #endif #ifdef LED_COMPOSE_PIN - setPinOutput(LED_COMPOSE_PIN); - writePin(LED_COMPOSE_PIN, !LED_PIN_ON_STATE); + gpio_set_pin_output(LED_COMPOSE_PIN); + gpio_write_pin(LED_COMPOSE_PIN, !LED_PIN_ON_STATE); #endif #ifdef LED_KANA_PIN - setPinOutput(LED_KANA_PIN); - writePin(LED_KANA_PIN, !LED_PIN_ON_STATE); + gpio_set_pin_output(LED_KANA_PIN); + gpio_write_pin(LED_KANA_PIN, !LED_PIN_ON_STATE); #endif } diff --git a/quantum/matrix.c b/quantum/matrix.c index f087a215d4..d4586efac2 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -78,27 +78,27 @@ __attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[] static inline void setPinOutput_writeLow(pin_t pin) { ATOMIC_BLOCK_FORCEON { - setPinOutput(pin); - writePinLow(pin); + gpio_set_pin_output(pin); + gpio_write_pin_low(pin); } } static inline void setPinOutput_writeHigh(pin_t pin) { ATOMIC_BLOCK_FORCEON { - setPinOutput(pin); - writePinHigh(pin); + gpio_set_pin_output(pin); + gpio_write_pin_high(pin); } } static inline void setPinInputHigh_atomic(pin_t pin) { ATOMIC_BLOCK_FORCEON { - setPinInputHigh(pin); + gpio_set_pin_input_high(pin); } } static inline uint8_t readMatrixPin(pin_t pin) { if (pin != NO_PIN) { - return (readPin(pin) == MATRIX_INPUT_PRESSED_STATE) ? 0 : 1; + return (gpio_read_pin(pin) == MATRIX_INPUT_PRESSED_STATE) ? 0 : 1; } else { return 1; } @@ -113,7 +113,7 @@ __attribute__((weak)) void matrix_init_pins(void) { for (int col = 0; col < MATRIX_COLS; col++) { pin_t pin = direct_pins[row][col]; if (pin != NO_PIN) { - setPinInputHigh(pin); + gpio_set_pin_input_high(pin); } } } diff --git a/quantum/pointing_device/pointing_device.c b/quantum/pointing_device/pointing_device.c index 2fa49ade8e..bcced166c0 100644 --- a/quantum/pointing_device/pointing_device.c +++ b/quantum/pointing_device/pointing_device.c @@ -149,9 +149,9 @@ __attribute__((weak)) void pointing_device_init(void) { pointing_device_driver.init(); #ifdef POINTING_DEVICE_MOTION_PIN # ifdef POINTING_DEVICE_MOTION_PIN_ACTIVE_LOW - setPinInputHigh(POINTING_DEVICE_MOTION_PIN); + gpio_set_pin_input_high(POINTING_DEVICE_MOTION_PIN); # else - setPinInput(POINTING_DEVICE_MOTION_PIN); + gpio_set_pin_input(POINTING_DEVICE_MOTION_PIN); # endif #endif } @@ -247,9 +247,9 @@ __attribute__((weak)) bool pointing_device_task(void) { # error POINTING_DEVICE_MOTION_PIN not supported when sharing the pointing device report between sides. # endif # ifdef POINTING_DEVICE_MOTION_PIN_ACTIVE_LOW - if (!readPin(POINTING_DEVICE_MOTION_PIN)) + if (!gpio_read_pin(POINTING_DEVICE_MOTION_PIN)) # else - if (readPin(POINTING_DEVICE_MOTION_PIN)) + if (gpio_read_pin(POINTING_DEVICE_MOTION_PIN)) # endif { #endif diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c index 2f592bd4cf..96f19bfd84 100644 --- a/quantum/split_common/split_util.c +++ b/quantum/split_common/split_util.c @@ -123,14 +123,14 @@ void split_watchdog_task(void) { void matrix_io_delay(void); static uint8_t peek_matrix_intersection(pin_t out_pin, pin_t in_pin) { - setPinInputHigh(in_pin); - setPinOutput(out_pin); - writePinLow(out_pin); + gpio_set_pin_input_high(in_pin); + gpio_set_pin_output(out_pin); + gpio_write_pin_low(out_pin); // It's almost unnecessary, but wait until it's down to low, just in case. wait_us(1); - uint8_t pin_state = readPin(in_pin); + uint8_t pin_state = gpio_read_pin(in_pin); // Set out_pin to a setting that is less susceptible to noise. - setPinInputHigh(out_pin); + gpio_set_pin_input_high(out_pin); matrix_io_delay(); // Wait for the pull-up to go HIGH. return pin_state; } @@ -138,13 +138,13 @@ static uint8_t peek_matrix_intersection(pin_t out_pin, pin_t in_pin) { __attribute__((weak)) bool is_keyboard_left_impl(void) { #if defined(SPLIT_HAND_PIN) - setPinInput(SPLIT_HAND_PIN); + gpio_set_pin_input(SPLIT_HAND_PIN); wait_us(100); // Test pin SPLIT_HAND_PIN for High/Low, if low it's right hand # ifdef SPLIT_HAND_PIN_LOW_IS_LEFT - return !readPin(SPLIT_HAND_PIN); + return !gpio_read_pin(SPLIT_HAND_PIN); # else - return readPin(SPLIT_HAND_PIN); + return gpio_read_pin(SPLIT_HAND_PIN); # endif #elif defined(SPLIT_HAND_MATRIX_GRID) # ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT diff --git a/tmk_core/protocol/arm_atsam/shift_register.c b/tmk_core/protocol/arm_atsam/shift_register.c index 3adb682aa8..e81db4a19d 100644 --- a/tmk_core/protocol/arm_atsam/shift_register.c +++ b/tmk_core/protocol/arm_atsam/shift_register.c @@ -28,27 +28,27 @@ along with this program. If not, see . # define CLOCK_DELAY 10 void shift_init_impl(void) { - setPinOutput(SR_EXP_RCLK_PIN); - setPinOutput(SPI_DATAOUT_PIN); - setPinOutput(SPI_SCLK_PIN); + gpio_set_pin_output(SR_EXP_RCLK_PIN); + gpio_set_pin_output(SPI_DATAOUT_PIN); + gpio_set_pin_output(SPI_SCLK_PIN); } void shift_out_impl(const uint8_t *data, uint16_t length) { - writePinLow(SR_EXP_RCLK_PIN); + gpio_write_pin_low(SR_EXP_RCLK_PIN); for (uint16_t i = 0; i < length; i++) { uint8_t val = data[i]; // shift out lsb first for (uint8_t bit = 0; bit < 8; bit++) { - writePin(SPI_DATAOUT_PIN, !!(val & (1 << bit))); - writePin(SPI_SCLK_PIN, true); + gpio_write_pin(SPI_DATAOUT_PIN, !!(val & (1 << bit))); + gpio_write_pin(SPI_SCLK_PIN, true); wait_us(CLOCK_DELAY); - writePin(SPI_SCLK_PIN, false); + gpio_write_pin(SPI_SCLK_PIN, false); wait_us(CLOCK_DELAY); } } - writePinHigh(SR_EXP_RCLK_PIN); + gpio_write_pin_high(SR_EXP_RCLK_PIN); return SPI_STATUS_SUCCESS; } @@ -74,13 +74,13 @@ void shift_out(const uint8_t *data, uint16_t length) { } void shift_enable(void) { - setPinOutput(SR_EXP_OE_PIN); - writePinLow(SR_EXP_OE_PIN); + gpio_set_pin_output(SR_EXP_OE_PIN); + gpio_write_pin_low(SR_EXP_OE_PIN); } void shift_disable(void) { - setPinOutput(SR_EXP_OE_PIN); - writePinHigh(SR_EXP_OE_PIN); + gpio_set_pin_output(SR_EXP_OE_PIN); + gpio_write_pin_high(SR_EXP_OE_PIN); } void shift_init(void) { diff --git a/tmk_core/protocol/arm_atsam/spi_master.c b/tmk_core/protocol/arm_atsam/spi_master.c index 3be82fac1d..fedb9654fd 100644 --- a/tmk_core/protocol/arm_atsam/spi_master.c +++ b/tmk_core/protocol/arm_atsam/spi_master.c @@ -60,8 +60,8 @@ bool spi_start(pin_t csPin, bool lsbFirst, uint8_t mode, uint16_t divisor) { } currentSelectPin = csPin; - setPinOutput(currentSelectPin); - writePinLow(currentSelectPin); + gpio_set_pin_output(currentSelectPin); + gpio_write_pin_low(currentSelectPin); SPI_SERCOM->SPI.CTRLA.bit.DORD = lsbFirst; // Data Order - LSB is transferred first SPI_SERCOM->SPI.CTRLA.bit.CPOL = 1; // Clock Polarity - SCK high when idle. Leading edge of cycle is falling. Trailing rising. @@ -94,8 +94,8 @@ spi_status_t spi_transmit(const uint8_t *data, uint16_t length) { void spi_stop(void) { if (currentSelectPin != NO_PIN) { - setPinOutput(currentSelectPin); - writePinHigh(currentSelectPin); + gpio_set_pin_output(currentSelectPin); + gpio_write_pin_high(currentSelectPin); currentSelectPin = NO_PIN; } } diff --git a/tmk_core/protocol/usb_util.c b/tmk_core/protocol/usb_util.c index 3b3be4a767..a130e8b5e3 100644 --- a/tmk_core/protocol/usb_util.c +++ b/tmk_core/protocol/usb_util.c @@ -26,9 +26,9 @@ __attribute__((weak)) bool usb_connected_state(void) { __attribute__((weak)) bool usb_vbus_state(void) { #ifdef USB_VBUS_PIN - setPinInput(USB_VBUS_PIN); + gpio_set_pin_input(USB_VBUS_PIN); wait_us(5); - return readPin(USB_VBUS_PIN); + return gpio_read_pin(USB_VBUS_PIN); #else return true; #endif -- cgit v1.2.3