#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/pnp.h>
#include <linux/interrupt.h>
#include <linux/timer.h>
#include <linux/leds.h>
#include <linux/spinlock.h>
#include <linux/pci_ids.h>
#include <linux/io.h>
#include <linux/bitrev.h>
#include <linux/slab.h>
#include <linux/wait.h>
#include <linux/sched.h>
#include <media/rc-core.h>
#define DRVNAME …
#define WBCIR_REG_WCEIR_CTL …
#define WBCIR_REG_WCEIR_STS …
#define WBCIR_REG_WCEIR_EV_EN …
#define WBCIR_REG_WCEIR_CNTL …
#define WBCIR_REG_WCEIR_CNTH …
#define WBCIR_REG_WCEIR_INDEX …
#define WBCIR_REG_WCEIR_DATA …
#define WBCIR_REG_WCEIR_CSL …
#define WBCIR_REG_WCEIR_CFG1 …
#define WBCIR_REG_WCEIR_CFG2 …
#define WBCIR_REG_ECEIR_CTS …
#define WBCIR_REG_ECEIR_CCTL …
#define WBCIR_REG_ECEIR_CNT_LO …
#define WBCIR_REG_ECEIR_CNT_HI …
#define WBCIR_REG_ECEIR_IREM …
#define WBCIR_REG_SP3_BSR …
#define WBCIR_REG_SP3_RXDATA …
#define WBCIR_REG_SP3_TXDATA …
#define WBCIR_REG_SP3_IER …
#define WBCIR_REG_SP3_EIR …
#define WBCIR_REG_SP3_FCR …
#define WBCIR_REG_SP3_MCR …
#define WBCIR_REG_SP3_LSR …
#define WBCIR_REG_SP3_MSR …
#define WBCIR_REG_SP3_ASCR …
#define WBCIR_REG_SP3_BGDL …
#define WBCIR_REG_SP3_BGDH …
#define WBCIR_REG_SP3_EXCR1 …
#define WBCIR_REG_SP3_EXCR2 …
#define WBCIR_REG_SP3_TXFLV …
#define WBCIR_REG_SP3_RXFLV …
#define WBCIR_REG_SP3_MRID …
#define WBCIR_REG_SP3_SH_LCR …
#define WBCIR_REG_SP3_SH_FCR …
#define WBCIR_REG_SP3_IRCR1 …
#define WBCIR_REG_SP3_IRCR2 …
#define WBCIR_REG_SP3_IRCR3 …
#define WBCIR_REG_SP3_SIR_PW …
#define WBCIR_REG_SP3_IRRXDC …
#define WBCIR_REG_SP3_IRTXMC …
#define WBCIR_REG_SP3_RCCFG …
#define WBCIR_REG_SP3_IRCFG1 …
#define WBCIR_REG_SP3_IRCFG4 …
#define WBCIR_IRQ_NONE …
#define WBCIR_IRQ_RX …
#define WBCIR_IRQ_TX_LOW …
#define WBCIR_IRQ_ERR …
#define WBCIR_IRQ_TX_EMPTY …
#define WBCIR_LED_ENABLE …
#define WBCIR_RX_AVAIL …
#define WBCIR_RX_OVERRUN …
#define WBCIR_TX_EOT …
#define WBCIR_RX_DISABLE …
#define WBCIR_TX_UNDERRUN …
#define WBCIR_EXT_ENABLE …
#define WBCIR_REGSEL_COMPARE …
#define WBCIR_REGSEL_MASK …
#define WBCIR_REG_ADDR0 …
#define WBCIR_CNTR_EN …
#define WBCIR_CNTR_R …
#define WBCIR_IRTX_INV …
#define WBCIR_RX_T_OV …
enum wbcir_bank { … };
enum wbcir_protocol { … };
enum wbcir_rxstate { … };
enum wbcir_txstate { … };
#define WBCIR_NAME …
#define WBCIR_ID_FAMILY …
#define WBCIR_ID_CHIP …
#define WAKEUP_IOMEM_LEN …
#define EHFUNC_IOMEM_LEN …
#define SP_IOMEM_LEN …
struct wbcir_data { … };
static bool invert;
module_param(invert, bool, 0444);
MODULE_PARM_DESC(…) …;
static bool txandrx;
module_param(txandrx, bool, 0444);
MODULE_PARM_DESC(…) …;
static void
wbcir_set_bits(unsigned long addr, u8 bits, u8 mask)
{ … }
static inline void
wbcir_select_bank(struct wbcir_data *data, enum wbcir_bank bank)
{ … }
static inline void
wbcir_set_irqmask(struct wbcir_data *data, u8 irqmask)
{ … }
static enum led_brightness
wbcir_led_brightness_get(struct led_classdev *led_cdev)
{ … }
static void
wbcir_led_brightness_set(struct led_classdev *led_cdev,
enum led_brightness brightness)
{ … }
static u8
wbcir_to_rc6cells(u8 val)
{ … }
static void
wbcir_carrier_report(struct wbcir_data *data)
{ … }
static void
wbcir_idle_rx(struct rc_dev *dev, bool idle)
{ … }
static void
wbcir_irq_rx(struct wbcir_data *data, struct pnp_dev *device)
{ … }
static void
wbcir_irq_tx(struct wbcir_data *data)
{ … }
static irqreturn_t
wbcir_irq_handler(int irqno, void *cookie)
{ … }
static int
wbcir_set_carrier_report(struct rc_dev *dev, int enable)
{ … }
static int
wbcir_txcarrier(struct rc_dev *dev, u32 carrier)
{ … }
static int
wbcir_txmask(struct rc_dev *dev, u32 mask)
{ … }
static int
wbcir_tx(struct rc_dev *dev, unsigned *b, unsigned count)
{ … }
static void
wbcir_shutdown(struct pnp_dev *device)
{ … }
static int
wbcir_set_wakeup_filter(struct rc_dev *rc, struct rc_scancode_filter *filter)
{ … }
static int
wbcir_suspend(struct pnp_dev *device, pm_message_t state)
{ … }
static void
wbcir_init_hw(struct wbcir_data *data)
{ … }
static int
wbcir_resume(struct pnp_dev *device)
{ … }
static int
wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
{ … }
static void
wbcir_remove(struct pnp_dev *device)
{ … }
static const struct pnp_device_id wbcir_ids[] = …;
MODULE_DEVICE_TABLE(pnp, wbcir_ids);
static struct pnp_driver wbcir_driver = …;
static int __init
wbcir_init(void)
{ … }
static void __exit
wbcir_exit(void)
{ … }
module_init(…) …;
module_exit(wbcir_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;