On Fri, Jul 15, 2011 at 12:11:34PM +0530, Padmavathi Venna wrote:
> +#define eint_offset(irq)     ((irq) - IRQ_EINT(0))
> +#define eint_irq_to_bit(irq) ((u32)(1 << eint_offset(irq)))
> +
> +static inline void s5p64x0_irq_eint_mask(struct irq_data *data)
> +{
> +     u32 mask;
> +
> +     mask = __raw_readl(S5P64X0_EINT0MASK);
> +     mask |= (u32)data->chip_data;
> +     __raw_writel(mask, S5P64X0_EINT0MASK);
> +}
> +
> +static void s5p64x0_irq_eint_unmask(struct irq_data *data)
> +{
> +     u32 mask;
> +
> +     mask = __raw_readl(S5P64X0_EINT0MASK);
> +     mask &= ~((u32)data->chip_data);
> +     __raw_writel(mask, S5P64X0_EINT0MASK);
> +}
> +
> +static inline void s5p64x0_irq_eint_ack(struct irq_data *data)
> +{
> +     __raw_writel((u32)data->chip_data, S5P64X0_EINT0PEND);
> +}
> +
> +static void s5p64x0_irq_eint_maskack(struct irq_data *data)
> +{
> +     /* compiler should in-line these */
> +     s5p64x0_irq_eint_mask(data);
> +     s5p64x0_irq_eint_ack(data);
> +}

Won't genirqchip support deal with all of the above for you?

> +
> +static int s5p64x0_irq_eint_set_type(struct irq_data *data, unsigned int 
> type)
> +{
> +     int offs = eint_offset(data->irq);
> +     int shift;
> +     u32 ctrl, mask;
> +     u32 newvalue = 0;
> +     unsigned int id;
> +
> +     if (offs > 15)
> +             return -EINVAL;
> +
> +     switch (type) {
> +     case IRQ_TYPE_NONE:
> +             printk(KERN_WARNING "No edge setting!\n");
> +             break;
> +
> +     case IRQ_TYPE_EDGE_RISING:
> +             newvalue = S3C2410_EXTINT_RISEEDGE;
> +             break;
> +
> +     case IRQ_TYPE_EDGE_FALLING:
> +             newvalue = S3C2410_EXTINT_FALLEDGE;
> +             break;
> +
> +     case IRQ_TYPE_EDGE_BOTH:
> +             newvalue = S3C2410_EXTINT_BOTHEDGE;
> +             break;
> +
> +     case IRQ_TYPE_LEVEL_LOW:
> +             newvalue = S3C2410_EXTINT_LOWLEV;
> +             break;
> +
> +     case IRQ_TYPE_LEVEL_HIGH:
> +             newvalue = S3C2410_EXTINT_HILEV;
> +             break;
> +
> +     default:
> +             printk(KERN_ERR "No such irq type %d", type);
> +             return -1;

NO!  Stop this right now and never do it again.  Please _always_ look
up the right error code and use it.

'return -1' is almost never valid.
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to