xadc 115 drivers/iio/adc/xilinx-xadc-core.c static void xadc_write_reg(struct xadc *xadc, unsigned int reg, xadc 118 drivers/iio/adc/xilinx-xadc-core.c writel(val, xadc->base + reg); xadc 121 drivers/iio/adc/xilinx-xadc-core.c static void xadc_read_reg(struct xadc *xadc, unsigned int reg, xadc 124 drivers/iio/adc/xilinx-xadc-core.c *val = readl(xadc->base + reg); xadc 137 drivers/iio/adc/xilinx-xadc-core.c static void xadc_zynq_write_fifo(struct xadc *xadc, uint32_t *cmd, xadc 143 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_CFIFO, cmd[i]); xadc 146 drivers/iio/adc/xilinx-xadc-core.c static void xadc_zynq_drain_fifo(struct xadc *xadc) xadc 150 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_STATUS, &status); xadc 153 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_DFIFO, &tmp); xadc 154 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_STATUS, &status); xadc 158 drivers/iio/adc/xilinx-xadc-core.c static void xadc_zynq_update_intmsk(struct xadc *xadc, unsigned int mask, xadc 161 drivers/iio/adc/xilinx-xadc-core.c xadc->zynq_intmask &= ~mask; xadc 162 drivers/iio/adc/xilinx-xadc-core.c xadc->zynq_intmask |= val; xadc 164 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_INTMSK, xadc 165 drivers/iio/adc/xilinx-xadc-core.c xadc->zynq_intmask | xadc->zynq_masked_alarm); xadc 168 drivers/iio/adc/xilinx-xadc-core.c static int xadc_zynq_write_adc_reg(struct xadc *xadc, unsigned int reg, xadc 175 drivers/iio/adc/xilinx-xadc-core.c spin_lock_irq(&xadc->lock); xadc 176 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_update_intmsk(xadc, XADC_ZYNQ_INT_DFIFO_GTH, xadc 179 drivers/iio/adc/xilinx-xadc-core.c reinit_completion(&xadc->completion); xadc 182 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_write_fifo(xadc, cmd, ARRAY_SIZE(cmd)); xadc 183 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_CFG, &tmp); xadc 186 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_CFG, tmp); xadc 188 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_update_intmsk(xadc, XADC_ZYNQ_INT_DFIFO_GTH, 0); xadc 189 drivers/iio/adc/xilinx-xadc-core.c spin_unlock_irq(&xadc->lock); xadc 191 drivers/iio/adc/xilinx-xadc-core.c ret = wait_for_completion_interruptible_timeout(&xadc->completion, HZ); xadc 197 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_DFIFO, &tmp); xadc 202 drivers/iio/adc/xilinx-xadc-core.c static int xadc_zynq_read_adc_reg(struct xadc *xadc, unsigned int reg, xadc 212 drivers/iio/adc/xilinx-xadc-core.c spin_lock_irq(&xadc->lock); xadc 213 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_update_intmsk(xadc, XADC_ZYNQ_INT_DFIFO_GTH, xadc 215 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_drain_fifo(xadc); xadc 216 drivers/iio/adc/xilinx-xadc-core.c reinit_completion(&xadc->completion); xadc 218 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_write_fifo(xadc, cmd, ARRAY_SIZE(cmd)); xadc 219 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_CFG, &tmp); xadc 222 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_CFG, tmp); xadc 224 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_update_intmsk(xadc, XADC_ZYNQ_INT_DFIFO_GTH, 0); xadc 225 drivers/iio/adc/xilinx-xadc-core.c spin_unlock_irq(&xadc->lock); xadc 226 drivers/iio/adc/xilinx-xadc-core.c ret = wait_for_completion_interruptible_timeout(&xadc->completion, HZ); xadc 232 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_DFIFO, &resp); xadc 233 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_DFIFO, &resp); xadc 257 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = container_of(work, struct xadc, zynq_unmask_work.work); xadc 260 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_STATUS, &misc_sts); xadc 264 drivers/iio/adc/xilinx-xadc-core.c spin_lock_irq(&xadc->lock); xadc 267 drivers/iio/adc/xilinx-xadc-core.c unmask = (xadc->zynq_masked_alarm ^ misc_sts) & xadc->zynq_masked_alarm; xadc 268 drivers/iio/adc/xilinx-xadc-core.c xadc->zynq_masked_alarm &= misc_sts; xadc 271 drivers/iio/adc/xilinx-xadc-core.c xadc->zynq_masked_alarm &= ~xadc->zynq_intmask; xadc 274 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_INTSTS, unmask); xadc 276 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_update_intmsk(xadc, 0, 0); xadc 278 drivers/iio/adc/xilinx-xadc-core.c spin_unlock_irq(&xadc->lock); xadc 281 drivers/iio/adc/xilinx-xadc-core.c if (xadc->zynq_masked_alarm) { xadc 282 drivers/iio/adc/xilinx-xadc-core.c schedule_delayed_work(&xadc->zynq_unmask_work, xadc 291 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 294 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_INTSTS, &status); xadc 296 drivers/iio/adc/xilinx-xadc-core.c status &= ~(xadc->zynq_intmask | xadc->zynq_masked_alarm); xadc 301 drivers/iio/adc/xilinx-xadc-core.c spin_lock(&xadc->lock); xadc 303 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_INTSTS, status); xadc 306 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_update_intmsk(xadc, XADC_ZYNQ_INT_DFIFO_GTH, xadc 308 drivers/iio/adc/xilinx-xadc-core.c complete(&xadc->completion); xadc 313 drivers/iio/adc/xilinx-xadc-core.c xadc->zynq_masked_alarm |= status; xadc 318 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_update_intmsk(xadc, 0, 0); xadc 324 drivers/iio/adc/xilinx-xadc-core.c schedule_delayed_work(&xadc->zynq_unmask_work, xadc 327 drivers/iio/adc/xilinx-xadc-core.c spin_unlock(&xadc->lock); xadc 339 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 351 drivers/iio/adc/xilinx-xadc-core.c xadc->zynq_intmask = ~0; xadc 353 drivers/iio/adc/xilinx-xadc-core.c pcap_rate = clk_get_rate(xadc->clk); xadc 358 drivers/iio/adc/xilinx-xadc-core.c ret = clk_set_rate(xadc->clk, xadc 381 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_CTL, XADC_ZYNQ_CTL_RESET); xadc 382 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_CTL, 0); xadc 383 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_INTSTS, ~0); xadc 384 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_INTMSK, xadc->zynq_intmask); xadc 385 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_CFG, XADC_ZYNQ_CFG_ENABLE | xadc 390 drivers/iio/adc/xilinx-xadc-core.c ret = clk_set_rate(xadc->clk, pcap_rate); xadc 398 drivers/iio/adc/xilinx-xadc-core.c static unsigned long xadc_zynq_get_dclk_rate(struct xadc *xadc) xadc 403 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_CFG, &val); xadc 420 drivers/iio/adc/xilinx-xadc-core.c return clk_get_rate(xadc->clk) / div; xadc 423 drivers/iio/adc/xilinx-xadc-core.c static void xadc_zynq_update_alarm(struct xadc *xadc, unsigned int alarm) xadc 431 drivers/iio/adc/xilinx-xadc-core.c spin_lock_irqsave(&xadc->lock, flags); xadc 434 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_ZYNQ_REG_INTSTS, &status); xadc 435 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_ZYNQ_REG_INTSTS, status & alarm); xadc 437 drivers/iio/adc/xilinx-xadc-core.c xadc_zynq_update_intmsk(xadc, XADC_ZYNQ_INT_ALARM_MASK, xadc 440 drivers/iio/adc/xilinx-xadc-core.c spin_unlock_irqrestore(&xadc->lock, flags); xadc 452 drivers/iio/adc/xilinx-xadc-core.c static int xadc_axi_read_adc_reg(struct xadc *xadc, unsigned int reg, xadc 457 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_AXI_ADC_REG_OFFSET + reg * 4, &val32); xadc 463 drivers/iio/adc/xilinx-xadc-core.c static int xadc_axi_write_adc_reg(struct xadc *xadc, unsigned int reg, xadc 466 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_AXI_ADC_REG_OFFSET + reg * 4, val); xadc 474 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 476 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_AXI_REG_RESET, XADC_AXI_RESET_MAGIC); xadc 477 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_AXI_REG_GIER, XADC_AXI_GIER_ENABLE); xadc 485 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 489 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_AXI_REG_IPISR, &status); xadc 490 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_AXI_REG_IPIER, &mask); xadc 496 drivers/iio/adc/xilinx-xadc-core.c if ((status & XADC_AXI_INT_EOS) && xadc->trigger) xadc 497 drivers/iio/adc/xilinx-xadc-core.c iio_trigger_poll(xadc->trigger); xadc 512 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_AXI_REG_IPISR, status); xadc 517 drivers/iio/adc/xilinx-xadc-core.c static void xadc_axi_update_alarm(struct xadc *xadc, unsigned int alarm) xadc 531 drivers/iio/adc/xilinx-xadc-core.c spin_lock_irqsave(&xadc->lock, flags); xadc 532 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_AXI_REG_IPIER, &val); xadc 535 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_AXI_REG_IPIER, val); xadc 536 drivers/iio/adc/xilinx-xadc-core.c spin_unlock_irqrestore(&xadc->lock, flags); xadc 539 drivers/iio/adc/xilinx-xadc-core.c static unsigned long xadc_axi_get_dclk(struct xadc *xadc) xadc 541 drivers/iio/adc/xilinx-xadc-core.c return clk_get_rate(xadc->clk); xadc 554 drivers/iio/adc/xilinx-xadc-core.c static int _xadc_update_adc_reg(struct xadc *xadc, unsigned int reg, xadc 560 drivers/iio/adc/xilinx-xadc-core.c ret = _xadc_read_adc_reg(xadc, reg, &tmp); xadc 564 drivers/iio/adc/xilinx-xadc-core.c return _xadc_write_adc_reg(xadc, reg, (tmp & ~mask) | val); xadc 567 drivers/iio/adc/xilinx-xadc-core.c static int xadc_update_adc_reg(struct xadc *xadc, unsigned int reg, xadc 572 drivers/iio/adc/xilinx-xadc-core.c mutex_lock(&xadc->mutex); xadc 573 drivers/iio/adc/xilinx-xadc-core.c ret = _xadc_update_adc_reg(xadc, reg, mask, val); xadc 574 drivers/iio/adc/xilinx-xadc-core.c mutex_unlock(&xadc->mutex); xadc 579 drivers/iio/adc/xilinx-xadc-core.c static unsigned long xadc_get_dclk_rate(struct xadc *xadc) xadc 581 drivers/iio/adc/xilinx-xadc-core.c return xadc->ops->get_dclk_rate(xadc); xadc 587 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 592 drivers/iio/adc/xilinx-xadc-core.c kfree(xadc->data); xadc 593 drivers/iio/adc/xilinx-xadc-core.c xadc->data = kcalloc(n, sizeof(*xadc->data), GFP_KERNEL); xadc 594 drivers/iio/adc/xilinx-xadc-core.c if (!xadc->data) xadc 632 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 636 drivers/iio/adc/xilinx-xadc-core.c if (!xadc->data) xadc 643 drivers/iio/adc/xilinx-xadc-core.c xadc_read_adc_reg(xadc, chan, &xadc->data[j]); xadc 647 drivers/iio/adc/xilinx-xadc-core.c iio_push_to_buffers(indio_dev, xadc->data); xadc 657 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_trigger_get_drvdata(trigger); xadc 663 drivers/iio/adc/xilinx-xadc-core.c mutex_lock(&xadc->mutex); xadc 667 drivers/iio/adc/xilinx-xadc-core.c if (xadc->trigger != NULL) { xadc 671 drivers/iio/adc/xilinx-xadc-core.c xadc->trigger = trigger; xadc 672 drivers/iio/adc/xilinx-xadc-core.c if (trigger == xadc->convst_trigger) xadc 677 drivers/iio/adc/xilinx-xadc-core.c ret = _xadc_update_adc_reg(xadc, XADC_REG_CONF1, XADC_CONF0_EC, xadc 682 drivers/iio/adc/xilinx-xadc-core.c xadc->trigger = NULL; xadc 685 drivers/iio/adc/xilinx-xadc-core.c spin_lock_irqsave(&xadc->lock, flags); xadc 686 drivers/iio/adc/xilinx-xadc-core.c xadc_read_reg(xadc, XADC_AXI_REG_IPIER, &val); xadc 687 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_AXI_REG_IPISR, XADC_AXI_INT_EOS); xadc 692 drivers/iio/adc/xilinx-xadc-core.c xadc_write_reg(xadc, XADC_AXI_REG_IPIER, val); xadc 693 drivers/iio/adc/xilinx-xadc-core.c spin_unlock_irqrestore(&xadc->lock, flags); xadc 696 drivers/iio/adc/xilinx-xadc-core.c mutex_unlock(&xadc->mutex); xadc 731 drivers/iio/adc/xilinx-xadc-core.c static int xadc_power_adc_b(struct xadc *xadc, unsigned int seq_mode) xadc 746 drivers/iio/adc/xilinx-xadc-core.c return xadc_update_adc_reg(xadc, XADC_REG_CONF2, XADC_CONF2_PD_MASK, xadc 750 drivers/iio/adc/xilinx-xadc-core.c static int xadc_get_seq_mode(struct xadc *xadc, unsigned long scan_mode) xadc 754 drivers/iio/adc/xilinx-xadc-core.c if (xadc->external_mux_mode == XADC_EXTERNAL_MUX_DUAL) xadc 766 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 776 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_adc_reg(xadc, XADC_REG_SEQ(0), scan_mask & 0xffff); xadc 780 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_adc_reg(xadc, XADC_REG_SEQ(1), scan_mask >> 16); xadc 784 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_update_adc_reg(xadc, XADC_REG_CONF1, XADC_CONF1_SEQ_MASK, xadc 789 drivers/iio/adc/xilinx-xadc-core.c return xadc_power_adc_b(xadc, XADC_CONF1_SEQ_CONTINUOUS); xadc 794 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 799 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_update_adc_reg(xadc, XADC_REG_CONF1, XADC_CONF1_SEQ_MASK, xadc 805 drivers/iio/adc/xilinx-xadc-core.c seq_mode = xadc_get_seq_mode(xadc, scan_mask); xadc 807 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_adc_reg(xadc, XADC_REG_SEQ(0), scan_mask & 0xffff); xadc 821 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_adc_reg(xadc, XADC_REG_SEQ(1), scan_mask >> 16); xadc 825 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_power_adc_b(xadc, seq_mode); xadc 829 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_update_adc_reg(xadc, XADC_REG_CONF1, XADC_CONF1_SEQ_MASK, xadc 847 drivers/iio/adc/xilinx-xadc-core.c static int xadc_read_samplerate(struct xadc *xadc) xadc 853 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_read_adc_reg(xadc, XADC_REG_CONF2, &val16); xadc 861 drivers/iio/adc/xilinx-xadc-core.c return xadc_get_dclk_rate(xadc) / div / 26; xadc 867 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 875 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_read_adc_reg(xadc, chan->address, &val16); xadc 920 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_read_samplerate(xadc); xadc 931 drivers/iio/adc/xilinx-xadc-core.c static int xadc_write_samplerate(struct xadc *xadc, int val) xadc 933 drivers/iio/adc/xilinx-xadc-core.c unsigned long clk_rate = xadc_get_dclk_rate(xadc); xadc 964 drivers/iio/adc/xilinx-xadc-core.c return xadc_update_adc_reg(xadc, XADC_REG_CONF2, XADC_CONF2_DIV_MASK, xadc 971 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 976 drivers/iio/adc/xilinx-xadc-core.c return xadc_write_samplerate(xadc, val); xadc 1097 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 1110 drivers/iio/adc/xilinx-xadc-core.c xadc->external_mux_mode = XADC_EXTERNAL_MUX_NONE; xadc 1112 drivers/iio/adc/xilinx-xadc-core.c xadc->external_mux_mode = XADC_EXTERNAL_MUX_SINGLE; xadc 1114 drivers/iio/adc/xilinx-xadc-core.c xadc->external_mux_mode = XADC_EXTERNAL_MUX_DUAL; xadc 1118 drivers/iio/adc/xilinx-xadc-core.c if (xadc->external_mux_mode != XADC_EXTERNAL_MUX_NONE) { xadc 1124 drivers/iio/adc/xilinx-xadc-core.c if (xadc->external_mux_mode == XADC_EXTERNAL_MUX_SINGLE) { xadc 1193 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc; xadc 1209 drivers/iio/adc/xilinx-xadc-core.c indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*xadc)); xadc 1213 drivers/iio/adc/xilinx-xadc-core.c xadc = iio_priv(indio_dev); xadc 1214 drivers/iio/adc/xilinx-xadc-core.c xadc->ops = id->data; xadc 1215 drivers/iio/adc/xilinx-xadc-core.c xadc->irq = irq; xadc 1216 drivers/iio/adc/xilinx-xadc-core.c init_completion(&xadc->completion); xadc 1217 drivers/iio/adc/xilinx-xadc-core.c mutex_init(&xadc->mutex); xadc 1218 drivers/iio/adc/xilinx-xadc-core.c spin_lock_init(&xadc->lock); xadc 1219 drivers/iio/adc/xilinx-xadc-core.c INIT_DELAYED_WORK(&xadc->zynq_unmask_work, xadc_zynq_unmask_worker); xadc 1222 drivers/iio/adc/xilinx-xadc-core.c xadc->base = devm_ioremap_resource(&pdev->dev, mem); xadc 1223 drivers/iio/adc/xilinx-xadc-core.c if (IS_ERR(xadc->base)) xadc 1224 drivers/iio/adc/xilinx-xadc-core.c return PTR_ERR(xadc->base); xadc 1236 drivers/iio/adc/xilinx-xadc-core.c if (xadc->ops->flags & XADC_FLAGS_BUFFERED) { xadc 1243 drivers/iio/adc/xilinx-xadc-core.c xadc->convst_trigger = xadc_alloc_trigger(indio_dev, "convst"); xadc 1244 drivers/iio/adc/xilinx-xadc-core.c if (IS_ERR(xadc->convst_trigger)) { xadc 1245 drivers/iio/adc/xilinx-xadc-core.c ret = PTR_ERR(xadc->convst_trigger); xadc 1248 drivers/iio/adc/xilinx-xadc-core.c xadc->samplerate_trigger = xadc_alloc_trigger(indio_dev, xadc 1250 drivers/iio/adc/xilinx-xadc-core.c if (IS_ERR(xadc->samplerate_trigger)) { xadc 1251 drivers/iio/adc/xilinx-xadc-core.c ret = PTR_ERR(xadc->samplerate_trigger); xadc 1256 drivers/iio/adc/xilinx-xadc-core.c xadc->clk = devm_clk_get(&pdev->dev, NULL); xadc 1257 drivers/iio/adc/xilinx-xadc-core.c if (IS_ERR(xadc->clk)) { xadc 1258 drivers/iio/adc/xilinx-xadc-core.c ret = PTR_ERR(xadc->clk); xadc 1262 drivers/iio/adc/xilinx-xadc-core.c ret = clk_prepare_enable(xadc->clk); xadc 1270 drivers/iio/adc/xilinx-xadc-core.c if (xadc->ops->flags & XADC_FLAGS_BUFFERED) { xadc 1271 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_read_samplerate(xadc); xadc 1275 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_samplerate(xadc, XADC_MAX_SAMPLERATE); xadc 1281 drivers/iio/adc/xilinx-xadc-core.c ret = request_irq(xadc->irq, xadc->ops->interrupt_handler, 0, xadc 1286 drivers/iio/adc/xilinx-xadc-core.c ret = xadc->ops->setup(pdev, indio_dev, xadc->irq); xadc 1291 drivers/iio/adc/xilinx-xadc-core.c xadc_read_adc_reg(xadc, XADC_REG_THRESHOLD(i), xadc 1292 drivers/iio/adc/xilinx-xadc-core.c &xadc->threshold[i]); xadc 1294 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_adc_reg(xadc, XADC_REG_CONF0, conf0); xadc 1304 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_adc_reg(xadc, XADC_REG_INPUT_MODE(0), bipolar_mask); xadc 1307 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_adc_reg(xadc, XADC_REG_INPUT_MODE(1), xadc 1313 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_update_adc_reg(xadc, XADC_REG_CONF1, XADC_CONF1_ALARM_MASK, xadc 1325 drivers/iio/adc/xilinx-xadc-core.c xadc->threshold[i] = 0xffff; xadc 1327 drivers/iio/adc/xilinx-xadc-core.c xadc->threshold[i] = 0; xadc 1328 drivers/iio/adc/xilinx-xadc-core.c ret = xadc_write_adc_reg(xadc, XADC_REG_THRESHOLD(i), xadc 1329 drivers/iio/adc/xilinx-xadc-core.c xadc->threshold[i]); xadc 1346 drivers/iio/adc/xilinx-xadc-core.c free_irq(xadc->irq, indio_dev); xadc 1347 drivers/iio/adc/xilinx-xadc-core.c cancel_delayed_work_sync(&xadc->zynq_unmask_work); xadc 1349 drivers/iio/adc/xilinx-xadc-core.c clk_disable_unprepare(xadc->clk); xadc 1351 drivers/iio/adc/xilinx-xadc-core.c if (xadc->ops->flags & XADC_FLAGS_BUFFERED) xadc 1352 drivers/iio/adc/xilinx-xadc-core.c iio_trigger_free(xadc->samplerate_trigger); xadc 1354 drivers/iio/adc/xilinx-xadc-core.c if (xadc->ops->flags & XADC_FLAGS_BUFFERED) xadc 1355 drivers/iio/adc/xilinx-xadc-core.c iio_trigger_free(xadc->convst_trigger); xadc 1357 drivers/iio/adc/xilinx-xadc-core.c if (xadc->ops->flags & XADC_FLAGS_BUFFERED) xadc 1368 drivers/iio/adc/xilinx-xadc-core.c struct xadc *xadc = iio_priv(indio_dev); xadc 1371 drivers/iio/adc/xilinx-xadc-core.c if (xadc->ops->flags & XADC_FLAGS_BUFFERED) { xadc 1372 drivers/iio/adc/xilinx-xadc-core.c iio_trigger_free(xadc->samplerate_trigger); xadc 1373 drivers/iio/adc/xilinx-xadc-core.c iio_trigger_free(xadc->convst_trigger); xadc 1376 drivers/iio/adc/xilinx-xadc-core.c free_irq(xadc->irq, indio_dev); xadc 1377 drivers/iio/adc/xilinx-xadc-core.c cancel_delayed_work_sync(&xadc->zynq_unmask_work); xadc 1378 drivers/iio/adc/xilinx-xadc-core.c clk_disable_unprepare(xadc->clk); xadc 1379 drivers/iio/adc/xilinx-xadc-core.c kfree(xadc->data); xadc 117 drivers/iio/adc/xilinx-xadc-events.c struct xadc *xadc = iio_priv(indio_dev); xadc 119 drivers/iio/adc/xilinx-xadc-events.c return (bool)(xadc->alarm_mask & xadc_get_alarm_mask(chan)); xadc 127 drivers/iio/adc/xilinx-xadc-events.c struct xadc *xadc = iio_priv(indio_dev); xadc 131 drivers/iio/adc/xilinx-xadc-events.c mutex_lock(&xadc->mutex); xadc 134 drivers/iio/adc/xilinx-xadc-events.c xadc->alarm_mask |= alarm; xadc 136 drivers/iio/adc/xilinx-xadc-events.c xadc->alarm_mask &= ~alarm; xadc 138 drivers/iio/adc/xilinx-xadc-events.c xadc->ops->update_alarm(xadc, xadc->alarm_mask); xadc 140 drivers/iio/adc/xilinx-xadc-events.c ret = _xadc_read_adc_reg(xadc, XADC_REG_CONF1, &cfg); xadc 146 drivers/iio/adc/xilinx-xadc-events.c cfg &= ~((xadc->alarm_mask & 0xf0) << 4); /* bram, pint, paux, ddr */ xadc 147 drivers/iio/adc/xilinx-xadc-events.c cfg &= ~((xadc->alarm_mask & 0x08) >> 3); /* ot */ xadc 148 drivers/iio/adc/xilinx-xadc-events.c cfg &= ~((xadc->alarm_mask & 0x07) << 1); /* temp, vccint, vccaux */ xadc 150 drivers/iio/adc/xilinx-xadc-events.c ret = _xadc_write_adc_reg(xadc, XADC_REG_CONF1, cfg); xadc 153 drivers/iio/adc/xilinx-xadc-events.c mutex_unlock(&xadc->mutex); xadc 167 drivers/iio/adc/xilinx-xadc-events.c struct xadc *xadc = iio_priv(indio_dev); xadc 171 drivers/iio/adc/xilinx-xadc-events.c *val = xadc->threshold[offset]; xadc 174 drivers/iio/adc/xilinx-xadc-events.c *val = xadc->temp_hysteresis; xadc 191 drivers/iio/adc/xilinx-xadc-events.c struct xadc *xadc = iio_priv(indio_dev); xadc 199 drivers/iio/adc/xilinx-xadc-events.c mutex_lock(&xadc->mutex); xadc 203 drivers/iio/adc/xilinx-xadc-events.c xadc->threshold[offset] = val; xadc 206 drivers/iio/adc/xilinx-xadc-events.c xadc->temp_hysteresis = val; xadc 209 drivers/iio/adc/xilinx-xadc-events.c mutex_unlock(&xadc->mutex); xadc 227 drivers/iio/adc/xilinx-xadc-events.c if (xadc->threshold[offset] < xadc->temp_hysteresis) xadc 228 drivers/iio/adc/xilinx-xadc-events.c xadc->threshold[offset + 4] = 0; xadc 230 drivers/iio/adc/xilinx-xadc-events.c xadc->threshold[offset + 4] = xadc->threshold[offset] - xadc 231 drivers/iio/adc/xilinx-xadc-events.c xadc->temp_hysteresis; xadc 232 drivers/iio/adc/xilinx-xadc-events.c ret = _xadc_write_adc_reg(xadc, XADC_REG_THRESHOLD(offset + 4), xadc 233 drivers/iio/adc/xilinx-xadc-events.c xadc->threshold[offset + 4]); xadc 239 drivers/iio/adc/xilinx-xadc-events.c ret = _xadc_write_adc_reg(xadc, XADC_REG_THRESHOLD(offset), val); xadc 242 drivers/iio/adc/xilinx-xadc-events.c mutex_unlock(&xadc->mutex); xadc 74 drivers/iio/adc/xilinx-xadc.h int (*read)(struct xadc *xadc, unsigned int reg, uint16_t *val); xadc 75 drivers/iio/adc/xilinx-xadc.h int (*write)(struct xadc *xadc, unsigned int reg, uint16_t val); xadc 78 drivers/iio/adc/xilinx-xadc.h void (*update_alarm)(struct xadc *xadc, unsigned int alarm); xadc 79 drivers/iio/adc/xilinx-xadc.h unsigned long (*get_dclk_rate)(struct xadc *xadc); xadc 85 drivers/iio/adc/xilinx-xadc.h static inline int _xadc_read_adc_reg(struct xadc *xadc, unsigned int reg, xadc 88 drivers/iio/adc/xilinx-xadc.h lockdep_assert_held(&xadc->mutex); xadc 89 drivers/iio/adc/xilinx-xadc.h return xadc->ops->read(xadc, reg, val); xadc 92 drivers/iio/adc/xilinx-xadc.h static inline int _xadc_write_adc_reg(struct xadc *xadc, unsigned int reg, xadc 95 drivers/iio/adc/xilinx-xadc.h lockdep_assert_held(&xadc->mutex); xadc 96 drivers/iio/adc/xilinx-xadc.h return xadc->ops->write(xadc, reg, val); xadc 99 drivers/iio/adc/xilinx-xadc.h static inline int xadc_read_adc_reg(struct xadc *xadc, unsigned int reg, xadc 104 drivers/iio/adc/xilinx-xadc.h mutex_lock(&xadc->mutex); xadc 105 drivers/iio/adc/xilinx-xadc.h ret = _xadc_read_adc_reg(xadc, reg, val); xadc 106 drivers/iio/adc/xilinx-xadc.h mutex_unlock(&xadc->mutex); xadc 110 drivers/iio/adc/xilinx-xadc.h static inline int xadc_write_adc_reg(struct xadc *xadc, unsigned int reg, xadc 115 drivers/iio/adc/xilinx-xadc.h mutex_lock(&xadc->mutex); xadc 116 drivers/iio/adc/xilinx-xadc.h ret = _xadc_write_adc_reg(xadc, reg, val); xadc 117 drivers/iio/adc/xilinx-xadc.h mutex_unlock(&xadc->mutex);