PPC(4)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1, nixpkgs unstable

✨ NAME ✨

Okay bestie, this is the PPC(4) page from the Kernel Interfaces Manual β€” literally the page for the ppc Parallel Port Chipset driver. πŸ’–

πŸ¦‹ SYNOPSIS πŸ¦‹

To bring the driver in:

device ppc

Then in /boot/device.hints you got:

hint.ppc.0.at="isa"
hint.ppc.0.irq="7"

And for one or more PPBUS busses:

device ppbus

🌸 DESCRIPTION 🌸

So the ppc driver is giving low level support to various parallel port chipsets for the ppbus(4) system. It's the backstage crew, okay? πŸ‘‘

During the probe phase, ppc detects parallel port chipsets and initializes private data according to their operating mode: COMPATIBLE, NIBBLE, PS/2, EPP, ECP and other mixed modes. If a mode is provided at startup through the flags variable of the boot interface, the operating mode of the chipset is forced according to flags and the hardware supported modes. Periodt.

During the attach phase, ppc allocates a ppbus structure, initializes it and calls the ppbus attach function. Main character energy.

✨ Supported flags ✨

  • bits 0-3: chipset forced mode(s)
PPB_COMPATIBLE  0x0     /* Centronics compatible mode */
PPB_NIBBLE      0x1     /* reverse 4 bit mode */
PPB_PS2         0x2     /* PS/2 byte mode */
PPB_EPP         0x4     /* EPP mode, 32 bit */
PPB_ECP         0x8     /* ECP mode */

And any mixed values. Slay.

  • bit 4: EPP protocol (0 EPP 1.9, 1 EPP 1.7)
  • bit 5: activate IRQ (1 IRQ disabled, 0 IRQ enabled)
  • bit 6: disable chipset specific detection
  • bit 7: disable FIFO detection

πŸŽ€ Supported chipsets πŸŽ€

Some parallel port chipsets are explicitly supported: detection and initialisation code has been written according to their datasheets. The way that they read the datasheets and said β€œI can fix her” πŸ˜­πŸ’…

  • SMC FDC37C665GT and FDC37C666GT chipsets
  • Natsemi PC873xx-family (PC87332 and PC87306)
  • Winbond W83877xx-family (W83877F and W83877AF)
  • SMC-like chipsets with mixed modes (see ppbus(4))

πŸ¦‹ Adding support to a new chipset πŸ¦‹

You may want to add support for the newest chipset your motherboard was sold with. For the ISA bus, just retrieve the specs of the chipset and write the corresponding ppc_mychipset_detect() function. Then add an entry to the general purpose ppc_detect() function. Lowkey a little DIY era. πŸ› οΈβœ¨

Your ppc_mychipset_detect() function should ensure that if the mode field of the flags boot variable is not null, then the operating mode is forced to the given mode and no other mode is available and ppb->ppb_avm field contains the available modes of the chipset. That's the vibe check for your new chipset. πŸ‘‘

πŸ‘€ SEE ALSO πŸ‘€

πŸ“œ HISTORY πŸ“œ

The ppc manual page first appeared in FreeBSD 3.0. It's giving vintage but make it useful. πŸ•°οΈ

πŸ’– AUTHORS πŸ’–

This manual page was written by Nicolas Souchu. Thank you for your service. 🫢

πŸ’€ BUGS πŸ’€

The chipset detection process may corrupt your chipset configuration. You may disable chipset specific detection by using the above flags. No cap, that's a real warning β€” protect your chipset config, bestie. 😭

Cute sign-off: this page is from Debian, dated March 5, 1998, and the manual tag is PPC(4). Byeee! πŸ’…βœ¨

πŸ“¦ where this page comes from