1b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz#include <linux/kernel.h>
238789fda295689689d064c0157bc363b1837b5e6Paul Gortmaker#include <linux/export.h>
3b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz#include <linux/ide.h>
46d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan#include <linux/seq_file.h>
5b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz
6b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz#include "ide-floppy.h"
7b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz
86d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyanstatic int idefloppy_capacity_proc_show(struct seq_file *m, void *v)
9b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz{
106d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	ide_drive_t*drive = (ide_drive_t *)m->private;
11b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz
126d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	seq_printf(m, "%llu\n", (long long)ide_gd_capacity(drive));
136d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	return 0;
14b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz}
15b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz
166d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyanstatic int idefloppy_capacity_proc_open(struct inode *inode, struct file *file)
176d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan{
186d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	return single_open(file, idefloppy_capacity_proc_show, PDE(inode)->data);
196d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan}
206d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan
216d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyanstatic const struct file_operations idefloppy_capacity_proc_fops = {
226d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	.owner		= THIS_MODULE,
236d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	.open		= idefloppy_capacity_proc_open,
246d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	.read		= seq_read,
256d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	.llseek		= seq_lseek,
266d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	.release	= single_release,
276d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan};
286d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan
29b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewiczide_proc_entry_t ide_floppy_proc[] = {
306d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	{ "capacity",	S_IFREG|S_IRUGO, &idefloppy_capacity_proc_fops	},
316d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	{ "geometry",	S_IFREG|S_IRUGO, &ide_geometry_proc_fops	},
326d703a81ad5fdd102334751ddacb053ecc6ff046Alexey Dobriyan	{}
33b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz};
34b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz
35b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewiczide_devset_rw_field(bios_cyl, bios_cyl);
36b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewiczide_devset_rw_field(bios_head, bios_head);
37b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewiczide_devset_rw_field(bios_sect, bios_sect);
38b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewiczide_devset_rw_field(ticks, pc_delay);
39b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz
40b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewiczconst struct ide_proc_devset ide_floppy_settings[] = {
41b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz	IDE_PROC_DEVSET(bios_cyl,  0, 1023),
42b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz	IDE_PROC_DEVSET(bios_head, 0,  255),
43b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz	IDE_PROC_DEVSET(bios_sect, 0,   63),
44b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz	IDE_PROC_DEVSET(ticks,	   0,  255),
4571bfc7a7c73eaf1f99e309dba60822ba050e3ec5Hannes Eder	{ NULL },
46b9103da463f72d03c513acdb18f1aebd7931ed1eBartlomiej Zolnierkiewicz};
47