On Thu, 15 Nov 2012 15:37:37 -0600 Matt Schulte <matts@xxxxxxxxxxxxxxxxxxxx> wrote: > On Thu, Nov 15, 2012 at 2:46 PM, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote: > > On Thu, 15 Nov 2012 10:14:59 -0600 > > Matt Schulte <matts@xxxxxxxxxxxxxxxxxxxx> wrote: > > > >> On Wed, Nov 14, 2012 at 5:05 PM, Matt Schulte > >> <matts@xxxxxxxxxxxxxxxxxxxx> wrote: > >> > On Wed, Nov 14, 2012 at 5:00 PM, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote: > >> >>> + /* Fixme: needs tidying up */ > >> >>> + check = serial_in(up, UART_EXAR_DVID); > >> >>> + if ((check == 0x82) || (check == 0x84) || (check == 0x88)) > >> >>> + p->handle_irq = exar_handle_irq; > >> >> > >> >> Can't you check the port type here rather than re-probing stuff ? > >> >> > >> >> > >> >> Otherwise looks good > >> > > >> > I tried that but in my tests port.type == 0 at this point. > >> > > >> > >> _Should_ the port.type have the correct value inside of set_io_from_upio? > > > > Yes - except possibly if autoconfig changes the port type. > > > > It may in fact be sufficient to set it in serial8250_config_port after > > autoconfig has run. There are far too many different init paths in this > > code 8( > > Turns out you were right, it seems to work out if I put it in here: > > @@ -2684,10 +2679,14 @@ static void serial8250_config_port(struct > uart_port *port, int flags) > > if (port->type != PORT_RSA && probeflags & PROBE_RSA) > serial8250_release_rsa_resource(up); > if (port->type == PORT_UNKNOWN) > serial8250_release_std_resource(up); > + > + /* Fixme: might not be the best place for this */ > + if (port->type == PORT_XR17V35X) > + port->handle_irq = exar_handle_irq; > } > > This look better? Yep Alan -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html