lkml.org 
[lkml]   [2004]   [Nov]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 3/3] raw1394: sysfs support via class_simple
    Adds basic sysfs support for udev etc.
    Ideally we should link into the ieee1394 sysfs class, but it doesn't seem
    extensible in that manner.
    For now, class_simple will do.

    Depends on the previous whitespace fix patch.

    Signed-off-by: Daniel Drake <dsd@gentoo.org>
    --- linux/drivers/ieee1394/raw1394.c.orig 2004-11-14 03:12:12.000000000 +0000
    +++ linux/drivers/ieee1394/raw1394.c 2004-11-14 03:22:44.623795368 +0000
    @@ -78,6 +78,7 @@ static atomic_t iso_buffer_size;
    static const int iso_buffer_max = 4 * 1024 * 1024; /* 4 MB */

    static struct hpsb_highlevel raw1394_highlevel;
    +static struct class_simple *raw1394_class;

    static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer,
    u64 addr, size_t length, u16 flags);
    @@ -2886,12 +2887,26 @@ static struct file_operations raw1394_fo

    static int __init init_raw1394(void)
    {
    - int ret;
    + int ret = 0;

    hpsb_register_highlevel(&raw1394_highlevel);

    - devfs_mk_cdev(MKDEV(IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16),
    - S_IFCHR | S_IRUSR | S_IWUSR, RAW1394_DEVICE_NAME);
    + raw1394_class = class_simple_create(THIS_MODULE, "raw1394");
    + if (IS_ERR(raw1394_class)) {
    + ret = PTR_ERR(raw1394_class);
    + goto out_unreg;
    + }
    +
    + class_simple_device_add(raw1394_class,
    + MKDEV(IEEE1394_MAJOR,
    + IEEE1394_MINOR_BLOCK_RAW1394 * 16), NULL,
    + RAW1394_DEVICE_NAME);
    + ret =
    + devfs_mk_cdev(MKDEV
    + (IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16),
    + S_IFCHR | S_IRUSR | S_IWUSR, RAW1394_DEVICE_NAME);
    + if (ret)
    + goto out_class;

    cdev_init(&raw1394_cdev, &raw1394_fops);
    raw1394_cdev.owner = THIS_MODULE;
    @@ -2899,9 +2914,7 @@ static int __init init_raw1394(void)
    ret = cdev_add(&raw1394_cdev, IEEE1394_RAW1394_DEV, 1);
    if (ret) {
    HPSB_ERR("raw1394 failed to register minor device block");
    - devfs_remove(RAW1394_DEVICE_NAME);
    - hpsb_unregister_highlevel(&raw1394_highlevel);
    - return ret;
    + goto out_dev;
    }

    HPSB_INFO("raw1394: /dev/%s device initialized", RAW1394_DEVICE_NAME);
    @@ -2910,16 +2923,30 @@ static int __init init_raw1394(void)
    if (ret) {
    HPSB_ERR("raw1394: failed to register protocol");
    cdev_del(&raw1394_cdev);
    - devfs_remove(RAW1394_DEVICE_NAME);
    - hpsb_unregister_highlevel(&raw1394_highlevel);
    - return ret;
    + goto out_dev;
    }

    - return 0;
    + goto out;
    +
    + out_dev:
    + devfs_remove(RAW1394_DEVICE_NAME);
    + out_class:
    + class_simple_device_remove(MKDEV
    + (IEEE1394_MAJOR,
    + IEEE1394_MINOR_BLOCK_RAW1394 * 16));
    + class_simple_destroy(raw1394_class);
    + out_unreg:
    + hpsb_unregister_highlevel(&raw1394_highlevel);
    + out:
    + return ret;
    }

    static void __exit cleanup_raw1394(void)
    {
    + class_simple_device_remove(MKDEV
    + (IEEE1394_MAJOR,
    + IEEE1394_MINOR_BLOCK_RAW1394 * 16));
    + class_simple_destroy(raw1394_class);
    hpsb_unregister_protocol(&raw1394_driver);
    cdev_del(&raw1394_cdev);
    devfs_remove(RAW1394_DEVICE_NAME);
    \
     
     \ /
      Last update: 2005-03-22 14:08    [W:0.034 / U:31.908 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site