Lines Matching refs:swd
193 struct swim_priv *swd; member
426 struct swim __iomem *base = fs->swd->base; in swim_track()
443 struct swim __iomem *base = fs->swd->base; in floppy_eject()
459 struct swim __iomem *base = fs->swd->base; in swim_read_sector()
496 struct swim __iomem *base = fs->swd->base; in floppy_read_sectors()
528 struct swim_priv *swd = fs->swd; in swim_queue_rq() local
532 if (!spin_trylock_irq(&swd->lock)) in swim_queue_rq()
551 spin_unlock_irq(&swd->lock); in swim_queue_rq()
583 struct swim __iomem *base = fs->swd->base; in setup_medium()
612 struct swim __iomem *base = fs->swd->base; in floppy_open()
674 struct swim __iomem *base = fs->swd->base; in floppy_release()
748 static int swim_add_floppy(struct swim_priv *swd, enum drive_location location) in swim_add_floppy() argument
750 struct floppy_state *fs = &swd->unit[swd->floppy_count]; in swim_add_floppy()
751 struct swim __iomem *base = swd->base; in swim_add_floppy()
765 swd->floppy_count++; in swim_add_floppy()
774 static int swim_floppy_init(struct swim_priv *swd) in swim_floppy_init() argument
778 struct swim __iomem *base = swd->base; in swim_floppy_init()
785 swim_add_floppy(swd, INTERNAL_DRIVE); in swim_floppy_init()
789 swim_add_floppy(swd, EXTERNAL_DRIVE); in swim_floppy_init()
800 spin_lock_init(&swd->lock); in swim_floppy_init()
802 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_floppy_init()
803 err = blk_mq_alloc_sq_tag_set(&swd->unit[drive].tag_set, in swim_floppy_init()
808 swd->unit[drive].disk = in swim_floppy_init()
809 blk_mq_alloc_disk(&swd->unit[drive].tag_set, in swim_floppy_init()
810 &swd->unit[drive]); in swim_floppy_init()
811 if (IS_ERR(swd->unit[drive].disk)) { in swim_floppy_init()
812 blk_mq_free_tag_set(&swd->unit[drive].tag_set); in swim_floppy_init()
813 err = PTR_ERR(swd->unit[drive].disk); in swim_floppy_init()
817 swd->unit[drive].swd = swd; in swim_floppy_init()
820 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_floppy_init()
821 swd->unit[drive].disk->flags = GENHD_FL_REMOVABLE; in swim_floppy_init()
822 swd->unit[drive].disk->major = FLOPPY_MAJOR; in swim_floppy_init()
823 swd->unit[drive].disk->first_minor = drive; in swim_floppy_init()
824 swd->unit[drive].disk->minors = 1; in swim_floppy_init()
825 sprintf(swd->unit[drive].disk->disk_name, "fd%d", drive); in swim_floppy_init()
826 swd->unit[drive].disk->fops = &floppy_fops; in swim_floppy_init()
827 swd->unit[drive].disk->events = DISK_EVENT_MEDIA_CHANGE; in swim_floppy_init()
828 swd->unit[drive].disk->private_data = &swd->unit[drive]; in swim_floppy_init()
829 set_capacity(swd->unit[drive].disk, 2880); in swim_floppy_init()
830 add_disk(swd->unit[drive].disk); in swim_floppy_init()
838 struct gendisk *disk = swd->unit[drive].disk; in swim_floppy_init()
843 blk_mq_free_tag_set(&swd->unit[drive].tag_set); in swim_floppy_init()
852 struct swim_priv *swd; in swim_probe() local
883 swd = kzalloc(sizeof(struct swim_priv), GFP_KERNEL); in swim_probe()
884 if (!swd) { in swim_probe()
888 platform_set_drvdata(dev, swd); in swim_probe()
890 swd->base = swim_base; in swim_probe()
892 ret = swim_floppy_init(swd); in swim_probe()
899 kfree(swd); in swim_probe()
908 struct swim_priv *swd = platform_get_drvdata(dev); in swim_remove() local
912 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_remove()
913 del_gendisk(swd->unit[drive].disk); in swim_remove()
914 blk_cleanup_queue(swd->unit[drive].disk->queue); in swim_remove()
915 blk_mq_free_tag_set(&swd->unit[drive].tag_set); in swim_remove()
916 put_disk(swd->unit[drive].disk); in swim_remove()
923 for (drive = 0; drive < swd->floppy_count; drive++) in swim_remove()
924 floppy_eject(&swd->unit[drive]); in swim_remove()
930 kfree(swd); in swim_remove()