Skip to content

Commit

Permalink
Ensure setPinInput actually sets input high-Z (qmk#6237)
Browse files Browse the repository at this point in the history
* Ensure setPinInput actually sets input high-z

* Fixed _PIN_ADDRESS Macro arguments
as recommended by vomindoraan

* Fixed instances of setInput to use new behavour

* Changed kmac matrix to use input with pullups

* Update keyboards/gh60/revc/revc.h

Co-Authored-By: fauxpark <[email protected]>

* Fixed input state for unselect_rows

* fixed merge conflict

* Updated all instances of older uses of setPinInput()

* Fixed naming mistake

Co-authored-by: fauxpark <[email protected]>
  • Loading branch information
2 people authored and nooges committed Jan 27, 2020
1 parent 645c5fa commit 05d6e6c
Show file tree
Hide file tree
Showing 19 changed files with 21 additions and 39 deletions.
2 changes: 0 additions & 2 deletions keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@ void led_set_user(uint8_t usb_led){
} else {
//set to Hi-Z
setPinInput(B0);
writePinLow(B0);
setPinInput(D5);
writePinLow(D5);
}
}
3 changes: 1 addition & 2 deletions keyboards/atreus62/keymaps/xyverz/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
0.6 - Swapped ESC and GRV in all layers.
0.7 - Brought code up to current standards.
0.8 - Added MACLOCK macro.
0.9 - Updated code to correspond to new setPinInput behaviour
TODO:
Expand Down Expand Up @@ -124,9 +125,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
writePinLow(D5);
setPinInput(B0);
writePinLow(B0);
#endif
};

Expand Down
4 changes: 4 additions & 0 deletions keyboards/atreus62/keymaps/xyverz/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ The bottom row is fairly Kinesis-ish since the Contour and Advantage keyboards h
### 0.7
* Brought code up to new standards (as of 27 June 2019).
* Updated this readme file.
### 0.8
* Added MACLOCK macro.
### 0.9
* Updated code to correspond to new setPinInput behaviour.

### TODO:

Expand Down
4 changes: 1 addition & 3 deletions keyboards/eco/keymaps/xyverz/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
writePinLow(D5);
setPinInput(B0);
writePinLow(B0);
#endif
};

Expand All @@ -155,4 +153,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
}
}
10 changes: 5 additions & 5 deletions keyboards/gh60/revc/revc.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ inline void gh60_fn_led_on(void) { setPinOutput(F5); writePinLow(F5); }
inline void gh60_esc_led_on(void) { setPinOutput(F6); writePinLow(F6); }
inline void gh60_wasd_leds_on(void) { setPinOutput(F7); writePinLow(F7); }

inline void gh60_caps_led_off(void) { setPinInput(B2); writePinLow(B2); }
inline void gh60_poker_leds_off(void) { setPinInput(F4); writePinLow(F4); }
inline void gh60_fn_led_off(void) { setPinInput(F5); writePinLow(F5); }
inline void gh60_esc_led_off(void) { setPinInput(F6); writePinLow(F6); }
inline void gh60_wasd_leds_off(void) { setPinInput(F7); writePinLow(F7); }
inline void gh60_caps_led_off(void) { setPinInput(B2); }
inline void gh60_poker_leds_off(void) { setPinInput(F4); }
inline void gh60_fn_led_off(void) { setPinInput(F5); }
inline void gh60_esc_led_off(void) { setPinInput(F6); }
inline void gh60_wasd_leds_off(void) { setPinInput(F7); }

/* GH60 keymap definition macro
* K2C, K31 and K3C are extra keys for ISO
Expand Down
2 changes: 1 addition & 1 deletion keyboards/gingham/matrix.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ static void unselect_row(uint8_t row)
static void unselect_rows(void)
{
for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
setPinInput(row_pins[x]);
setPinInputHigh(row_pins[x]);
}
}

Expand Down
5 changes: 1 addition & 4 deletions keyboards/handwired/owlet60/matrix.c
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,7 @@ void matrix_init(void) {
matrix_init_quantum();

setPinInput(D5);
writePinLow(D5);

setPinInput(B0);
writePinLow(B0);
setPinInput(B0);
}

// modified for per col read matrix scan
Expand Down
2 changes: 0 additions & 2 deletions keyboards/hineybush/h87a/keymaps/wkl/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,13 @@ void led_set_user(uint8_t usb_led) {
writePinLow(D5);
} else {
setPinInput(D5);
writePinLow(D5);
}

if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
setPinOutput(E6);
writePinLow(E6);
} else {
setPinInput(E6);
writePinLow(E6);
}

}
2 changes: 0 additions & 2 deletions keyboards/hineybush/h88/h88.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,13 @@ void led_set_user(uint8_t usb_led) {
writePinLow(D5);
} else {
setPinInput(D5);
writePinLow(D5);
}

if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
setPinOutput(E6);
writePinLow(E6);
} else {
setPinInput(E6);
writePinLow(E6);
}

}
Expand Down
1 change: 0 additions & 1 deletion keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,5 @@ void led_set_user(uint8_t usb_led) {
writePinLow(B2);
} else {
setPinInput(B2);
writePinLow(B2);
}
}
2 changes: 1 addition & 1 deletion keyboards/kmac/matrix.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ static void select_col(uint8_t col) {
static void init_pins(void) {
unselect_cols();
for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
setPinInput(row_pins[x]);
setPinInputHigh(row_pins[x]);
}

setPinInputHigh(E2);
Expand Down
4 changes: 1 addition & 3 deletions keyboards/minidox/keymaps/xyverz/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
writePinLow(D5);
setPinInput(B0);
writePinLow(B0);
#endif
};

Expand All @@ -192,4 +190,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
}
}
1 change: 0 additions & 1 deletion keyboards/noxary/268_2/268_2.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ void led_set_kb(uint8_t usb_led) {
writePinHigh(B0);
} else {
setPinInput(B0);
writePinLow(B0);
}

led_set_user(usb_led);
Expand Down
4 changes: 1 addition & 3 deletions keyboards/orthodox/keymaps/xyverz/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
writePinLow(D5);
setPinInput(B0);
writePinLow(B0);
#endif
};

Expand All @@ -86,4 +84,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
}
}
1 change: 0 additions & 1 deletion keyboards/yd60mq/yd60mq.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ void led_set_kb(uint8_t usb_led) {
writePinLow(F4);
} else {
setPinInput(F4);
writePinLow(F4);
}

led_set_user(usb_led);
Expand Down
4 changes: 1 addition & 3 deletions layouts/community/ortho_4x12/xyverz/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
writePinLow(D5);
setPinInput(B0);
writePinLow(B0);
#endif
};

Expand All @@ -155,4 +153,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
}
}
4 changes: 1 addition & 3 deletions layouts/community/ortho_5x12/xyverz/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,7 @@ void matrix_init_user(void) {
#ifdef BOOTLOADER_CATERINA
// This will disable the red LEDs on the ProMicros
setPinInput(D5);
writePinLow(D5);
setPinInput(B0);
writePinLow(B0);
#endif
};

Expand All @@ -174,4 +172,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
}
}
2 changes: 1 addition & 1 deletion quantum/config_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@
# endif

# ifndef __ASSEMBLER__
# define _PIN_ADDRESS(p, offset) _SFR_IO8(ADDRESS_BASE + (p >> PORT_SHIFTER) + offset)
# define _PIN_ADDRESS(p, offset) _SFR_IO8(ADDRESS_BASE + ((p) >> PORT_SHIFTER) + (offset))
// Port X Input Pins Address
# define PINx_ADDRESS(p) _PIN_ADDRESS(p, 0)
// Port X Data Direction Register, 0:input 1:output
Expand Down
3 changes: 2 additions & 1 deletion quantum/quantum.h
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ extern layer_state_t layer_state;
#if defined(__AVR__)
typedef uint8_t pin_t;

# define setPinInput(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF))
# define setPinInput(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF))
# define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF))
# define setPinInputLow(pin) _Static_assert(0, "AVR processors cannot implement an input as pull low")
# define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF))
Expand All @@ -184,6 +184,7 @@ typedef uint8_t pin_t;
# define writePin(pin, level) ((level) ? writePinHigh(pin) : writePinLow(pin))

# define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF)))

#elif defined(PROTOCOL_CHIBIOS)
typedef ioline_t pin_t;

Expand Down

0 comments on commit 05d6e6c

Please sign in to comment.