aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-10-05 13:51:05 -0400
committerKevin O'Connor <kevin@koconnor.net>2017-10-05 13:51:05 -0400
commitfb0f34434624b06d69e1efaf4d928265aa83e99a (patch)
tree795eb16bd755b863ed1ecce12cad2da76e1aa106
parentafac81c1616018b6803e18ffcb19a85d3c516dd5 (diff)
downloadkutter-fb0f34434624b06d69e1efaf4d928265aa83e99a.tar.gz
kutter-fb0f34434624b06d69e1efaf4d928265aa83e99a.tar.xz
kutter-fb0f34434624b06d69e1efaf4d928265aa83e99a.zip
avr: Add support for atmega1284p
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--src/avr/Kconfig7
-rw-r--r--src/avr/gpio.c11
2 files changed, 13 insertions, 5 deletions
diff --git a/src/avr/Kconfig b/src/avr/Kconfig
index 85967a38..77b0f45c 100644
--- a/src/avr/Kconfig
+++ b/src/avr/Kconfig
@@ -23,6 +23,8 @@ choice
bool "atmega1280"
config MACH_at90usb1286
bool "at90usb1286"
+ config MACH_atmega1284p
+ bool "atmega1284p"
config MACH_atmega644p
bool "atmega644p"
config MACH_atmega328
@@ -35,6 +37,7 @@ config MCU
string
default "atmega168" if MACH_atmega168
default "atmega328" if MACH_atmega328
+ default "atmega1284p" if MACH_atmega1284p
default "atmega644p" if MACH_atmega644p
default "at90usb1286" if MACH_at90usb1286
default "atmega1280" if MACH_atmega1280
@@ -44,7 +47,7 @@ choice
prompt "Processor speed"
config AVR_FREQ_20000000
bool "20Mhz"
- depends on MACH_atmega168 || MACH_atmega328 || MACH_atmega644p
+ depends on MACH_atmega168 || MACH_atmega328 || MACH_atmega644p || MACH_atmega1284p
config AVR_FREQ_16000000
bool "16Mhz"
config AVR_FREQ_8000000
@@ -98,7 +101,7 @@ config SERIAL_BAUD_U2X
default y
config SIMULAVR
- depends on MACH_atmega168 || MACH_atmega328 || MACH_atmega644p
+ depends on MACH_atmega168 || MACH_atmega328 || MACH_atmega644p || MACH_atmega1284p
bool "Compile for simulavr software emulation"
default n
help
diff --git a/src/avr/gpio.c b/src/avr/gpio.c
index 53a57f95..f144cd64 100644
--- a/src/avr/gpio.c
+++ b/src/avr/gpio.c
@@ -126,6 +126,8 @@ static const struct gpio_pwm_info pwm_regs[] PROGMEM = {
#ifdef OCR3A
{ &OCR3A, &TCCR3A, &TCCR3B, 1<<COM3A1, 0 },
{ &OCR3B, &TCCR3A, &TCCR3B, 1<<COM3B1, 0 },
+#endif
+#ifdef OCR3C
{ &OCR3C, &TCCR3A, &TCCR3B, 1<<COM3C1, 0 },
#endif
#ifdef OCR4A
@@ -143,10 +145,13 @@ static const uint8_t pwm_pins[ARRAY_SIZE(pwm_regs)] PROGMEM = {
GPIO('D', 6), GPIO('D', 5),
GPIO('B', 1), GPIO('B', 2),
GPIO('B', 3), GPIO('D', 3),
-#elif CONFIG_MACH_atmega644p
+#elif CONFIG_MACH_atmega644p || CONFIG_MACH_atmega1284p
GPIO('B', 3), GPIO('B', 4),
GPIO('D', 5), GPIO('D', 4),
GPIO('D', 7), GPIO('D', 6),
+# ifdef OCR3A
+ GPIO('B', 6), GPIO('B', 7),
+# endif
#elif CONFIG_MACH_at90usb1286
GPIO('B', 7), GPIO('D', 0),
GPIO('B', 5), GPIO('B', 6), GPIO('B', 7),
@@ -244,7 +249,7 @@ static const uint8_t adc_pins[] PROGMEM = {
#if CONFIG_MACH_atmega168 || CONFIG_MACH_atmega328
GPIO('C', 0), GPIO('C', 1), GPIO('C', 2), GPIO('C', 3),
GPIO('C', 4), GPIO('C', 5), GPIO('E', 0), GPIO('E', 1),
-#elif CONFIG_MACH_atmega644p
+#elif CONFIG_MACH_atmega644p || CONFIG_MACH_atmega1284p
GPIO('A', 0), GPIO('A', 1), GPIO('A', 2), GPIO('A', 3),
GPIO('A', 4), GPIO('A', 5), GPIO('A', 6), GPIO('A', 7),
#elif CONFIG_MACH_at90usb1286
@@ -345,7 +350,7 @@ gpio_adc_cancel_sample(struct gpio_adc g)
#if CONFIG_MACH_atmega168 || CONFIG_MACH_atmega328
static const uint8_t SS = GPIO('B', 2), SCK = GPIO('B', 5), MOSI = GPIO('B', 3);
-#elif CONFIG_MACH_atmega644p
+#elif CONFIG_MACH_atmega644p || CONFIG_MACH_atmega1284p
static const uint8_t SS = GPIO('B', 4), SCK = GPIO('B', 7), MOSI = GPIO('B', 5);
#elif CONFIG_MACH_at90usb1286 || CONFIG_MACH_atmega1280 || CONFIG_MACH_atmega2560
static const uint8_t SS = GPIO('B', 0), SCK = GPIO('B', 1), MOSI = GPIO('B', 2);