Lines Matching refs:swd
196 struct swim_priv *swd; member
430 struct swim __iomem *base = fs->swd->base; in swim_track()
447 struct swim __iomem *base = fs->swd->base; in floppy_eject()
463 struct swim __iomem *base = fs->swd->base; in swim_read_sector()
500 struct swim __iomem *base = fs->swd->base; in floppy_read_sectors()
593 struct swim __iomem *base = fs->swd->base; in setup_medium()
620 struct swim __iomem *base = fs->swd->base; in floppy_open()
679 struct swim __iomem *base = fs->swd->base; in floppy_release()
752 struct swim __iomem *base = fs->swd->base; in floppy_revalidate()
779 struct swim_priv *swd = data; in floppy_find() local
782 if (drive > swd->floppy_count) in floppy_find()
786 return get_disk(swd->unit[drive].disk); in floppy_find()
789 static int swim_add_floppy(struct swim_priv *swd, enum drive_location location) in swim_add_floppy() argument
791 struct floppy_state *fs = &swd->unit[swd->floppy_count]; in swim_add_floppy()
792 struct swim __iomem *base = swd->base; in swim_add_floppy()
807 swd->floppy_count++; in swim_add_floppy()
812 static int swim_floppy_init(struct swim_priv *swd) in swim_floppy_init() argument
816 struct swim __iomem *base = swd->base; in swim_floppy_init()
822 swim_add_floppy(swd, INTERNAL_DRIVE); in swim_floppy_init()
825 swim_add_floppy(swd, EXTERNAL_DRIVE); in swim_floppy_init()
836 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_floppy_init()
837 swd->unit[drive].disk = alloc_disk(1); in swim_floppy_init()
838 if (swd->unit[drive].disk == NULL) { in swim_floppy_init()
842 swd->unit[drive].swd = swd; in swim_floppy_init()
845 spin_lock_init(&swd->lock); in swim_floppy_init()
846 swd->queue = blk_init_queue(do_fd_request, &swd->lock); in swim_floppy_init()
847 if (!swd->queue) { in swim_floppy_init()
852 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_floppy_init()
853 swd->unit[drive].disk->flags = GENHD_FL_REMOVABLE; in swim_floppy_init()
854 swd->unit[drive].disk->major = FLOPPY_MAJOR; in swim_floppy_init()
855 swd->unit[drive].disk->first_minor = drive; in swim_floppy_init()
856 sprintf(swd->unit[drive].disk->disk_name, "fd%d", drive); in swim_floppy_init()
857 swd->unit[drive].disk->fops = &floppy_fops; in swim_floppy_init()
858 swd->unit[drive].disk->private_data = &swd->unit[drive]; in swim_floppy_init()
859 swd->unit[drive].disk->queue = swd->queue; in swim_floppy_init()
860 set_capacity(swd->unit[drive].disk, 2880); in swim_floppy_init()
861 add_disk(swd->unit[drive].disk); in swim_floppy_init()
865 floppy_find, NULL, swd); in swim_floppy_init()
872 put_disk(swd->unit[drive].disk); in swim_floppy_init()
880 struct swim_priv *swd; in swim_probe() local
911 swd = kzalloc(sizeof(struct swim_priv), GFP_KERNEL); in swim_probe()
912 if (!swd) { in swim_probe()
916 platform_set_drvdata(dev, swd); in swim_probe()
918 swd->base = swim_base; in swim_probe()
920 ret = swim_floppy_init(swd); in swim_probe()
927 kfree(swd); in swim_probe()
938 struct swim_priv *swd = platform_get_drvdata(dev); in swim_remove() local
944 for (drive = 0; drive < swd->floppy_count; drive++) { in swim_remove()
945 del_gendisk(swd->unit[drive].disk); in swim_remove()
946 put_disk(swd->unit[drive].disk); in swim_remove()
951 blk_cleanup_queue(swd->queue); in swim_remove()
955 for (drive = 0; drive < swd->floppy_count; drive++) in swim_remove()
956 floppy_eject(&swd->unit[drive]); in swim_remove()
958 iounmap(swd->base); in swim_remove()
964 kfree(swd); in swim_remove()