ata_sff_dev_select(9)
π ata_sff_dev_select β like, the whole NAME thing
okay so bestie, this is ata_sff_dev_select(9) from the Kernel API Manual, and it's literally the function that picks which device gets to be the main character on your ATA bus. device 0 or device 1, no in-between. β¨
β¨ SYNOPSIS β¨
void ata_sff_dev_select (struct ata_port *ap , unsigned int device );
that's it. that's the whole vibe. two args, zero drama. π
π«Ά ARGUMENTS π«Ά
apβ the ATA channel you're messing with. your canvas, your stage, your little port. πdeviceβ the ATA device you wanna select, and yes it's numbered starting from zero (so0and1, not1and2β classic programmer behavior π).
π¦ DESCRIPTION π¦
okay so the whole point: this uses the method defined in the ATA specification to make either device 0 or device 1 active on the ATA channel. that's it, that's the job. and the way it does it works with both PIO and MMIO β no cap, it's flexible like that. π
it may also be used as the dev_select entry in ata_port_operations. iykyk. π
LOCKING: caller. that's the whole note. you handle the locking, bestie β this function is not gonna do it for you. π
π SEE ALSO π
Kernel file ./drivers/ata/libata-sff.c and honestly the entire extended friend group:
ata_sff_check_status(9)ata_sff_altstatus(9)ata_sff_irq_status(9)ata_sff_sync(9)ata_sff_pause(9)ata_sff_dma_pause(9)ata_sff_wait_ready(9)ata_sff_set_devctl(9)ata_dev_select(9)ata_sff_irq_on(9)ata_sff_tf_load(9)ata_sff_tf_read(9)ata_sff_exec_command(9)ata_tf_to_host(9)ata_sff_data_xfer(9)ata_sff_data_xfer32(9)ata_pio_sector(9)ata_pio_sectors(9)atapi_send_cdb(9)__atapi_pio_bytes(9)atapi_pio_bytes(9)ata_hsm_ok_in_wq(9)ata_hsm_qc_complete(9)ata_sff_hsm_move(9)ata_sff_qc_issue(9)ata_sff_qc_fill_rtf(9)ata_sff_port_intr(9)ata_sff_interrupt(9)ata_sff_lost_interrupt(9)ata_sff_freeze(9)ata_sff_thaw(9)ata_sff_prereset(9)ata_devchk(9)ata_sff_dev_classify(9)ata_sff_wait_after_reset(9)ata_sff_softreset(9)sata_sff_hardreset(9)ata_sff_postreset(9)ata_sff_drain_fifo(9)ata_sff_error_handler(9)ata_sff_std_ports(9)ata_pci_sff_init_host(9)ata_pci_sff_prepare_host(9)ata_pci_sff_activate_host(9)ata_pci_sff_init_one(9)ata_bmdma_fill_sg(9)ata_bmdma_fill_sg_dumb(9)ata_bmdma_qc_prep(9)ata_bmdma_dumb_qc_prep(9)ata_bmdma_qc_issue(9)ata_bmdma_port_intr(9)ata_bmdma_interrupt(9)ata_bmdma_error_handler(9)ata_bmdma_post_internal_cmd(9)ata_bmdma_irq_clear(9)ata_bmdma_setup(9)ata_bmdma_start(9)ata_bmdma_stop(9)ata_bmdma_status(9)ata_bmdma_port_start(9)ata_bmdma_port_start32(9)ata_pci_bmdma_clear_simplex(9)ata_pci_bmdma_init(9)ata_pci_bmdma_prepare_host(9)ata_pci_bmdma_init_one(9)ata_sff_port_init(9)
and that's the whole page, bestie π
this lil icon lives over in ./drivers/ata, dated October 2026, and it's filed under the ata_sff_dev_select(9) girlies. go select a device. slay. πΈπ¦π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms