[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 2/2] ns16550: add Exar PCIe UART cards support
On 18.08.2021 14:16, Marek Marczykowski-Górecki wrote: > @@ -169,6 +172,29 @@ static void handle_dw_usr_busy_quirk(struct ns16550 > *uart) > } > } > > +static void enable_exar_enhanced_bits(struct ns16550 *uart) Afaics the parameter can be pointer-to-const. > +{ > +#ifdef NS16550_PCI > + if ( uart->bar && > + pci_conf_read16(PCI_SBDF(0, uart->ps_bdf[0], uart->ps_bdf[2], > + uart->ps_bdf[2]), PCI_VENDOR_ID) == > PCI_VENDOR_ID_EXAR ) > + { > + u8 devid = ns_read_reg(uart, UART_XR_DVID); > + u8 efr; > + /* > + * Exar XR17V35x cards ignore setting MCR[2] (hardware flow control) > + * unless "Enhanced control bits" is enabled. > + * The below checks for a 2, 4 or 8 port UART, following Linux > driver. > + */ > + if ( devid == 0x82 || devid == 0x84 || devid == 0x88 ) { Hmm, now I'm in trouble as to a question you did ask earlier (once on irc and I think also once in email): You asked whether to use the PCI device ID _or_ the DVID register. Now you're using both, albeit in a way not really making the access here safe: You assume that you can access the byte at offset 0x8d on all Exar devices. I don't know whether there is anything written anywhere telling you this is safe. With the earlier vendor/device ID match, it would feel safer to me if you replaced vendor ID and DVID checks here by a check of uart->param: While you must not deref that pointer, you can still check that it points at one of the three new entries you add to uart_param[]. Perhaps via "switch ( uart->param - uart_param )". Also there are a number of style nits: - opening braces go on their own lines (except after "do"), - blank lines are wanted between declarations and statements, - we try to move away from u<N> and want new code to use uint<N>_t, - with "devid" declared in the narrowest possible scope, please do so also for "efr" (albeit this logic may get rearranged enough to make this point moot). Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |