Przeglądaj źródła

Ensure setPinInput actually sets input high-Z (#6237)

* 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 <fauxpark@gmail.com>

* Fixed input state for unselect_rows

* fixed merge conflict

* Updated all instances of older uses of setPinInput()

* Fixed naming mistake

Co-authored-by: fauxpark <fauxpark@gmail.com>
Mikkel Jeppesen 5 lat temu
rodzic
commit
05d6e6ca78

+ 0 - 2
keyboards/40percentclub/mf68/keymaps/emdarcher/keymap.c

@@ -48,8 +48,6 @@ void led_set_user(uint8_t usb_led){
     } else {
     } else {
         //set to Hi-Z
         //set to Hi-Z
         setPinInput(B0);
         setPinInput(B0);
-        writePinLow(B0);
         setPinInput(D5);
         setPinInput(D5);
-        writePinLow(D5);
     }
     }
 }
 }

+ 1 - 2
keyboards/atreus62/keymaps/xyverz/keymap.c

@@ -30,6 +30,7 @@ CHANGELOG:
  0.6 - Swapped ESC and GRV in all layers.
  0.6 - Swapped ESC and GRV in all layers.
  0.7 - Brought code up to current standards.
  0.7 - Brought code up to current standards.
  0.8 - Added MACLOCK macro.
  0.8 - Added MACLOCK macro.
+ 0.9 - Updated code to correspond to new setPinInput behaviour
 
 
 TODO:
 TODO:
 
 
@@ -124,9 +125,7 @@ void matrix_init_user(void) {
 #ifdef BOOTLOADER_CATERINA
 #ifdef BOOTLOADER_CATERINA
    // This will disable the red LEDs on the ProMicros
    // This will disable the red LEDs on the ProMicros
    setPinInput(D5);
    setPinInput(D5);
-   writePinLow(D5);
    setPinInput(B0);
    setPinInput(B0);
-   writePinLow(B0);
 #endif
 #endif
 };
 };
 
 

+ 4 - 0
keyboards/atreus62/keymaps/xyverz/readme.md

@@ -30,6 +30,10 @@ The bottom row is fairly Kinesis-ish since the Contour and Advantage keyboards h
 ### 0.7
 ### 0.7
  * Brought code up to new standards (as of 27 June 2019).
  * Brought code up to new standards (as of 27 June 2019).
  * Updated this readme file.
  * Updated this readme file.
+### 0.8
+ * Added MACLOCK macro.
+### 0.9
+ * Updated code to correspond to new setPinInput behaviour.
 
 
 ### TODO:
 ### TODO:
 
 

+ 1 - 3
keyboards/eco/keymaps/xyverz/keymap.c

@@ -132,9 +132,7 @@ void matrix_init_user(void) {
 #ifdef BOOTLOADER_CATERINA
 #ifdef BOOTLOADER_CATERINA
     // This will disable the red LEDs on the ProMicros
     // This will disable the red LEDs on the ProMicros
     setPinInput(D5);
     setPinInput(D5);
-    writePinLow(D5);
     setPinInput(B0);
     setPinInput(B0);
-    writePinLow(B0);
 #endif
 #endif
 };
 };
 
 
@@ -155,4 +153,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         }
     }
     }
     return true;
     return true;
-}
+}

+ 5 - 5
keyboards/gh60/revc/revc.h

@@ -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_esc_led_on(void)       { setPinOutput(F6); writePinLow(F6); }
 inline void gh60_wasd_leds_on(void)     { setPinOutput(F7); writePinLow(F7); }
 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
 /* GH60 keymap definition macro
  * K2C, K31 and  K3C are extra keys for ISO
  * K2C, K31 and  K3C are extra keys for ISO

+ 1 - 1
keyboards/gingham/matrix.c

@@ -150,7 +150,7 @@ static void unselect_row(uint8_t row)
 static void unselect_rows(void)
 static void unselect_rows(void)
 {
 {
     for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
     for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
-        setPinInput(row_pins[x]);
+        setPinInputHigh(row_pins[x]);
     }
     }
 }
 }
 
 

+ 1 - 4
keyboards/handwired/owlet60/matrix.c

@@ -215,10 +215,7 @@ void matrix_init(void) {
     matrix_init_quantum();
     matrix_init_quantum();
 
 
     setPinInput(D5);
     setPinInput(D5);
-   writePinLow(D5);
-
-   setPinInput(B0);
-   writePinLow(B0);
+    setPinInput(B0);
 }
 }
 
 
 // modified for per col read matrix scan
 // modified for per col read matrix scan

+ 0 - 2
keyboards/hineybush/h87a/keymaps/wkl/keymap.c

@@ -59,7 +59,6 @@ void led_set_user(uint8_t usb_led) {
     writePinLow(D5);
     writePinLow(D5);
   } else {
   } else {
     setPinInput(D5);
     setPinInput(D5);
-    writePinLow(D5);
   }
   }
 
 
   if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
   if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
@@ -67,7 +66,6 @@ void led_set_user(uint8_t usb_led) {
     writePinLow(E6);
     writePinLow(E6);
   } else {
   } else {
     setPinInput(E6);
     setPinInput(E6);
-    writePinLow(E6);
   }
   }
 
 
 }
 }

+ 0 - 2
keyboards/hineybush/h88/h88.c

@@ -54,7 +54,6 @@ void led_set_user(uint8_t usb_led) {
     writePinLow(D5);
     writePinLow(D5);
   } else {
   } else {
     setPinInput(D5);
     setPinInput(D5);
-    writePinLow(D5);
   }
   }
 
 
   if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
   if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
@@ -62,7 +61,6 @@ void led_set_user(uint8_t usb_led) {
     writePinLow(E6);
     writePinLow(E6);
   } else {
   } else {
     setPinInput(E6);
     setPinInput(E6);
-    writePinLow(E6);
   }
   }
 
 
 }
 }

+ 0 - 1
keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c

@@ -85,6 +85,5 @@ void led_set_user(uint8_t usb_led) {
         writePinLow(B2);
         writePinLow(B2);
     } else {
     } else {
         setPinInput(B2);
         setPinInput(B2);
-        writePinLow(B2);
     }
     }
 }
 }

+ 1 - 1
keyboards/kmac/matrix.c

@@ -140,7 +140,7 @@ static void select_col(uint8_t col) {
 static void init_pins(void) {
 static void init_pins(void) {
     unselect_cols();
     unselect_cols();
     for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
     for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
-        setPinInput(row_pins[x]);
+        setPinInputHigh(row_pins[x]);
     }
     }
 
 
     setPinInputHigh(E2);
     setPinInputHigh(E2);

+ 1 - 3
keyboards/minidox/keymaps/xyverz/keymap.c

@@ -169,9 +169,7 @@ void matrix_init_user(void) {
 #ifdef BOOTLOADER_CATERINA
 #ifdef BOOTLOADER_CATERINA
     // This will disable the red LEDs on the ProMicros
     // This will disable the red LEDs on the ProMicros
     setPinInput(D5);
     setPinInput(D5);
-    writePinLow(D5);
     setPinInput(B0);
     setPinInput(B0);
-    writePinLow(B0);
 #endif
 #endif
 };
 };
 
 
@@ -192,4 +190,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         }
     }
     }
     return true;
     return true;
-}
+}

+ 0 - 1
keyboards/noxary/268_2/268_2.c

@@ -21,7 +21,6 @@ void led_set_kb(uint8_t usb_led) {
         writePinHigh(B0);
         writePinHigh(B0);
     } else {
     } else {
         setPinInput(B0);
         setPinInput(B0);
-        writePinLow(B0);
     }
     }
 
 
     led_set_user(usb_led);
     led_set_user(usb_led);

+ 1 - 3
keyboards/orthodox/keymaps/xyverz/keymap.c

@@ -63,9 +63,7 @@ void matrix_init_user(void) {
 #ifdef BOOTLOADER_CATERINA
 #ifdef BOOTLOADER_CATERINA
     // This will disable the red LEDs on the ProMicros
     // This will disable the red LEDs on the ProMicros
     setPinInput(D5);
     setPinInput(D5);
-    writePinLow(D5);
     setPinInput(B0);
     setPinInput(B0);
-    writePinLow(B0);
 #endif
 #endif
 };
 };
 
 
@@ -86,4 +84,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         }
     }
     }
     return true;
     return true;
-}
+}

+ 0 - 1
keyboards/yd60mq/yd60mq.c

@@ -6,7 +6,6 @@ void led_set_kb(uint8_t usb_led) {
         writePinLow(F4);
         writePinLow(F4);
     } else {
     } else {
         setPinInput(F4);
         setPinInput(F4);
-        writePinLow(F4);
 	}
 	}
 
 
     led_set_user(usb_led);
     led_set_user(usb_led);

+ 1 - 3
layouts/community/ortho_4x12/xyverz/keymap.c

@@ -132,9 +132,7 @@ void matrix_init_user(void) {
 #ifdef BOOTLOADER_CATERINA
 #ifdef BOOTLOADER_CATERINA
     // This will disable the red LEDs on the ProMicros
     // This will disable the red LEDs on the ProMicros
     setPinInput(D5);
     setPinInput(D5);
-    writePinLow(D5);
     setPinInput(B0);
     setPinInput(B0);
-    writePinLow(B0);
 #endif
 #endif
 };
 };
 
 
@@ -155,4 +153,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         }
     }
     }
     return true;
     return true;
-}
+}

+ 1 - 3
layouts/community/ortho_5x12/xyverz/keymap.c

@@ -151,9 +151,7 @@ void matrix_init_user(void) {
 #ifdef BOOTLOADER_CATERINA
 #ifdef BOOTLOADER_CATERINA
     // This will disable the red LEDs on the ProMicros
     // This will disable the red LEDs on the ProMicros
     setPinInput(D5);
     setPinInput(D5);
-    writePinLow(D5);
     setPinInput(B0);
     setPinInput(B0);
-    writePinLow(B0);
 #endif
 #endif
 };
 };
 
 
@@ -174,4 +172,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         }
         }
     }
     }
     return true;
     return true;
-}
+}

+ 1 - 1
quantum/config_common.h

@@ -132,7 +132,7 @@
 #    endif
 #    endif
 
 
 #    ifndef __ASSEMBLER__
 #    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
 // Port X Input Pins Address
 #        define PINx_ADDRESS(p) _PIN_ADDRESS(p, 0)
 #        define PINx_ADDRESS(p) _PIN_ADDRESS(p, 0)
 // Port X Data Direction Register,  0:input 1:output
 // Port X Data Direction Register,  0:input 1:output

+ 2 - 1
quantum/quantum.h

@@ -174,7 +174,7 @@ extern layer_state_t layer_state;
 #if defined(__AVR__)
 #if defined(__AVR__)
 typedef uint8_t pin_t;
 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 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 setPinInputLow(pin) _Static_assert(0, "AVR processors cannot implement an input as pull low")
 #    define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF))
 #    define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF))
@@ -184,6 +184,7 @@ typedef uint8_t pin_t;
 #    define writePin(pin, level) ((level) ? writePinHigh(pin) : writePinLow(pin))
 #    define writePin(pin, level) ((level) ? writePinHigh(pin) : writePinLow(pin))
 
 
 #    define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF)))
 #    define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF)))
+
 #elif defined(PROTOCOL_CHIBIOS)
 #elif defined(PROTOCOL_CHIBIOS)
 typedef ioline_t pin_t;
 typedef ioline_t pin_t;