Lines Matching refs:irdec
37 static void zx_irdec_set_mask(struct zx_irdec *irdec, unsigned int reg, in zx_irdec_set_mask() argument
42 data = readl(irdec->base + reg); in zx_irdec_set_mask()
45 writel(data, irdec->base + reg); in zx_irdec_set_mask()
50 struct zx_irdec *irdec = dev_id; in zx_irdec_irq() local
57 writel(1, irdec->base + ZX_IR_INTSTCLR); in zx_irdec_irq()
60 if (readl(irdec->base + ZX_IR_CNUM) & ZX_NECRPT) { in zx_irdec_irq()
61 rc_repeat(irdec->rcd); in zx_irdec_irq()
65 rawcode = readl(irdec->base + ZX_IR_CODE); in zx_irdec_irq()
74 rc_keydown(irdec->rcd, rc_proto, scancode, 0); in zx_irdec_irq()
83 struct zx_irdec *irdec; in zx_irdec_probe() local
89 irdec = devm_kzalloc(dev, sizeof(*irdec), GFP_KERNEL); in zx_irdec_probe()
90 if (!irdec) in zx_irdec_probe()
94 irdec->base = devm_ioremap_resource(dev, res); in zx_irdec_probe()
95 if (IS_ERR(irdec->base)) in zx_irdec_probe()
96 return PTR_ERR(irdec->base); in zx_irdec_probe()
108 irdec->rcd = rcd; in zx_irdec_probe()
110 rcd->priv = irdec; in zx_irdec_probe()
119 platform_set_drvdata(pdev, irdec); in zx_irdec_probe()
127 ret = devm_request_irq(dev, irq, zx_irdec_irq, 0, NULL, irdec); in zx_irdec_probe()
137 zx_irdec_set_mask(irdec, ZX_IR_CTRL, ZX_DEGL_MASK, ZX_DEGL_VALUE(0)); in zx_irdec_probe()
138 zx_irdec_set_mask(irdec, ZX_IR_CTRL, ZX_WDBEGIN_MASK, in zx_irdec_probe()
142 writel(1, irdec->base + ZX_IR_INTEN); in zx_irdec_probe()
145 zx_irdec_set_mask(irdec, ZX_IR_ENABLE, ZX_IREN, ZX_IREN); in zx_irdec_probe()
152 struct zx_irdec *irdec = platform_get_drvdata(pdev); in zx_irdec_remove() local
155 zx_irdec_set_mask(irdec, ZX_IR_ENABLE, ZX_IREN, 0); in zx_irdec_remove()
158 writel(0, irdec->base + ZX_IR_INTEN); in zx_irdec_remove()