lkml.org 
[lkml]   [2008]   [Jan]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 128/196] Kobject: the cris iop_fw_load.c code is broken
    Date
    This code is really really really broken.  So much so that it's almost
    impossible to fix with a simple patch, so just comment out the offending
    registration with the kobject core, and mark the driver as broken.

    The problem is that the code is trying to register a "raw" struct
    device, which is not allowed. struct device is only for use within the
    driver model. This is being done to try to use the firmware layer which
    wants a struct device. To properly fix this, use something easy, like a
    platform device, which is a struct device and can be used for this kind
    of thing.

    Cc: Mikael Starvik <starvik@axis.com>
    Cc: Kay Sievers <kay.sievers@vrfy.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    ---
    arch/cris/arch-v32/drivers/iop_fw_load.c | 11 +++++++++++
    1 files changed, 11 insertions(+), 0 deletions(-)

    diff --git a/arch/cris/arch-v32/drivers/iop_fw_load.c b/arch/cris/arch-v32/drivers/iop_fw_load.c
    index 11f9895..f4bdc1d 100644
    --- a/arch/cris/arch-v32/drivers/iop_fw_load.c
    +++ b/arch/cris/arch-v32/drivers/iop_fw_load.c
    @@ -20,6 +20,9 @@

    #define IOP_TIMEOUT 100

    +#error "This driver is broken with regard to its driver core usage."
    +#error "Please contact <greg@kroah.com> for details on how to fix it properly."
    +
    static struct device iop_spu_device[2] = {
    { .bus_id = "iop-spu0", },
    { .bus_id = "iop-spu1", },
    @@ -192,6 +195,13 @@ int iop_start_mpu(unsigned int start_addr)

    static int __init iop_fw_load_init(void)
    {
    +#if 0
    + /*
    + * static struct devices can not be added directly to sysfs by ignoring
    + * the driver model infrastructure. To fix this properly, please use
    + * the platform_bus to register these devices to be able to properly
    + * use the firmware infrastructure.
    + */
    device_initialize(&iop_spu_device[0]);
    kobject_set_name(&iop_spu_device[0].kobj, "iop-spu0");
    kobject_add(&iop_spu_device[0].kobj);
    @@ -201,6 +211,7 @@ static int __init iop_fw_load_init(void)
    device_initialize(&iop_mpu_device);
    kobject_set_name(&iop_mpu_device.kobj, "iop-mpu");
    kobject_add(&iop_mpu_device.kobj);
    +#endif
    return 0;
    }

    --
    1.5.3.8


    \
     
     \ /
      Last update: 2008-01-25 09:31    [W:4.161 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site