ret = platform_device_add_data(pdev,
                                        cell->platform_data, cell->pdata_size);
                if (ret)
 -                      goto fail_res;
 +                      goto fail_alias;
        }
  
-       ret = mfd_platform_add_cell(pdev, cell);
+       ret = mfd_platform_add_cell(pdev, cell, usage_count);
        if (ret)
 -              goto fail_res;
 +              goto fail_alias;
  
        for (r = 0; r < cell->num_resources; r++) {
                res[r].name = cell->resources[r].name;
 
  #define ADC_CLK                       3000000
  #define TOTAL_STEPS           16
  #define TOTAL_CHANNELS                8
 +#define FIFO1_THRESHOLD               19
  
  /*
- * ADC runs at 3MHz, and it takes
- * 15 cycles to latch one data output.
- * Hence the idle time for ADC to
- * process one sample data would be
- * around 5 micro seconds.
- */
- #define IDLE_TIMEOUT 5 /* microsec */
+  * time in us for processing a single channel, calculated as follows:
+  *
+  * num cycles = open delay + (sample delay + conv time) * averaging
+  *
+  * num cycles: 152 + (1 + 13) * 16 = 376
+  *
+  * clock frequency: 26MHz / 8 = 3.25MHz
+  * clock period: 1 / 3.25MHz = 308ns
+  *
+  * processing time: 376 * 308ns = 116us
+  */
+ #define IDLE_TIMEOUT 116 /* microsec */
  
  #define TSCADC_CELLS          2