Lines Matching refs:pcf
44 struct pcf50633 *pcf; member
53 static inline struct pcf50633_adc *__to_adc(struct pcf50633 *pcf) in __to_adc() argument
55 return platform_get_drvdata(pcf->adc_pdev); in __to_adc()
58 static void adc_setup(struct pcf50633 *pcf, int channel, int avg) in adc_setup() argument
63 pcf50633_reg_write(pcf, PCF50633_REG_ADCC2, 0x00); in adc_setup()
64 pcf50633_reg_write(pcf, PCF50633_REG_ADCC3, 0x01); in adc_setup()
67 pcf50633_reg_write(pcf, PCF50633_REG_ADCC1, channel | avg | in adc_setup()
71 static void trigger_next_adc_job_if_any(struct pcf50633 *pcf) in trigger_next_adc_job_if_any() argument
73 struct pcf50633_adc *adc = __to_adc(pcf); in trigger_next_adc_job_if_any()
81 adc_setup(pcf, adc->queue[head]->mux, adc->queue[head]->avg); in trigger_next_adc_job_if_any()
85 adc_enqueue_request(struct pcf50633 *pcf, struct pcf50633_adc_request *req) in adc_enqueue_request() argument
87 struct pcf50633_adc *adc = __to_adc(pcf); in adc_enqueue_request()
97 dev_err(pcf->dev, "ADC queue is full, dropping request\n"); in adc_enqueue_request()
103 trigger_next_adc_job_if_any(pcf); in adc_enqueue_request()
111 static void pcf50633_adc_sync_read_callback(struct pcf50633 *pcf, void *param, in pcf50633_adc_sync_read_callback() argument
120 int pcf50633_adc_sync_read(struct pcf50633 *pcf, int mux, int avg) in pcf50633_adc_sync_read() argument
127 ret = pcf50633_adc_async_read(pcf, mux, avg, in pcf50633_adc_sync_read()
138 int pcf50633_adc_async_read(struct pcf50633 *pcf, int mux, int avg, in pcf50633_adc_async_read() argument
154 return adc_enqueue_request(pcf, req); in pcf50633_adc_async_read()
158 static int adc_result(struct pcf50633 *pcf) in adc_result() argument
163 adcs1 = pcf50633_reg_read(pcf, PCF50633_REG_ADCS1); in adc_result()
164 adcs3 = pcf50633_reg_read(pcf, PCF50633_REG_ADCS3); in adc_result()
167 dev_dbg(pcf->dev, "adc result = %d\n", result); in adc_result()
175 struct pcf50633 *pcf = adc->pcf; in pcf50633_adc_irq() local
184 dev_err(pcf->dev, "pcf50633-adc irq: ADC queue empty!\n"); in pcf50633_adc_irq()
192 res = adc_result(pcf); in pcf50633_adc_irq()
193 trigger_next_adc_job_if_any(pcf); in pcf50633_adc_irq()
197 req->callback(pcf, req->callback_param, res); in pcf50633_adc_irq()
209 adc->pcf = dev_to_pcf50633(pdev->dev.parent); in pcf50633_adc_probe()
212 pcf50633_register_irq(adc->pcf, PCF50633_IRQ_ADCRDY, in pcf50633_adc_probe()
225 pcf50633_free_irq(adc->pcf, PCF50633_IRQ_ADCRDY); in pcf50633_adc_remove()
231 dev_err(adc->pcf->dev, in pcf50633_adc_remove()