[PATCH -next 00/17] Split 8250 driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

This patch series splits the 8250 driver into a universal/legacy driver
and a separate base port operations module.

Legacy IRQ chaining, RSA port resource management and probe config,
port storage, driver and console definition, module parameters and
linkage remain in the universal/legacy driver in 8250_core.c, which is
combined with 8250_pnp.c to form the 8250.ko driver binary (which retains
the 8250_core module alias)

The base port operations and the uart_config[] table are split into a
separate source file, 8250_port.c, which is combined with 8250_dma.c to
form the 8250_base.ko port operations module.

The universal/legacy 8250 driver continues to support every current
method of instantiating an 8250 port, including:
  1. ISA ports via arch-defined SERIAL_PORT_DFNS macro
  2. early_serial_setup() ports
  3. userspace-defined "phantom" ports
  4. "serial8250" platform devices
  5. via serial8250_register_8250_port(), which includes PNP, PCI and multi-fn cards

This split retains support for all kinds of legacy behavior without the
maintenance burden or footprint when legacy support is not required.
The legacy support limited to this universal driver:
  o ISA ports defined via SERIAL_PORT_DFNS macro
  o serial8250_set_isa_configurator() hack for Intel CE4100 support
  o IRQ chaining
  o timer-based port polling
  o PNP ports
  o probing and resource allocation for Remote Supervisor Adapter (RSA)
  o serial8250_register_8250_port() and its existing behavior of replacing
      "found" ports with new ports and restoring/re-probing old ports
      @ unregistration time
  o user-definable 8250 ports
  o early_serial_setup()
  o cooperative ttyS port sharing with sun serial drivers
  o all module parameters


The idea behind this split is to enable further development of
  o a minimal, standalone 8250 platform driver (probably w/o PCI support)
  o standalone 8250_omap driver
none of which are done ;)

This also provides a basis for some kind of ttyS port sharing since the
objectionable legacy behavior is isolated (because the universal/legacy driver
would not participate in ttyS port sharing).

NB: this series requires 'Extensible console matching & direct earlycon' series

Regards,

Peter Hurley (17):
  serial: core: Add minor field to uart_port
  serial: 8250: Compute ttyS index from port minor
  serial: 8250: Remove duplicate ->handle_irq initialization
  serial: 8250: Simplify capabilities reset at port unregister
  serial: 8250: Move ns16550a_goto_hispeed() to local header
  serial: 8250: Decouple core from skip_txen_test module param
  serial: 8250: Separate 8250 console interface
  serial: 8250: Separate legacy irq handling from core port operations
  serial: 8250: Separate port initialization
  serial: 8250: Encapsulate port i/o method init
  serial: 8250: Initialize fixed type fields when setting defaults
  serial: 8250: Initialize default dma handlers when setting defaults
  serial: 8250: Get RSA resource iff CONFIG_SERIAL_8250_RSA
  serial: 8250: Only get RSA resource when required
  serial: 8250: Decouple RSA probe
  serial: 8250: Declare base port operations const
  serial: 8250: Split base port operations from universal driver

 drivers/tty/serial/8250/8250.h      |   32 +-
 drivers/tty/serial/8250/8250_core.c | 2978 ++---------------------------------
 drivers/tty/serial/8250/8250_port.c | 2849 +++++++++++++++++++++++++++++++++
 drivers/tty/serial/8250/Makefile    |    5 +-
 drivers/tty/serial/serial_core.c    |    1 +
 include/linux/serial_8250.h         |   22 +
 include/linux/serial_core.h         |    1 +
 7 files changed, 3036 insertions(+), 2852 deletions(-)
 create mode 100644 drivers/tty/serial/8250/8250_port.c

-- 
2.3.0

--
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




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux