• Andi Shyti's avatar
    [media] rc: add support for IR LEDs driven through SPI · fe052da4
    Andi Shyti authored
    The ir-spi is a simple device driver which supports the
    connection between an IR LED and the MOSI line of an SPI device.
    
    The driver, indeed, uses the SPI framework to stream the raw data
    provided by userspace through an rc character device. The chardev
    is handled by the LIRC framework and its functionality basically
    provides:
    
     - write: the driver gets a pulse/space signal and translates it
       to a binary signal that will be streamed to the IR led through
       the SPI framework.
     - set frequency: sets the frequency whith which the data should
       be sent. This is handle with ioctl with the
       LIRC_SET_SEND_CARRIER flag (as per lirc documentation)
     - set duty cycle: this is also handled with ioctl with the
       LIRC_SET_SEND_DUTY_CYCLE flag. The driver handles duty cycles
       of 50%, 60%, 70%, 75%, 80% and 90%, calculated on 16bit data.
    
    The character device is created under /dev/lircX name, where X is
    and ID assigned by the LIRC framework.
    
    Example of usage:
    
            fd = open("/dev/lirc0", O_RDWR);
            if (fd < 0)
                    return -1;
    
            val = 608000;
            ret = ioctl(fd, LIRC_SET_SEND_CARRIER, &val);
            if (ret < 0)
                    return -1;
    
    	val = 60;
            ret = ioctl(fd, LIRC_SET_SEND_DUTY_CYCLE, &val);
            if (ret < 0)
                    return -1;
    
            n = write(fd, buffer, BUF_LEN);
            if (n < 0 || n != BUF_LEN)
                    ret = -1;
    
            close(fd);
    Signed-off-by: default avatarAndi Shyti <andi.shyti@samsung.com>
    Signed-off-by: default avatarSean Young <sean@mess.org>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    fe052da4
ir-spi.c 4.56 KB