Does anyone know why...
In the variant.h files for the SAMD products, there is a macro defined:
#define digitalPinHasPWM(P) (g_APinDescription[P].ulPWMChannel != NOT_ON_PWM || g_APinDescription[P].ulTCChannel != NOT_ON_TIMER)
However, the only code in the SAMD code or libraries that checks for PWM being allowed is in wiring_analog.c, and IT uses:
if ((attr & PIN_ATTR_PWM) == PIN_ATTR_PWM)
(which seems like a better method...)
Is there some reason that the macro doesn't check the attribute? Seems simpler and less error prone (especially as chips add different timer types.)