X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fpcmcia%2Fsocket_sysfs.c;h=a68d7e5777e4f4945205e2674e77510649f40604;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=23288e6463544ff145c4b9fef2f6d3c2906070e8;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/pcmcia/socket_sysfs.c b/drivers/pcmcia/socket_sysfs.c index 23288e646..a68d7e577 100644 --- a/drivers/pcmcia/socket_sysfs.c +++ b/drivers/pcmcia/socket_sysfs.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include @@ -122,6 +121,33 @@ static ssize_t pccard_store_eject(struct class_device *dev, const char *buf, siz static CLASS_DEVICE_ATTR(card_eject, 0200, NULL, pccard_store_eject); +static ssize_t pccard_show_irq_mask(struct class_device *dev, char *buf) +{ + struct pcmcia_socket *s = to_socket(dev); + return sprintf(buf, "0x%04x\n", s->irq_mask); +} + +static ssize_t pccard_store_irq_mask(struct class_device *dev, const char *buf, size_t count) +{ + ssize_t ret; + struct pcmcia_socket *s = to_socket(dev); + u32 mask; + + if (!count) + return -EINVAL; + + ret = sscanf (buf, "0x%x\n", &mask); + + if (ret == 1) { + s->irq_mask &= mask; + ret = 0; + } + + return ret ? ret : count; +} +static CLASS_DEVICE_ATTR(card_irq_mask, 0600, pccard_show_irq_mask, pccard_store_irq_mask); + + static struct class_device_attribute *pccard_socket_attributes[] = { &class_device_attr_card_type, &class_device_attr_card_voltage, @@ -129,6 +155,7 @@ static struct class_device_attribute *pccard_socket_attributes[] = { &class_device_attr_card_vcc, &class_device_attr_card_insert, &class_device_attr_card_eject, + &class_device_attr_card_irq_mask, NULL, };