return -EINVAL;
if (init_vfc_hw(dev))
return -EIO;
+
+ devfs_mk_cdev(MKDEV(VFC_MAJOR, instance),
+ S_IFCHR | S_IRUSR | S_IWUSR,
+ "vfc/%d", instance);
return 0;
}
map_size = sizeof(struct vfc_regs);
vma->vm_flags |=
- (VM_MAYREAD | VM_MAYWRITE | VM_MAYSHARE);
+ (VM_SHM | VM_LOCKED | VM_IO | VM_MAYREAD | VM_MAYWRITE | VM_MAYSHARE);
map_offset = (unsigned int) (long)dev->phys_regs;
ret = io_remap_pfn_range(vma, vma->vm_start,
MK_IOSPACE_PFN(dev->which_io,
kfree(vfc_dev_lst);
return -EIO;
}
+ devfs_mk_dir("vfc");
instance = 0;
for_all_sbusdev(sdev, sbus) {
if (strcmp(sdev->prom_name, "vfc") == 0) {
{
if(dev == NULL)
return;
+ devfs_remove("vfc/%d", dev->instance);
sbus_iounmap(dev->regs, sizeof(struct vfc_regs));
kfree(dev);
}
for (devp = vfc_dev_lst; *devp; devp++)
deinit_vfc_device(*devp);
+ devfs_remove("vfc");
kfree(vfc_dev_lst);
return;
}