static int nvram_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
    switch(cmd) {
#ifdef CONFIG_PPC_PMAC
    case OBSOLETE_PMAC_NVRAM_GET_OFFSET:
        printk(KERN_WARNING "nvram: Using obsolete PMAC_NVRAM_GET_OFFSET ioctl\n");
    case IOC_NVRAM_GET_OFFSET: {
        int part, offset;

        if (!machine_is(powermac))
            return -EINVAL;
        if (copy_from_user(&part, (void __user*)arg, sizeof(part)) != 0)
            return -EFAULT;
        if (part < pmac_nvram_OF || part > pmac_nvram_NR)
            return -EINVAL;
        offset = pmac_get_partition(part);
        if (copy_to_user((void __user*)arg, &offset, sizeof(offset)) != 0)
            return -EFAULT;
        break;
    }
#endif /* CONFIG_PPC_PMAC */
    case IOC_NVRAM_SYNC:
        nvram_sync();
        break;
    default:
        return -EINVAL;
    }

    return 0;
}
static long nvram_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
	switch(cmd) {
		case PMAC_NVRAM_GET_OFFSET:
		{
			int part, offset;
			if (copy_from_user(&part, (void __user*)arg, sizeof(part)) != 0)
				return -EFAULT;
			if (part < pmac_nvram_OF || part > pmac_nvram_NR)
				return -EINVAL;
			offset = pmac_get_partition(part);
			if (copy_to_user((void __user*)arg, &offset, sizeof(offset)) != 0)
				return -EFAULT;
			break;
		}

		default:
			return -EINVAL;
	}

	return 0;
}