I've been working on a project to allow easier extraction of information from the .ATDF files that are provided in Atmel "packs." Typically there's a lot of info in those that is lost by the time the .h file is created, that it's handy to have. (like "which port/pin is PAD2 of Sercom0?")
It's coming along nicely, and I'm willing to let other people look at it...
https://github.com/WestfW/Atmel_ATDF_parser
./sam_pinmux2array.py ATSAMD21E15L.atdf 12 13 20 sercom0 Chip Pin 12 on ATSAMD21E15L is PA09 ADC: AIN17 pmux:B_ADC EIC: EXTINT9 pmux:A PORT: P9 pmux:default SERCOM0: PAD1 pmux:C SERCOM2: PAD1 pmux:D TCC0: WO1 pmux:E TCC1: WO3 pmux:F Chip Pin 13 on ATSAMD21E15L is PA10 ADC: AIN18 pmux:B_ADC EIC: EXTINT10 pmux:A GCLK: IO4 pmux:H PORT: P10 pmux:default SERCOM0: PAD2 pmux:C SERCOM2: PAD2 pmux:D TCC0: WO2 pmux:F TCC1: WO0 pmux:E Chip Pin 20 on ATSAMD21E15L is PA19 AC: CMP1 pmux:H EIC: EXTINT3 pmux:A PORT: P19 pmux:default SERCOM1: PAD3 pmux:C SERCOM3: PAD3 pmux:D TC3: WO1 pmux:E TCC0: WO3 pmux:F PA04 SERCOM0 PAD0 pmuxD PA05 SERCOM0 PAD1 pmuxD PA06 SERCOM0 PAD2 pmuxD PA07 SERCOM0 PAD3 pmuxD PA08 SERCOM0 PAD0 pmuxC PA09 SERCOM0 PAD1 pmuxC PA10 SERCOM0 PAD2 pmuxC PA11 SERCOM0 PAD3 pmuxC