On Friday 21 December 2007, Anton Vorontsov wrote:
>  
> +static spinlock_t cpm2_port_lock = __SPIN_LOCK_UNLOCKED(cpm2_port_lock);

This needs to be

static DEFINE_SPINLOCK(cpm2_port_lock);

I think at least lockdep doesn't work the way you do it here.

> +int cpm2_init_par_io(void)
> +{
> +     struct device_node *np;
> +     const u32 *num_ports;
> +
> +     np = of_find_compatible_node(NULL, NULL, "fsl,cpm2-pario");
> +     if (!np)
> +             return -ENOENT;
> +
> +     num_ports = of_get_property(np, "num-ports", NULL);
> +     if (!num_ports) {
> +             of_node_put(np);
> +             return -ENOENT;
> +     }
> +     cpm2_num_ports = *num_ports;
> +
> +     np->data = &of_gpio_chip;
> +
> +     return 0;
> +}

This function should also do the call to of_iomap, so you don't
need to pull the address out of the cpm2_immr, which I believe
we're trying to get rid of.

        Arnd <><
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to