summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/faq_debug.md17
-rw-r--r--docs/zh-cn/faq_debug.md17
-rw-r--r--keyboards/amj96/matrix.c3
-rw-r--r--keyboards/clueboard/17/17.c4
-rw-r--r--keyboards/clueboard/66/rev2/rev2.c4
-rw-r--r--keyboards/clueboard/66_hotswap/prototype/prototype.c4
-rw-r--r--keyboards/ergodone/matrix.c4
-rw-r--r--keyboards/handwired/promethium/matrix.c7
-rw-r--r--keyboards/hhkb/rn42/rn42.c4
-rwxr-xr-xkeyboards/hid_liber/matrix.c4
-rw-r--r--keyboards/hotdox/matrix.c4
-rw-r--r--keyboards/launchpad/rev1/rev1.c7
-rw-r--r--keyboards/lets_split/sockets/sockets.h1
-rw-r--r--keyboards/miniaxe/config.h2
-rw-r--r--keyboards/sx60/matrix.c7
-rw-r--r--keyboards/vitamins_included/matrix.c6
-rw-r--r--keyboards/vitamins_included/rev1/rev1.h1
-rw-r--r--tmk_core/common/keyboard.c11
-rw-r--r--tmk_core/common/keyboard.h2
19 files changed, 15 insertions, 94 deletions
diff --git a/docs/faq_debug.md b/docs/faq_debug.md
index f6cc729b61..5cc20251d3 100644
--- a/docs/faq_debug.md
+++ b/docs/faq_debug.md
@@ -184,22 +184,15 @@ Pressing any key during sleep should wake host.
Arduino Leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
+## Enabling JTAG
-## Using PF4-7 Pins of USB AVR?
-You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affected with this.
+By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the `JTAGEN` fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc.
-If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function.
+If you would like to keep JTAG enabled, just add the following to your `config.h`:
-See this code.
+```c
+#define NO_JTAG_DISABLE
```
- // JTAG disable for PORT F. write JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-```
-https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67
-
-And read **26.5.1 MCU Control Register – MCUCR** of ATMega32U4 datasheet.
-
## Adding LED Indicators of Lock Keys
You need your own LED indicators for CapsLock, ScrollLock and NumLock? See this post.
diff --git a/docs/zh-cn/faq_debug.md b/docs/zh-cn/faq_debug.md
index ca8b3fd25d..a3cc7c510c 100644
--- a/docs/zh-cn/faq_debug.md
+++ b/docs/zh-cn/faq_debug.md
@@ -173,23 +173,6 @@ EXTRAKEY_ENABLE = yes # 音频控制和系统控制
Arduino Leonardo和micro使用**ATMega32U4**,该芯片TMK可用,但Arduino的bootloader会导致问题。
-
-## 在USB AVR使用PF4-7针脚?
-你要置位MCUCR寄存器JTD位来将PF4-7设置为GPIO。这些针脚默认是JTAG功能。 像ATMega*U* or AT90USB*这样的MCU会受影响。
-
-如果是用Teensy的话就不需要了。Tennsy自带JTAGEN位未编程来失能该功能。
-<!--翻译问题:上句可能有错,原文为:Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function. -->
-代码如下。
-```
- // F接口JTAG失能。在四个周期内写入两次JTD位。
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-```
-https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67
-
-阅读ATMega32U4的datasheet中的**26.5.1 MCU Control Register – MCUCR**。
-
-
## 为锁定键添加指示灯
你要自制CapsLock, ScrollLock 和 NumLock指示灯?见下文。
diff --git a/keyboards/amj96/matrix.c b/keyboards/amj96/matrix.c
index e41bbec728..5d00ea98f5 100644
--- a/keyboards/amj96/matrix.c
+++ b/keyboards/amj96/matrix.c
@@ -63,9 +63,6 @@ void matrix_init(void)
#ifdef UART_RGB_ENABLE
uart_rgb_init();
#endif
- // disable JTAG
- MCUCR = _BV(JTD);
- MCUCR = _BV(JTD);
// 85 REST
DDRD |= _BV(PD7);
diff --git a/keyboards/clueboard/17/17.c b/keyboards/clueboard/17/17.c
index 627aa236dd..9e8ca644ec 100644
--- a/keyboards/clueboard/17/17.c
+++ b/keyboards/clueboard/17/17.c
@@ -6,10 +6,6 @@ void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
matrix_init_user();
-
- // JTAG disable for PORT F. write JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
};
void led_set_kb(uint8_t usb_led) {
diff --git a/keyboards/clueboard/66/rev2/rev2.c b/keyboards/clueboard/66/rev2/rev2.c
index 1a35b87b84..d676b6d5fb 100644
--- a/keyboards/clueboard/66/rev2/rev2.c
+++ b/keyboards/clueboard/66/rev2/rev2.c
@@ -8,10 +8,6 @@ void matrix_init_kb(void) {
// runs once when the firmware starts up
matrix_init_user();
led_init_ports();
-
- // JTAG disable for PORT F. write JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
}
diff --git a/keyboards/clueboard/66_hotswap/prototype/prototype.c b/keyboards/clueboard/66_hotswap/prototype/prototype.c
index 991d4b8fae..7c307be61a 100644
--- a/keyboards/clueboard/66_hotswap/prototype/prototype.c
+++ b/keyboards/clueboard/66_hotswap/prototype/prototype.c
@@ -8,10 +8,6 @@ void matrix_init_kb(void) {
// runs once when the firmware starts up
matrix_init_user();
led_init_ports();
-
- // JTAG disable for PORT F. write JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
}
diff --git a/keyboards/ergodone/matrix.c b/keyboards/ergodone/matrix.c
index 2eb8f24ba8..4a8230aa81 100644
--- a/keyboards/ergodone/matrix.c
+++ b/keyboards/ergodone/matrix.c
@@ -77,10 +77,6 @@ uint8_t matrix_cols(void)
void matrix_init(void)
{
- // disable JTAG
- MCUCR = (1<<JTD);
- MCUCR = (1<<JTD);
-
unselect_rows();
init_cols();
diff --git a/keyboards/handwired/promethium/matrix.c b/keyboards/handwired/promethium/matrix.c
index 3b8e5af820..b4a4c6396a 100644
--- a/keyboards/handwired/promethium/matrix.c
+++ b/keyboards/handwired/promethium/matrix.c
@@ -104,13 +104,6 @@ uint8_t matrix_cols(void) {
}
void matrix_init(void) {
-
- // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
- #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__))
- MCUCR |= _BV(JTD);
- MCUCR |= _BV(JTD);
- #endif
-
// initialize row and col
unselect_rows();
init_cols();
diff --git a/keyboards/hhkb/rn42/rn42.c b/keyboards/hhkb/rn42/rn42.c
index 154da4e101..06665425ce 100644
--- a/keyboards/hhkb/rn42/rn42.c
+++ b/keyboards/hhkb/rn42/rn42.c
@@ -26,10 +26,6 @@ host_driver_t rn42_driver = {
void rn42_init(void)
{
- // JTAG disable for PORT F. write JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-
// PF7: BT connection control(high: connect, low: disconnect)
rn42_autoconnect();
diff --git a/keyboards/hid_liber/matrix.c b/keyboards/hid_liber/matrix.c
index de154890d5..05554a24c8 100755
--- a/keyboards/hid_liber/matrix.c
+++ b/keyboards/hid_liber/matrix.c
@@ -172,10 +172,6 @@ uint8_t matrix_cols(void)
void matrix_init(void)
{
- // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-
// initialize row and col
setup_io_pins();
setup_leds();
diff --git a/keyboards/hotdox/matrix.c b/keyboards/hotdox/matrix.c
index 9d3a98db21..11a1142d41 100644
--- a/keyboards/hotdox/matrix.c
+++ b/keyboards/hotdox/matrix.c
@@ -77,10 +77,6 @@ uint8_t matrix_cols(void)
void matrix_init(void)
{
- // disable JTAG
- MCUCR = (1<<JTD);
- MCUCR = (1<<JTD);
-
unselect_rows();
init_cols();
diff --git a/keyboards/launchpad/rev1/rev1.c b/keyboards/launchpad/rev1/rev1.c
index a7aec80e10..cff4edf9f8 100644
--- a/keyboards/launchpad/rev1/rev1.c
+++ b/keyboards/launchpad/rev1/rev1.c
@@ -1,14 +1,9 @@
#include "launchpad.h"
void matrix_init_kb(void) {
-
- // JTAG disable for PORT F. write JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-
// Undo init of RX LED, we use that port currently
//DDRB &= ~(1<<0);
matrix_init_user();
-}; \ No newline at end of file
+};
diff --git a/keyboards/lets_split/sockets/sockets.h b/keyboards/lets_split/sockets/sockets.h
index 0ee93c0206..a1a3f00a0e 100644
--- a/keyboards/lets_split/sockets/sockets.h
+++ b/keyboards/lets_split/sockets/sockets.h
@@ -1,5 +1,4 @@
#pragma once
-#define DISABLE_JTAG // The keyboard uses PF4 and PF7, which are used by JTAG.
#include "lets_split.h"
diff --git a/keyboards/miniaxe/config.h b/keyboards/miniaxe/config.h
index db85097177..b0b9d4c475 100644
--- a/keyboards/miniaxe/config.h
+++ b/keyboards/miniaxe/config.h
@@ -237,5 +237,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define EE_HANDS
#define I2C_MASTER_LEFT
//#define I2C_MASTER_RIGHT
-
-#define DISABLE_JTAG
diff --git a/keyboards/sx60/matrix.c b/keyboards/sx60/matrix.c
index e8e9d6574e..58647d13b0 100644
--- a/keyboards/sx60/matrix.c
+++ b/keyboards/sx60/matrix.c
@@ -113,13 +113,6 @@ uint8_t matrix_cols(void) {
}
void matrix_init(void) {
-
- /* To use PORTF disable JTAG with writing JTD bit twice within four cycles. */
- #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__))
- MCUCR |= _BV(JTD);
- MCUCR |= _BV(JTD);
- #endif
-
mcp23018_status = true;
/* initialize row and col */
diff --git a/keyboards/vitamins_included/matrix.c b/keyboards/vitamins_included/matrix.c
index 1f5071c693..d44e70f08e 100644
--- a/keyboards/vitamins_included/matrix.c
+++ b/keyboards/vitamins_included/matrix.c
@@ -136,12 +136,6 @@ bool has_usb(void) {
void matrix_init(void)
{
-#ifdef DISABLE_JTAG
- // JTAG disable for PORT F. write JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-#endif
-
// initialize row and col
#if (DIODE_DIRECTION == COL2ROW)
unselect_rows();
diff --git a/keyboards/vitamins_included/rev1/rev1.h b/keyboards/vitamins_included/rev1/rev1.h
index aa50290349..ee97e09cfd 100644
--- a/keyboards/vitamins_included/rev1/rev1.h
+++ b/keyboards/vitamins_included/rev1/rev1.h
@@ -1,6 +1,5 @@
#ifndef REV1_H
#define REV1_H
-#define DISABLE_JTAG // The keyboard uses PF4, PF5 and PF7, which are used by JTAG.
#define EE_HANDS // This isn't optional for the vitamins included
#include QMK_KEYBOARD_H
diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c
index 85d2525480..8f0257cf66 100644
--- a/tmk_core/common/keyboard.c
+++ b/tmk_core/common/keyboard.c
@@ -130,10 +130,15 @@ static inline bool has_ghost_in_row(uint8_t row, matrix_row_t rowdata)
#endif
void disable_jtag(void) {
-// To use PORTF disable JTAG with writing JTD bit twice within four cycles.
-#if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__))
+// To use PF4-7 (PC2-5 on ATmega32A), disable JTAG by writing JTD bit twice within four cycles.
+#if (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || \
+ defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || \
+ defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
MCUCR |= _BV(JTD);
MCUCR |= _BV(JTD);
+#elif defined(__AVR_ATmega32A__)
+ MCUCSR |= _BV(JTD);
+ MCUCSR |= _BV(JTD);
#endif
}
@@ -184,7 +189,9 @@ void keyboard_post_init_kb(void) {
* FIXME: needs doc
*/
void keyboard_setup(void) {
+#ifndef NO_JTAG_DISABLE
disable_jtag();
+#endif
matrix_setup();
keyboard_pre_init_kb();
}
diff --git a/tmk_core/common/keyboard.h b/tmk_core/common/keyboard.h
index bf8b71fb78..19f98c74ec 100644
--- a/tmk_core/common/keyboard.h
+++ b/tmk_core/common/keyboard.h
@@ -57,8 +57,6 @@ static inline bool IS_RELEASED(keyevent_t event) { return (!IS_NOEVENT(event) &&
.time = (timer_read() | 1) \
}
-void disable_jtag(void);
-
/* it runs once at early stage of startup before keyboard_init. */
void keyboard_setup(void);
/* it runs once after initializing host side protocol, debug and MCU peripherals. */