[PATCH] simple class for adb

Benjamin Herrenschmidt benh at kernel.crashing.org
Sun May 2 08:36:12 EST 2004


On Sun, 2004-05-02 at 04:26, Olaf Hering wrote:
> This adds /sys/class/adb/, removes unused devfs lines and updates a
> comment to match reality.

I'm not sure I want to keep /dev/adb forever.... This is at best a
workaround so that udev creates it. Ultimately, we want a real adb
bus in the device-model and a different mecanism to send special
commands to the system controller. I think somebody from the m68k
folks is already working on the ADB bus stuff though.

Ben.

>
> diff -p -purN linux-2.6.6-rc3/drivers/macintosh/adb.c linux-2.6.6-rc3.adb/drivers/macintosh/adb.c
> --- linux-2.6.6-rc3/drivers/macintosh/adb.c	2004-04-04 05:38:26.000000000 +0200
> +++ linux-2.6.6-rc3.adb/drivers/macintosh/adb.c	2004-05-01 19:58:08.000000000 +0200
> @@ -10,7 +10,7 @@
>   *
>   * To do:
>   *
> - * - /proc/adb to list the devices and infos
> + * - /sys/bus/adb to list the devices and infos
>   * - more /dev/adb to allow userland to receive the
>   *   flow of auto-polling datas from a given device.
>   * - move bus probe to a kernel thread
> @@ -23,7 +23,6 @@
>  #include <linux/slab.h>
>  #include <linux/module.h>
>  #include <linux/fs.h>
> -#include <linux/devfs_fs_kernel.h>
>  #include <linux/mm.h>
>  #include <linux/sched.h>
>  #include <linux/smp_lock.h>
> @@ -36,6 +35,7 @@
>  #include <linux/delay.h>
>  #include <linux/spinlock.h>
>  #include <linux/completion.h>
> +#include <linux/device.h>
>  #include <asm/uaccess.h>
>  #include <asm/semaphore.h>
>  #ifdef CONFIG_PPC
> @@ -75,6 +75,8 @@ static struct adb_driver *adb_driver_lis
>  	NULL
>  };
>
> +static struct class_simple *adb_dev_class;
> +
>  struct adb_driver *adb_controller;
>  struct notifier_block *adb_client_list = NULL;
>  static int adb_got_sleep;
> @@ -883,6 +889,7 @@ out:
>  }
>
>  static struct file_operations adb_fops = {
> +	.owner		= THIS_MODULE,
>  	.llseek		= no_llseek,
>  	.read		= adb_read,
>  	.write		= adb_write,
> @@ -893,9 +900,13 @@ static struct file_operations adb_fops =
>  static void
>  adbdev_init(void)
>  {
> -	if (register_chrdev(ADB_MAJOR, "adb", &adb_fops))
> +	if (register_chrdev(ADB_MAJOR, "adb", &adb_fops)) {
>  		printk(KERN_ERR "adb: unable to get major %d\n", ADB_MAJOR);
> -	else
> -		devfs_mk_cdev(MKDEV(ADB_MAJOR, 0),
> -				S_IFCHR | S_IRUSR | S_IWUSR, "adb");
> +		return;
> +	}
> +	adb_dev_class = class_simple_create(THIS_MODULE, "adb");
> +	if (IS_ERR(adb_dev_class)) {
> +		return;
> +	}
> +	class_simple_device_add(adb_dev_class, MKDEV(ADB_MAJOR, 0), NULL, "adb");
>  }
--
Benjamin Herrenschmidt <benh at kernel.crashing.org>


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list