On Fri, 2008-01-18 at 17:28 +0530, Aggrwal Poonam wrote: > Hello All > > The TDM driver just now does not have a proper framework. Probably the > interface cannot be generalised as such. Hence we could not decide > whether it would be right to think of a TDM framework. Infact the > interface this TDM driver(for MPC8323ERDB) supplies may not be usable > for some other client as such. Please suggest on this. > > But you are right as far as Freescale PowerPC platforms are concerned > which have TDM devices. Like, 8315 also has a TDM driver which also > exposes similar interface as 8323 because the client it is talking to is > the same. > > Following is the small description of the TDM driver along with > interface details: > > The dts file keeps a track of the TDM devices present on the board. > Depending on them the TDM driver initializes those many driver instances > while coming up. > > The driver on the upper level can plug to more than one tdm clients > depending on the availablity of TDM devices. At every new request of > the TDM client to bind with a TDM device, a free driver instance is > allocated to the client. > > The interface can be described as follows. > > tdm_register_client(struct tdm_client *) > This API returns a pointer to the structure tdm_client which is > of type > struct tdm_client { > u32 driver_handle; > u32 (*tdm_read)(u32 driver_handle, short chn_id, short > *pcm_buffer, short len); > u32 (*tdm_write)(u32 driver_handle, short chn_id, short > *pcm_buffer, short len); > wait_queue_head_t *wakeup_event; > } > > It consists of: > - driver_handle: It is basically to identify the particular TDM > device/driver instance. > - tdm_read: It is a function pointer returned by the TDM driver to be > used to read TDM data form a particular TDM channel. > - tdm_write: It is a function pointer returned by the TDM driver to > be used to write TDM data to a particular TDM channel. > - wakeup_event: It is address of a wait_queue event on which the > client keeps on sleeping, and the TDM driver wakes it up periodically. > The driver is configured to wake up the client after every 10ms. > > Once the TDM client gets registered to a TDM driver instance and a TDM > device, it interfaces with the driver using tdm_read, tdm_write and > wakeup_event. > > Note: The TDM driver can be used by only kernel level modules. The > driver does not expose any file interface for User Applications. Can be > compared to the spi driver which interfaces with the SPI clients > through some APIs. > > > I need your feedback on the interface details. Some changes were > suggested by Andrew for 32 bit tdm handle which I will modify.(Thanks > Andrew) > > Please give your ideas about a TDM framework in the kernel and the > interface. > > Waiting for your feedback. > > Thanks and Regards > Poonam
Hi Poonam I may have to write a HDLC over QMC driver for 832x in the near future. Although I haven't looked at much at the UCCs programming i/f I noticed that QMC is supposed to run over TDM. Is your TDM driver suitable for hooking up such a driver on top? Jocke _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev