-diff -urN sangam_atm-07.01.00.10/cppi_cpaal5.c sangam-atm-0.3/cppi_cpaal5.c
---- sangam_atm-07.01.00.10/cppi_cpaal5.c 2005-04-08 14:22:04.000000000 +0200
-+++ sangam-atm-0.3/cppi_cpaal5.c 2007-04-17 13:45:11.000000000 +0200
-@@ -352,7 +352,7 @@
+--- a/cppi_cpaal5.c
++++ b/cppi_cpaal5.c
+@@ -352,7 +352,7 @@ static int halRxReturn(HAL_RECEIVEINFO *
{
/* malloc failed, add this RCB to Needs Buffer List */
TempRcb->FragCount = 1; /*MJH+030417*/
if(HalDev->NeedsCount < MAX_NEEDS) /* +MJH 030410 */
{ /* +MJH 030410 */
-diff -urN sangam_atm-07.01.00.10/dsl_hal_api.c sangam-atm-0.3/dsl_hal_api.c
---- sangam_atm-07.01.00.10/dsl_hal_api.c 2006-10-26 16:46:54.000000000 +0200
-+++ sangam-atm-0.3/dsl_hal_api.c 2007-04-19 01:12:40.000000000 +0200
-@@ -229,15 +229,15 @@
- * 10/4/06 JZ CQ10979: Request for TR-069 Support for RP7.1
- * UR8_MERGE_END CQ10979*
+--- a/dsl_hal_api.c
++++ b/dsl_hal_api.c
+@@ -254,15 +254,15 @@
+ * of phyEnableDisableWord & phyControlWord to avoid changing API struct
+ * which may cause change required to application data structure.
******************************************************************************/
-#include <dev_host_interface.h>
-#include <dsl_hal_register.h>
-#include <dsl_hal_version.h>
+#include "dsl_hal_version.h"
- static unsigned int hybrid_selected;
- static unsigned int showtimeFlag = FALSE;
-diff -urN sangam_atm-07.01.00.10/dsl_hal_support.c sangam-atm-0.3/dsl_hal_support.c
---- sangam_atm-07.01.00.10/dsl_hal_support.c 2006-08-11 21:17:38.000000000 +0200
-+++ sangam-atm-0.3/dsl_hal_support.c 2007-04-19 01:13:30.000000000 +0200
+ // UR8_MERGE_START CQ11054 Jack Zhang
+ static unsigned int highprecision_selected = 0; //By default we use low precision for backward compt.
+--- a/dsl_hal_support.c
++++ b/dsl_hal_support.c
@@ -140,9 +140,9 @@
* oamFeature are overriden
// UR8_MERGE_END CQ10774 Ram
#define NUM_READ_RETRIES 3
static unsigned int dslhal_support_adsl2ByteSwap32(unsigned int in32Bits);
-diff -urN sangam_atm-07.01.00.10/dsl_hal_support.h sangam-atm-0.3/dsl_hal_support.h
---- sangam_atm-07.01.00.10/dsl_hal_support.h 2005-11-11 13:07:04.000000000 +0100
-+++ sangam-atm-0.3/dsl_hal_support.h 2007-04-19 01:12:01.000000000 +0200
+--- a/dsl_hal_support.h
++++ b/dsl_hal_support.h
@@ -49,7 +49,7 @@
* 04Nov05 0.11.00 CPH Fixed T1413 mode got Zero DS/US rate when DSL_BIT_TMODE is set.
*******************************************************************************/
#define virtual2Physical(a) (((int)a)&~0xe0000000)
/* External Function Prototype Declarations */
-diff -urN sangam_atm-07.01.00.10/Makefile sangam-atm-0.3/Makefile
---- sangam_atm-07.01.00.10/Makefile 2005-06-01 09:46:28.000000000 +0200
-+++ sangam-atm-0.3/Makefile 2007-04-19 01:09:02.000000000 +0200
+--- a/Makefile
++++ b/Makefile
@@ -1,18 +1,9 @@
-# File: drivers/atm/ti_evm3/Makefile
#
+EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -DNO_ACT -D__NO__VOICE_PATCH__ -DEL
+obj-$(CONFIG_SANGAM_ATM) := tiatm.o
+tiatm-objs += cpsar.o aal5sar.o tn7sar.o tn7atm.o tn7dsl.o dsl_hal_api.o dsl_hal_support.o
-diff -urN sangam_atm-07.01.00.10/tn7atm.c sangam-atm-0.3/tn7atm.c
---- sangam_atm-07.01.00.10/tn7atm.c 2006-10-26 16:48:52.000000000 +0200
-+++ sangam-atm-0.3/tn7atm.c 2007-04-18 15:34:05.000000000 +0200
-@@ -58,7 +58,6 @@
- * UR8_MERGE_END CQ10979*
+--- a/tn7atm.c
++++ b/tn7atm.c
+@@ -61,7 +61,6 @@
+ * UR8_MERGE_END CQ11057*
*********************************************************************************************/
-#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
-@@ -67,7 +66,7 @@
+@@ -69,11 +68,14 @@
+ #include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
- #include <asm/io.h>
+-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
-+#include <asm/ar7/ar7.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
-@@ -79,6 +78,7 @@
++
++#include <asm/io.h>
++#include <asm/ar7/ar7.h>
++#include <asm/ar7/prom.h>
++
+ #include "dsl_hal_api.h"
+ #include "tn7atm.h"
+ #include "tn7api.h"
+@@ -82,6 +84,7 @@
#include "dsl_hal_register.h"
#ifdef MODULE
MODULE_DESCRIPTION ("Tnetd73xx ATM Device Driver");
MODULE_AUTHOR ("Zhicheng Tang");
#endif
-@@ -97,9 +97,9 @@
+@@ -100,9 +103,9 @@ MODULE_AUTHOR ("Zhicheng Tang");
/*end of externs */
#define tn7atm_kfree_skb(x) dev_kfree_skb(x)
-@@ -111,7 +111,7 @@
+@@ -114,7 +117,7 @@ static int EnableQoS = FALSE;
/* prototypes */
static int tn7atm_set_can_support_adsl2 (int can);
static void tn7atm_close (struct atm_vcc *vcc);
-@@ -254,13 +254,12 @@
+@@ -257,13 +260,12 @@ static const struct atmdev_ops tn7atm_op
getsockopt: NULL,
setsockopt: NULL,
send: tn7atm_send,
static struct proc_dir_entry *root_proc_dir_entry = NULL;
#define DRV_PROC_MODE 0644
static int proc_root_already_exists = TRUE;
-@@ -549,56 +548,6 @@
+@@ -559,56 +561,6 @@ static int turbodsl_check_priority_type(
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* Function: int tn7atm_sar_irq(void)
*
* Description: tnetd73xx SAR interrupt.
-@@ -694,8 +643,8 @@
+@@ -693,7 +645,7 @@ static int __init tn7atm_irq_request (st
+ * Register SAR interrupt
+ */
+ priv->sar_irq = LNXINTNUM (ATM_SAR_INT); /* Interrupt line # */
+- if (request_irq (priv->sar_irq, tn7atm_sar_irq, SA_INTERRUPT, "SAR ", dev))
++ if (request_irq (priv->sar_irq, tn7atm_sar_irq, IRQF_DISABLED, "SAR ", dev))
+ printk ("Could not register tn7atm_sar_irq\n");
+
+ /*
+@@ -704,14 +656,14 @@ static int __init tn7atm_irq_request (st
{
def_sar_inter_pace = os_atoi (ptr);
}
/*
* Reigster Receive interrupt A
-@@ -865,11 +814,15 @@
+ */
+ priv->dsl_irq = LNXINTNUM (ATM_DSL_INT); /* Interrupt line # */
+- if (request_irq (priv->dsl_irq, tn7atm_dsl_irq, SA_INTERRUPT, "DSL ", dev))
++ if (request_irq (priv->dsl_irq, tn7atm_dsl_irq, IRQF_DISABLED, "DSL ", dev))
+ printk ("Could not register tn7atm_dsl_irq\n");
+
+ /***** VRB Tasklet Mode ****/
+@@ -875,11 +827,15 @@ static int __init tn7atm_get_ESI (struct
#define ATM_VBR_RT 5
#endif
dgprintf(1, "tn7atm_open()\n");
-@@ -881,24 +834,18 @@
+@@ -891,24 +847,18 @@ int tn7atm_open (struct atm_vcc *vcc, sh
return -1;
}
- MOD_INC_USE_COUNT;
--
++// MOD_INC_USE_COUNT;
+
- /* find a free VPI/VCI */
- tn7atm_walk_vccs(vcc, &vpi, &vci);
-
- vcc->vpi = vpi;
- vcc->vci = vci;
-+// MOD_INC_USE_COUNT;
-
+-
- if ((vci == ATM_VCI_UNSPEC) || (vpi == ATM_VCI_UNSPEC))
+ if ((vcc->vci == ATM_VCI_UNSPEC) || (vcc->vpi == ATM_VCI_UNSPEC))
{
{
/* always use (max_dma_chan+1) for clear eoc */
tn7atm_activate_vc_parm.chan = EOC_DMA_CHAN;
-@@ -906,7 +853,7 @@
+@@ -916,7 +866,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
/* check to see whether clear eoc is opened or not */
if (tn7atm_activate_vc_parm.priv->lut[tn7atm_activate_vc_parm.chan].inuse)
{
printk("tn7atm_open: Clear EOC channel (dmachan=%d) already in use.\n", tn7atm_activate_vc_parm.chan);
return -EBUSY;
}
-@@ -915,7 +862,7 @@
+@@ -925,7 +875,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
if (rc)
{
printk("tn7atm_open: failed to setup clear_eoc\n");
return -EBUSY;
}
tn7atm_set_lut(tn7atm_activate_vc_parm.priv,vcc, tn7atm_activate_vc_parm.chan);
-@@ -924,17 +871,17 @@
+@@ -934,17 +884,17 @@ int tn7atm_open (struct atm_vcc *vcc, sh
}
else /* PVC channel setup */
{
printk("PVC already opened. dmachan = %d\n", rc);
return -EBUSY;
}
-@@ -966,6 +913,7 @@
+@@ -976,6 +926,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
tn7atm_activate_vc_parm.priority = 2;
break;
case ATM_VBR: /* Variable Bit Rate-Non RealTime*/
tn7atm_activate_vc_parm.qos = 1;
tn7atm_activate_vc_parm.priority = 1;
-@@ -987,6 +935,7 @@
+@@ -997,6 +948,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
tn7atm_activate_vc_parm.mbs = vcc->qos.txtp.max_pcr;
tn7atm_activate_vc_parm.cdvt = vcc->qos.txtp.max_cdv;
break;
default:
tn7atm_activate_vc_parm.qos = 2;
-@@ -1014,7 +963,7 @@
+@@ -1024,7 +976,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
if (rc < 0)
{
printk("failed to activate hw channel\n");
tn7atm_lut_clear(vcc, tn7atm_activate_vc_parm.chan);
//spin_unlock_irqrestore(&chan_init_lock, flags);
return -EBUSY;
-@@ -1104,7 +1053,7 @@
+@@ -1114,7 +1066,7 @@ void tn7atm_close (struct atm_vcc *vcc)
tn7atm_lut_clear (vcc, dmachan);
//spin_unlock_irqrestore (&closeLock, closeFlag);
dgprintf (1, "Leave tn7atm_close\n");
}
-@@ -1518,8 +1467,7 @@
+@@ -1528,8 +1480,7 @@ int tn7atm_receive (void *os_dev, int ch
* firewall is on */
dgprintf (3, "pushing the skb...\n");
xdump ((unsigned char *) skb->data, skb->len, 5);
-@@ -1715,8 +1667,7 @@
+@@ -1725,8 +1676,7 @@ static void tn7atm_exit (void)
kfree (dev->dev_data);
/*
* remove proc entries
-@@ -1875,9 +1826,6 @@
+@@ -1885,9 +1835,6 @@ static int __init tn7atm_detect (void)
/*
* Set up proc entry for atm stats
*/
printk ("Creating new root folder %s in the proc for the driver stats \n",
drv_proc_root_folder);
root_proc_dir_entry = proc_mkdir (drv_proc_root_folder, NULL);
-@@ -1887,7 +1835,6 @@
+@@ -1897,7 +1844,6 @@ static int __init tn7atm_detect (void)
return -ENOMEM;
}
proc_root_already_exists = FALSE;
/*
* AV: Clean-up. Moved all the definitions to the data structure.
-@@ -2469,7 +2416,5 @@
+@@ -2479,7 +2425,5 @@ static int tn7atm_proc_qos_write(struct
return count;
}
module_init (tn7atm_detect);
module_exit (tn7atm_exit);
-#endif /* MODULE */
-diff -urN sangam_atm-07.01.00.10/tn7atm.h sangam-atm-0.3/tn7atm.h
---- sangam_atm-07.01.00.10/tn7atm.h 2006-04-05 11:33:06.000000000 +0200
-+++ sangam-atm-0.3/tn7atm.h 2007-04-18 03:45:08.000000000 +0200
+--- a/tn7atm.h
++++ b/tn7atm.h
@@ -19,7 +19,8 @@
//#include "mips_support.h"
#include <linux/list.h>
#ifdef CONFIG_MODVERSIONS
#include <linux/modversions.h>
-diff -urN sangam_atm-07.01.00.10/tn7dsl.c sangam-atm-0.3/tn7dsl.c
---- sangam_atm-07.01.00.10/tn7dsl.c 2006-10-26 16:48:44.000000000 +0200
-+++ sangam-atm-0.3/tn7dsl.c 2007-04-18 15:45:58.000000000 +0200
-@@ -88,7 +88,6 @@
- * 10/4/06 JZ CQ10979: Request for TR-069 Support for RP7.1
- * UR8_MERGE_END CQ10979*
+--- a/tn7dsl.c
++++ b/tn7dsl.c
+@@ -94,7 +94,6 @@
+ * 1/02/07 JZ CQ11054: Data Precision and Range Changes for TR-069 Conformance
+ * UR8_MERGE_END CQ11054*
*********************************************************************************************/
-#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
-@@ -97,7 +96,7 @@
+@@ -102,8 +101,6 @@
+ #include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
- #include <asm/io.h>
+-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
-+#include <asm/ar7/ar7.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
-@@ -105,6 +104,8 @@
+@@ -111,6 +108,12 @@
#include <linux/timer.h>
#include <linux/vmalloc.h>
#include <linux/file.h>
+#include <linux/firmware.h>
++
++#include <asm/io.h>
++#include <asm/ar7/ar7.h>
++#include <asm/ar7/prom.h>
+
/* Modules specific header files */
#include "tn7atm.h"
#include "tn7api.h"
-@@ -312,6 +313,14 @@
- static int tn7dsl_proc_snr_print (char *buf, int count, int *eof, int data);
- /* end of internal functions */
+@@ -173,7 +176,7 @@ led_reg_t ledreg[2];
+ static struct led_funcs ledreg[2];
+ #endif
+
+-#define DEV_DSLMOD 1
++#define DEV_DSLMOD CTL_UNNUMBERED
+ #define MAX_STR_SIZE 256
+ #define DSL_MOD_SIZE 256
+
+@@ -299,7 +302,7 @@ static PITIDSLHW_T pIhw;
+ static volatile int bshutdown;
+ static char info[MAX_STR_SIZE];
+ /* Used for DSL Polling enable */
+-static DECLARE_MUTEX_LOCKED (adsl_sem_overlay);
++static struct semaphore adsl_sem_overlay;
+
+ //kthread_t overlay_thread;
+ /* end of module wide declars */
+@@ -323,6 +326,14 @@ static int tn7dsl_proc_snr_print (char *
+ #define gDot1(a) ((a>0)?(a%10):((-a)%10))
+ // UR8_MERGE_END CQ11054*
+int avalanche_request_intr_pacing(int irq_nr, unsigned int blk_num,
+ unsigned int pace_value)
int os_atoi(const char *pStr)
{
int MulNeg = (*pStr == '-' ? -1 : 1);
-@@ -348,39 +357,6 @@
+@@ -359,39 +370,6 @@ void dprintf (int uDbgLevel, char *szFmt
#endif
}
// * UR8_MERGE_START CQ10640 Jack Zhang
int tn7dsl_dump_dsp_memory(char *input_str) //cph99
{
-@@ -430,101 +406,72 @@
+@@ -441,101 +419,74 @@ unsigned int shim_osGetCpuFrequency(void
return CpuFrequency;
}
-
- dgprintf(4,"shim_read_overlay_page\n");
- //dgprintf(4,"sec offset=%d, sec length =%d\n", secOffset, secLength);
--
++ const struct firmware *fw_entry;
++ size_t size;
+
- filp=filp_open(DSP_FIRMWARE_PATH,00,O_RDONLY);
- if(filp ==NULL)
- {
- set_fs(KERNEL_DS);
- filp->f_pos = secOffset;
- bytesRead = filp->f_op->read(filp,ptr,secLength,&filp->f_pos);
-+ const struct firmware *fw_entry;
-
+-
- set_fs(oldfs);
- /*
- * Close the file
+ device_unregister(&avsar);
+ return -1;
+ }
++ size = fw_entry->size;
+ device_unregister(&avsar);
-+ if(fw_entry->size > 0x5ffff) {
++ if(size > 0x5ffff) {
+ printk(KERN_ERR
-+ "avsar: Firmware too big (%d bytes)\n", fw_entry->size);
++ "avsar: Firmware too big (%d bytes)\n", size);
+ release_firmware(fw_entry);
+ return -1;
+ }
-+ memcpy(ptr, fw_entry->data, fw_entry->size);
++ memcpy(ptr, fw_entry->data, size);
+ release_firmware(fw_entry);
-+ return fw_entry->size;
++ return size;
+}
+
+unsigned int shim_read_overlay_page(void *ptr, unsigned int secOffset, unsigned int secLength)
+ }
+ memcpy(ptr + secOffset, fw_entry->data, secLength);
+ release_firmware(fw_entry);
-+ return fw_entry->size;
++ return secLength;
}
int shim_osLoadDebugFWImage(unsigned char *ptr)
-@@ -3367,7 +3314,7 @@
+@@ -3064,6 +3015,7 @@ int tn7dsl_init(void *priv)
+ int high_precision_selected = 0;
+ // UR8_MERGE_END CQ11054*
+
++ sema_init(&adsl_sem_overlay, 0);
+ /*
+ * start dsl
+ */
+@@ -3442,7 +3394,7 @@ static int dslmod_sysctl(ctl_table *ctl,
*/
if(write)
{
switch (ctl->ctl_name)
{
-@@ -3453,7 +3400,7 @@
+@@ -3528,14 +3480,14 @@ static int dslmod_sysctl(ctl_table *ctl,
else
{
len += sprintf(info+len, mod_req);
}
return ret;
}
-diff -urN sangam_atm-07.01.00.10/tn7sar.c sangam-atm-0.3/tn7sar.c
---- sangam_atm-07.01.00.10/tn7sar.c 2006-07-27 10:34:42.000000000 +0200
-+++ sangam-atm-0.3/tn7sar.c 2007-04-18 03:47:39.000000000 +0200
+
+
+ ctl_table dslmod_table[] = {
+- {DEV_DSLMOD, "dslmod", info, DSL_MOD_SIZE, 0644, NULL, &dslmod_sysctl}
++ {DEV_DSLMOD, "dslmod", info, DSL_MOD_SIZE, 0644, NULL, NULL, &dslmod_sysctl, &sysctl_string}
+ ,
+ {0}
+ };
+@@ -3558,8 +3510,7 @@ void tn7dsl_dslmod_sysctl_register(void)
+ if (initialized == 1)
+ return;
+
+- dslmod_sysctl_header = register_sysctl_table(dslmod_root_table, 1);
+- dslmod_root_table->child->de->owner = THIS_MODULE;
++ dslmod_sysctl_header = register_sysctl_table(dslmod_root_table);
+
+ /*
+ * set the defaults
+@@ -4821,4 +4772,4 @@ int tn7dsl_proc_PMDus(char* buf, char **
+ }
+ #endif //NO_ADV_STATS
+ #endif //TR69_PMD_IN
+-// * UR8_MERGE_END CQ11057 *
+\ No newline at end of file
++// * UR8_MERGE_END CQ11057 *
+--- a/tn7sar.c
++++ b/tn7sar.c
@@ -42,7 +42,6 @@
* UR8_MERGE_END CQ10700
*******************************************************************************/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
-@@ -51,7 +50,7 @@
+@@ -50,12 +49,13 @@
+ #include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
- #include <asm/io.h>
+-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
-+#include <asm/ar7/ar7.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
-
-diff -ur atm.old/tn7dsl.c atm.dev/tn7dsl.c
---- atm.old/tn7dsl.c 2007-05-24 17:36:33.865636000 +0200
-+++ atm.dev/tn7dsl.c 2007-05-24 17:41:32.094298496 +0200
-@@ -3430,8 +3430,7 @@
- if (initialized == 1)
- return;
-- dslmod_sysctl_header = register_sysctl_table(dslmod_root_table, 1);
-- dslmod_root_table->child->de->owner = THIS_MODULE;
-+ dslmod_sysctl_header = register_sysctl_table(dslmod_root_table);
++#include <asm/io.h>
++#include <asm/ar7/ar7.h>
++#include <asm/ar7/prom.h>
- /*
- * set the defaults
+ #define _CPHAL_AAL5
+ #define _CPHAL_SAR