From: Arnar B. <ar...@gm...> - 2007-02-25 23:56:17
|
Hi there, Can anyone point me to examples on how to read/write the UCB1400 GPIOs and ADCs? thanks, Arnar |
From: Craig H. <cr...@gu...> - 2007-02-26 19:18:20
|
On Feb 25, 2007, at 3:55 PM, Arnar Birgisson wrote: > Can anyone point me to examples on how to read/write the UCB1400 > GPIOs and ADCs? For the GPIOs, you should see /proc/gpio contains some UCB* files after loading the snd-pxa2xx-ac97 driver. I think there's currently a bug in the code where if you have both the proc_gpio and the snd- pxa2xx-ac97 drivers loaded, they kind of clobber each others' /proc/ gpio directories.... I'll work on fixing that so that they only create the /proc/gpio directory if it's not already there.... (I thought I had done that at some point, but the code doesn't seem to be in there...) C |
From: Arnar B. <ar...@gm...> - 2007-02-26 19:44:28
|
On 2/26/07, Craig Hughes <cr...@gu...> wrote: > On Feb 25, 2007, at 3:55 PM, Arnar Birgisson wrote: > > > Can anyone point me to examples on how to read/write the UCB1400 > > GPIOs and ADCs? > > For the GPIOs, you should see /proc/gpio contains some UCB* files > after loading the snd-pxa2xx-ac97 driver. I think there's currently > a bug in the code where if you have both the proc_gpio and the snd- > pxa2xx-ac97 drivers loaded, they kind of clobber each others' /proc/ > gpio directories.... I'll work on fixing that so that they only > create the /proc/gpio directory if it's not already there.... (I > thought I had done that at some point, but the code doesn't seem to > be in there...) Great, thanks. What about the ADCs? Arnar |
From: Craig H. <cr...@gu...> - 2007-02-27 00:20:14
|
On Feb 26, 2007, at 11:44 AM, Arnar Birgisson wrote: > On 2/26/07, Craig Hughes <cr...@gu...> wrote: >> On Feb 25, 2007, at 3:55 PM, Arnar Birgisson wrote: >> >>> Can anyone point me to examples on how to read/write the UCB1400 >>> GPIOs and ADCs? >> >> For the GPIOs, you should see /proc/gpio contains some UCB* files >> after loading the snd-pxa2xx-ac97 driver. I think there's currently >> a bug in the code where if you have both the proc_gpio and the snd- >> pxa2xx-ac97 drivers loaded, they kind of clobber each others' /proc/ >> gpio directories.... I'll work on fixing that so that they only >> create the /proc/gpio directory if it's not already there.... (I >> thought I had done that at some point, but the code doesn't seem to >> be in there...) > > Great, thanks. > > What about the ADCs? For the ADCs, it should be pretty straightforward to extend the stuff in sound/pci/ac97/ac97_patch.c which sets up those nodes under /proc to also read the ADC registers on the UCB1400, per its datasheet. C |
From: Arnar B. <ar...@gm...> - 2007-02-27 01:00:27
|
On 2/27/07, Craig Hughes <cr...@gu...> wrote: > > On Feb 26, 2007, at 11:44 AM, Arnar Birgisson wrote: > For the ADCs, it should be pretty straightforward to extend the stuff > in sound/pci/ac97/ac97_patch.c which sets up those nodes under /proc > to also read the ADC registers on the UCB1400, per its datasheet. > Cool. I'll have a look once I get the toolchain and buildroot going. Arnar |
From: Arnar B. <ar...@gm...> - 2007-03-04 00:21:51
|
Hi Craig, On 2/27/07, Craig Hughes <cr...@gu...> wrote: > For the ADCs, it should be pretty straightforward to extend the stuff > in sound/pci/ac97/ac97_patch.c which sets up those nodes under /proc > to also read the ADC registers on the UCB1400, per its datasheet. I had a look at this. For a complete noob in kernel programming this might not be very straight forward. >From the ucb1400 datasheet I guess the sequence is this: 1. Set the AE bit in the ADC control register (0x66) to enable ADC 2. Write the number of the desired ADC pin (0-3) in bits AI1 and AI0 of the same register. 3. Set the AS bit in the control register to start the conversion 4. Wait until the ADV bit of register 0x68 becomes 1 <- see below 5. Read the 10 bit value from register 0x68 (ADC Data) I'd be happy to give this a try, but there are a couple of points I'm not sure how to handle. a. can steps 1-3 be performed in one snd_ac97_write operation or do they need to be done one by one? b. how to "wait" (step 4). Is it acceptable to just loop in the proc_read function, repeatedly doing snd_ac96_read to check for the ADV bit? Should I "sleep" in between and if so, for how long? The ucb1400 can also be made to do an interrupt when the ad conversion is done - do I need to look into that? Sorry if these questions sound silly, I'm kind of using this as an entry point to kernel programming :o) Arnar |
From: Pascal <pa...@pa...> - 2007-03-05 15:48:19
|
Arnar Birgisson wrote: >>From the ucb1400 datasheet I guess the sequence is this: >[...] ucb1x00_adc_read() in linux-2.6.18gum/drivers/mfd/ucb1x00-core.c probably does what you suggest. It might also be interesting to implement a "streaming" API for the ADCs (like an audio card). The converters are quite fast (10 us) and it looks like conversions can be triggered by an external signal (ADCSYNC). Pascal |
From: Arnar B. <ar...@gm...> - 2007-03-05 15:58:29
|
On 3/5/07, Pascal <pa...@pa...> wrote: > Arnar Birgisson wrote: > >>From the ucb1400 datasheet I guess the sequence is this: > >[...] > > ucb1x00_adc_read() in linux-2.6.18gum/drivers/mfd/ucb1x00-core.c > probably does what you suggest. Great, thanks - all that is needed then is the /proc entires to trigger the read. I should be able to manage those. > It might also be interesting to implement a "streaming" API > for the ADCs (like an audio card). The converters are quite > fast (10 us) and it looks like conversions can be triggered > by an external signal (ADCSYNC). You mean like a char-driver or are you just talking about kernel-space stuff? Do you have anything similar in mind? Arnar |
From: Pascal <pa...@pa...> - 2007-03-05 22:40:49
|
Arnar Birgisson wrote: > Great, thanks - all that is needed then is the /proc entires to > trigger the read. I should be able to manage those. Note: In case you decide to do it in /sys instead of /proc, linux-2.6.18gum/drivers/mfd/ucb1x00-assabet.c is a good starting point. > You mean like a char-driver or are you just talking about kernel-space > stuff? Do you have anything similar in mind? That would be a kernel char driver with OSS- or ALSA-like ioctls. I am not even sure it is doable. I just thought some time ago that it would be nice to have the ability to sample four waveforms at 25 kHz (or one at 100 kHz) * 10 bits, in addition to the two 48 kHz AC-coupled audio channels. Pascal |
From: Julien L. <les...@ho...> - 2007-02-27 02:48:51
|
Hi, What about just changing the name of the directory of the GPIO lines for the UCB1400 ?? Julien > > > Can anyone point me to examples on how to read/write the UCB1400 > > GPIOs and ADCs? > >For the GPIOs, you should see /proc/gpio contains some UCB* files >after loading the snd-pxa2xx-ac97 driver. I think there's currently >a bug in the code where if you have both the proc_gpio and the snd- >pxa2xx-ac97 drivers loaded, they kind of clobber each others' /proc/ >gpio directories.... I'll work on fixing that so that they only >create the /proc/gpio directory if it's not already there.... (I >thought I had done that at some point, but the code doesn't seem to >be in there...) > >C > > >------------------------------------------------------------------------- >Take Surveys. Earn Cash. Influence the Future of IT >Join SourceForge.net's Techsay panel and you'll get the chance to share >your >opinions on IT & business topics through brief surveys-and earn cash >http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >_______________________________________________ >gumstix-users mailing list >gum...@li... >https://lists.sourceforge.net/lists/listinfo/gumstix-users _________________________________________________________________ MSN Hotmail sur i-mode : envoyez et recevez des e-mails depuis votre téléphone portable ! http://www.msn.fr/hotmailimode/ |