ha:funcmap.v1 {
	ha:comp_attribs {
		li:funcmap/ports {
			{ PB0/PB0      -> sigtype=digital; }
			{ PB0/PCINT8   -> sigtype=digital; dir=input }
			{ PB0/XTAL1    -> sigtype=analog;  }

			{ PB1/PB1      -> sigtype=digital; }
			{ PB1/PCINT9   -> sigtype=digital; dir=input  }
			{ PB1/XTAL2    -> sigtype=analog;  }

			{ PB3/PB3      -> sigtype=digital; }
			{ PB3/PCINT11  -> sigtype=digital; dir=input  }
			{ PB3/RESET    -> sigtype=digital; dir=input  }

			{ PB2/PB2      -> sigtype=digital; }
			{ PB2/PCINT10  -> sigtype=digital; dir=input  }
			{ PB2/OC0A     -> sigtype=digital; dir=output }
			{ PB2/INT0     -> sigtype=digital; dir=input  }

			{ PA7/PA7      -> sigtype=digital; }
			{ PA7/PCINT7   -> sigtype=digital; dir=input  }
			{ PA7/OC0B     -> sigtype=digital; dir=output }
			{ PA7/ADC7     -> sigtype=digital; dir=input  }

			{ PA6/PA6      -> sigtype=digital; }
			{ PA6/PCINT6   -> sigtype=digital; dir=input  }
			{ PA6/MOSI     -> sigtype=digital; }
			{ PA6/DI       -> sigtype=digital; dir=input  }
			{ PA6/SDA      -> sigtype=digital; }
			{ PA6/OC1A     -> sigtype=digital; dir=output }
			{ PA6/ADC6     -> sigtype=analog;  dir=input  }

			{ PA0/PA0      -> sigtype=digital; }
			{ PA0/PCINT0   -> sigtype=digital; dir=input  }
			{ PA0/AREF+ADC0-> sigtype=analog;  dir=input  }

			{ PA1/PA1      -> sigtype=digital; }
			{ PA1/PCINT1   -> sigtype=digital; dir=input  }
			{ PA1/AIN0     -> sigtype=analog;  dir=input  }
			{ PA1/ADC1     -> sigtype=analog;  dir=input  }

			{ PA2/PA2      -> sigtype=digital; }
			{ PA2/PCINT2   -> sigtype=digital; dir=input  }
			{ PA2/AIN1     -> sigtype=analog;  dir=input  }
			{ PA2/ADC2     -> sigtype=analog;  dir=input  }

			{ PA3/PA3      -> sigtype=digital; }
			{ PA3/PCINT3   -> sigtype=digital; dir=input  }
			{ PA3/ADC3     -> sigtype=analog;  dir=input  }

			{ PA4/PA4      -> sigtype=digital; }
			{ PA4/PCINT4   -> sigtype=digital; dir=input  }
			{ PA4/SCK      -> sigtype=digital; }
			{ PA4/SCL      -> sigtype=digital; }
			{ PA4/ADC4     -> sigtype=analog;  dir=input  }

			{ PA5/PA5      -> sigtype=digital; }
			{ PA5/PCINT5   -> sigtype=digital; dir=input  }
			{ PA5/MISO     -> sigtype=digital; }
			{ PA5/DO       -> sigtype=digital; dir=output }
			{ PA5/OC1B     -> sigtype=digital; dir=output }
			{ PA5/ADC5     -> sigtype=analog;  dir=input  }
		}

		# sorting for display
		li:funcmap/weak_groups {
			{ gpio         -> PB0, PB1, PB2, PB3, PA6, PA7, PA0, PA1, PA2, PA3, PA4, PA5 }
			{ pcint        -> PCINT8, PCINT9, PCINT11, PCINT10, PCINT7, PCINT6, PCINT0, PCINT1, PCINT2, PCINT3, PCINT4, PCINT5 }
			{ xtal         -> XTAL1, XTAL2 }
			{ PWM          -> OC0A, OC0B, OC1A, OC1B }
			{ adc          -> AREF+ADC0, ADC1, ADC2, ADC3, ADC4, ADC5, ADC6, ADC7 }
			{ comparator   -> AIN0, AIN1 }
		}

		# have to be selected all at once
		li:funcmap/strong_groups {
			{ SPI          -> SCK, MISO, MOSI }
			{ I2C          -> SDA, SCL }
			{ USI          -> SCK, DI, DO }
		}
	}
}
