On Thu, Jul 18, 2013 at 12:31 AM, Marek Vasut <marex@xxxxxxx> wrote: > Dear Otavio Salvador, > >> On Wed, Jul 17, 2013 at 4:12 PM, Jonathan Cameron <jic23@xxxxxxxxxx> wrote: >> > Otavio Salvador <otavio@xxxxxxxxxxxxxxxx> wrote: >> >>Hello, >> >> >> >>Mario and I are working at TI ADS124x driver and this chip can be used >> >>in two ways: >> >> >> >>In case of ADS1247: >> >> - 2 differential channels >> >> - 3 single-ended channels >> >> >> >>In the first case it take two inputs and the chip returns the >> >>difference between them; in the second case it does the same but you >> >>must choose one channel to be the negative reference for all the other >> >>inputs. This is how we understood the datasheet however the >> >>single-ended use is quite confusing on it so we might be wrong. >> >> >> >>So we'd like to know the best way to handle those cases in the driver. >> >> >> >>One alternative we discussed is to use two attributes in the dts as: >> >> ... >> >> #channels = <2>; >> >> channels = <0 3 >> >> >> >> 1 2>; >> >> >> >>So it'd take two channels. One composed by input 0 and input 3 and >> >>another composed by input 1 and input 2. >> >> >> >>On the another case, we'd use: >> >> ... >> >> #channels = <3> >> >> channels = <0 3 >> >> >> >> 1 3 >> >> 2 3>; >> >> >> >>So it'd take three channels and all them comparing to input 3. >> >> >> >>Are we in the right route? Any hints how to better solve this? >> >> >> > Another option is to leave it entirely up to user space. See max1363 >> > driver where both single ended and differential channels are supported >> > at the same time with care taken in buffered mode. >> > >> > Not sure if that works for your case? >> >> I think it is nicer to have it set in the dt; we need the dt anyway so >> it seems logical to get it setting the right channel. > > Can you please elaborate why is it logical? > > I took a brief look over the datasheet [1], here are the facts I see (correct me > if I'm wrong). I first looked at Figure 51. : > > - ADS1246 has two input channels > - ADS1247 has four input channels > - ADS1428 has eight input channels > > - Each one of the 2/4/8 input channels can be connected to either P(+) or N(-) > of the amplifier (figure 53) for the ADC. > > - Apparently, according to Figure 51. , it is possible to have only one P and > one N channel enabled at time (and therefore sample only one pair of channels > with the ADC) since the P and N rails are shared by all the inputs and there's > only one ADC block. > > Therefore, the userland would have to export sysfs file for each of the channels > where one would write if the channel is possitive(+) / negative(-) / > not_connected(NC) and then trigger the start of sampling. > > What do you think? This does not make them act as differential against each other. We can have several combinations as: 0 - P / 1 - N (differential) 0 - P / 1 - P / 2 - P / 3 - N (all differential to 3) and so on. So how userland would tell which would be the differential to use? Our board has: 0 against 1 2 against 3 but it is a design choice. Am I missing something? -- Otavio Salvador O.S. Systems http://www.ossystems.com.br http://projetos.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html