Thread (1 message) 1 message, 1 author, 2017-03-23

Re: [PATCHv2] iio: adc: cpcap: Add minimal support for CPCAP PMIC ADC

From: Tony Lindgren <hidden>
Date: 2017-03-23 22:14:52
Also in: linux-iio, linux-omap

* Tony Lindgren [off-list ref] [170322 16:39]:
+/**
+ * enum cpcap_adc_type - cpcap adc types
+ *
+ * Two banks of channels with eight channels in each. The first two channels
+ * in bank0 can be muxed for other functionality with CPCAP_ADC_TYPE_BATT_PI.
+ */
+enum cpcap_adc_type {
+	CPCAP_ADC_TYPE_BANK_0,
+	CPCAP_ADC_TYPE_BANK_1,
+	CPCAP_ADC_TYPE_BATT_PI,
+};
Hmm looks like I only got half done yesterday.. I can now get
rid of the above in favor of using just channels.
+static void cpcap_adc_phase(struct cpcap_adc_request *req, int index)
+{
+	const struct cpcap_adc_conversion_tbl *conv_tbl;
+	const struct cpcap_adc_phasing_tbl *phase_tbl;
+	int tbl_index;
+
+	switch (req->type) {
+	case CPCAP_ADC_TYPE_BANK_0:
+		conv_tbl = bank0_conversion;
+		phase_tbl = bank0_phasing;
+		tbl_index = index;
+		break;
+	case CPCAP_ADC_TYPE_BANK_1:
+		conv_tbl = bank1_conversion;
+		phase_tbl = bank1_phasing;
+		tbl_index = index;
+		break;
+	case CPCAP_ADC_TYPE_BATT_PI:
+		conv_tbl = bank0_conversion;
+		phase_tbl = bank0_phasing;
+		tbl_index = (index % 2) ? CPCAP_ADC_BATTI :
+			CPCAP_ADC_BATTP;
+		break;
+	default:
+		return;
+	}
And then the above switch will go away.
+static void cpcap_adc_convert(struct cpcap_adc_request *req, int index)
+{
+	const struct cpcap_adc_conversion_tbl *conv_tbl;
+	int tbl_index;
+
+	switch (req->type) {
+	case CPCAP_ADC_TYPE_BANK_0:
+		conv_tbl = bank0_conversion;
+		tbl_index = index;
+		break;
+	case CPCAP_ADC_TYPE_BANK_1:
+		conv_tbl = bank1_conversion;
+		tbl_index = index;
+		break;
+	case CPCAP_ADC_TYPE_BATT_PI:
+		conv_tbl = bank0_conversion;
+		tbl_index = (index % 2) ?
+			CPCAP_ADC_BATTI : CPCAP_ADC_BATTP;
+		break;
+	default:
+		return;
+	}
And here too.
+static int cpcap_adc_init_request(struct cpcap_adc_request *req,
+				  int channel)
+{
+	switch (channel) {
+	case 0 ... 7:
+		req->bank_index = channel;
+		req->type = CPCAP_ADC_TYPE_BANK_0;
+		break;
+	case 8 ... 15:
+		req->bank_index = channel - 8;
+		req->type = CPCAP_ADC_TYPE_BANK_1;
+		break;
+	case 16 ... 17:
+		req->bank_index = channel - 16;
+		req->type = CPCAP_ADC_TYPE_BATT_PI;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	return 0;
+}
And this can be done by indexing everything with just the
channels. So I'll be posting v3 of this patch at some point
hopefully later on today.

Regards,

Tony
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help