Lines Matching refs:swd

195 	struct swim_priv *swd;
428 struct swim __iomem *base = fs->swd->base;
445 struct swim __iomem *base = fs->swd->base;
461 struct swim __iomem *base = fs->swd->base;
498 struct swim __iomem *base = fs->swd->base;
530 struct swim_priv *swd = fs->swd;
534 if (!spin_trylock_irq(&swd->lock))
553 spin_unlock_irq(&swd->lock);
585 struct swim __iomem *base = fs->swd->base;
614 struct swim __iomem *base = fs->swd->base;
674 struct swim __iomem *base = fs->swd->base;
748 static int swim_add_floppy(struct swim_priv *swd, enum drive_location location)
750 struct floppy_state *fs = &swd->unit[swd->floppy_count];
751 struct swim __iomem *base = swd->base;
765 swd->floppy_count++;
788 static int swim_floppy_init(struct swim_priv *swd)
792 struct swim __iomem *base = swd->base;
799 swim_add_floppy(swd, INTERNAL_DRIVE);
803 swim_add_floppy(swd, EXTERNAL_DRIVE);
814 spin_lock_init(&swd->lock);
816 for (drive = 0; drive < swd->floppy_count; drive++) {
817 err = blk_mq_alloc_sq_tag_set(&swd->unit[drive].tag_set,
822 swd->unit[drive].disk =
823 blk_mq_alloc_disk(&swd->unit[drive].tag_set,
824 &swd->unit[drive]);
825 if (IS_ERR(swd->unit[drive].disk)) {
826 blk_mq_free_tag_set(&swd->unit[drive].tag_set);
827 err = PTR_ERR(swd->unit[drive].disk);
831 swd->unit[drive].swd = swd;
834 for (drive = 0; drive < swd->floppy_count; drive++) {
835 swd->unit[drive].disk->flags = GENHD_FL_REMOVABLE;
836 swd->unit[drive].disk->major = FLOPPY_MAJOR;
837 swd->unit[drive].disk->first_minor = drive;
838 swd->unit[drive].disk->minors = 1;
839 sprintf(swd->unit[drive].disk->disk_name, "fd%d", drive);
840 swd->unit[drive].disk->fops = &floppy_fops;
841 swd->unit[drive].disk->flags |= GENHD_FL_NO_PART;
842 swd->unit[drive].disk->events = DISK_EVENT_MEDIA_CHANGE;
843 swd->unit[drive].disk->private_data = &swd->unit[drive];
844 set_capacity(swd->unit[drive].disk, 2880);
845 err = add_disk(swd->unit[drive].disk);
848 swd->unit[drive].registered = true;
856 swim_cleanup_floppy_disk(&swd->unit[drive]);
865 struct swim_priv *swd;
896 swd = kzalloc(sizeof(struct swim_priv), GFP_KERNEL);
897 if (!swd) {
901 platform_set_drvdata(dev, swd);
903 swd->base = swim_base;
905 ret = swim_floppy_init(swd);
912 kfree(swd);
921 struct swim_priv *swd = platform_get_drvdata(dev);
925 for (drive = 0; drive < swd->floppy_count; drive++)
926 swim_cleanup_floppy_disk(&swd->unit[drive]);
932 for (drive = 0; drive < swd->floppy_count; drive++)
933 floppy_eject(&swd->unit[drive]);
939 kfree(swd);