RE: [PATCH][2/3][RFC] TDM Framework

2012-04-26 Thread Singh Sandeep-B37400
-Original Message-
From: Benjamin Herrenschmidt [mailto:b...@kernel.crashing.org] 
Sent: Wednesday, April 25, 2012 11:20 AM
To: Aggrwal Poonam-B10812
Cc: linuxppc-dev@lists.ozlabs.org; Singh Sandeep-B37400
Subject: Re: [PATCH][2/3][RFC] TDM Framework

On Sat, 2012-03-10 at 18:27 +0530, Poonam Aggrwal wrote:
 From: Sandeep Singh sand...@freescale.com
 
 TDM Framework is an attempt to provide a platform independent layer 
 which can offer a standard interface  for TDM access to different client 
 modules.
 Beneath, the framework layer can house different types of TDM drivers 
 to handle various TDM devices, the hardware intricacies of the devices 
 being completely taken care by TDM drivers.

Neither the changeset comment, the code, not the Documentation file (which are 
non-existent, at least in this patch, though mentioned), define what TDM 
actually is :-)

[Sandeep] Thanks for your comments. Documentation for TDM is present in the 
following patch:

http://patchwork.ozlabs.org/patch/145857/

Regards,
Sandeep

Cheers,
Ben.


 This framework layer will allow any type of TDM device to hook with it.
 For example Freescale controller as on MPC8315, UCC based TDM 
 controller, or any other controller.
 
 The main functions of this Framework are:
 - provides interface to TDM clients to access TDM functionalities.
 - provides standard interface for TDM drivers to hook with the framework. 
 - handles various data handling stuff and buffer management.
 
 In future this Framework will be extended to provide Interface for 
 Line control devices also. For example SLIC, E1/T1 Framers etc.
 
 Limitations/Future Work
 ---
 1. Presently the framework supports only Single Port channelised mode.
 2. Also the configurability options are limited which will be extended later 
 on.
 3. Only kernel mode TDM clients are supported currently. Support for 
 User mode clients will be added later.
 
 Signed-off-by: Sandeep Singh sand...@freescale.com
 Signed-off-by: Poonam Aggrwal poonam.aggr...@freescale.com
 ---
  A couple of todos' are left in the patch, we are working on it and 
 will be addressed in the updated patch set.
  drivers/Kconfig |1 +
  drivers/Makefile|1 +
  drivers/tdm/Kconfig |   25 +
  drivers/tdm/tdm-core.c  | 1146 
 +++
  include/linux/mod_devicetable.h |   11 +
  include/linux/tdm.h |  347 
  6 files changed, 1531 insertions(+), 0 deletions(-)  create mode 
 100644 drivers/tdm/Kconfig  create mode 100644 drivers/tdm/tdm-core.c  
 create mode 100644 include/linux/tdm.h
 
 diff --git a/drivers/Kconfig b/drivers/Kconfig index ad6c1eb..25f7f5b 
 100644
 --- a/drivers/Kconfig
 +++ b/drivers/Kconfig
 @@ -130,4 +130,5 @@ source drivers/virt/Kconfig
  
  source drivers/net/dpa/NetCommSw/Kconfig
  
 +source drivers/tdm/Kconfig
  endmenu
 diff --git a/drivers/Makefile b/drivers/Makefile index 
 cd546eb..362b5ed 100644
 --- a/drivers/Makefile
 +++ b/drivers/Makefile
 @@ -102,6 +102,7 @@ obj-$(CONFIG_INFINIBAND)  += infiniband/
  obj-$(CONFIG_SGI_SN) += sn/
  obj-y+= firmware/
  obj-$(CONFIG_CRYPTO) += crypto/
 +obj-$(CONFIG_TDM)+= tdm/
  obj-$(CONFIG_SUPERH) += sh/
  obj-$(CONFIG_ARCH_SHMOBILE)  += sh/
  ifndef CONFIG_ARCH_USES_GETTIMEOFFSET diff --git 
 a/drivers/tdm/Kconfig b/drivers/tdm/Kconfig new file mode 100644 index 
 000..8db2b05
 --- /dev/null
 +++ b/drivers/tdm/Kconfig
 @@ -0,0 +1,25 @@
 +#
 +# TDM subsystem configuration
 +#
 +
 +menuconfig TDM
 + tristate TDM support
 + ---help---
 +   More information is contained in the directory 
 file:Documentation/tdm/,
 +   especially in the file called summary there.
 +   If you want TDM support, you should say Y here and also to the
 +   specific driver for your bus adapter(s) below.
 +
 +   This TDM support can also be built as a module.  If so, the module
 +   will be called tdm-core.
 +
 +if TDM
 +
 +config TDM_DEBUG_CORE
 + bool TDM Core debugging messages
 + help
 +   Say Y here if you want the TDM core to produce a bunch of debug
 +   messages to the system log.  Select this if you are having a
 +   problem with TDM support and want to see more of what is going on.
 +
 +endif # TDM
 diff --git a/drivers/tdm/tdm-core.c b/drivers/tdm/tdm-core.c new file 
 mode 100644 index 000..cdda260
 --- /dev/null
 +++ b/drivers/tdm/tdm-core.c
 @@ -0,0 +1,1146 @@
 +/* driver/tdm/tdm-core.c
 + *
 + * Copyright (C) 2012 Freescale Semiconductor, Inc, All rights reserved.
 + *
 + * TDM core is the interface between TDM clients and TDM devices.
 + * It is also intended to serve as an interface for line controld
 + * devices later on.
 + *
 + * Author:Hemant Agrawal hem...@freescale.com
 + *   Rajesh Gumasta rajesh.guma...@freescale.com
 + *
 + * Modified by Sandeep Kr Singh sand...@freescale.com

RE: [PATCH][2/3][RFC] TDM Framework

2012-04-26 Thread Aggrwal Poonam-B10812

 -Original Message-
 From: Wood Scott-B07421
 Sent: Tuesday, April 24, 2012 6:05 AM
 To: Aggrwal Poonam-B10812
 Cc: linuxppc-dev@lists.ozlabs.org; Singh Sandeep-B37400
 Subject: Re: [PATCH][2/3][RFC] TDM Framework
 
Thanks Scott for the comments, we will incorporate them and send the next 
version.

Regards
Poonam
 On 03/10/2012 06:57 AM, Poonam Aggrwal wrote:
  diff --git a/drivers/Kconfig b/drivers/Kconfig index ad6c1eb..25f7f5b
  100644
  --- a/drivers/Kconfig
  +++ b/drivers/Kconfig
  @@ -130,4 +130,5 @@ source drivers/virt/Kconfig
 
   source drivers/net/dpa/NetCommSw/Kconfig
 
  +source drivers/tdm/Kconfig
   endmenu
 
 When posting patches to this list, please ensure that they are based on
 an upstream Linux kernel and not a Freescale BSP kernel.
Sure, but this was RFC patch set where the primary intention was to get design 
level comments.
But we will send the updated patches rebased on upstream head.
 
  +if TDM
  +
  +config TDM_DEBUG_CORE
  +   bool TDM Core debugging messages
  +   help
  + Say Y here if you want the TDM core to produce a bunch of debug
  + messages to the system log.  Select this if you are having a
  + problem with TDM support and want to see more of what is going
 on.
  +
  +endif # TDM
 
 Please use the normal kernel mechanisms for controlling debug messages.
 
okay
  diff --git a/drivers/tdm/tdm-core.c b/drivers/tdm/tdm-core.c new file
  mode 100644 index 000..cdda260
  --- /dev/null
  +++ b/drivers/tdm/tdm-core.c
  @@ -0,0 +1,1146 @@
  +/* driver/tdm/tdm-core.c
  + *
  + * Copyright (C) 2012 Freescale Semiconductor, Inc, All rights
 reserved.
  + *
  + * TDM core is the interface between TDM clients and TDM devices.
  + * It is also intended to serve as an interface for line controld
  + * devices later on.
  + *
  + * Author:Hemant Agrawal hem...@freescale.com
  + * Rajesh Gumasta rajesh.guma...@freescale.com
  + *
  + * Modified by Sandeep Kr Singh sand...@freescale.com
  + * Poonam Aggarwal poonam.aggar...@freescale.com
  + * 1. Added framework based initialization of device.
  + * 2. All the init/run time configuration is now done by framework.
  + * 3. Added channel level operations.
  + *
  + * This program is free software; you can redistribute  it and/or
  +modify it
  + * under  the terms of  the GNU General  Public License as published
  +by the
  + * Free Software Foundation;  either version 2 of the  License, or
  +(at your
  + * option) any later version.
  + *
  + * This program is distributed in the hope that it will be useful,
  +but
  + * WITHOUT ANY WARRANTY; without even the implied warranty of
  + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  + * General Public License for more details.
  + *
  + * You should have received a copy of the  GNU General Public License
  +along
  + * with this program; if not, write  to the Free Software Foundation,
  +Inc.,
  + * 675 Mass Ave, Cambridge, MA 02139, USA.
  + */
  +
  +/* if read write debug required */
  +#undef TDM_CORE_DEBUG
  +
  +#include linux/module.h
  +#include linux/kernel.h
  +#include linux/errno.h
  +#include linux/slab.h
  +#include linux/tdm.h
  +#include linux/init.h
  +#include linux/idr.h
  +#include linux/mutex.h
  +#include linux/completion.h
  +#include linux/hardirq.h
  +#include linux/irqflags.h
  +#include linux/list.h
  +#include linux/uaccess.h
  +#include linux/io.h
  +#include device/tdm_fsl.h
 
 What is a reference to tdm_fsl.h doing in the presumably hardware-
 independent tdm-core.c?
Need to check that, ideally this include should not be required
 
  +static DEFINE_MUTEX(tdm_core_lock);
  +static DEFINE_IDR(tdm_adapter_idr);
  +/* List of TDM adapters registered with TDM framework */
  +LIST_HEAD(adapter_list);
  +
  +/* List of TDM clients registered with TDM framework */
  +LIST_HEAD(driver_list);
  +
  +/* In case the previous data is not fetched by the client driver, the
  + * de-interleaving function will  discard the old data and rewrite
  +the
  + * new data */
  +static int use_latest_tdm_data = 1;
 
 Describe when one would want to change this, and provide a better way to
 change it (e.g. module parameter or sysfs knob).
 
Ok, description can be added.
Will also explore the sysfs knob option.

   
 /*
  * Linux kernel
  * multi-line comment style
  * is like this.
  */
 
Sure
  +/* this tasklet is created for each adapter instance */ static void
  +tdm_data_tasklet_fn(unsigned long);
  +
  +/* tries to match client driver with the adapter */ static int
  +tdm_device_match(struct tdm_driver *driver, struct tdm_adapter *adap)
  +{
  +   /* match on an id table if there is one */
  +   if (driver-id_table  driver-id_table-name[0]) {
  +   if (!(strcmp(driver-id_table-name, adap-name)))
  +   return (int)driver

Re: [PATCH][2/3][RFC] TDM Framework

2012-04-24 Thread Benjamin Herrenschmidt
On Sat, 2012-03-10 at 18:27 +0530, Poonam Aggrwal wrote:
 From: Sandeep Singh sand...@freescale.com
 
 TDM Framework is an attempt to provide a platform independent layer which
 can offer a standard interface  for TDM access to different client modules.
 Beneath, the framework layer can house different types of TDM drivers to 
 handle
 various TDM devices, the hardware intricacies of the devices being completely
 taken care by TDM drivers.

Neither the changeset comment, the code, not the Documentation file
(which are non-existent, at least in this patch, though mentioned),
define what TDM actually is :-)

Cheers,
Ben.


 This framework layer will allow any type of TDM device to hook with it.
 For example Freescale controller as on MPC8315, UCC based TDM controller, or 
 any other controller.
 
 The main functions of this Framework are:
 - provides interface to TDM clients to access TDM functionalities.
 - provides standard interface for TDM drivers to hook with the framework. 
 - handles various data handling stuff and buffer management.
 
 In future this Framework will be extended to provide Interface for Line 
 control
 devices also. For example SLIC, E1/T1 Framers etc.
 
 Limitations/Future Work
 ---
 1. Presently the framework supports only Single Port channelised mode.
 2. Also the configurability options are limited which will be extended later 
 on.
 3. Only kernel mode TDM clients are supported currently. Support for User mode
 clients will be added later. 
 
 Signed-off-by: Sandeep Singh sand...@freescale.com
 Signed-off-by: Poonam Aggrwal poonam.aggr...@freescale.com
 ---
  A couple of todos' are left in the patch, we are working on it and will be
 addressed in the updated patch set.
  drivers/Kconfig |1 +
  drivers/Makefile|1 +
  drivers/tdm/Kconfig |   25 +
  drivers/tdm/tdm-core.c  | 1146 
 +++
  include/linux/mod_devicetable.h |   11 +
  include/linux/tdm.h |  347 
  6 files changed, 1531 insertions(+), 0 deletions(-)
  create mode 100644 drivers/tdm/Kconfig
  create mode 100644 drivers/tdm/tdm-core.c
  create mode 100644 include/linux/tdm.h
 
 diff --git a/drivers/Kconfig b/drivers/Kconfig
 index ad6c1eb..25f7f5b 100644
 --- a/drivers/Kconfig
 +++ b/drivers/Kconfig
 @@ -130,4 +130,5 @@ source drivers/virt/Kconfig
  
  source drivers/net/dpa/NetCommSw/Kconfig
  
 +source drivers/tdm/Kconfig
  endmenu
 diff --git a/drivers/Makefile b/drivers/Makefile
 index cd546eb..362b5ed 100644
 --- a/drivers/Makefile
 +++ b/drivers/Makefile
 @@ -102,6 +102,7 @@ obj-$(CONFIG_INFINIBAND)  += infiniband/
  obj-$(CONFIG_SGI_SN) += sn/
  obj-y+= firmware/
  obj-$(CONFIG_CRYPTO) += crypto/
 +obj-$(CONFIG_TDM)+= tdm/
  obj-$(CONFIG_SUPERH) += sh/
  obj-$(CONFIG_ARCH_SHMOBILE)  += sh/
  ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
 diff --git a/drivers/tdm/Kconfig b/drivers/tdm/Kconfig
 new file mode 100644
 index 000..8db2b05
 --- /dev/null
 +++ b/drivers/tdm/Kconfig
 @@ -0,0 +1,25 @@
 +#
 +# TDM subsystem configuration
 +#
 +
 +menuconfig TDM
 + tristate TDM support
 + ---help---
 +   More information is contained in the directory 
 file:Documentation/tdm/,
 +   especially in the file called summary there.
 +   If you want TDM support, you should say Y here and also to the
 +   specific driver for your bus adapter(s) below.
 +
 +   This TDM support can also be built as a module.  If so, the module
 +   will be called tdm-core.
 +
 +if TDM
 +
 +config TDM_DEBUG_CORE
 + bool TDM Core debugging messages
 + help
 +   Say Y here if you want the TDM core to produce a bunch of debug
 +   messages to the system log.  Select this if you are having a
 +   problem with TDM support and want to see more of what is going on.
 +
 +endif # TDM
 diff --git a/drivers/tdm/tdm-core.c b/drivers/tdm/tdm-core.c
 new file mode 100644
 index 000..cdda260
 --- /dev/null
 +++ b/drivers/tdm/tdm-core.c
 @@ -0,0 +1,1146 @@
 +/* driver/tdm/tdm-core.c
 + *
 + * Copyright (C) 2012 Freescale Semiconductor, Inc, All rights reserved.
 + *
 + * TDM core is the interface between TDM clients and TDM devices.
 + * It is also intended to serve as an interface for line controld
 + * devices later on.
 + *
 + * Author:Hemant Agrawal hem...@freescale.com
 + *   Rajesh Gumasta rajesh.guma...@freescale.com
 + *
 + * Modified by Sandeep Kr Singh sand...@freescale.com
 + *   Poonam Aggarwal poonam.aggar...@freescale.com
 + * 1. Added framework based initialization of device.
 + * 2. All the init/run time configuration is now done by framework.
 + * 3. Added channel level operations.
 + *
 + * This program is free software; you can redistribute  it and/or modify it
 + * under  the terms of  the GNU General  Public License as published by the
 + * Free Software Foundation;  either version 2 

RE: [PATCH][2/3][RFC] TDM Framework

2012-04-23 Thread Aggrwal Poonam-B10812
 -Original Message-
 From: Aggrwal Poonam-B10812
 Sent: Saturday, March 10, 2012 6:27 PM
 To: linuxppc-dev@lists.ozlabs.org
 Cc: Singh Sandeep-B37400; Aggrwal Poonam-B10812
 Subject: [PATCH][2/3][RFC] TDM Framework
 

Any feedback on this patchset?

 From: Sandeep Singh sand...@freescale.com
 
 TDM Framework is an attempt to provide a platform independent layer which
 can offer a standard interface  for TDM access to different client
 modules.
 Beneath, the framework layer can house different types of TDM drivers to
 handle various TDM devices, the hardware intricacies of the devices being
 completely taken care by TDM drivers.
 
 This framework layer will allow any type of TDM device to hook with it.
 For example Freescale controller as on MPC8315, UCC based TDM controller,
 or any other controller.
 
 The main functions of this Framework are:
 - provides interface to TDM clients to access TDM functionalities.
 - provides standard interface for TDM drivers to hook with the framework.
 - handles various data handling stuff and buffer management.
 
 In future this Framework will be extended to provide Interface for Line
 control devices also. For example SLIC, E1/T1 Framers etc.
 
 Limitations/Future Work
 ---
 1. Presently the framework supports only Single Port channelised mode.
 2. Also the configurability options are limited which will be extended
 later on.
 3. Only kernel mode TDM clients are supported currently. Support for User
 mode clients will be added later.
 
 Signed-off-by: Sandeep Singh sand...@freescale.com
 Signed-off-by: Poonam Aggrwal poonam.aggr...@freescale.com
 ---
  A couple of todos' are left in the patch, we are working on it and will
 be addressed in the updated patch set.
  drivers/Kconfig |1 +
  drivers/Makefile|1 +
  drivers/tdm/Kconfig |   25 +
  drivers/tdm/tdm-core.c  | 1146
 +++
  include/linux/mod_devicetable.h |   11 +
  include/linux/tdm.h |  347 
  6 files changed, 1531 insertions(+), 0 deletions(-)  create mode 100644
 drivers/tdm/Kconfig  create mode 100644 drivers/tdm/tdm-core.c  create
 mode 100644 include/linux/tdm.h
 
 diff --git a/drivers/Kconfig b/drivers/Kconfig index ad6c1eb..25f7f5b
 100644
 --- a/drivers/Kconfig
 +++ b/drivers/Kconfig
 @@ -130,4 +130,5 @@ source drivers/virt/Kconfig
 
  source drivers/net/dpa/NetCommSw/Kconfig
 
 +source drivers/tdm/Kconfig
  endmenu
 diff --git a/drivers/Makefile b/drivers/Makefile index cd546eb..362b5ed
 100644
 --- a/drivers/Makefile
 +++ b/drivers/Makefile
 @@ -102,6 +102,7 @@ obj-$(CONFIG_INFINIBAND)  += infiniband/
  obj-$(CONFIG_SGI_SN) += sn/
  obj-y+= firmware/
  obj-$(CONFIG_CRYPTO) += crypto/
 +obj-$(CONFIG_TDM)+= tdm/
  obj-$(CONFIG_SUPERH) += sh/
  obj-$(CONFIG_ARCH_SHMOBILE)  += sh/
  ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
 diff --git a/drivers/tdm/Kconfig b/drivers/tdm/Kconfig new file mode
 100644 index 000..8db2b05
 --- /dev/null
 +++ b/drivers/tdm/Kconfig
 @@ -0,0 +1,25 @@
 +#
 +# TDM subsystem configuration
 +#
 +
 +menuconfig TDM
 + tristate TDM support
 + ---help---
 +   More information is contained in the directory
 file:Documentation/tdm/,
 +   especially in the file called summary there.
 +   If you want TDM support, you should say Y here and also to the
 +   specific driver for your bus adapter(s) below.
 +
 +   This TDM support can also be built as a module.  If so, the
 module
 +   will be called tdm-core.
 +
 +if TDM
 +
 +config TDM_DEBUG_CORE
 + bool TDM Core debugging messages
 + help
 +   Say Y here if you want the TDM core to produce a bunch of debug
 +   messages to the system log.  Select this if you are having a
 +   problem with TDM support and want to see more of what is going
 on.
 +
 +endif # TDM
 diff --git a/drivers/tdm/tdm-core.c b/drivers/tdm/tdm-core.c new file
 mode 100644 index 000..cdda260
 --- /dev/null
 +++ b/drivers/tdm/tdm-core.c
 @@ -0,0 +1,1146 @@
 +/* driver/tdm/tdm-core.c
 + *
 + * Copyright (C) 2012 Freescale Semiconductor, Inc, All rights reserved.
 + *
 + * TDM core is the interface between TDM clients and TDM devices.
 + * It is also intended to serve as an interface for line controld
 + * devices later on.
 + *
 + * Author:Hemant Agrawal hem...@freescale.com
 + *   Rajesh Gumasta rajesh.guma...@freescale.com
 + *
 + * Modified by Sandeep Kr Singh sand...@freescale.com
 + *   Poonam Aggarwal poonam.aggar...@freescale.com
 + * 1. Added framework based initialization of device.
 + * 2. All the init/run time configuration is now done by framework.
 + * 3. Added channel level operations.
 + *
 + * This program is free software; you can redistribute  it and/or
 +modify it
 + * under  the terms of  the GNU General  Public License as published by
 +the
 + * Free Software Foundation;  either 

Re: [PATCH][2/3][RFC] TDM Framework

2012-04-23 Thread Scott Wood
On 03/10/2012 06:57 AM, Poonam Aggrwal wrote:
 diff --git a/drivers/Kconfig b/drivers/Kconfig
 index ad6c1eb..25f7f5b 100644
 --- a/drivers/Kconfig
 +++ b/drivers/Kconfig
 @@ -130,4 +130,5 @@ source drivers/virt/Kconfig
  
  source drivers/net/dpa/NetCommSw/Kconfig
  
 +source drivers/tdm/Kconfig
  endmenu

When posting patches to this list, please ensure that they are based on
an upstream Linux kernel and not a Freescale BSP kernel.

 +if TDM
 +
 +config TDM_DEBUG_CORE
 + bool TDM Core debugging messages
 + help
 +   Say Y here if you want the TDM core to produce a bunch of debug
 +   messages to the system log.  Select this if you are having a
 +   problem with TDM support and want to see more of what is going on.
 +
 +endif # TDM

Please use the normal kernel mechanisms for controlling debug messages.

 diff --git a/drivers/tdm/tdm-core.c b/drivers/tdm/tdm-core.c
 new file mode 100644
 index 000..cdda260
 --- /dev/null
 +++ b/drivers/tdm/tdm-core.c
 @@ -0,0 +1,1146 @@
 +/* driver/tdm/tdm-core.c
 + *
 + * Copyright (C) 2012 Freescale Semiconductor, Inc, All rights reserved.
 + *
 + * TDM core is the interface between TDM clients and TDM devices.
 + * It is also intended to serve as an interface for line controld
 + * devices later on.
 + *
 + * Author:Hemant Agrawal hem...@freescale.com
 + *   Rajesh Gumasta rajesh.guma...@freescale.com
 + *
 + * Modified by Sandeep Kr Singh sand...@freescale.com
 + *   Poonam Aggarwal poonam.aggar...@freescale.com
 + * 1. Added framework based initialization of device.
 + * 2. All the init/run time configuration is now done by framework.
 + * 3. Added channel level operations.
 + *
 + * This program is free software; you can redistribute  it and/or modify it
 + * under  the terms of  the GNU General  Public License as published by the
 + * Free Software Foundation;  either version 2 of the  License, or (at your
 + * option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful, but
 + * WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 + * General Public License for more details.
 + *
 + * You should have received a copy of the  GNU General Public License along
 + * with this program; if not, write  to the Free Software Foundation, Inc.,
 + * 675 Mass Ave, Cambridge, MA 02139, USA.
 + */
 +
 +/* if read write debug required */
 +#undef TDM_CORE_DEBUG
 +
 +#include linux/module.h
 +#include linux/kernel.h
 +#include linux/errno.h
 +#include linux/slab.h
 +#include linux/tdm.h
 +#include linux/init.h
 +#include linux/idr.h
 +#include linux/mutex.h
 +#include linux/completion.h
 +#include linux/hardirq.h
 +#include linux/irqflags.h
 +#include linux/list.h
 +#include linux/uaccess.h
 +#include linux/io.h
 +#include device/tdm_fsl.h

What is a reference to tdm_fsl.h doing in the presumably
hardware-independent tdm-core.c?

 +static DEFINE_MUTEX(tdm_core_lock);
 +static DEFINE_IDR(tdm_adapter_idr);
 +/* List of TDM adapters registered with TDM framework */
 +LIST_HEAD(adapter_list);
 +
 +/* List of TDM clients registered with TDM framework */
 +LIST_HEAD(driver_list);
 +
 +/* In case the previous data is not fetched by the client driver, the
 + * de-interleaving function will  discard the old data and rewrite the
 + * new data */
 +static int use_latest_tdm_data = 1;

Describe when one would want to change this, and provide a better way to
change it (e.g. module parameter or sysfs knob).

/*
 * Linux kernel
 * multi-line comment style
 * is like this.
 */

 +/* this tasklet is created for each adapter instance */
 +static void tdm_data_tasklet_fn(unsigned long);
 +
 +/* tries to match client driver with the adapter */
 +static int tdm_device_match(struct tdm_driver *driver, struct tdm_adapter 
 *adap)
 +{
 + /* match on an id table if there is one */
 + if (driver-id_table  driver-id_table-name[0]) {
 + if (!(strcmp(driver-id_table-name, adap-name)))
 + return (int)driver-id_table;
 + }
 + return TDM_E_OK;
 +}

s/TDM_E_OK/0/g

 +static int tdm_attach_driver_adap(struct tdm_driver *driver,
 + struct tdm_adapter *adap)
 +{
 + /* if driver is already attached to any other adapter, return*/
 + if (driver-adapter  (driver-adapter != adap))
 + return TDM_E_OK;

Why can't one driver service multiple adapters?  How would multiple
drivers service one adapter?  Are there sub-devices that need individual
controlling?

 + driver-adapter = adap;
 +
 + if (driver-attach_adapter) {
 + if (driver-attach_adapter(adap)  0)
 + /* We ignore the return code; if it fails, too bad */
 + pr_err(attach_adapter failed for driver [%s]\n,
 + driver-name);

Why ignore errors?

 +/* Detach client driver and adapter */
 +static int tdm_detach_driver_adap(struct