Você parece estar fazendo duas perguntas diferentes.
Is there any way to check which baud rates are supported on a serial device?
A resposta dependerá de (1) as capacidades do hardware, isto é, o UART / USART / SCC, e o intervalo de divisores que o controlador de dispositivo pode usar no gerador de taxa de transmissão; consulte a folha de dados do dispositivo; (2) a frequência do relógio / oscilador conectado ao dispositivo de porta serial; consulte a documentação do conselho.
Is there any way to check which baud rates are supported on Linux?
Uma das taxas de transmissão definidas em include/asm-generic/termbits.h
para o membro c_cflag da estrutura de controle do terminal é o método típico que o driver de dispositivo da porta serial (isto é, UART / USART) recebe para o baud valor de configuração da taxa.
#define B0 0000000 /* hang up */
#define B50 0000001
#define B75 0000002
#define B110 0000003
#define B134 0000004
#define B150 0000005
#define B200 0000006
#define B300 0000007
#define B600 0000010
#define B1200 0000011
#define B1800 0000012
#define B2400 0000013
#define B4800 0000014
#define B9600 0000015
#define B19200 0000016
#define B38400 0000017
#define BOTHER 0010000
#define B57600 0010001
#define B115200 0010002
#define B230400 0010003
#define B460800 0010004
#define B500000 0010005
#define B576000 0010006
#define B921600 0010007
#define B1000000 0010010
#define B1152000 0010011
#define B1500000 0010012
#define B2000000 0010013
#define B2500000 0010014
#define B3000000 0010015
#define B3500000 0010016
#define B4000000 0010017
Os drivers de porta serial normalmente não têm nenhum meio de relatar / anunciar quais dessas taxas de transmissão são realmente suportadas / configuradas / implementadas. Existe um valor de recursos para atributos como FIFO e suspensão, mas não para taxas de transmissão. Um driver poderia definir uma chamada ioctl () para configurar taxas de transmissão (não padrão), embora isso tornasse os programas não portáteis.