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()
750 struct swim_priv *swd = data; in floppy_find() local
753 if (drive >= swd->floppy_count) in floppy_find()
757 return get_disk_and_module(swd->unit[drive].disk); in floppy_find()
760 static int swim_add_floppy(struct swim_priv *swd, enum drive_location location) in swim_add_floppy() argument
762 struct floppy_state *fs = &swd->unit[swd->floppy_count]; in swim_add_floppy()
763 struct swim __iomem *base = swd->base; in swim_add_floppy()
777 swd->floppy_count++; in swim_add_floppy()
786 static int swim_floppy_init(struct swim_priv *swd) in swim_floppy_init() argument
790 struct swim __iomem *base = swd->base; in swim_floppy_init()
797 swim_add_floppy(swd, INTERNAL_DRIVE); in swim_floppy_init()
801 swim_add_floppy(swd, EXTERNAL_DRIVE); in swim_floppy_init()
812 spin_lock_init(&swd->lock); in swim_floppy_init()
814 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_floppy_init()
817 swd->unit[drive].disk = alloc_disk(1); in swim_floppy_init()
818 if (swd->unit[drive].disk == NULL) { in swim_floppy_init()
823 q = blk_mq_init_sq_queue(&swd->unit[drive].tag_set, &swim_mq_ops, in swim_floppy_init()
830 swd->unit[drive].disk->queue = q; in swim_floppy_init()
831 blk_queue_bounce_limit(swd->unit[drive].disk->queue, in swim_floppy_init()
833 swd->unit[drive].disk->queue->queuedata = &swd->unit[drive]; in swim_floppy_init()
834 swd->unit[drive].swd = swd; in swim_floppy_init()
837 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_floppy_init()
838 swd->unit[drive].disk->flags = GENHD_FL_REMOVABLE; in swim_floppy_init()
839 swd->unit[drive].disk->major = FLOPPY_MAJOR; in swim_floppy_init()
840 swd->unit[drive].disk->first_minor = drive; in swim_floppy_init()
841 sprintf(swd->unit[drive].disk->disk_name, "fd%d", drive); in swim_floppy_init()
842 swd->unit[drive].disk->fops = &floppy_fops; in swim_floppy_init()
843 swd->unit[drive].disk->events = DISK_EVENT_MEDIA_CHANGE; in swim_floppy_init()
844 swd->unit[drive].disk->private_data = &swd->unit[drive]; in swim_floppy_init()
845 set_capacity(swd->unit[drive].disk, 2880); in swim_floppy_init()
846 add_disk(swd->unit[drive].disk); in swim_floppy_init()
850 floppy_find, NULL, swd); in swim_floppy_init()
857 struct gendisk *disk = swd->unit[drive].disk; in swim_floppy_init()
864 blk_mq_free_tag_set(&swd->unit[drive].tag_set); in swim_floppy_init()
875 struct swim_priv *swd; in swim_probe() local
906 swd = kzalloc(sizeof(struct swim_priv), GFP_KERNEL); in swim_probe()
907 if (!swd) { in swim_probe()
911 platform_set_drvdata(dev, swd); in swim_probe()
913 swd->base = swim_base; in swim_probe()
915 ret = swim_floppy_init(swd); in swim_probe()
922 kfree(swd); in swim_probe()
931 struct swim_priv *swd = platform_get_drvdata(dev); in swim_remove() local
937 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_remove()
938 del_gendisk(swd->unit[drive].disk); in swim_remove()
939 blk_cleanup_queue(swd->unit[drive].disk->queue); in swim_remove()
940 blk_mq_free_tag_set(&swd->unit[drive].tag_set); in swim_remove()
941 put_disk(swd->unit[drive].disk); in swim_remove()
948 for (drive = 0; drive < swd->floppy_count; drive++) in swim_remove()
949 floppy_eject(&swd->unit[drive]); in swim_remove()
955 kfree(swd); in swim_remove()