ar7: remove unmaintained target

This target seems to have been unmaintained for quite a while, and not a
single tester for the (now outdated) kernel 4.14 patches has been found.
Remove the code and all the packages which are only used by this target.

To add this target to OpenWrt again port it to a recent and supported
kernel version.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
master
Adrian Schmutzler 4 years ago
parent 2a0e0dec02
commit 4bc92c1e75

@ -26,7 +26,7 @@ include $(INCLUDE_DIR)/package.mk
define KernelPackage/acx-mac80211
SUBMENU:=Wireless Drivers
TITLE:=ACX1xx mac80211 driver
DEPENDS:=@(PCI_SUPPORT||TARGET_ar7) @mipsel +kmod-mac80211
DEPENDS:=@PCI_SUPPORT @mipsel +kmod-mac80211
FILES:=$(PKG_BUILD_DIR)/acx-mac80211.ko
AUTOLOAD:=$(call AutoProbe,acx-mac80211)
MENU:=1

@ -1,22 +0,0 @@
menu "Configuration"
depends on (PACKAGE_kmod-sangam-atm-annex-a || PACKAGE_kmod-sangam-atm-annex-b)
choice
prompt "Firmware version"
default AR7_ATM_FW_VERSION_704
help
This option allows you to switch between firmware/driver versions which
might improve the DSL line speed.
config AR7_ATM_FW_VERSION_705
bool "D7.05.01.00"
config AR7_ATM_FW_VERSION_704
bool "D7.04.03.00"
config AR7_ATM_FW_VERSION_703
bool "D7.03.01.00"
endchoice
endmenu

@ -1,100 +0,0 @@
#
# Copyright (C) 2006-2014 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=sangam_atm
ifeq ($(CONFIG_AR7_ATM_FW_VERSION_705),y)
PKG_VERSION:=D7.05.01.00
PKG_HASH:=874b5baff92159e99cef0dfb839d6fdc124a46aef7374653064d29d9eee9a3c9
PKG_RELEASE:=R1
PATCH_DIR:=patches-$(PKG_VERSION)
endif
ifeq ($(CONFIG_AR7_ATM_FW_VERSION_704),y)
PKG_VERSION:=D7.04.03.00
PKG_HASH:=af2e203e4c86f9a86cdd07d172897b07e66a25379376e8da4c1b14816f86b58f
PKG_RELEASE:=R1
PATCH_DIR:=patches-$(PKG_VERSION)
endif
ifeq ($(CONFIG_AR7_ATM_FW_VERSION_703),y)
PKG_VERSION:=D7.03.01.00
PKG_HASH:=2d156164ef5abbe10ffb2400ada4cef2035df3ba2b3f866f00bdede489861c4d
PKG_RELEASE:=R2
PATCH_DIR:=patches-D7.04.03.00
endif
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE).tar.bz2
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
PKG_FLAGS:=nonshared
include $(INCLUDE_DIR)/package.mk
define KernelPackage/sangam-atm/Default
SUBMENU:=Network Devices
DEPENDS:=@TARGET_ar7_generic +kmod-atm
TITLE:=AR7 ADSL driver
FILES:=$(PKG_BUILD_DIR)/tiatm.ko
AUTOLOAD:=$(call AutoLoad,50,tiatm)
MENU:=1
endef
define KernelPackage/sangam-atm/config
source "$(SOURCE)/Config.in"
endef
define KernelPackage/sangam-atm-annex-a
$(call KernelPackage/sangam-atm/Default)
TITLE+= (Annex A, ADSL over POTS)
endef
define KernelPackage/sangam-atm-annex-a/description
The AR7 ADSL driver for Annex A (ADSL over POTS).
endef
define KernelPackage/sangam-atm-annex-a/config
$(call KernelPackage/sangam-atm/config)
endef
define KernelPackage/sangam-atm-annex-b
$(call KernelPackage/sangam-atm/Default)
TITLE+= (Annex B, ADSL over ISDN)
endef
define KernelPackage/sangam-atm-annex-b/description
The AR7 ADSL driver for Annex B (ADSL over ISDN).
endef
define KernelPackage/sangam-atm-annex-a/config
$(call KernelPackage/sangam-atm/config)
endef
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" \
$(KERNEL_MAKE_FLAGS) \
SUBDIRS="$(PKG_BUILD_DIR)" \
modules
endef
define KernelPackage/sangam-atm-annex-a/install
mkdir -p $(1)/lib/firmware
$(INSTALL_DATA) $(PKG_BUILD_DIR)/ar0700mp.bin $(1)/lib/firmware/
$(LN) ar0700mp.bin $(1)/lib/firmware/ar0700xx.bin
endef
define KernelPackage/sangam-atm-annex-b/install
mkdir -p $(1)/lib/firmware
$(INSTALL_DATA) $(PKG_BUILD_DIR)/ar0700db.bin $(1)/lib/firmware/
$(LN) ar0700db.bin $(1)/lib/firmware/ar0700xx.bin
endef
$(eval $(call KernelPackage,sangam-atm-annex-a))
$(eval $(call KernelPackage,sangam-atm-annex-b))

@ -1,11 +0,0 @@
--- a/aal5sar.h
+++ b/aal5sar.h
@@ -19,7 +19,7 @@
/** \namespace AAL5_Version
This documents version 01.07.2c of the AAL5 CPHAL.
*/
-const char *pszVersion_CPAAL5="CPAAL5 01.07.2c "__DATE__" "__TIME__;
+const char *pszVersion_CPAAL5="CPAAL5 01.07.2c ";
#include "cpsar_cpaal5.h"

@ -1,768 +0,0 @@
--- 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*/
- (HAL_RCB *)TempRcb->Eop = TempRcb; /* GSG +030430 */
+ TempRcb->Eop = TempRcb; /* GSG +030430 */
if(HalDev->NeedsCount < MAX_NEEDS) /* +MJH 030410 */
{ /* +MJH 030410 */
--- 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_support.h>
+#include "dev_host_interface.h"
+#include "dsl_hal_register.h"
+#include "dsl_hal_support.h"
#ifndef NO_ADV_STATS
-#include <dsl_hal_logtable.h>
+#include "dsl_hal_logtable.h"
#endif
-#include <dsl_hal_version.h>
+#include "dsl_hal_version.h"
// 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
*******************************************************************************/
-#include <dev_host_interface.h>
-#include <dsl_hal_register.h>
-#include <dsl_hal_support.h>
+#include "dev_host_interface.h"
+#include "dsl_hal_register.h"
+#include "dsl_hal_support.h"
#define NUM_READ_RETRIES 3
static unsigned int dslhal_support_adsl2ByteSwap32(unsigned int in32Bits);
--- 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.
*******************************************************************************/
-#include <dsl_hal_api.h>
+#include "dsl_hal_api.h"
#define virtual2Physical(a) (((int)a)&~0xe0000000)
/* External Function Prototype Declarations */
--- a/Makefile
+++ b/Makefile
@@ -1,18 +1,9 @@
-# File: drivers/atm/ti_evm3/Makefile
#
-# Makefile for the Texas Instruments EVM3 ADSL/ATM driver.
+# Makefile for the TIATM device driver.
#
-#
-# Copyright (c) 2000 Texas Instruments Incorporated.
-# Jeff Harrell (jharrell@telogy.com)
-# Viren Balar (vbalar@ti.com)
-# Victor Wells (vwells@telogy.com)
-#
-include $(TOPDIR)/Rules.make
-
-
-
-
-
-
+CONFIG_SANGAM_ATM=m
+#EXTRA_CFLAGS += -DEL -I. -DPOST_SILICON -DCOMMON_NSP -DCONFIG_LED_MODULE -DDEREGISTER_LED -DNO_ACT
+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
--- 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>
@@ -69,11 +68,14 @@
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
+
+#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_LICENSE("GPL");
MODULE_DESCRIPTION ("Tnetd73xx ATM Device Driver");
MODULE_AUTHOR ("Zhicheng Tang");
#endif
@@ -100,9 +103,9 @@ MODULE_AUTHOR ("Zhicheng Tang");
/*end of externs */
-#ifndef TI_STATIC_ALLOCATIONS
-#define TI_STATIC_ALLOCATIONS
-#endif
+//#ifndef TI_STATIC_ALLOCATIONS
+//#define TI_STATIC_ALLOCATIONS
+//#endif
#define tn7atm_kfree_skb(x) dev_kfree_skb(x)
@@ -114,7 +117,7 @@ static int EnableQoS = FALSE;
/* prototypes */
static int tn7atm_set_can_support_adsl2 (int can);
-static int tn7atm_open (struct atm_vcc *vcc, short vpi, int vci);
+static int tn7atm_open (struct atm_vcc *vcc);
static void tn7atm_close (struct atm_vcc *vcc);
@@ -257,13 +260,12 @@ static const struct atmdev_ops tn7atm_op
getsockopt: NULL,
setsockopt: NULL,
send: tn7atm_send,
- sg_send: NULL,
phy_put: NULL,
phy_get: NULL,
change_qos: tn7atm_change_qos,
};
-const char drv_proc_root_folder[] = "avalanche/";
+const char drv_proc_root_folder[] = "avalanche";
static struct proc_dir_entry *root_proc_dir_entry = NULL;
#define DRV_PROC_MODE 0644
static int proc_root_already_exists = TRUE;
@@ -559,56 +561,6 @@ static int turbodsl_check_priority_type(
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
- * Function: int tn7atm_walk_vccs(struct atm_dev *dev, short *vcc, int *vci)
- *
- * Description: retrieve VPI/VCI for connection
- *
- *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-static int tn7atm_walk_vccs (struct atm_vcc *vcc, short *vpi, int *vci)
-{
- struct atm_vcc *walk;
-
- /*
- * find a free VPI
- */
- if (*vpi == ATM_VPI_ANY)
- {
-
- for (*vpi = 0, walk = vcc->dev->vccs; walk; walk = walk->next)
- {
-
- if ((walk->vci == *vci) && (walk->vpi == *vpi))
- {
- (*vpi)++;
- walk = vcc->dev->vccs;
- }
- }
- }
-
- /*
- * find a free VCI
- */
- if (*vci == ATM_VCI_ANY)
- {
-
- for (*vci = ATM_NOT_RSV_VCI, walk = vcc->dev->vccs; walk;
- walk = walk->next)
- {
-
- if ((walk->vpi = *vpi) && (walk->vci == *vci))
- {
- *vci = walk->vci + 1;
- walk = vcc->dev->vccs;
- }
- }
- }
-
- return 0;
-}
-
-
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- *
* Function: int tn7atm_sar_irq(void)
*
* Description: tnetd73xx SAR interrupt.
@@ -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);
}
- avalanche_request_pacing (priv->sar_irq, ATM_SAR_INT_PACING_BLOCK_NUM,
- def_sar_inter_pace);
+/* avalanche_request_pacing (priv->sar_irq, ATM_SAR_INT_PACING_BLOCK_NUM,
+ def_sar_inter_pace);*/
/*
* Reigster Receive interrupt A
*/
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
-int tn7atm_open (struct atm_vcc *vcc, short vpi, int vci)
+int tn7atm_open (struct atm_vcc *vcc)
{
tn7atm_activate_vc_parm_t tn7atm_activate_vc_parm;
int rc;
//int flags;
+ tn7atm_activate_vc_parm.pcr = 0x20000;
+ tn7atm_activate_vc_parm.scr = 0x20000;
+ tn7atm_activate_vc_parm.mbs = 0x20000;
+ tn7atm_activate_vc_parm.cdvt = 10000;
dgprintf(1, "tn7atm_open()\n");
@@ -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;
-
- if ((vci == ATM_VCI_UNSPEC) || (vpi == ATM_VCI_UNSPEC))
+ if ((vcc->vci == ATM_VCI_UNSPEC) || (vcc->vpi == ATM_VCI_UNSPEC))
{
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
return -EBUSY;
}
- tn7atm_activate_vc_parm.vpi = vpi;
- tn7atm_activate_vc_parm.vci = vci;
+ tn7atm_activate_vc_parm.vpi = vcc->vpi;
+ tn7atm_activate_vc_parm.vci = vcc->vci;
- if ((vpi == CLEAR_EOC_VPI) && (vci == CLEAR_EOC_VCI))
+ if ((vcc->vpi == CLEAR_EOC_VPI) && (vcc->vci == CLEAR_EOC_VCI))
{
/* always use (max_dma_chan+1) for clear eoc */
tn7atm_activate_vc_parm.chan = EOC_DMA_CHAN;
@@ -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)
{
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
printk("tn7atm_open: Clear EOC channel (dmachan=%d) already in use.\n", tn7atm_activate_vc_parm.chan);
return -EBUSY;
}
@@ -925,7 +875,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
if (rc)
{
printk("tn7atm_open: failed to setup clear_eoc\n");
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
return -EBUSY;
}
tn7atm_set_lut(tn7atm_activate_vc_parm.priv,vcc, tn7atm_activate_vc_parm.chan);
@@ -934,17 +884,17 @@ int tn7atm_open (struct atm_vcc *vcc, sh
}
else /* PVC channel setup */
{
- if ((vpi==REMOTE_MGMT_VPI) && (vci==REMOTE_MGMT_VCI))
+ if ((vcc->vpi==REMOTE_MGMT_VPI) && (vcc->vci==REMOTE_MGMT_VCI))
{
tn7atm_activate_vc_parm.chan = 14; /* always use chan 14 for MII PVC-base romote mgmt */
}
else
{
- rc = tn7atm_lut_find(vpi, vci);
+ rc = tn7atm_lut_find(vcc->vpi, vcc->vci);
/* check to see whether PVC is opened or not */
if(ATM_NO_DMA_CHAN != rc)
{
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
printk("PVC already opened. dmachan = %d\n", rc);
return -EBUSY;
}
@@ -976,6 +926,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
tn7atm_activate_vc_parm.priority = 2;
break;
+#if 0
case ATM_VBR: /* Variable Bit Rate-Non RealTime*/
tn7atm_activate_vc_parm.qos = 1;
tn7atm_activate_vc_parm.priority = 1;
@@ -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;
+#endif
default:
tn7atm_activate_vc_parm.qos = 2;
@@ -1024,7 +976,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
if (rc < 0)
{
printk("failed to activate hw channel\n");
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
tn7atm_lut_clear(vcc, tn7atm_activate_vc_parm.chan);
//spin_unlock_irqrestore(&chan_init_lock, flags);
return -EBUSY;
@@ -1114,7 +1066,7 @@ void tn7atm_close (struct atm_vcc *vcc)
tn7atm_lut_clear (vcc, dmachan);
//spin_unlock_irqrestore (&closeLock, closeFlag);
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
dgprintf (1, "Leave tn7atm_close\n");
}
@@ -1528,8 +1480,7 @@ int tn7atm_receive (void *os_dev, int ch
* firewall is on */
dgprintf (3, "pushing the skb...\n");
-
- skb->stamp = vcc->timestamp = xtime;
+ __net_timestamp(skb);
xdump ((unsigned char *) skb->data, skb->len, 5);
@@ -1725,8 +1676,7 @@ static void tn7atm_exit (void)
kfree (dev->dev_data);
- // atm_dev_deregister (dev);
- shutdown_atm_dev (dev);
+ atm_dev_deregister (dev);
/*
* remove proc entries
@@ -1885,9 +1835,6 @@ static int __init tn7atm_detect (void)
/*
* Set up proc entry for atm stats
*/
- if (tn7atm_xlate_proc_name
- (drv_proc_root_folder, &root_proc_dir_entry, &residual))
- {
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);
@@ -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.
@@ -2479,7 +2425,5 @@ static int tn7atm_proc_qos_write(struct
return count;
}
-#ifdef MODULE
module_init (tn7atm_detect);
module_exit (tn7atm_exit);
-#endif /* MODULE */
--- a/tn7atm.h
+++ b/tn7atm.h
@@ -19,7 +19,8 @@
//#include "mips_support.h"
#include <linux/list.h>
-#include <linux/config.h>
+#define MIPS_EXCEPTION_OFFSET 8
+#define LNXINTNUM(x)((x) + MIPS_EXCEPTION_OFFSET)
#ifdef CONFIG_MODVERSIONS
#include <linux/modversions.h>
--- 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>
@@ -102,8 +101,6 @@
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
@@ -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"
@@ -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)
+{
+ printk("avalanche_request_pacing(%d, %u, %u); // not implemented\n", irq_nr, blk_num, pace_value);
+ return 0;
+}
+
+
int os_atoi(const char *pStr)
{
int MulNeg = (*pStr == '-' ? -1 : 1);
@@ -359,39 +370,6 @@ void dprintf (int uDbgLevel, char *szFmt
#endif
}
-int strcmp(const char *s1, const char *s2)
-{
-
- int size = strlen(s1);
-
- return(strncmp(s1, s2, size));
-}
-
-int strncmp(const char *s1, const char *s2, size_t size)
-{
- int i = 0;
- int max_size = (int)size;
-
- while((s1[i] != 0) && i < max_size)
- {
- if(s2[i] == 0)
- {
- return -1;
- }
- if(s1[i] != s2[i])
- {
- return 1;
- }
- i++;
- }
- if(s2[i] != 0)
- {
- return 1;
- }
-
- return 0;
-}
-
// * UR8_MERGE_START CQ10640 Jack Zhang
int tn7dsl_dump_dsp_memory(char *input_str) //cph99
{
@@ -441,101 +419,74 @@ unsigned int shim_osGetCpuFrequency(void
return CpuFrequency;
}
-int shim_osLoadFWImage(unsigned char *ptr)
+static void avsar_release(struct device *dev)
{
- unsigned int bytesRead;
- mm_segment_t oldfs;
- static struct file *filp;
- unsigned int imageLength=0x5ffff;
-
-
- dgprintf(4, "tn7dsl_read_dsp()\n");
-
- dgprintf(4,"open file %s\n", DSP_FIRMWARE_PATH);
-
- filp=filp_open(DSP_FIRMWARE_PATH,00,O_RDONLY);
- if(filp ==NULL)
- {
- printk("Failed: Could not open DSP binary file\n");
- return -1;
- }
-
- if (filp->f_dentry != NULL)
- {
- if (filp->f_dentry->d_inode != NULL)
- {
- printk ("DSP binary filesize = %d bytes\n",
- (int) filp->f_dentry->d_inode->i_size);
- imageLength = (unsigned int)filp->f_dentry->d_inode->i_size + 0x200;
- }
- }
-
- if (filp->f_op->read==NULL)
- return -1; /* File(system) doesn't allow reads */
-
- /*
- * Disable parameter checking
- */
- oldfs = get_fs();
- set_fs(KERNEL_DS);
-
- /*
- * Now read bytes from postion "StartPos"
- */
- filp->f_pos = 0;
-
- bytesRead = filp->f_op->read(filp,ptr,imageLength,&filp->f_pos);
-
- dgprintf(4,"file length = %d\n", bytesRead);
-
- set_fs(oldfs);
-
- /*
- * Close the file
- */
- fput(filp);
-
- return bytesRead;
+ printk(KERN_DEBUG "avsar firmware released\n");
}
+static struct device avsar = {
+ .bus_id = "vlynq",
+ .release = avsar_release,
+};
-unsigned int shim_read_overlay_page (void *ptr, unsigned int secOffset,
- unsigned int secLength)
+int shim_osLoadFWImage(unsigned char *ptr)
{
- unsigned int bytesRead;
- mm_segment_t oldfs;
- struct file *filp;
-
- 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)
- {
- printk("Failed: Could not open DSP binary file\n");
- return -1;
- }
-
- if (filp->f_op->read==NULL)
- return -1; /* File(system) doesn't allow reads */
-
- /*
- * Now read bytes from postion "StartPos"
- */
-
- if(filp->f_op->llseek)
- filp->f_op->llseek(filp,secOffset, 0);
- oldfs = get_fs();
- set_fs(KERNEL_DS);
- filp->f_pos = secOffset;
- bytesRead = filp->f_op->read(filp,ptr,secLength,&filp->f_pos);
-
- set_fs(oldfs);
- /*
- * Close the file
- */
- fput(filp);
- return bytesRead;
+ printk("requesting firmware image \"ar0700xx.bin\"\n");
+ if(device_register(&avsar) < 0) {
+ printk(KERN_ERR
+ "avsar: device_register fails\n");
+ return -1;
+ }
+
+ if(request_firmware(&fw_entry, "ar0700xx.bin", &avsar)) {
+ printk(KERN_ERR
+ "avsar: Firmware not available\n");
+ device_unregister(&avsar);
+ return -1;
+ }
+ size = fw_entry->size;
+ device_unregister(&avsar);
+ if(size > 0x5ffff) {
+ printk(KERN_ERR
+ "avsar: Firmware too big (%d bytes)\n", size);
+ release_firmware(fw_entry);
+ return -1;
+ }
+ memcpy(ptr, fw_entry->data, size);
+ release_firmware(fw_entry);
+ return size;
+}
+
+unsigned int shim_read_overlay_page(void *ptr, unsigned int secOffset, unsigned int secLength)
+{
+ const struct firmware *fw_entry;
+
+ printk("requesting firmware image \"ar0700xx.bin\"\n");
+ if(device_register(&avsar) < 0) {
+ printk(KERN_ERR
+ "avsar: device_register fails\n");
+ return -1;
+ }
+
+ if(request_firmware(&fw_entry, "ar0700xx.bin", &avsar)) {
+ printk(KERN_ERR
+ "avsar: Firmware not available\n");
+ device_unregister(&avsar);
+ return -1;
+ }
+ device_unregister(&avsar);
+ if(fw_entry->size > secLength) {
+ printk(KERN_ERR
+ "avsar: Firmware too big (%d bytes)\n", fw_entry->size);
+ release_firmware(fw_entry);
+ return -1;
+ }
+ memcpy(ptr + secOffset, fw_entry->data, secLength);
+ release_firmware(fw_entry);
+ return secLength;
}
int shim_osLoadDebugFWImage(unsigned char *ptr)
@@ -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)
{
- ret = proc_dostring(ctl, write, filp, buffer, lenp);
+ ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
switch (ctl->ctl_name)
{
@@ -3528,14 +3480,14 @@ static int dslmod_sysctl(ctl_table *ctl,
else
{
len += sprintf(info+len, mod_req);
- ret = proc_dostring(ctl, write, filp, buffer, lenp);
+ ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
}
return ret;
}
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/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
@@ -50,12 +49,13 @@
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
+#include <asm/io.h>
+#include <asm/ar7/ar7.h>
+#include <asm/ar7/prom.h>
#define _CPHAL_AAL5
#define _CPHAL_SAR

@ -1,37 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -566,7 +566,7 @@ static int turbodsl_check_priority_type(
* Description: tnetd73xx SAR interrupt.
*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-static void tn7atm_sar_irq (int irq, void *voiddev, struct pt_regs *regs)
+static irqreturn_t tn7atm_sar_irq (int irq, void *voiddev)
{
struct atm_dev *atmdev;
Tn7AtmPrivate *priv;
@@ -593,6 +593,7 @@ static void tn7atm_sar_irq (int irq, voi
#ifdef TIATM_INST_SUPP
psp_trace_par (ATM_DRV_SAR_ISR_EXIT, retval);
#endif
+ return IRQ_HANDLED;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -602,7 +603,7 @@ static void tn7atm_sar_irq (int irq, voi
* Description: tnetd73xx DSL interrupt.
*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-static void tn7atm_dsl_irq (int irq, void *voiddev, struct pt_regs *regs)
+static irqreturn_t tn7atm_dsl_irq (int irq, void *voiddev)
{
struct atm_dev *atmdev;
Tn7AtmPrivate *priv;
@@ -624,6 +625,8 @@ static void tn7atm_dsl_irq (int irq, voi
#ifdef TIATM_INST_SUPP
psp_trace_par (ATM_DRV_DSL_ISR_EXIT, retval);
#endif
+
+ return IRQ_HANDLED;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@ -1,11 +0,0 @@
--- a/tn7api.h
+++ b/tn7api.h
@@ -107,7 +107,7 @@ int tn7dsl_proc_dbg_rmsgs4(char* buf, ch
int tn7dsl_proc_write_stats(struct file *fp, const char * buf, unsigned long count, void * data);
int tn7dsl_proc_modem(char* buf, char **start, off_t offset, int count,int *eof, void *data);
-inline int tn7dsl_handle_interrupt(void);
+int tn7dsl_handle_interrupt(void);
void tn7dsl_dslmod_sysctl_register(void);
void tn7dsl_dslmod_sysctl_unregister(void);

@ -1,44 +0,0 @@
--- a/dsl_hal_advcfg.c
+++ b/dsl_hal_advcfg.c
@@ -36,9 +36,9 @@
* 05Jul05 0.00.09 CPH CQ9775: Change dslhal_advcfg_configDsTones input parameters & support for ADSL2+
* 24Jul05 0.00.10 CPH Fixed comments in dslhal_advcfg_configDsTones function header
*******************************************************************************/
-#include <dev_host_interface.h>
-#include <dsl_hal_register.h>
-#include <dsl_hal_support.h>
+#include "dev_host_interface.h"
+#include "dsl_hal_register.h"
+#include "dsl_hal_support.h"
/*****************************************************************************/
/* ACT API functions -- To be moved into their own independent module --RamP */
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,7 @@
CONFIG_SANGAM_ATM=m
#EXTRA_CFLAGS += -DEL -I. -DPOST_SILICON -DCOMMON_NSP -DCONFIG_LED_MODULE -DDEREGISTER_LED -DNO_ACT
-EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -DNO_ACT -D__NO__VOICE_PATCH__ -DEL
+#EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -DNO_ACT -D__NO__VOICE_PATCH__ -DEL
+EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -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
+tiatm-objs += cpsar.o aal5sar.o tn7sar.o tn7atm.o tn7dsl.o dsl_hal_api.o dsl_hal_support.o dsl_hal_advcfg.o
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -2869,6 +2869,14 @@ static int tn7dsl_set_dsl(void)
dslhal_api_setRateAdaptFlag(pIhw, os_atoi(ptr));
}
+ // set powercutback
+ ptr = NULL;
+ ptr = prom_getenv("powercutback");
+ if(ptr)
+ {
+ dslhal_advcfg_onOffPcb(pIhw, os_atoi(ptr));
+ }
+
// trellis
ptr = NULL;
ptr = prom_getenv("trellis");

@ -1,16 +0,0 @@
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -103,10 +103,10 @@ enum
#define RESERVED_OAM_CHANNEL 15
-#define AAL5_PARM "id=aal5, base = 0x03000000, offset = 0, int_line=15, ch0=[RxBufSize=1522; RxNumBuffers = 32; RxServiceMax = 50; TxServiceMax=50; TxNumBuffers=32; CpcsUU=0x5aa5; TxVc_CellRate=0x3000; TxVc_AtmHeader=0x00000640]"
-#define SAR_PARM "id=sar,base = 0x03000000, reset_bit = 9, offset = 0; UniNni = 0, PdspEnable = 1"
+#define CH0_PARM "RxBufSize=1522, RxNumBuffers=32, RxServiceMax=50, TxServiceMax=50, TxNumBuffers=32, CpcsUU=0x5aa5, TxVc_CellRate=0x3000, TxVc_AtmHeader=0x00000640"
+#define AAL5_PARM "id=aal5, base=0x03000000, offset=0, int_line=15, ch0=[" CH0_PARM "]"
+#define SAR_PARM "id=sar, base=0x03000000, reset_bit=9, offset=0; UniNni=0, PdspEnable=1, Debug=0xFFFFFFFF"
#define RESET_PARM "id=ResetControl, base=0xA8611600"
-#define CH0_PARM "RxBufSize=1522, RxNumBuffers = 32, RxServiceMax = 50, TxServiceMax=50, TxNumBuffers=32, CpcsUU=0x5aa5, TxVc_CellRate=0x3000, TxVc_AtmHeader=0x00000640"
#define MAX_PVC_TABLE_ENTRY 16

@ -1,11 +0,0 @@
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,7 @@
CONFIG_SANGAM_ATM=m
#EXTRA_CFLAGS += -DEL -I. -DPOST_SILICON -DCOMMON_NSP -DCONFIG_LED_MODULE -DDEREGISTER_LED -DNO_ACT
#EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -DNO_ACT -D__NO__VOICE_PATCH__ -DEL
-EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -D__NO__VOICE_PATCH__ -DEL
+#EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -D__NO__VOICE_PATCH__ -DEL
+EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -D__NO__VOICE_PATCH__ -DEL -DCPATM_TASKLET_MODE
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 dsl_hal_advcfg.o

@ -1,589 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -87,6 +87,146 @@
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION ("Tnetd73xx ATM Device Driver");
MODULE_AUTHOR ("Zhicheng Tang");
+
+int mp_sar_ipacemax = -1;
+module_param_named(ipacemax, mp_sar_ipacemax, int, 0);
+MODULE_PARM_DESC(ipacemax, "Interrupt pacing");
+
+char *mp_macc = NULL;
+module_param_named(macc, mp_macc, charp, 0);
+MODULE_PARM_DESC(macc, "MAC address");
+
+int mp_dsp_noboost = -1;
+module_param_named(dsp_noboost, mp_dsp_noboost, int, 0);
+MODULE_PARM_DESC(dsp_noboost, "Suppress DSP frequency boost");
+
+int mp_dsp_freq = -1;
+module_param_named(dsp_freq, mp_dsp_freq, int, 0);
+MODULE_PARM_DESC(dsp_freq, "Frequency to boost the DSP to");
+
+char *mp_featctl0 = NULL;
+module_param_named(featctl0, mp_featctl0, charp, 0);
+MODULE_PARM_DESC(featctl0, "DSL feature control 0");
+
+char *mp_featctl1 = NULL;
+module_param_named(featctl1, mp_featctl1, charp, 0);
+MODULE_PARM_DESC(featctl1, "DSL feature control 1");
+
+char *mp_phyctl0 = NULL;
+module_param_named(phyctl0, mp_phyctl0, charp, 0);
+MODULE_PARM_DESC(phyctl0, "DSL PHY control 0");
+
+char *mp_phyctl1 = NULL;
+module_param_named(phyctl1, mp_phyctl1, charp, 0);
+MODULE_PARM_DESC(phyctl1, "DSL PHY control 1");
+
+int mp_turbodsl = -1;
+module_param_named(turbodsl, mp_turbodsl, int, 0);
+MODULE_PARM_DESC(turbodsl, "Enable TurboDSL");
+
+int mp_sar_rxbuf = -1;
+module_param_named(sar_rxbuf, mp_sar_rxbuf, int, 0);
+MODULE_PARM_DESC(sar_rxbuf, "SAR RxBuf size");
+
+int mp_sar_rxmax = -1;
+module_param_named(sar_rxmax, mp_sar_rxmax, int, 0);
+MODULE_PARM_DESC(sar_rxmax, "SAR RxMax size");
+
+int mp_sar_txbuf = -1;
+module_param_named(sar_txbuf, mp_sar_txbuf, int, 0);
+MODULE_PARM_DESC(sar_txbuf, "SAR TxBuf size");
+
+int mp_sar_txmax = -1;
+module_param_named(sar_txmax, mp_sar_txmax, int, 0);
+MODULE_PARM_DESC(sar_txmax, "SAR TxMax size");
+
+char *mp_modulation = NULL;
+module_param_named(modulation, mp_modulation, charp, 0);
+MODULE_PARM_DESC(modulation, "Modulation");
+
+int mp_fine_gain_control = -1;
+module_param_named(fine_gain_control, mp_fine_gain_control, int, 0);
+MODULE_PARM_DESC(fine_gain_control, "Fine gain control");
+
+int mp_fine_gain_value = -1;
+module_param_named(fine_gain_value, mp_fine_gain_value, int, 0);
+MODULE_PARM_DESC(fine_gain_value, "Fine gain value");
+
+int mp_enable_margin_retrain = -1;
+module_param_named(enable_margin_retrain, mp_enable_margin_retrain, int, 0);
+MODULE_PARM_DESC(enable_margin_retrain, "Enable margin retrain");
+
+int mp_margin_threshold = -1;
+module_param_named(margin_threshold, mp_margin_threshold, int, 0);
+MODULE_PARM_DESC(margin_threshold, "Margin retrain treshold");
+
+int mp_enable_rate_adapt = -1;
+module_param_named(enable_rate_adapt, mp_enable_rate_adapt, int, 0);
+MODULE_PARM_DESC(enable_rate_adapt, "Enable rate adaption");
+
+int mp_powercutback = -1;
+module_param_named(powercutback, mp_powercutback, int, 0);
+MODULE_PARM_DESC(powercutback, "Enable / disable powercutback");
+
+int mp_trellis = -1;
+module_param_named(trellis, mp_trellis, int, 0);
+MODULE_PARM_DESC(trellis, "Enable / disable trellis coding");
+
+int mp_bitswap = -1;
+module_param_named(bitswap, mp_bitswap, int, 0);
+MODULE_PARM_DESC(bitswap, "Enable / disable bitswap");
+
+int mp_maximum_bits_per_carrier = -1;
+module_param_named(maximum_bits_per_carrier, mp_maximum_bits_per_carrier, int, 0);
+MODULE_PARM_DESC(maximum_bits_per_carrier, "Maximum bits per carrier");
+
+int mp_maximum_interleave_depth = -1;
+module_param_named(maximum_interleave_depth, mp_maximum_interleave_depth, int, 0);
+MODULE_PARM_DESC(maximum_interleave_depth, "Maximum interleave depth");
+
+int mp_pair_selection = -1;
+module_param_named(pair_selection, mp_pair_selection, int, 0);
+MODULE_PARM_DESC(pair_selection, "Pair selection");
+
+int mp_dgas_polarity = -1;
+module_param_named(dgas_polarity, mp_dgas_polarity, int, 0);
+MODULE_PARM_DESC(dgas_polarity, "DGAS polarity");
+
+int mp_los_alarm = -1;
+module_param_named(los_alarm, mp_los_alarm, int, 0);
+MODULE_PARM_DESC(los_alarm, "LOS alarm");
+
+char *mp_eoc_vendor_id = NULL;
+module_param_named(eoc_vendor_id, mp_eoc_vendor_id, charp, 0);
+MODULE_PARM_DESC(eoc_vendor_id, "EOC vendor id");
+
+int mp_eoc_vendor_revision = -1;
+module_param_named(eoc_vendor_revision, mp_eoc_vendor_revision, int, 0);
+MODULE_PARM_DESC(eoc_vendor_revision, "EOC vendor revision");
+
+char *mp_eoc_vendor_serialnum = NULL;
+module_param_named(eoc_vendor_serialnum, mp_eoc_vendor_serialnum, charp, 0);
+MODULE_PARM_DESC(eoc_vendor_serialnum, "EOC vendor serial number");
+
+char *mp_invntry_vernum = NULL;
+module_param_named(invntry_vernum, mp_invntry_vernum, charp, 0);
+MODULE_PARM_DESC(invntry_vernum, "Inventory revision number");
+
+int mp_dsl_bit_tmode = -1;
+module_param_named(dsl_bit_tmode, mp_dsl_bit_tmode, int, 0);
+MODULE_PARM_DESC(dsl_bit_tmode, "DSL bit training mode");
+
+int mp_high_precision = -1;
+module_param_named(high_precision, mp_high_precision, int, 0);
+MODULE_PARM_DESC(high_precision, "High precision");
+
+int mp_autopvc_enable = -1;
+module_param_named(autopvc_enable, mp_autopvc_enable, int, 0);
+MODULE_PARM_DESC(autopvc_enable, "Enable / disable automatic PVC");
+
+int mp_oam_lb_timeout = -1;
+module_param_named(oam_lb_timeout, mp_oam_lb_timeout, int, 0);
+MODULE_PARM_DESC(oam_lb_timeout, "OAM LB timeout");
#endif
#ifndef TRUE
@@ -655,9 +795,9 @@ static int __init tn7atm_irq_request (st
* interrupt pacing
*/
ptr = prom_getenv ("sar_ipacemax");
- if (ptr)
+ if (ptr || mp_sar_ipacemax != -1)
{
- def_sar_inter_pace = os_atoi (ptr);
+ def_sar_inter_pace = mp_sar_ipacemax == -1 ? os_atoi (ptr) : mp_sar_ipacemax;
}
/* avalanche_request_pacing (priv->sar_irq, ATM_SAR_INT_PACING_BLOCK_NUM,
def_sar_inter_pace);*/
@@ -795,9 +935,18 @@ static int __init tn7atm_get_ESI (struct
{
int i;
char esi_addr[ESI_LEN] = { 0x00, 0x00, 0x11, 0x22, 0x33, 0x44 };
- char *esiaddr_str = NULL;
+ char *esiaddr_str = mp_macc;
- esiaddr_str = prom_getenv ("maca");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("macdsl");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("macc");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("HWA_1");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("macb");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("maca");
if (!esiaddr_str)
{
@@ -1930,15 +2079,15 @@ static int tn7atm_autoDetectDspBoost (vo
//UR8_MERGE_END CQ10450*
cp = prom_getenv ("dsp_noboost");
- if (cp)
+ if (cp || mp_dsp_noboost != -1)
{
- dsp_noboost = os_atoi (cp);
+ dsp_noboost = mp_dsp_noboost == -1 ? os_atoi (cp) : mp_dsp_noboost;
}
cp = (char *) prom_getenv ("dsp_freq");
- if (cp)
+ if (cp || mp_dsp_freq != -1)
{
- dspfreq = os_atoi (cp);
+ dspfreq = mp_dsp_freq == -1 ? os_atoi (cp) : mp_dsp_freq;
if (dspfreq == 250)
{
boostDsp = 1;
@@ -2187,8 +2336,9 @@ static int __init tn7atm_init (struct at
// Inter-Op DSL phy Control
// Note the setting of _dsl_Feature_0 and _dsl_Feature_1 must before
// dslhal_api_dslStartup (in tn7dsl_init()).
- if ((ptr = prom_getenv ("DSL_FEATURE_CNTL_0")) != NULL)
+ if ((ptr = prom_getenv ("DSL_FEATURE_CNTL_0")) != NULL || mp_featctl0 != NULL)
{
+ if (mp_featctl0 != NULL) ptr = mp_featctl0;
if ((ptr[0] == '0') && (ptr[1] == 'x')) // skip 0x before pass to
// os_atoh
ptr += 2;
@@ -2196,8 +2346,9 @@ static int __init tn7atm_init (struct at
_dsl_Feature_0_defined = 1;
}
- if ((ptr = prom_getenv ("DSL_FEATURE_CNTL_1")) != NULL)
+ if ((ptr = prom_getenv ("DSL_FEATURE_CNTL_1")) != NULL || mp_featctl1 != NULL)
{
+ if (mp_featctl1 != NULL) ptr = mp_featctl1;
if ((ptr[0] == '0') && (ptr[1] == 'x')) // skip 0x before pass to
// os_atoh
ptr += 2;
@@ -2209,8 +2360,9 @@ static int __init tn7atm_init (struct at
// DSL phy Feature Control
// Note the setting of _dsl_PhyControl_0 and _dsl_PhyControl_1 must before
// dslhal_api_dslStartup (in tn7dsl_init()).
- if ((ptr = prom_getenv ("DSL_PHY_CNTL_0")) != NULL)
+ if ((ptr = prom_getenv ("DSL_PHY_CNTL_0")) != NULL || mp_phyctl0 != NULL)
{
+ if (mp_phyctl0 != NULL) ptr = mp_phyctl0;
if ((ptr[0] == '0') && (ptr[1] == 'x')) // skip 0x before pass to
// os_atoh
ptr += 2;
@@ -2218,8 +2370,9 @@ static int __init tn7atm_init (struct at
_dsl_PhyControl_0_defined = 1;
}
- if ((ptr = prom_getenv ("DSL_PHY_CNTL_1")) != NULL)
+ if ((ptr = prom_getenv ("DSL_PHY_CNTL_1")) != NULL || mp_phyctl1 != NULL)
{
+ if (mp_phyctl1 != NULL) ptr = mp_phyctl1;
if ((ptr[0] == '0') && (ptr[1] == 'x')) // skip 0x before pass to
// os_atoh
ptr += 2;
@@ -2247,9 +2400,9 @@ static int __init tn7atm_init (struct at
priv->bTurboDsl = 1;
// read config for turbo dsl
ptr = prom_getenv ("TurboDSL");
- if (ptr)
+ if (ptr || mp_turbodsl != -1)
{
- priv->bTurboDsl = os_atoi (ptr);
+ priv->bTurboDsl = mp_turbodsl == -1 ? os_atoi (ptr) : mp_turbodsl;
}
// @Added to make Rx buffer number & Service max configurable through
@@ -2257,30 +2410,30 @@ static int __init tn7atm_init (struct at
priv->sarRxBuf = RX_BUFFER_NUM;
ptr = NULL;
ptr = prom_getenv ("SarRxBuf");
- if (ptr)
+ if (ptr || mp_sar_rxbuf != -1)
{
- priv->sarRxBuf = os_atoi (ptr);
+ priv->sarRxBuf = mp_sar_rxbuf == -1 ? os_atoi (ptr) : mp_sar_rxbuf;
}
priv->sarRxMax = RX_SERVICE_MAX;
ptr = NULL;
ptr = prom_getenv ("SarRxMax");
- if (ptr)
+ if (ptr || mp_sar_rxmax != -1)
{
- priv->sarRxMax = os_atoi (ptr);
+ priv->sarRxMax = mp_sar_rxmax == -1 ? os_atoi (ptr) : mp_sar_rxmax;
}
priv->sarTxBuf = TX_BUFFER_NUM;
ptr = NULL;
ptr = prom_getenv ("SarTxBuf");
- if (ptr)
+ if (ptr || mp_sar_txbuf != -1)
{
- priv->sarTxBuf = os_atoi (ptr);
+ priv->sarTxBuf = mp_sar_txbuf == -1 ? os_atoi (ptr) : mp_sar_txbuf;
}
priv->sarTxMax = TX_SERVICE_MAX;
ptr = NULL;
ptr = prom_getenv ("SarTxMax");
- if (ptr)
+ if (ptr || mp_sar_txmax != -1)
{
- priv->sarTxMax = os_atoi (ptr);
+ priv->sarTxMax = mp_sar_txmax == -1 ? os_atoi (ptr) : mp_sar_txmax;
}
return 0;
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -136,6 +136,27 @@
#define NEW_TRAINING_VAL_T1413 128
#define NEW_TRAINING_VAL_MMODE 255
+extern char *mp_modulation;
+extern int mp_fine_gain_control;
+extern int mp_fine_gain_value;
+extern int mp_enable_margin_retrain;
+extern int mp_margin_threshold;
+extern int mp_enable_rate_adapt;
+extern int mp_powercutback;
+extern int mp_trellis;
+extern int mp_bitswap;
+extern int mp_maximum_bits_per_carrier;
+extern int mp_maximum_interleave_depth;
+extern int mp_pair_selection;
+extern int mp_dgas_polarity;
+extern int mp_los_alarm;
+extern char *mp_eoc_vendor_id;
+extern int mp_eoc_vendor_revision;
+extern char *mp_eoc_vendor_serialnum;
+extern char *mp_invntry_vernum;
+extern int mp_dsl_bit_tmode;
+extern int mp_high_precision;
+
int testflag1 = 0;
extern int __guDbgLevel;
extern sar_stat_t sarStat;
@@ -2818,84 +2839,80 @@ static int tn7dsl_set_dsl(void)
// modulation
ptr = prom_getenv("modulation");
- if (ptr)
+ if (ptr || mp_modulation != NULL)
{
- tn7dsl_set_modulation(ptr, FALSE);
+ tn7dsl_set_modulation(mp_modulation == NULL ? ptr : mp_modulation, FALSE);
}
// Fine Gains
ptr = prom_getenv("fine_gain_control");
- if (ptr)
+ if (ptr || mp_fine_gain_control != -1)
{
- value = os_atoi(ptr);
+ value = mp_fine_gain_control == -1 ? os_atoi(ptr) : mp_fine_gain_control;
tn7dsl_ctrl_fineGain(value);
}
ptr = NULL;
ptr = prom_getenv("fine_gain_value");
- if(ptr)
- tn7dsl_set_fineGainValue(os_atoh(ptr));
+ if(ptr || mp_fine_gain_value != -1)
+ tn7dsl_set_fineGainValue(mp_fine_gain_value == -1 ? os_atoh(ptr) : mp_fine_gain_value);
// margin retrain
ptr = NULL;
ptr = prom_getenv("enable_margin_retrain");
- if(ptr)
+ value = mp_enable_margin_retrain == -1 ? (ptr ? os_atoi(ptr) : 0) : mp_enable_margin_retrain;
+
+ if (value == 1)
{
- value = os_atoi(ptr);
- if(value == 1)
+ dslhal_api_setMarginMonitorFlags(pIhw, 0, 1);
+ bMarginRetrainEnable = 1;
+ //printk("enable showtime margin monitor.\n");
+
+ ptr = NULL;
+ ptr = prom_getenv("margin_threshold");
+ value = mp_margin_threshold == -1 ? (ptr ? os_atoi(ptr) : 0) : mp_margin_threshold;
+
+ if(value >= 0)
{
- dslhal_api_setMarginMonitorFlags(pIhw, 0, 1);
- bMarginRetrainEnable = 1;
- //printk("enable showtime margin monitor.\n");
- ptr = NULL;
- ptr = prom_getenv("margin_threshold");
- if(ptr)
- {
- value = os_atoi(ptr);
- //printk("Set margin threshold to %d x 0.5 db\n",value);
- if(value >= 0)
- {
- dslhal_api_setMarginThreshold(pIhw, value);
- bMarginThConfig=1;
- }
- }
+ dslhal_api_setMarginThreshold(pIhw, value);
+ bMarginThConfig=1;
}
}
// rate adapt
ptr = NULL;
ptr = prom_getenv("enable_rate_adapt");
- if(ptr)
+ if(ptr || mp_enable_rate_adapt != -1)
{
- dslhal_api_setRateAdaptFlag(pIhw, os_atoi(ptr));
+ dslhal_api_setRateAdaptFlag(pIhw, mp_enable_rate_adapt == -1 ? os_atoi(ptr) : mp_enable_rate_adapt);
}
// set powercutback
ptr = NULL;
ptr = prom_getenv("powercutback");
- if(ptr)
+ if(ptr || mp_powercutback != -1)
{
- dslhal_advcfg_onOffPcb(pIhw, os_atoi(ptr));
+ dslhal_advcfg_onOffPcb(pIhw, mp_powercutback == -1 ? os_atoi(ptr) : mp_powercutback);
}
// trellis
ptr = NULL;
ptr = prom_getenv("trellis");
- if(ptr)
+ if(ptr || mp_trellis != -1)
{
- dslhal_api_setTrellisFlag(pIhw, os_atoi(ptr));
- trellis = os_atoi(ptr);
+ trellis = mp_trellis == -1 ? os_atoi(ptr) : mp_trellis;
+ dslhal_api_setTrellisFlag(pIhw, trellis);
//printk("trellis=%d\n");
}
// bitswap
ptr = NULL;
ptr = prom_getenv("bitswap");
- if(ptr)
+ if(ptr || mp_bitswap != -1)
{
int offset[2] = {33, 0};
unsigned int bitswap;
- bitswap = os_atoi(ptr);
+ bitswap = mp_bitswap == -1 ? os_atoi(ptr) : mp_bitswap;
tn7dsl_generic_read(2, offset);
dslReg &= dslhal_support_byteSwap32(0xFFFFFF00);
@@ -2913,46 +2930,47 @@ static int tn7dsl_set_dsl(void)
// maximum bits per carrier
ptr = NULL;
ptr = prom_getenv("maximum_bits_per_carrier");
- if(ptr)
+ if(ptr || mp_maximum_bits_per_carrier != -1)
{
- dslhal_api_setMaxBitsPerCarrierUpstream(pIhw, os_atoi(ptr));
+ dslhal_api_setMaxBitsPerCarrierUpstream(pIhw, mp_maximum_bits_per_carrier == -1 ? os_atoi(ptr) : mp_maximum_bits_per_carrier);
}
// maximum interleave depth
ptr = NULL;
ptr = prom_getenv("maximum_interleave_depth");
- if(ptr)
+ if(ptr || mp_maximum_interleave_depth != -1)
{
- dslhal_api_setMaxInterleaverDepth(pIhw, os_atoi(ptr));
+ dslhal_api_setMaxInterleaverDepth(pIhw, mp_maximum_interleave_depth == -1 ? os_atoi(ptr) : mp_maximum_interleave_depth);
}
// inner and outer pairs
ptr = NULL;
ptr = prom_getenv("pair_selection");
- if(ptr)
+ if(ptr || mp_pair_selection != -1)
{
- dslhal_api_selectInnerOuterPair(pIhw, os_atoi(ptr));
+ dslhal_api_selectInnerOuterPair(pIhw, mp_pair_selection == -1 ? os_atoi(ptr) : mp_pair_selection);
}
ptr = NULL;
ptr = prom_getenv("dgas_polarity");
- if(ptr)
+ if(ptr || mp_dgas_polarity != -1)
{
dslhal_api_configureDgaspLpr(pIhw, 1, 1);
- dslhal_api_configureDgaspLpr(pIhw, 0, os_atoi(ptr));
+ dslhal_api_configureDgaspLpr(pIhw, 0, mp_dgas_polarity == -1 ? os_atoi(ptr) : mp_dgas_polarity);
}
ptr = NULL;
ptr = prom_getenv("los_alarm");
- if(ptr)
+ if(ptr || mp_los_alarm != -1)
{
- dslhal_api_disableLosAlarm(pIhw, os_atoi(ptr));
+ dslhal_api_disableLosAlarm(pIhw, mp_los_alarm == -1 ? os_atoi(ptr) : mp_los_alarm);
}
ptr = NULL;
ptr = prom_getenv("eoc_vendor_id");
- if(ptr)
+ if(ptr || mp_eoc_vendor_id != NULL)
{
+ ptr = mp_eoc_vendor_id == NULL ? ptr : mp_eoc_vendor_id;
for(i=0;i<8;i++)
{
tmp[0]=ptr[i*2];
@@ -2977,26 +2995,26 @@ static int tn7dsl_set_dsl(void)
}
ptr = NULL;
ptr = prom_getenv("eoc_vendor_revision");
- if(ptr)
+ if(ptr || mp_eoc_vendor_revision != -1)
{
- value = os_atoi(ptr);
+ value = mp_eoc_vendor_revision == -1 ? os_atoi(ptr) : mp_eoc_vendor_revision;
//printk("eoc rev=%d\n", os_atoi(ptr));
dslhal_api_setEocRevisionNumber(pIhw, (char *)&value);
}
ptr = NULL;
ptr = prom_getenv("eoc_vendor_serialnum");
- if(ptr)
+ if(ptr || mp_eoc_vendor_serialnum != NULL)
{
- dslhal_api_setEocSerialNumber(pIhw, ptr);
+ dslhal_api_setEocSerialNumber(pIhw, mp_eoc_vendor_serialnum == NULL ? ptr : mp_eoc_vendor_serialnum);
}
// CQ10037 Added invntry_vernum environment variable to be able to set version number in ADSL2, ADSL2+ modes.
ptr = NULL;
ptr = prom_getenv("invntry_vernum");
- if(ptr)
+ if(ptr || mp_invntry_vernum != NULL)
{
- dslhal_api_setEocRevisionNumber(pIhw, ptr);
+ dslhal_api_setEocRevisionNumber(pIhw, mp_invntry_vernum == NULL ? ptr : mp_invntry_vernum);
}
return 0;
@@ -3041,7 +3059,7 @@ int tn7dsl_init(void *priv)
* backward compatibility.
*/
cp = prom_getenv("DSL_BIT_TMODE");
- if (cp)
+ if (cp || mp_dsl_bit_tmode != -1)
{
printk("%s : env var DSL_BIT_TMODE is set\n", __FUNCTION__);
/*
@@ -3070,9 +3088,9 @@ int tn7dsl_init(void *priv)
// UR8_MERGE_START CQ11054 Jack Zhang
cp = prom_getenv("high_precision");
- if (cp)
+ if (cp || mp_high_precision != -1)
{
- high_precision_selected = os_atoi(cp);
+ high_precision_selected = mp_high_precision == -1 ? os_atoi(cp) : mp_high_precision;
}
if ( high_precision_selected)
{
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -74,6 +74,8 @@ typedef void OS_SETUP;
/* PDSP Firmware files */
#include "tnetd7300_sar_firm.h"
+extern int mp_oam_lb_timeout;
+extern int mp_autopvc_enable;
enum
{
@@ -817,9 +819,9 @@ int tn7sar_setup_oam_channel(Tn7AtmPriva
pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
pauto_pvc = prom_getenv("autopvc_enable");
- if(pauto_pvc) //CQ10273
+ if(pauto_pvc || mp_autopvc_enable != -1) //CQ10273
{
- auto_pvc =tn7sar_strtoul(pauto_pvc, NULL, 10);
+ auto_pvc = mp_autopvc_enable == -1 ? tn7sar_strtoul(pauto_pvc, NULL, 10) : mp_autopvc_enable;
}
memset(&chInfo, 0xff, sizeof(chInfo));
@@ -985,9 +987,9 @@ int tn7sar_init(struct atm_dev *dev, Tn7
/* read in oam lb timeout value */
pLbTimeout = prom_getenv("oam_lb_timeout");
- if(pLbTimeout)
+ if(pLbTimeout || mp_oam_lb_timeout != -1)
{
- lbTimeout =tn7sar_strtoul(pLbTimeout, NULL, 10);
+ lbTimeout = mp_oam_lb_timeout == -1 ? tn7sar_strtoul(pLbTimeout, NULL, 10) : mp_oam_lb_timeout;
oamLbTimeout = lbTimeout;
pHalFunc->Control(pHalDev,"OamLbTimeout", "Set", &lbTimeout);
}

@ -1,19 +0,0 @@
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -446,7 +446,6 @@ static void avsar_release(struct device
}
static struct device avsar = {
- .bus_id = "vlynq",
.release = avsar_release,
};
@@ -455,6 +454,8 @@ int shim_osLoadFWImage(unsigned char *pt
const struct firmware *fw_entry;
size_t size;
+ dev_set_name(&avsar, "avsar");
+
printk("requesting firmware image \"ar0700xx.bin\"\n");
if(device_register(&avsar) < 0) {
printk(KERN_ERR

@ -1,39 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -73,8 +73,8 @@
#include <linux/ctype.h>
#include <asm/io.h>
-#include <asm/ar7/ar7.h>
-#include <asm/ar7/prom.h>
+#include <asm/mach-ar7/ar7.h>
+#include <asm/mach-ar7/prom.h>
#include "dsl_hal_api.h"
#include "tn7atm.h"
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -111,8 +111,8 @@
#include <linux/firmware.h>
#include <asm/io.h>
-#include <asm/ar7/ar7.h>
-#include <asm/ar7/prom.h>
+#include <asm/mach-ar7/ar7.h>
+#include <asm/mach-ar7/prom.h>
/* Modules specific header files */
#include "tn7atm.h"
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -54,8 +54,8 @@
#include <linux/ctype.h>
#include <asm/io.h>
-#include <asm/ar7/ar7.h>
-#include <asm/ar7/prom.h>
+#include <asm/mach-ar7/ar7.h>
+#include <asm/mach-ar7/prom.h>
#define _CPHAL_AAL5
#define _CPHAL_SAR

@ -1,92 +0,0 @@
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -197,7 +197,7 @@ led_reg_t ledreg[2];
static struct led_funcs ledreg[2];
#endif
-#define DEV_DSLMOD CTL_UNNUMBERED
+#define DEV_DSLMOD 0
#define MAX_STR_SIZE 256
#define DSL_MOD_SIZE 256
@@ -333,8 +333,8 @@ static void tn7dsl_chng_modulation(void*
static unsigned int tn7dsl_set_modulation(void* data, int flag);
static void tn7dsl_ctrl_fineGain(int value);
static void tn7dsl_set_fineGainValue(int value);
-static int dslmod_sysctl (ctl_table * ctl, int write, struct file *filp,
- void *buffer, size_t * lenp);
+static int dslmod_sysctl (ctl_table * ctl, int write, void *buffer,
+ size_t * lenp, loff_t *ppos);
static void tn7dsl_register_dslss_led(void);
void tn7dsl_dslmod_sysctl_register(void);
void tn7dsl_dslmod_sysctl_unregister(void);
@@ -3398,8 +3398,8 @@ unsigned int tn7dsl_get_memory(unsigned
-static int dslmod_sysctl(ctl_table *ctl, int write, struct file * filp,
- void *buffer, size_t *lenp)
+static int dslmod_sysctl(ctl_table *ctl, int write, void *buffer,
+ size_t *lenp, loff_t *ppos)
{
char *ptr;
int ret, len = 0;
@@ -3411,7 +3411,7 @@ static int dslmod_sysctl(ctl_table *ctl,
char mod_req[16] = { '\t' };
char fst_byt;
- if (!*lenp || (filp->f_pos && !write))
+ if (!*lenp || (*ppos && !write))
{
*lenp = 0;
return 0;
@@ -3421,9 +3421,9 @@ static int dslmod_sysctl(ctl_table *ctl,
*/
if(write)
{
- ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
+ ret = proc_dostring(ctl, write, buffer, lenp, ppos);
- switch (ctl->ctl_name)
+ switch ((long)ctl->extra2)
{
case DEV_DSLMOD:
ptr = strpbrk(info, " \t");
@@ -3507,14 +3507,21 @@ static int dslmod_sysctl(ctl_table *ctl,
else
{
len += sprintf(info+len, mod_req);
- ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
+ ret = proc_dostring(ctl, write, buffer, lenp, ppos);
}
return ret;
}
ctl_table dslmod_table[] = {
- {DEV_DSLMOD, "dslmod", info, DSL_MOD_SIZE, 0644, NULL, NULL, &dslmod_sysctl, &sysctl_string}
+ {
+ .procname = "dslmod",
+ .data = info,
+ .maxlen = DSL_MOD_SIZE,
+ .mode = 0644,
+ .proc_handler = &dslmod_sysctl,
+ .extra2 = (void *)DEV_DSLMOD,
+ }
,
{0}
};
@@ -3522,7 +3529,12 @@ ctl_table dslmod_table[] = {
/* Make sure that /proc/sys/dev is there */
ctl_table dslmod_root_table[] = {
#ifdef CONFIG_PROC_FS
- {CTL_DEV, "dev", NULL, 0, 0555, dslmod_table}
+ {
+ .procname = "dev",
+ .maxlen = 0,
+ .mode = 0555,
+ .child = dslmod_table,
+ }
,
#endif /* CONFIG_PROC_FS */
{0}

@ -1,32 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -1870,7 +1870,7 @@ static int __init tn7atm_register (Tn7At
dgprintf (4, "device %s being registered\n", priv->name);
- mydev = atm_dev_register (priv->proc_name, &tn7atm_ops, -1, NULL);
+ mydev = atm_dev_register (priv->proc_name, NULL, &tn7atm_ops, -1, NULL);
if (mydev == NULL)
{
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -453,13 +453,16 @@ int shim_osLoadFWImage(unsigned char *pt
{
const struct firmware *fw_entry;
size_t size;
+ int ret;
dev_set_name(&avsar, "avsar");
printk("requesting firmware image \"ar0700xx.bin\"\n");
- if(device_register(&avsar) < 0) {
+ dev_set_name(&avsar, "avsar");
+ ret = device_register(&avsar);
+ if (ret < 0) {
printk(KERN_ERR
- "avsar: device_register fails\n");
+ "avsar: device_register fails, error%i\n", ret);
return -1;
}

@ -1,33 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -67,7 +67,7 @@
#include <linux/atmdev.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
-#include <linux/smp_lock.h>
+#include <linux/interrupt.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -48,7 +48,7 @@
#include <linux/atmdev.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
-#include <linux/smp_lock.h>
+#include <linux/interrupt.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -100,7 +100,7 @@
#include <linux/atmdev.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
-#include <linux/smp_lock.h>
+#include <linux/interrupt.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>

@ -1,44 +0,0 @@
--- a/cp_sar_reg.h
+++ b/cp_sar_reg.h
@@ -214,4 +214,4 @@
/* END OF FILE */
-#endif _INC_SAR_REG
+#endif
--- a/tn7api.h
+++ b/tn7api.h
@@ -172,4 +172,4 @@ void tn7sar_get_sar_firmware_version(uns
extern struct file_operations tn7sar_proc_oam_ping_fops;
extern struct file_operations tn7sar_proc_pvc_table_fops;
int tn7sar_tx_flush(void *privContext, int chan, int queue, int skip);
-#endif __SGAPI_H
+#endif
--- a/tn7atm.h
+++ b/tn7atm.h
@@ -276,4 +276,4 @@ typedef struct
#define PHYS_TO_K1(X) (PHYS_ADDR(X)|K1BASE)
#endif
-#endif __TN7ATM_H
+#endif
--- a/dsl_hal_api.h
+++ b/dsl_hal_api.h
@@ -2448,7 +2448,7 @@ unsigned int dslhal_api_getHLINpsds(tids
*
********************************************************************************************/
-unsigned int dslhal_api_getHighPrecision();
+unsigned int dslhal_api_getHighPrecision(void);
/********************************************************************************************
* FUNCTION NAME: void dslhal_api_setHighPrecision
@@ -2459,7 +2459,7 @@ unsigned int dslhal_api_getHighPrecision
* Return: None
********************************************************************************************/
-void dslhal_api_setHighPrecision();
+void dslhal_api_setHighPrecision(void);
// UR8_MERGE_END CQ11054*
#ifdef INTERNAL_BUILD

@ -1,38 +0,0 @@
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -333,7 +333,7 @@ static void tn7dsl_chng_modulation(void*
static unsigned int tn7dsl_set_modulation(void* data, int flag);
static void tn7dsl_ctrl_fineGain(int value);
static void tn7dsl_set_fineGainValue(int value);
-static int dslmod_sysctl (ctl_table * ctl, int write, void *buffer,
+static int dslmod_sysctl (struct ctl_table * ctl, int write, void *buffer,
size_t * lenp, loff_t *ppos);
static void tn7dsl_register_dslss_led(void);
void tn7dsl_dslmod_sysctl_register(void);
@@ -3308,7 +3308,7 @@ unsigned int tn7dsl_get_memory(unsigned
-static int dslmod_sysctl(ctl_table *ctl, int write, void *buffer,
+static int dslmod_sysctl(struct ctl_table *ctl, int write, void *buffer,
size_t *lenp, loff_t *ppos)
{
char *ptr;
@@ -3423,7 +3423,7 @@ static int dslmod_sysctl(ctl_table *ctl,
}
-ctl_table dslmod_table[] = {
+struct ctl_table dslmod_table[] = {
{
.procname = "dslmod",
.data = info,
@@ -3437,7 +3437,7 @@ ctl_table dslmod_table[] = {
};
/* Make sure that /proc/sys/dev is there */
-ctl_table dslmod_root_table[] = {
+struct ctl_table dslmod_root_table[] = {
#ifdef CONFIG_PROC_FS
{
.procname = "dev",

@ -1,20 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -777,7 +777,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, IRQF_DISABLED, "SAR ", dev))
+ if (request_irq (priv->sar_irq, tn7atm_sar_irq, 0, "SAR ", dev))
printk ("Could not register tn7atm_sar_irq\n");
/*
@@ -795,7 +795,7 @@ static int __init tn7atm_irq_request (st
* Reigster Receive interrupt A
*/
priv->dsl_irq = LNXINTNUM (ATM_DSL_INT); /* Interrupt line # */
- if (request_irq (priv->dsl_irq, tn7atm_dsl_irq, IRQF_DISABLED, "DSL ", dev))
+ if (request_irq (priv->dsl_irq, tn7atm_dsl_irq, 0, "DSL ", dev))
printk ("Could not register tn7atm_dsl_irq\n");
/***** VRB Tasklet Mode ****/

@ -1,63 +0,0 @@
--- a/cpswhal_cpsar.h
+++ b/cpswhal_cpsar.h
@@ -430,10 +430,10 @@ typedef struct
int (*DeviceFindInfo)(int Inst, const char *DeviceName, void *DeviceInfo);
int (*DeviceFindParmUint)(void *DeviceInfo, const char *Parm, bit32u *Value);
int (*DeviceFindParmValue)(void *DeviceInfo, const char *Parm, void *Value);
- void (*Free)(void *MemPtr);
+ void (*Free)(const void *MemPtr);
void (*FreeRxBuffer)(OS_RECEIVEINFO *OsReceiveInfo, void *MemPtr);
- void (*FreeDev)(void *MemPtr);
- void (*FreeDmaXfer)(void *MemPtr);
+ void (*FreeDev)(const void *MemPtr);
+ void (*FreeDmaXfer)(const void *MemPtr);
void (*IsrRegister)(OS_DEVICE *OsDev, int (*halISR)(HAL_DEVICE*, int*), int InterruptBit);
void (*IsrUnRegister)(OS_DEVICE *OsDev, int InterruptBit);
void* (*Malloc)(bit32u size);
--- a/cpswhal_cpaal5.h
+++ b/cpswhal_cpaal5.h
@@ -430,10 +430,10 @@ typedef struct
int (*DeviceFindInfo)(int Inst, const char *DeviceName, void *DeviceInfo);
int (*DeviceFindParmUint)(void *DeviceInfo, const char *Parm, bit32u *Value);
int (*DeviceFindParmValue)(void *DeviceInfo, const char *Parm, void *Value);
- void (*Free)(void *MemPtr);
+ void (*Free)(const void *MemPtr);
void (*FreeRxBuffer)(OS_RECEIVEINFO *OsReceiveInfo, void *MemPtr);
- void (*FreeDev)(void *MemPtr);
- void (*FreeDmaXfer)(void *MemPtr);
+ void (*FreeDev)(const void *MemPtr);
+ void (*FreeDmaXfer)(const void *MemPtr);
void (*IsrRegister)(OS_DEVICE *OsDev, int (*halISR)(HAL_DEVICE*, int*), int InterruptBit);
void (*IsrUnRegister)(OS_DEVICE *OsDev, int InterruptBit);
void* (*Malloc)(bit32u size);
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -2481,7 +2481,7 @@ static int tn7atm_proc_qos_read(struct s
return 0;
}
-static int tn7atm_proc_qos_write(struct file *fp, const char *buf, unsigned long count, void *data)
+static int tn7atm_proc_qos_write(struct file *fp, const char *buf, size_t count, loff_t *data)
{
char local_buf[32];
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -1712,7 +1712,7 @@ static int tn7dsl_proc_stats_open(struct
return single_open(file, tn7dsl_proc_stats, PDE_DATA(inode));
}
-int tn7dsl_proc_write_stats (struct file *fp, const char *buf, unsigned long count, void *data);
+int tn7dsl_proc_write_stats (struct file *fp, const char *buf, size_t count, loff_t *data);
struct file_operations tn7dsl_proc_stats_fops = {
.owner = THIS_MODULE,
@@ -4256,7 +4256,7 @@ int tn7dsl_generic_write( int offsetnum,
}
int tn7dsl_proc_write_stats (struct file *fp, const char *buf,
- unsigned long count, void *data)
+ size_t count, loff_t *data)
{
char local_buf[31];
int ret_val = 0;

@ -1,51 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -1149,7 +1149,7 @@ void tn7atm_close (struct atm_vcc *vcc)
Tn7AtmPrivate *priv;
int dmachan;
spinlock_t closeLock;
- unsigned int closeFlag;
+ unsigned long closeFlag;
int rc;
priv = (Tn7AtmPrivate *) vcc->dev->dev_data;
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -620,7 +620,7 @@ unsigned int shim_osClockTick(void)
return jiffies;
}
-int flags;
+unsigned long flags;
spinlock_t shimLock;
void shim_osCriticalEnter(void)
@@ -3433,7 +3433,7 @@ struct ctl_table dslmod_table[] = {
.extra2 = (void *)DEV_DSLMOD,
}
,
- {0}
+ { }
};
/* Make sure that /proc/sys/dev is there */
@@ -3447,7 +3447,7 @@ struct ctl_table dslmod_root_table[] = {
}
,
#endif /* CONFIG_PROC_FS */
- {0}
+ { }
};
static struct ctl_table_header *dslmod_sysctl_header;
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -1208,7 +1208,7 @@ int tn7sar_deactivate_vc(Tn7AtmPrivate *
HAL_FUNCTIONS *pHalFunc;
HAL_DEVICE *pHalDev;
int rc;
- int flags;
+ unsigned long flags;
//dgprintf(4, "tn7sar_deactivate_vc\n");
//printk("tn7sar_deactivate_vc entered\n");

@ -1,11 +0,0 @@
--- a/aal5sar.h
+++ b/aal5sar.h
@@ -19,7 +19,7 @@
/** \namespace AAL5_Version
This documents version 01.07.2c of the AAL5 CPHAL.
*/
-const char *pszVersion_CPAAL5="CPAAL5 01.07.2c "__DATE__" "__TIME__;
+const char *pszVersion_CPAAL5="CPAAL5 01.07.2c ";
#include "cpsar_cpaal5.h"

@ -1,808 +0,0 @@
--- a/cppi_cpaal5.c
+++ b/cppi_cpaal5.c
@@ -360,7 +360,7 @@ static int halRxReturn(HAL_RECEIVEINFO *
{
/* malloc failed, add this RCB to Needs Buffer List */
TempRcb->FragCount = 1; /*MJH+030417*/
- (HAL_RCB *)TempRcb->Eop = TempRcb; /* GSG +030430 */
+ TempRcb->Eop = TempRcb; /* GSG +030430 */
if(HalDev->NeedsCount < MAX_NEEDS) /* +MJH 030410 */
{ /* +MJH 030410 */
--- a/dsl_hal_api.c
+++ b/dsl_hal_api.c
@@ -273,15 +273,15 @@
* 09/15/07 CPH CQ11466 Added EFM support
* 09/27/07 EYin CQ11929: Added NFEC/INP/Lp/Rp reporting for only ADSL2/2+ mode.
******************************************************************************/
-#include <dev_host_interface.h>
-#include <dsl_hal_register.h>
-#include <dsl_hal_support.h>
+#include "dev_host_interface.h"
+#include "dsl_hal_register.h"
+#include "dsl_hal_support.h"
#ifndef NO_ADV_STATS
-#include <dsl_hal_logtable.h>
+#include "dsl_hal_logtable.h"
#endif
-#include <dsl_hal_version.h>
+#include "dsl_hal_version.h"
// 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
@@ -142,9 +142,9 @@
* UR8_MERGE_START_END CQ11922 Tim
* 04Sep07 0.14.00 Tim CQ11922: Added support for new scratchram for INP NDR tables
*******************************************************************************/
-#include <dev_host_interface.h>
-#include <dsl_hal_register.h>
-#include <dsl_hal_support.h>
+#include "dev_host_interface.h"
+#include "dsl_hal_register.h"
+#include "dsl_hal_support.h"
#define NUM_READ_RETRIES 3
static unsigned int dslhal_support_adsl2ByteSwap32(unsigned int in32Bits);
--- 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.
*******************************************************************************/
-#include <dsl_hal_api.h>
+#include "dsl_hal_api.h"
#define virtual2Physical(a) (((int)a)&~0xe0000000)
/* External Function Prototype Declarations */
--- a/Makefile
+++ b/Makefile
@@ -1,18 +1,9 @@
-# File: drivers/atm/ti_evm3/Makefile
#
-# Makefile for the Texas Instruments EVM3 ADSL/ATM driver.
+# Makefile for the TIATM device driver.
#
-#
-# Copyright (c) 2000 Texas Instruments Incorporated.
-# Jeff Harrell (jharrell@telogy.com)
-# Viren Balar (vbalar@ti.com)
-# Victor Wells (vwells@telogy.com)
-#
-include $(TOPDIR)/Rules.make
-
-
-
-
-
-
+CONFIG_SANGAM_ATM=m
+#EXTRA_CFLAGS += -DEL -I. -DPOST_SILICON -DCOMMON_NSP -DCONFIG_LED_MODULE -DDEREGISTER_LED -DNO_ACT
+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
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -66,7 +66,6 @@
* 09/18/07 CPH CQ11466 Added EFM Support
*********************************************************************************************/
-#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
@@ -74,11 +73,14 @@
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
+
+#include <asm/io.h>
+#include <asm/ar7/ar7.h>
+#include <asm/ar7/prom.h>
+
#include "dsl_hal_api.h"
#ifdef AR7_EFM
#include "tn7efm.h"
@@ -90,6 +92,7 @@
#include "dsl_hal_register.h"
#ifdef MODULE
+MODULE_LICENSE("GPL");
MODULE_DESCRIPTION ("Tnetd73xx ATM Device Driver");
MODULE_AUTHOR ("Zhicheng Tang");
#endif
@@ -108,9 +111,9 @@ MODULE_AUTHOR ("Zhicheng Tang");
/*end of externs */
-#ifndef TI_STATIC_ALLOCATIONS
-#define TI_STATIC_ALLOCATIONS
-#endif
+//#ifndef TI_STATIC_ALLOCATIONS
+//#define TI_STATIC_ALLOCATIONS
+//#endif
#define tn7atm_kfree_skb(x) dev_kfree_skb(x)
@@ -135,7 +138,7 @@ static int EnableQoS = FALSE;
/* prototypes */
static int tn7atm_set_can_support_adsl2 (int can);
-static int tn7atm_open (struct atm_vcc *vcc, short vpi, int vci);
+static int tn7atm_open (struct atm_vcc *vcc);
void tn7atm_close (struct atm_vcc *vcc);
@@ -298,13 +301,12 @@ static const struct atmdev_ops tn7atm_op
getsockopt: NULL,
setsockopt: NULL,
send: tn7atm_send,
- sg_send: NULL,
phy_put: NULL,
phy_get: NULL,
change_qos: tn7atm_change_qos,
};
-const char drv_proc_root_folder[] = "avalanche/";
+const char drv_proc_root_folder[] = "avalanche";
static struct proc_dir_entry *root_proc_dir_entry = NULL;
#define DRV_PROC_MODE 0644
static int proc_root_already_exists = TRUE;
@@ -626,56 +628,6 @@ static int turbodsl_check_priority_type(
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
- * Function: int tn7atm_walk_vccs(struct atm_dev *dev, short *vcc, int *vci)
- *
- * Description: retrieve VPI/VCI for connection
- *
- *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-static int tn7atm_walk_vccs (struct atm_vcc *vcc, short *vpi, int *vci)
-{
- struct atm_vcc *walk;
-
- /*
- * find a free VPI
- */
- if (*vpi == ATM_VPI_ANY)
- {
-
- for (*vpi = 0, walk = vcc->dev->vccs; walk; walk = walk->next)
- {
-
- if ((walk->vci == *vci) && (walk->vpi == *vpi))
- {
- (*vpi)++;
- walk = vcc->dev->vccs;
- }
- }
- }
-
- /*
- * find a free VCI
- */
- if (*vci == ATM_VCI_ANY)
- {
-
- for (*vci = ATM_NOT_RSV_VCI, walk = vcc->dev->vccs; walk;
- walk = walk->next)
- {
-
- if ((walk->vpi = *vpi) && (walk->vci == *vci))
- {
- *vci = walk->vci + 1;
- walk = vcc->dev->vccs;
- }
- }
- }
-
- return 0;
-}
-
-
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- *
* Function: int tn7atm_sar_irq(void)
*
* Description: tnetd73xx SAR interrupt.
@@ -766,7 +718,7 @@ static int __init tn7atm_irq_request (st
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");
/*
@@ -777,8 +729,8 @@ static int __init tn7atm_irq_request (st
{
def_sar_inter_pace = os_atoi (ptr);
}
- avalanche_request_pacing (priv->sar_irq, ATM_SAR_INT_PACING_BLOCK_NUM,
- def_sar_inter_pace);
+ /* avalanche_request_pacing (priv->sar_irq, ATM_SAR_INT_PACING_BLOCK_NUM,
+ def_sar_inter_pace); */
#ifdef AR7_EFM
@@ -790,7 +742,7 @@ static int __init tn7atm_irq_request (st
* Reigster Receive interrupt A
*/
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 ****/
@@ -958,11 +910,15 @@ static int __init tn7atm_get_ESI (struct
#define ATM_VBR_RT 5
#endif
-int tn7atm_open (struct atm_vcc *vcc, short vpi, int vci)
+int tn7atm_open (struct atm_vcc *vcc)
{
tn7atm_activate_vc_parm_t tn7atm_activate_vc_parm;
int rc;
//int flags;
+ tn7atm_activate_vc_parm.pcr = 0x20000;
+ tn7atm_activate_vc_parm.scr = 0x20000;
+ tn7atm_activate_vc_parm.mbs = 0x20000;
+ tn7atm_activate_vc_parm.cdvt = 10000;
dgprintf(1, "tn7atm_open()\n");
@@ -974,24 +930,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;
-
- if ((vci == ATM_VCI_UNSPEC) || (vpi == ATM_VCI_UNSPEC))
+ if ((vcc->vci == ATM_VCI_UNSPEC) || (vcc->vpi == ATM_VCI_UNSPEC))
{
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
return -EBUSY;
}
- tn7atm_activate_vc_parm.vpi = vpi;
- tn7atm_activate_vc_parm.vci = vci;
+ tn7atm_activate_vc_parm.vpi = vcc->vpi;
+ tn7atm_activate_vc_parm.vci = vcc->vci;
- if ((vpi == CLEAR_EOC_VPI) && (vci == CLEAR_EOC_VCI))
+ if ((vcc->vpi == CLEAR_EOC_VPI) && (vcc->vci == CLEAR_EOC_VCI))
{
/* always use (max_dma_chan+1) for clear eoc */
tn7atm_activate_vc_parm.chan = EOC_DMA_CHAN;
@@ -999,7 +949,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)
{
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
printk("tn7atm_open: Clear EOC channel (dmachan=%d) already in use.\n", tn7atm_activate_vc_parm.chan);
return -EBUSY;
}
@@ -1008,7 +958,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
if (rc)
{
printk("tn7atm_open: failed to setup clear_eoc\n");
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
return -EBUSY;
}
tn7atm_set_lut(tn7atm_activate_vc_parm.priv,vcc, tn7atm_activate_vc_parm.chan);
@@ -1017,17 +967,17 @@ int tn7atm_open (struct atm_vcc *vcc, sh
}
else /* PVC channel setup */
{
- if ((vpi==REMOTE_MGMT_VPI) && (vci==REMOTE_MGMT_VCI))
+ if ((vcc->vpi==REMOTE_MGMT_VPI) && (vcc->vci==REMOTE_MGMT_VCI))
{
tn7atm_activate_vc_parm.chan = 14; /* always use chan 14 for MII PVC-base romote mgmt */
}
else
{
- rc = tn7atm_lut_find(vpi, vci);
+ rc = tn7atm_lut_find(vcc->vpi, vcc->vci);
/* check to see whether PVC is opened or not */
if(ATM_NO_DMA_CHAN != rc)
{
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
printk("PVC already opened. dmachan = %d\n", rc);
return -EBUSY;
}
@@ -1059,6 +1009,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
tn7atm_activate_vc_parm.priority = 2;
break;
+#if 0
case ATM_VBR: /* Variable Bit Rate-Non RealTime*/
tn7atm_activate_vc_parm.qos = 1;
tn7atm_activate_vc_parm.priority = 1;
@@ -1080,6 +1031,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;
+#endif
default:
tn7atm_activate_vc_parm.qos = 2;
@@ -1107,7 +1059,7 @@ int tn7atm_open (struct atm_vcc *vcc, sh
if (rc < 0)
{
printk("failed to activate hw channel\n");
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
tn7atm_lut_clear(vcc, tn7atm_activate_vc_parm.chan);
//spin_unlock_irqrestore(&chan_init_lock, flags);
return -EBUSY;
@@ -1197,7 +1149,7 @@ void tn7atm_close (struct atm_vcc *vcc)
tn7atm_lut_clear (vcc, dmachan);
//spin_unlock_irqrestore (&closeLock, closeFlag);
- MOD_DEC_USE_COUNT;
+// MOD_DEC_USE_COUNT;
dgprintf (1, "Leave tn7atm_close\n");
}
@@ -1630,8 +1582,7 @@ int tn7atm_receive (void *os_dev, int ch
* firewall is on */
dgprintf (3, "pushing the skb...\n");
-
- skb->stamp = vcc->timestamp = xtime;
+ __net_timestamp(skb);
xdump ((unsigned char *) skb->data, skb->len, 5);
@@ -1854,8 +1805,7 @@ printk("!!!free atm irq: tn7atm_exit\n")
kfree (dev->dev_data);
- // atm_dev_deregister (dev);
- shutdown_atm_dev (dev);
+ atm_dev_deregister (dev);
/*
* remove proc entries
@@ -2086,9 +2036,6 @@ static int __init tn7atm_detect (void)
* Set up proc entry for atm stats
*/
- if (tn7atm_xlate_proc_name
- (drv_proc_root_folder, &root_proc_dir_entry, &residual))
- {
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);
@@ -2098,7 +2045,6 @@ static int __init tn7atm_detect (void)
return -ENOMEM;
}
proc_root_already_exists = FALSE;
- }
/*
@@ -2731,7 +2677,5 @@ int tn7atm_proc_turbodsl_write(struct fi
return count;
}
-#ifdef MODULE
module_init (tn7atm_detect);
module_exit (tn7atm_exit);
-#endif /* MODULE */
--- a/tn7atm.h
+++ b/tn7atm.h
@@ -20,7 +20,8 @@
//#include "mips_support.h"
#include <linux/list.h>
-#include <linux/config.h>
+#define MIPS_EXCEPTION_OFFSET 8
+#define LNXINTNUM(x)((x) + MIPS_EXCEPTION_OFFSET)
#ifdef CONFIG_MODVERSIONS
#include <linux/modversions.h>
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -102,7 +102,6 @@
* UR8_MERGE_END CQ11813
* 09/18/07 CPH CQ11466: Added EFM support.
*********************************************************************************************/
-#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
@@ -110,8 +109,6 @@
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
@@ -119,6 +116,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 */
#ifdef AR7_EFM
#include "tn7efm.h"
@@ -185,7 +188,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
@@ -316,7 +319,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 */
@@ -369,6 +372,14 @@ int os_atoih (const char *pstr)
return val;
}
+int avalanche_request_intr_pacing(int irq_nr, unsigned int blk_num,
+ unsigned int pace_value)
+{
+ printk("avalanche_request_pacing(%d, %u, %u); // not implemented\n", irq_nr, blk_num, pace_value);
+ return 0;
+}
+
+
int os_atoi(const char *pStr)
{
int MulNeg = (*pStr == '-' ? -1 : 1);
@@ -405,39 +416,6 @@ void dprintf (int uDbgLevel, char *szFmt
#endif
}
-int strcmp(const char *s1, const char *s2)
-{
-
- int size = strlen(s1);
-
- return(strncmp(s1, s2, size));
-}
-
-int strncmp(const char *s1, const char *s2, size_t size)
-{
- int i = 0;
- int max_size = (int)size;
-
- while((s1[i] != 0) && i < max_size)
- {
- if(s2[i] == 0)
- {
- return -1;
- }
- if(s1[i] != s2[i])
- {
- return 1;
- }
- i++;
- }
- if(s2[i] != 0)
- {
- return 1;
- }
-
- return 0;
-}
-
// * UR8_MERGE_START CQ10640 Jack Zhang
int tn7dsl_dump_dsp_memory(char *input_str) //cph99
{
@@ -487,144 +465,78 @@ unsigned int shim_osGetCpuFrequency(void
return CpuFrequency;
}
-int shim_osLoadFWImage(unsigned char *ptr)
+static void avsar_release(struct device *dev)
{
- unsigned int bytesRead;
- mm_segment_t oldfs;
- static struct file *filp;
- unsigned int imageLength=0x5ffff;
-
-#ifdef AR7_EFM
- int dp_alt=0;
- char *ptr1=NULL;
-#ifdef EFM_DEBUG
- char *ptr2=NULL;
- char *ptr3=NULL;
-#endif
-
- if ((ptr1 = prom_getenv("DSL_DP_ALT")) != NULL)
- {
- dp_alt=os_atoi(ptr1);
- if (dp_alt==1)
- {
- filp = filp_open(DSP_DEBUG_FIRMWARE_PATH,00,O_RDONLY);
- if (!IS_ERR(filp))
- {
- strcpy (DSP_FIRMWARE_PATH, DSP_DEBUG_FIRMWARE_PATH);
- }
- }
-#ifdef EFM_DEBUG
- else if (dp_alt==2)
- {
- if ((ptr2 = prom_getenv("DSL_DP")) != NULL)
- {
- if (!strncmp(ptr2, "DSL_DP", 6))
- { // indirect naming
- if ((ptr3 = prom_getenv(ptr2)) != NULL)
- filp = filp_open(ptr3,00,O_RDONLY);
- ptr2 = ptr3; // redirect ptr2 to ptr3
- }
-
- filp = filp_open(ptr2,00,O_RDONLY);
- if (!IS_ERR(filp))
- {
- strcpy (DSP_FIRMWARE_PATH, ptr2);
- }
- }
- }
- printk("dp_path=%s\n", DSP_FIRMWARE_PATH);
-#endif
- }
-#endif
-
- dgprintf(4, "tn7dsl_read_dsp()\n");
-
- dgprintf(4,"open file %s\n", DSP_FIRMWARE_PATH);
-
- filp=filp_open(DSP_FIRMWARE_PATH,00,O_RDONLY);
- if(IS_ERR(filp))
- {
- printk("Failed: Could not open DSP binary file\n");
- return -1;
- }
-
- if (filp->f_dentry != NULL)
- {
- if (filp->f_dentry->d_inode != NULL)
- {
- printk ("DSP binary filesize = %d bytes\n",
- (int) filp->f_dentry->d_inode->i_size);
- imageLength = (unsigned int)filp->f_dentry->d_inode->i_size + 0x200;
- }
- }
-
- if (filp->f_op->read==NULL)
- return -1; /* File(system) doesn't allow reads */
-
- /*
- * Disable parameter checking
- */
- oldfs = get_fs();
- set_fs(KERNEL_DS);
-
- /*
- * Now read bytes from postion "StartPos"
- */
- filp->f_pos = 0;
-
- bytesRead = filp->f_op->read(filp,ptr,imageLength,&filp->f_pos);
-
- dgprintf(4,"file length = %d\n", bytesRead);
-
- set_fs(oldfs);
-
- /*
- * Close the file
- */
- fput(filp);
-
- return bytesRead;
+ printk(KERN_DEBUG "avsar firmware released\n");
}
+static struct device avsar = {
+ .bus_id = "vlynq",
+ .release = avsar_release,
+};
-unsigned int shim_read_overlay_page (void *ptr, unsigned int secOffset,
- unsigned int secLength)
+int shim_osLoadFWImage(unsigned char *ptr)
{
- unsigned int bytesRead;
- mm_segment_t oldfs;
- struct file *filp;
-
- 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)
- {
- printk("Failed: Could not open DSP binary file\n");
- return -1;
- }
-
- if (filp->f_op->read==NULL)
- return -1; /* File(system) doesn't allow reads */
-
- /*
- * Now read bytes from postion "StartPos"
- */
+ printk("requesting firmware image \"ar0700xx.bin\"\n");
+ if(device_register(&avsar) < 0) {
+ printk(KERN_ERR
+ "avsar: device_register fails\n");
+ return -1;
+ }
+
+ if (request_firmware(&fw_entry, "ar0700xx.bin", &avsar)) {
+ printk(KERN_ERR
+ "avsar: Firmware not available\n");
+ device_unregister(&avsar);
+ return -1;
+ }
+ size = fw_entry->size;
+ device_unregister(&avsar);
+ if (size > 0x6ffff) {
+ printk(KERN_ERR
+ "avsar: Firmware too big (%d bytes)\n", size);
+ release_firmware(fw_entry);
+ return -1;
+ }
+ memcpy(ptr, fw_entry->data, size);
+ release_firmware(fw_entry);
+ return size;
+}
+
+unsigned int shim_read_overlay_page(void *ptr, unsigned int secOffset, unsigned int secLength)
+{
+ const struct firmware *fw_entry;
+
+ printk("requesting firmware image \"ar0700xx.bin\"\n");
+ if (device_register(&avsar) < 0) {
+ printk(KERN_ERR
+ "avsar: device_register fails\n");
+ return -1;
+ }
+
+ if (request_firmware(&fw_entry, "ar0700xx.bin", &avsar)) {
+ printk(KERN_ERR
+ "avsar: Firmware not available\n");
+ device_unregister(&avsar);
+ return -1;
+ }
+
+ device_unregister(&avsar);
+ if (fw_entry->size > secLength) {
+ printk(KERN_ERR
+ "avsar: Firmware too big (%d bytes)\n", fw_entry->size);
+ release_firmware(fw_entry);
+ return -1;
+ }
+ memcpy(ptr + secOffset, fw_entry->data, secLength);
+ release_firmware(fw_entry);
+ return secLength;
+}
- if(filp->f_op->llseek)
- filp->f_op->llseek(filp,secOffset, 0);
- oldfs = get_fs();
- set_fs(KERNEL_DS);
- filp->f_pos = secOffset;
- bytesRead = filp->f_op->read(filp,ptr,secLength,&filp->f_pos);
- set_fs(oldfs);
- /*
- * Close the file
- */
- fput(filp);
- return bytesRead;
-}
int shim_osLoadDebugFWImage(unsigned char *ptr)
{
@@ -3287,6 +3199,7 @@ int tn7dsl_init(void *priv)
int high_precision_selected = 0;
// UR8_MERGE_END CQ11054*
+ sema_init(&adsl_sem_overlay, 0);
/*
* start dsl
*/
@@ -3665,7 +3578,7 @@ static int dslmod_sysctl(ctl_table *ctl,
*/
if(write)
{
- ret = proc_dostring(ctl, write, filp, buffer, lenp);
+ ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
switch (ctl->ctl_name)
{
@@ -3751,14 +3664,14 @@ static int dslmod_sysctl(ctl_table *ctl,
else
{
len += sprintf(info+len, mod_req);
- ret = proc_dostring(ctl, write, filp, buffer, lenp);
+ ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
}
return ret;
}
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}
};
@@ -3781,8 +3694,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
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -43,7 +43,6 @@
* 09/18/07 CPH CQ11466: Added EFM support.
*******************************************************************************/
-#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
@@ -51,12 +50,13 @@
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
-#include <asm/io.h>
-#include <asm/mips-boards/prom.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
+#include <asm/io.h>
+#include <asm/ar7/ar7.h>
+#include <asm/ar7/prom.h>
#define _CPHAL_AAL5
#define _CPHAL_SAR

@ -1,37 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -633,7 +633,7 @@ static int turbodsl_check_priority_type(
* Description: tnetd73xx SAR interrupt.
*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-static void tn7atm_sar_irq (int irq, void *voiddev, struct pt_regs *regs)
+static irqreturn_t tn7atm_sar_irq (int irq, void *voiddev)
{
struct atm_dev *atmdev;
Tn7AtmPrivate *priv;
@@ -660,6 +660,7 @@ static void tn7atm_sar_irq (int irq, voi
#ifdef TIATM_INST_SUPP
psp_trace_par (ATM_DRV_SAR_ISR_EXIT, retval);
#endif
+ return IRQ_HANDLED;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -669,7 +670,7 @@ static void tn7atm_sar_irq (int irq, voi
* Description: tnetd73xx DSL interrupt.
*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-static void tn7atm_dsl_irq (int irq, void *voiddev, struct pt_regs *regs)
+static irqreturn_t tn7atm_dsl_irq (int irq, void *voiddev)
{
struct atm_dev *atmdev;
Tn7AtmPrivate *priv;
@@ -691,6 +692,8 @@ static void tn7atm_dsl_irq (int irq, voi
#ifdef TIATM_INST_SUPP
psp_trace_par (ATM_DRV_DSL_ISR_EXIT, retval);
#endif
+
+ return IRQ_HANDLED;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@ -1,11 +0,0 @@
--- a/tn7api.h
+++ b/tn7api.h
@@ -118,7 +118,7 @@ int tn7dsl_proc_dbgmsg_write(struct file
int tn7dsl_proc_dbgmsg_read(char* buf, char **start, off_t offset, int count,int *eof, void *data);
#endif
//UR8_MERGE_END CQ11813
-inline int tn7dsl_handle_interrupt(void);
+int tn7dsl_handle_interrupt(void);
void tn7dsl_dslmod_sysctl_register(void);
void tn7dsl_dslmod_sysctl_unregister(void);

@ -1,44 +0,0 @@
--- a/dsl_hal_advcfg.c
+++ b/dsl_hal_advcfg.c
@@ -36,9 +36,9 @@
* 05Jul05 0.00.09 CPH CQ9775: Change dslhal_advcfg_configDsTones input parameters & support for ADSL2+
* 24Jul05 0.00.10 CPH Fixed comments in dslhal_advcfg_configDsTones function header
*******************************************************************************/
-#include <dev_host_interface.h>
-#include <dsl_hal_register.h>
-#include <dsl_hal_support.h>
+#include "dev_host_interface.h"
+#include "dsl_hal_register.h"
+#include "dsl_hal_support.h"
/*****************************************************************************/
/* ACT API functions -- To be moved into their own independent module --RamP */
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,7 @@
CONFIG_SANGAM_ATM=m
#EXTRA_CFLAGS += -DEL -I. -DPOST_SILICON -DCOMMON_NSP -DCONFIG_LED_MODULE -DDEREGISTER_LED -DNO_ACT
-EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -DNO_ACT -D__NO__VOICE_PATCH__ -DEL
+#EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -DNO_ACT -D__NO__VOICE_PATCH__ -DEL
+EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -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
+tiatm-objs += cpsar.o aal5sar.o tn7sar.o tn7atm.o tn7dsl.o dsl_hal_api.o dsl_hal_support.o dsl_hal_advcfg.o
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -3053,6 +3053,14 @@ static int tn7dsl_set_dsl(void)
dslhal_api_setRateAdaptFlag(pIhw, os_atoi(ptr));
}
+ // set powercutback
+ ptr = NULL;
+ ptr = prom_getenv("powercutback");
+ if(ptr)
+ {
+ dslhal_advcfg_onOffPcb(pIhw, os_atoi(ptr));
+ }
+
// trellis
ptr = NULL;
ptr = prom_getenv("trellis");

@ -1,16 +0,0 @@
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -125,10 +125,10 @@ enum
//09/05/07: cph, move to tn7atm.h
// #define RESERVED_OAM_CHANNEL 15
-#define AAL5_PARM "id=aal5, base = 0x03000000, offset = 0, int_line=15, ch0=[RxBufSize=1522; RxNumBuffers = 32; RxServiceMax = 50; TxServiceMax=50; TxNumBuffers=32; CpcsUU=0x5aa5; TxVc_CellRate=0x3000; TxVc_AtmHeader=0x00000640]"
-#define SAR_PARM "id=sar,base = 0x03000000, reset_bit = 9, offset = 0; UniNni = 0, PdspEnable = 1"
+#define CH0_PARM "RxBufSize=1522, RxNumBuffers=32, RxServiceMax=50, TxServiceMax=50, TxNumBuffers=32, CpcsUU=0x5aa5, TxVc_CellRate=0x3000, TxVc_AtmHeader=0x00000640"
+#define AAL5_PARM "id=aal5, base=0x03000000, offset=0, int_line=15, ch0=[" CH0_PARM "]"
+#define SAR_PARM "id=sar, base=0x03000000, reset_bit=9, offset=0; UniNni=0, PdspEnable=1, Debug=0xFFFFFFFF"
#define RESET_PARM "id=ResetControl, base=0xA8611600"
-#define CH0_PARM "RxBufSize=1522, RxNumBuffers = 32, RxServiceMax = 50, TxServiceMax=50, TxNumBuffers=32, CpcsUU=0x5aa5, TxVc_CellRate=0x3000, TxVc_AtmHeader=0x00000640"
#define MAX_PVC_TABLE_ENTRY 16

@ -1,11 +0,0 @@
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,7 @@
CONFIG_SANGAM_ATM=m
#EXTRA_CFLAGS += -DEL -I. -DPOST_SILICON -DCOMMON_NSP -DCONFIG_LED_MODULE -DDEREGISTER_LED -DNO_ACT
#EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -DNO_ACT -D__NO__VOICE_PATCH__ -DEL
-EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -D__NO__VOICE_PATCH__ -DEL
+#EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -D__NO__VOICE_PATCH__ -DEL
+EXTRA_CFLAGS += -DEL -I$(PWD) -DPOST_SILICON -DCOMMON_NSP -D__NO__VOICE_PATCH__ -DEL -DCPATM_TASKLET_MODE
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 dsl_hal_advcfg.o

@ -1,675 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -95,6 +95,146 @@
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION ("Tnetd73xx ATM Device Driver");
MODULE_AUTHOR ("Zhicheng Tang");
+
+int mp_sar_ipacemax = -1;
+module_param_named(ipacemax, mp_sar_ipacemax, int, 0);
+MODULE_PARM_DESC(ipacemax, "Interrupt pacing");
+
+char *mp_macc = NULL;
+module_param_named(macc, mp_macc, charp, 0);
+MODULE_PARM_DESC(macc, "MAC address");
+
+int mp_dsp_noboost = -1;
+module_param_named(dsp_noboost, mp_dsp_noboost, int, 0);
+MODULE_PARM_DESC(dsp_noboost, "Suppress DSP frequency boost");
+
+int mp_dsp_freq = -1;
+module_param_named(dsp_freq, mp_dsp_freq, int, 0);
+MODULE_PARM_DESC(dsp_freq, "Frequency to boost the DSP to");
+
+char *mp_featctl0 = NULL;
+module_param_named(featctl0, mp_featctl0, charp, 0);
+MODULE_PARM_DESC(featctl0, "DSL feature control 0");
+
+char *mp_featctl1 = NULL;
+module_param_named(featctl1, mp_featctl1, charp, 0);
+MODULE_PARM_DESC(featctl1, "DSL feature control 1");
+
+char *mp_phyctl0 = NULL;
+module_param_named(phyctl0, mp_phyctl0, charp, 0);
+MODULE_PARM_DESC(phyctl0, "DSL PHY control 0");
+
+char *mp_phyctl1 = NULL;
+module_param_named(phyctl1, mp_phyctl1, charp, 0);
+MODULE_PARM_DESC(phyctl1, "DSL PHY control 1");
+
+int mp_turbodsl = -1;
+module_param_named(turbodsl, mp_turbodsl, int, 0);
+MODULE_PARM_DESC(turbodsl, "Enable TurboDSL");
+
+int mp_sar_rxbuf = -1;
+module_param_named(sar_rxbuf, mp_sar_rxbuf, int, 0);
+MODULE_PARM_DESC(sar_rxbuf, "SAR RxBuf size");
+
+int mp_sar_rxmax = -1;
+module_param_named(sar_rxmax, mp_sar_rxmax, int, 0);
+MODULE_PARM_DESC(sar_rxmax, "SAR RxMax size");
+
+int mp_sar_txbuf = -1;
+module_param_named(sar_txbuf, mp_sar_txbuf, int, 0);
+MODULE_PARM_DESC(sar_txbuf, "SAR TxBuf size");
+
+int mp_sar_txmax = -1;
+module_param_named(sar_txmax, mp_sar_txmax, int, 0);
+MODULE_PARM_DESC(sar_txmax, "SAR TxMax size");
+
+char *mp_modulation = NULL;
+module_param_named(modulation, mp_modulation, charp, 0);
+MODULE_PARM_DESC(modulation, "Modulation");
+
+int mp_fine_gain_control = -1;
+module_param_named(fine_gain_control, mp_fine_gain_control, int, 0);
+MODULE_PARM_DESC(fine_gain_control, "Fine gain control");
+
+int mp_fine_gain_value = -1;
+module_param_named(fine_gain_value, mp_fine_gain_value, int, 0);
+MODULE_PARM_DESC(fine_gain_value, "Fine gain value");
+
+int mp_enable_margin_retrain = -1;
+module_param_named(enable_margin_retrain, mp_enable_margin_retrain, int, 0);
+MODULE_PARM_DESC(enable_margin_retrain, "Enable margin retrain");
+
+int mp_margin_threshold = -1;
+module_param_named(margin_threshold, mp_margin_threshold, int, 0);
+MODULE_PARM_DESC(margin_threshold, "Margin retrain treshold");
+
+int mp_enable_rate_adapt = -1;
+module_param_named(enable_rate_adapt, mp_enable_rate_adapt, int, 0);
+MODULE_PARM_DESC(enable_rate_adapt, "Enable rate adaption");
+
+int mp_powercutback = -1;
+module_param_named(powercutback, mp_powercutback, int, 0);
+MODULE_PARM_DESC(powercutback, "Enable / disable powercutback");
+
+int mp_trellis = -1;
+module_param_named(trellis, mp_trellis, int, 0);
+MODULE_PARM_DESC(trellis, "Enable / disable trellis coding");
+
+int mp_bitswap = -1;
+module_param_named(bitswap, mp_bitswap, int, 0);
+MODULE_PARM_DESC(bitswap, "Enable / disable bitswap");
+
+int mp_maximum_bits_per_carrier = -1;
+module_param_named(maximum_bits_per_carrier, mp_maximum_bits_per_carrier, int, 0);
+MODULE_PARM_DESC(maximum_bits_per_carrier, "Maximum bits per carrier");
+
+int mp_maximum_interleave_depth = -1;
+module_param_named(maximum_interleave_depth, mp_maximum_interleave_depth, int, 0);
+MODULE_PARM_DESC(maximum_interleave_depth, "Maximum interleave depth");
+
+int mp_pair_selection = -1;
+module_param_named(pair_selection, mp_pair_selection, int, 0);
+MODULE_PARM_DESC(pair_selection, "Pair selection");
+
+int mp_dgas_polarity = -1;
+module_param_named(dgas_polarity, mp_dgas_polarity, int, 0);
+MODULE_PARM_DESC(dgas_polarity, "DGAS polarity");
+
+int mp_los_alarm = -1;
+module_param_named(los_alarm, mp_los_alarm, int, 0);
+MODULE_PARM_DESC(los_alarm, "LOS alarm");
+
+char *mp_eoc_vendor_id = NULL;
+module_param_named(eoc_vendor_id, mp_eoc_vendor_id, charp, 0);
+MODULE_PARM_DESC(eoc_vendor_id, "EOC vendor id");
+
+int mp_eoc_vendor_revision = -1;
+module_param_named(eoc_vendor_revision, mp_eoc_vendor_revision, int, 0);
+MODULE_PARM_DESC(eoc_vendor_revision, "EOC vendor revision");
+
+char *mp_eoc_vendor_serialnum = NULL;
+module_param_named(eoc_vendor_serialnum, mp_eoc_vendor_serialnum, charp, 0);
+MODULE_PARM_DESC(eoc_vendor_serialnum, "EOC vendor serial number");
+
+char *mp_invntry_vernum = NULL;
+module_param_named(invntry_vernum, mp_invntry_vernum, charp, 0);
+MODULE_PARM_DESC(invntry_vernum, "Inventory revision number");
+
+int mp_dsl_bit_tmode = -1;
+module_param_named(dsl_bit_tmode, mp_dsl_bit_tmode, int, 0);
+MODULE_PARM_DESC(dsl_bit_tmode, "DSL bit training mode");
+
+int mp_high_precision = -1;
+module_param_named(high_precision, mp_high_precision, int, 0);
+MODULE_PARM_DESC(high_precision, "High precision");
+
+int mp_autopvc_enable = -1;
+module_param_named(autopvc_enable, mp_autopvc_enable, int, 0);
+MODULE_PARM_DESC(autopvc_enable, "Enable / disable automatic PVC");
+
+int mp_oam_lb_timeout = -1;
+module_param_named(oam_lb_timeout, mp_oam_lb_timeout, int, 0);
+MODULE_PARM_DESC(oam_lb_timeout, "OAM LB timeout");
#endif
#ifndef TRUE
@@ -728,9 +868,9 @@ static int __init tn7atm_irq_request (st
* interrupt pacing
*/
ptr = prom_getenv ("sar_ipacemax");
- if (ptr)
+ if (ptr || mp_sar_ipacemax != -1)
{
- def_sar_inter_pace = os_atoi (ptr);
+ def_sar_inter_pace = mp_sar_ipacemax == -1 ? os_atoi (ptr) : mp_sar_ipacemax;
}
/* avalanche_request_pacing (priv->sar_irq, ATM_SAR_INT_PACING_BLOCK_NUM,
def_sar_inter_pace); */
@@ -878,9 +1018,18 @@ static int __init tn7atm_get_ESI (struct
{
int i;
char esi_addr[ESI_LEN] = { 0x00, 0x00, 0x11, 0x22, 0x33, 0x44 };
- char *esiaddr_str = NULL;
+ char *esiaddr_str = mp_macc;
- esiaddr_str = prom_getenv ("macc");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("macdsl");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("macc");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("HWA_1");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("macb");
+ if (esiaddr_str == NULL)
+ esiaddr_str = prom_getenv ("maca");
if (!esiaddr_str)
{
@@ -2139,15 +2288,15 @@ static int tn7atm_autoDetectDspBoost (vo
//UR8_MERGE_END CQ10450*
cp = prom_getenv ("dsp_noboost");
- if (cp)
+ if (cp || mp_dsp_noboost != -1)
{
- dsp_noboost = os_atoi (cp);
+ dsp_noboost = mp_dsp_noboost == -1 ? os_atoi (cp) : mp_dsp_noboost;
}
cp = (char *) prom_getenv ("dsp_freq");
- if (cp)
+ if (cp || mp_dsp_freq != -1)
{
- dspfreq = os_atoi (cp);
+ dspfreq = mp_dsp_freq == -1 ? os_atoi (cp) : mp_dsp_freq;
if (dspfreq == 250)
{
boostDsp = 1;
@@ -2396,15 +2545,17 @@ static int __init tn7atm_init (struct at
// Inter-Op DSL phy Control
// Note the setting of _dsl_Feature_0 and _dsl_Feature_1 must before
// dslhal_api_dslStartup (in tn7dsl_init()).
- if ((ptr = prom_getenv ("DSL_FEATURE_CNTL_0")) != NULL)
+ if ((ptr = prom_getenv ("DSL_FEATURE_CNTL_0")) != NULL || mp_featctl0 != NULL)
{
- _dsl_Feature_0 = os_atoih (ptr);
+ if (mp_featctl0 != NULL) ptr = mp_featctl0;
+ _dsl_Feature_0 = os_atoh (ptr);
_dsl_Feature_0_defined = 1;
}
- if ((ptr = prom_getenv ("DSL_FEATURE_CNTL_1")) != NULL)
+ if ((ptr = prom_getenv ("DSL_FEATURE_CNTL_1")) != NULL || mp_featctl1 != NULL)
{
- _dsl_Feature_1 = os_atoih (ptr);
+ if (mp_featctl1 != NULL) ptr = mp_featctl1;
+ _dsl_Feature_1 = os_atoh (ptr);
_dsl_Feature_1_defined = 1;
}
@@ -2412,15 +2563,17 @@ static int __init tn7atm_init (struct at
// DSL phy Feature Control
// Note the setting of _dsl_PhyControl_0 and _dsl_PhyControl_1 must before
// dslhal_api_dslStartup (in tn7dsl_init()).
- if ((ptr = prom_getenv ("DSL_PHY_CNTL_0")) != NULL)
+ if ((ptr = prom_getenv ("DSL_PHY_CNTL_0")) != NULL || mp_phyctl0 != NULL)
{
- _dsl_PhyControl_0 = os_atoih (ptr);
+ if (mp_phyctl0 != NULL) ptr = mp_phyctl0;
+ _dsl_PhyControl_0 = os_atoh (ptr);
_dsl_PhyControl_0_defined = 1;
}
- if ((ptr = prom_getenv ("DSL_PHY_CNTL_1")) != NULL)
+ if ((ptr = prom_getenv ("DSL_PHY_CNTL_1")) != NULL || mp_phyctl1 != NULL)
{
- _dsl_PhyControl_1 = os_atoih (ptr);
+ if (mp_phyctl1 != NULL) ptr = mp_phyctl1;
+ _dsl_PhyControl_1 = os_atoh (ptr);
_dsl_PhyControl_1_defined = 1;
}
@@ -2440,12 +2593,12 @@ static int __init tn7atm_init (struct at
// read config for turbo dsl
ptr = prom_getenv ("TurboDSL");
- if (ptr)
+ if (ptr || mp_turbodsl != -1)
{
#if 1 //[KT]
bTurboDsl = os_atoi (ptr);
#else
- priv->bTurboDsl = os_atoi (ptr);
+ priv->bTurboDsl = mp_turbodsl == -1 ? os_atoi (ptr) : mp_turbodsl;
#endif
}
else
@@ -2459,33 +2612,33 @@ static int __init tn7atm_init (struct at
priv->sarRxBuf = RX_BUFFER_NUM;
ptr = NULL;
ptr = prom_getenv ("SarRxBuf");
- if (ptr)
+ if (ptr || mp_sar_rxbuf != -1)
{
- priv->sarRxBuf = os_atoi (ptr);
+ priv->sarRxBuf = mp_sar_rxbuf == -1 ? os_atoi (ptr) : mp_sar_rxbuf;
}
priv->sarRxMax = RX_SERVICE_MAX;
ptr = NULL;
ptr = prom_getenv ("SarRxMax");
- if (ptr)
+ if (ptr || mp_sar_rxmax != -1)
{
- priv->sarRxMax = os_atoi (ptr);
+ priv->sarRxMax = mp_sar_rxmax == -1 ? os_atoi (ptr) : mp_sar_rxmax;
}
priv->sarTxBuf = TX_BUFFER_NUM;
ptr = NULL;
ptr = prom_getenv ("SarTxBuf");
- if (ptr)
+ if (ptr || mp_sar_txbuf != -1)
{
- priv->sarTxBuf = os_atoi (ptr);
+ priv->sarTxBuf = mp_sar_txbuf == -1 ? os_atoi (ptr) : mp_sar_txbuf;
}
priv->sarTxMax = TX_SERVICE_MAX;
ptr = NULL;
ptr = prom_getenv ("SarTxMax");
- if (ptr)
+ if (ptr || mp_sar_txmax != -1)
{
- priv->sarTxMax = os_atoi (ptr);
+ priv->sarTxMax = mp_sar_txmax == -1 ? os_atoi (ptr) : mp_sar_txmax;
}
#ifdef AR7_EFM
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -148,6 +148,27 @@
#define NEW_TRAINING_VAL_T1413 128
#define NEW_TRAINING_VAL_MMODE 255
+extern char *mp_modulation;
+extern int mp_fine_gain_control;
+extern int mp_fine_gain_value;
+extern int mp_enable_margin_retrain;
+extern int mp_margin_threshold;
+extern int mp_enable_rate_adapt;
+extern int mp_powercutback;
+extern int mp_trellis;
+extern int mp_bitswap;
+extern int mp_maximum_bits_per_carrier;
+extern int mp_maximum_interleave_depth;
+extern int mp_pair_selection;
+extern int mp_dgas_polarity;
+extern int mp_los_alarm;
+extern char *mp_eoc_vendor_id;
+extern int mp_eoc_vendor_revision;
+extern char *mp_eoc_vendor_serialnum;
+extern char *mp_invntry_vernum;
+extern int mp_dsl_bit_tmode;
+extern int mp_high_precision;
+
int testflag1 = 0;
extern int __guDbgLevel;
extern sar_stat_t sarStat;
@@ -2933,24 +2954,24 @@ static int tn7dsl_set_dsl(void)
(unsigned char *) &oamFeature, 4);
ptr = prom_getenv("DSL_FEATURE_CNTL_0");
- if(!ptr)
- prom_setenv("DSL_FEATURE_CNTL_0", "0x00004000");
+ //if(!ptr)
+ //prom_setenv("DSL_FEATURE_CNTL_0", "0x00004000");
ptr = prom_getenv("DSL_FEATURE_CNTL_1");
- if(!ptr)
- prom_setenv("DSL_FEATURE_CNTL_1", "0x00000000");
+ //if(!ptr)
+ //prom_setenv("DSL_FEATURE_CNTL_1", "0x00000000");
ptr = prom_getenv("DSL_PHY_CNTL_0");
- if(!ptr)
- prom_setenv("DSL_PHY_CNTL_0", "0x00000400");
+ //if(!ptr)
+ //prom_setenv("DSL_PHY_CNTL_0", "0x00000400");
ptr = prom_getenv("enable_margin_retrain");
- if(!ptr)
- prom_setenv("enable_margin_retrain", "0");
+ //if(!ptr)
+ //prom_setenv("enable_margin_retrain", "0");
ptr = prom_getenv("modulation");
- if(!ptr)
- prom_setenv("modulation", "0xbf");
+ //if(!ptr)
+ //prom_setenv("modulation", "0xbf");
#define EOC_VENDOR_ID "4200534153000000"
#define EOC_VENDOR_REVISION "FW370090708b1_55"
@@ -2959,25 +2980,25 @@ static int tn7dsl_set_dsl(void)
ptr = prom_getenv("eoc_vendor_id");
if(!ptr || strcmp(ptr,EOC_VENDOR_ID) != 0 || strlen(ptr) != strlen(EOC_VENDOR_ID))
{
- if(ptr)
- prom_unsetenv("eoc_vendor_id");
- prom_setenv("eoc_vendor_id",EOC_VENDOR_ID);
+ //if(ptr)
+ //prom_unsetenv("eoc_vendor_id");
+ //prom_setenv("eoc_vendor_id",EOC_VENDOR_ID);
}
ptr = prom_getenv("eoc_vendor_revision");
if(!ptr || strcmp(ptr,EOC_VENDOR_REVISION) != 0 || strlen(ptr) != strlen(EOC_VENDOR_REVISION))
{
- if(ptr)
- prom_unsetenv("eoc_vendor_revision");
- prom_setenv("eoc_vendor_revision",EOC_VENDOR_REVISION);
+ //if(ptr)
+ //prom_unsetenv("eoc_vendor_revision");
+ //prom_setenv("eoc_vendor_revision",EOC_VENDOR_REVISION);
}
ptr = prom_getenv("eoc_vendor_serialnum");
if(!ptr || strcmp(ptr,EOC_VENDOR_SERIALNUM) != 0 || strlen(ptr) != strlen(EOC_VENDOR_SERIALNUM))
{
- if(ptr)
- prom_unsetenv("eoc_vendor_serialnum");
- prom_setenv("eoc_vendor_serialnum",EOC_VENDOR_SERIALNUM);
+ //if(ptr)
+ // prom_unsetenv("eoc_vendor_serialnum");
+ //prom_setenv("eoc_vendor_serialnum",EOC_VENDOR_SERIALNUM);
}
/* Do only if we are in the new Base PSP 7.4.*/
@@ -2994,92 +3015,88 @@ static int tn7dsl_set_dsl(void)
we clear the modulation environment variable, as this could potentially
not have the same meaning in the new mode.
*/
- prom_unsetenv("modulation");
- prom_setenv("DSL_UPG_DONE", "1");
+ //prom_unsetenv("modulation");
+ //prom_setenv("DSL_UPG_DONE", "1");
}
}
#endif
// modulation
ptr = prom_getenv("modulation");
- if (ptr)
+ if (ptr || mp_modulation != NULL)
{
- tn7dsl_set_modulation(ptr, FALSE);
+ tn7dsl_set_modulation(mp_modulation == NULL ? ptr : mp_modulation, FALSE);
}
// Fine Gains
ptr = prom_getenv("fine_gain_control");
- if (ptr)
+ if (ptr || mp_fine_gain_control != -1)
{
- value = os_atoi(ptr);
+ value = mp_fine_gain_control == -1 ? os_atoi(ptr) : mp_fine_gain_control;
tn7dsl_ctrl_fineGain(value);
}
ptr = NULL;
ptr = prom_getenv("fine_gain_value");
- if(ptr)
- tn7dsl_set_fineGainValue(os_atoh(ptr));
+ if(ptr || mp_fine_gain_value != -1)
+ tn7dsl_set_fineGainValue(mp_fine_gain_value == -1 ? os_atoh(ptr) : mp_fine_gain_value);
// margin retrain
ptr = NULL;
ptr = prom_getenv("enable_margin_retrain");
- if(ptr)
+ value = mp_enable_margin_retrain == -1 ? (ptr ? os_atoi(ptr) : 0) : mp_enable_margin_retrain;
+
+ if (value == 1)
{
- value = os_atoi(ptr);
- if(value == 1)
+ dslhal_api_setMarginMonitorFlags(pIhw, 0, 1);
+ bMarginRetrainEnable = 1;
+ //printk("enable showtime margin monitor.\n");
+
+ ptr = NULL;
+ ptr = prom_getenv("margin_threshold");
+ value = mp_margin_threshold == -1 ? (ptr ? os_atoi(ptr) : 0) : mp_margin_threshold;
+
+ if(value >= 0)
{
- dslhal_api_setMarginMonitorFlags(pIhw, 0, 1);
- bMarginRetrainEnable = 1;
- //printk("enable showtime margin monitor.\n");
- ptr = NULL;
- ptr = prom_getenv("margin_threshold");
- if(ptr)
- {
- value = os_atoi(ptr);
- //printk("Set margin threshold to %d x 0.5 db\n",value);
- if(value >= 0)
- {
- dslhal_api_setMarginThreshold(pIhw, value);
- bMarginThConfig=1;
- }
- }
+ dslhal_api_setMarginThreshold(pIhw, value);
+ bMarginThConfig=1;
}
}
// rate adapt
ptr = NULL;
ptr = prom_getenv("enable_rate_adapt");
- if(ptr)
+ if(ptr || mp_enable_rate_adapt != -1)
{
- dslhal_api_setRateAdaptFlag(pIhw, os_atoi(ptr));
+ dslhal_api_setRateAdaptFlag(pIhw, mp_enable_rate_adapt == -1 ? os_atoi(ptr) : mp_enable_rate_adapt);
}
// set powercutback
ptr = NULL;
ptr = prom_getenv("powercutback");
- if(ptr)
+ if(ptr || mp_powercutback != -1)
{
- dslhal_advcfg_onOffPcb(pIhw, os_atoi(ptr));
+ dslhal_advcfg_onOffPcb(pIhw, mp_powercutback == -1 ? os_atoi(ptr) : mp_powercutback);
}
// trellis
ptr = NULL;
ptr = prom_getenv("trellis");
- if(ptr)
+ if(ptr || mp_trellis != -1)
{
- dslhal_api_setTrellisFlag(pIhw, os_atoi(ptr));
- trellis = os_atoi(ptr);
+ trellis = mp_trellis == -1 ? os_atoi(ptr) : mp_trellis;
+ dslhal_api_setTrellisFlag(pIhw, trellis);
//printk("trellis=%d\n");
}
// bitswap
ptr = NULL;
ptr = prom_getenv("bitswap");
- if(ptr)
+ if(ptr || mp_bitswap != -1)
{
int offset[2] = {33, 0};
unsigned int bitswap;
- bitswap = os_atoi(ptr);
+ bitswap = mp_bitswap == -1 ? os_atoi(ptr) : mp_bitswap;
tn7dsl_generic_read(2, offset);
dslReg &= dslhal_support_byteSwap32(0xFFFFFF00);
@@ -3097,46 +3114,47 @@ static int tn7dsl_set_dsl(void)
// maximum bits per carrier
ptr = NULL;
ptr = prom_getenv("maximum_bits_per_carrier");
- if(ptr)
+ if(ptr || mp_maximum_bits_per_carrier != -1)
{
- dslhal_api_setMaxBitsPerCarrierUpstream(pIhw, os_atoi(ptr));
+ dslhal_api_setMaxBitsPerCarrierUpstream(pIhw, mp_maximum_bits_per_carrier == -1 ? os_atoi(ptr) : mp_maximum_bits_per_carrier);
}
// maximum interleave depth
ptr = NULL;
ptr = prom_getenv("maximum_interleave_depth");
- if(ptr)
+ if(ptr || mp_maximum_interleave_depth != -1)
{
- dslhal_api_setMaxInterleaverDepth(pIhw, os_atoi(ptr));
+ dslhal_api_setMaxInterleaverDepth(pIhw, mp_maximum_interleave_depth == -1 ? os_atoi(ptr) : mp_maximum_interleave_depth);
}
// inner and outer pairs
ptr = NULL;
ptr = prom_getenv("pair_selection");
- if(ptr)
+ if(ptr || mp_pair_selection != -1)
{
- dslhal_api_selectInnerOuterPair(pIhw, os_atoi(ptr));
+ dslhal_api_selectInnerOuterPair(pIhw, mp_pair_selection == -1 ? os_atoi(ptr) : mp_pair_selection);
}
ptr = NULL;
ptr = prom_getenv("dgas_polarity");
- if(ptr)
+ if(ptr || mp_dgas_polarity != -1)
{
dslhal_api_configureDgaspLpr(pIhw, 1, 1);
- dslhal_api_configureDgaspLpr(pIhw, 0, os_atoi(ptr));
+ dslhal_api_configureDgaspLpr(pIhw, 0, mp_dgas_polarity == -1 ? os_atoi(ptr) : mp_dgas_polarity);
}
ptr = NULL;
ptr = prom_getenv("los_alarm");
- if(ptr)
+ if(ptr || mp_los_alarm != -1)
{
- dslhal_api_disableLosAlarm(pIhw, os_atoi(ptr));
+ dslhal_api_disableLosAlarm(pIhw, mp_los_alarm == -1 ? os_atoi(ptr) : mp_los_alarm);
}
ptr = NULL;
ptr = prom_getenv("eoc_vendor_id");
- if(ptr)
+ if(ptr || mp_eoc_vendor_id != NULL)
{
+ ptr = mp_eoc_vendor_id == NULL ? ptr : mp_eoc_vendor_id;
for(i=0;i<8;i++)
{
tmp[0]=ptr[i*2];
@@ -3161,26 +3179,26 @@ static int tn7dsl_set_dsl(void)
}
ptr = NULL;
ptr = prom_getenv("eoc_vendor_revision");
- if(ptr)
+ if(ptr || mp_eoc_vendor_revision != -1)
{
- value = os_atoi(ptr);
+ value = mp_eoc_vendor_revision == -1 ? os_atoi(ptr) : mp_eoc_vendor_revision;
//printk("eoc rev=%d\n", os_atoi(ptr));
dslhal_api_setEocRevisionNumber(pIhw, (char *)&value);
}
ptr = NULL;
ptr = prom_getenv("eoc_vendor_serialnum");
- if(ptr)
+ if(ptr || mp_eoc_vendor_serialnum != NULL)
{
- dslhal_api_setEocSerialNumber(pIhw, ptr);
+ dslhal_api_setEocSerialNumber(pIhw, mp_eoc_vendor_serialnum == NULL ? ptr : mp_eoc_vendor_serialnum);
}
// CQ10037 Added invntry_vernum environment variable to be able to set version number in ADSL2, ADSL2+ modes.
ptr = NULL;
ptr = prom_getenv("invntry_vernum");
- if(ptr)
+ if(ptr || mp_invntry_vernum != NULL)
{
- dslhal_api_setEocRevisionNumber(pIhw, ptr);
+ dslhal_api_setEocRevisionNumber(pIhw, mp_invntry_vernum == NULL ? ptr : mp_invntry_vernum);
}
return 0;
@@ -3225,7 +3243,7 @@ int tn7dsl_init(void *priv)
* backward compatibility.
*/
cp = prom_getenv("DSL_BIT_TMODE");
- if (cp)
+ if (cp || mp_dsl_bit_tmode != -1)
{
printk("%s : env var DSL_BIT_TMODE is set\n", __FUNCTION__);
/*
@@ -3254,9 +3272,9 @@ int tn7dsl_init(void *priv)
// UR8_MERGE_START CQ11054 Jack Zhang
cp = prom_getenv("high_precision");
- if (cp)
+ if (cp || mp_high_precision != -1)
{
- high_precision_selected = os_atoi(cp);
+ high_precision_selected = mp_high_precision == -1 ? os_atoi(cp) : mp_high_precision;
}
if ( high_precision_selected)
{
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -76,6 +76,8 @@ typedef void OS_SETUP;
#include "tn7atm.h"
#include "tn7api.h"
+extern int mp_oam_lb_timeout;
+extern int mp_autopvc_enable;
/* PDSP Firmware files */
#include "tnetd7300_sar_firm.h"
@@ -932,9 +934,9 @@ int tn7sar_setup_oam_channel(Tn7AtmPriva
pHalDev = (HAL_DEVICE *)priv->pSarHalDev;
pauto_pvc = prom_getenv("autopvc_enable");
- if(pauto_pvc) //CQ10273
+ if(pauto_pvc || mp_autopvc_enable != -1) //CQ10273
{
- auto_pvc =tn7sar_strtoul(pauto_pvc, NULL, 10);
+ auto_pvc = mp_autopvc_enable == -1 ? tn7sar_strtoul(pauto_pvc, NULL, 10) : mp_autopvc_enable;
}
memset(&chInfo, 0xff, sizeof(chInfo));
@@ -1133,9 +1135,9 @@ int tn7sar_init(struct atm_dev *dev, Tn7
/* read in oam lb timeout value */
pLbTimeout = prom_getenv("oam_lb_timeout");
- if(pLbTimeout)
+ if(pLbTimeout || mp_oam_lb_timeout != -1)
{
- lbTimeout =tn7sar_strtoul(pLbTimeout, NULL, 10);
+ lbTimeout = mp_oam_lb_timeout == -1 ? tn7sar_strtoul(pLbTimeout, NULL, 10) : mp_oam_lb_timeout;
oamLbTimeout = lbTimeout;
pHalFunc->Control(pHalDev,"OamLbTimeout", "Set", &lbTimeout);
}

@ -1,19 +0,0 @@
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -492,7 +492,6 @@ static void avsar_release(struct device
}
static struct device avsar = {
- .bus_id = "vlynq",
.release = avsar_release,
};
@@ -501,6 +500,8 @@ int shim_osLoadFWImage(unsigned char *pt
const struct firmware *fw_entry;
size_t size;
+ dev_set_name(&avsar, "avsar");
+
printk("requesting firmware image \"ar0700xx.bin\"\n");
if(device_register(&avsar) < 0) {
printk(KERN_ERR

@ -1,39 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -78,8 +78,8 @@
#include <linux/ctype.h>
#include <asm/io.h>
-#include <asm/ar7/ar7.h>
-#include <asm/ar7/prom.h>
+#include <asm/mach-ar7/ar7.h>
+#include <asm/mach-ar7/prom.h>
#include "dsl_hal_api.h"
#ifdef AR7_EFM
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -119,8 +119,8 @@
#include <linux/firmware.h>
#include <asm/io.h>
-#include <asm/ar7/ar7.h>
-#include <asm/ar7/prom.h>
+#include <asm/mach-ar7/ar7.h>
+#include <asm/mach-ar7/prom.h>
/* Modules specific header files */
#ifdef AR7_EFM
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -55,8 +55,8 @@
#include <linux/ctype.h>
#include <asm/io.h>
-#include <asm/ar7/ar7.h>
-#include <asm/ar7/prom.h>
+#include <asm/mach-ar7/ar7.h>
+#include <asm/mach-ar7/prom.h>
#define _CPHAL_AAL5
#define _CPHAL_SAR

@ -1,92 +0,0 @@
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -209,7 +209,7 @@ led_reg_t ledreg[2];
static struct led_funcs ledreg[2];
#endif
-#define DEV_DSLMOD CTL_UNNUMBERED
+#define DEV_DSLMOD 0
#define MAX_STR_SIZE 256
#define DSL_MOD_SIZE 256
@@ -350,8 +350,8 @@ static void tn7dsl_chng_modulation(void*
static unsigned int tn7dsl_set_modulation(void* data, int flag);
static void tn7dsl_ctrl_fineGain(int value);
static void tn7dsl_set_fineGainValue(int value);
-static int dslmod_sysctl (ctl_table * ctl, int write, struct file *filp,
- void *buffer, size_t * lenp);
+static int dslmod_sysctl (ctl_table * ctl, int write, void *buffer,
+ size_t * lenp, loff_t *ppos);
static void tn7dsl_register_dslss_led(void);
void tn7dsl_dslmod_sysctl_register(void);
void tn7dsl_dslmod_sysctl_unregister(void);
@@ -3582,8 +3582,8 @@ unsigned int tn7dsl_get_memory(unsigned
-static int dslmod_sysctl(ctl_table *ctl, int write, struct file * filp,
- void *buffer, size_t *lenp)
+static int dslmod_sysctl(ctl_table *ctl, int write, void *buffer,
+ size_t *lenp, loff_t *ppos)
{
char *ptr;
int ret, len = 0;
@@ -3595,7 +3595,7 @@ static int dslmod_sysctl(ctl_table *ctl,
char mod_req[16] = { '\t' };
char fst_byt;
- if (!*lenp || (filp->f_pos && !write))
+ if (!*lenp || (*ppos && !write))
{
*lenp = 0;
return 0;
@@ -3605,9 +3605,9 @@ static int dslmod_sysctl(ctl_table *ctl,
*/
if(write)
{
- ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
+ ret = proc_dostring(ctl, write, buffer, lenp, ppos);
- switch (ctl->ctl_name)
+ switch ((long)ctl->extra2)
{
case DEV_DSLMOD:
ptr = strpbrk(info, " \t");
@@ -3691,14 +3691,21 @@ static int dslmod_sysctl(ctl_table *ctl,
else
{
len += sprintf(info+len, mod_req);
- ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
+ ret = proc_dostring(ctl, write, buffer, lenp, ppos);
}
return ret;
}
ctl_table dslmod_table[] = {
- {DEV_DSLMOD, "dslmod", info, DSL_MOD_SIZE, 0644, NULL, NULL, &dslmod_sysctl, &sysctl_string}
+ {
+ .procname = "dslmod",
+ .data = info,
+ .maxlen = DSL_MOD_SIZE,
+ .mode = 0644,
+ .proc_handler = &dslmod_sysctl,
+ .extra2 = (void *)DEV_DSLMOD,
+ }
,
{0}
};
@@ -3706,7 +3713,12 @@ ctl_table dslmod_table[] = {
/* Make sure that /proc/sys/dev is there */
ctl_table dslmod_root_table[] = {
#ifdef CONFIG_PROC_FS
- {CTL_DEV, "dev", NULL, 0, 0555, dslmod_table}
+ {
+ .procname = "dev",
+ .maxlen = 0,
+ .mode = 0555,
+ .child = dslmod_table,
+ }
,
#endif /* CONFIG_PROC_FS */
{0}

@ -1,32 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -2003,7 +2003,7 @@ static int __init tn7atm_register (Tn7At
dgprintf (4, "device %s being registered\n", priv->name);
- mydev = atm_dev_register (priv->proc_name, &tn7atm_ops, -1, NULL);
+ mydev = atm_dev_register (priv->proc_name, NULL, &tn7atm_ops, -1, NULL);
if (mydev == NULL)
{
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -499,13 +499,16 @@ int shim_osLoadFWImage(unsigned char *pt
{
const struct firmware *fw_entry;
size_t size;
+ int ret;
dev_set_name(&avsar, "avsar");
printk("requesting firmware image \"ar0700xx.bin\"\n");
- if(device_register(&avsar) < 0) {
+ dev_set_name(&avsar, "avsar");
+ ret = device_register(&avsar);
+ if (ret < 0) {
printk(KERN_ERR
- "avsar: device_register fails\n");
+ "avsar: device_register fails, error%i\n", ret);
return -1;
}

@ -1,33 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -72,7 +72,7 @@
#include <linux/atmdev.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
-#include <linux/smp_lock.h>
+#include <linux/interrupt.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
--- a/tn7sar.c
+++ b/tn7sar.c
@@ -49,7 +49,7 @@
#include <linux/atmdev.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
-#include <linux/smp_lock.h>
+#include <linux/interrupt.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -108,7 +108,7 @@
#include <linux/atmdev.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
-#include <linux/smp_lock.h>
+#include <linux/interrupt.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>

@ -1,38 +0,0 @@
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -350,7 +350,7 @@ static void tn7dsl_chng_modulation(void*
static unsigned int tn7dsl_set_modulation(void* data, int flag);
static void tn7dsl_ctrl_fineGain(int value);
static void tn7dsl_set_fineGainValue(int value);
-static int dslmod_sysctl (ctl_table * ctl, int write, void *buffer,
+static int dslmod_sysctl (struct ctl_table * ctl, int write, void *buffer,
size_t * lenp, loff_t *ppos);
static void tn7dsl_register_dslss_led(void);
void tn7dsl_dslmod_sysctl_register(void);
@@ -3488,7 +3488,7 @@ unsigned int tn7dsl_get_memory(unsigned
-static int dslmod_sysctl(ctl_table *ctl, int write, void *buffer,
+static int dslmod_sysctl(struct ctl_table *ctl, int write, void *buffer,
size_t *lenp, loff_t *ppos)
{
char *ptr;
@@ -3603,7 +3603,7 @@ static int dslmod_sysctl(ctl_table *ctl,
}
-ctl_table dslmod_table[] = {
+struct ctl_table dslmod_table[] = {
{
.procname = "dslmod",
.data = info,
@@ -3617,7 +3617,7 @@ ctl_table dslmod_table[] = {
};
/* Make sure that /proc/sys/dev is there */
-ctl_table dslmod_root_table[] = {
+struct ctl_table dslmod_root_table[] = {
#ifdef CONFIG_PROC_FS
{
.procname = "dev",

@ -1,20 +0,0 @@
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -845,7 +845,7 @@ static int __init tn7atm_irq_request (st
priv->sar_irq = LNXINTNUM (ATM_SAR_INT); /* Interrupt line # */
- if (request_irq (priv->sar_irq, tn7atm_sar_irq, IRQF_DISABLED, "SAR ", dev))
+ if (request_irq (priv->sar_irq, tn7atm_sar_irq, 0, "SAR ", dev))
printk ("Could not register tn7atm_sar_irq\n");
/*
@@ -869,7 +869,7 @@ static int __init tn7atm_irq_request (st
* Reigster Receive interrupt A
*/
priv->dsl_irq = LNXINTNUM (ATM_DSL_INT); /* Interrupt line # */
- if (request_irq (priv->dsl_irq, tn7atm_dsl_irq, IRQF_DISABLED, "DSL ", dev))
+ if (request_irq (priv->dsl_irq, tn7atm_dsl_irq, 0, "DSL ", dev))
printk ("Could not register tn7atm_dsl_irq\n");
/***** VRB Tasklet Mode ****/

@ -1,63 +0,0 @@
--- a/cpswhal_cpsar.h
+++ b/cpswhal_cpsar.h
@@ -437,10 +437,10 @@ typedef struct
int (*DeviceFindInfo)(int Inst, const char *DeviceName, void *DeviceInfo);
int (*DeviceFindParmUint)(void *DeviceInfo, const char *Parm, bit32u *Value);
int (*DeviceFindParmValue)(void *DeviceInfo, const char *Parm, void *Value);
- void (*Free)(void *MemPtr);
+ void (*Free)(const void *MemPtr);
void (*FreeRxBuffer)(OS_RECEIVEINFO *OsReceiveInfo, void *MemPtr);
- void (*FreeDev)(void *MemPtr);
- void (*FreeDmaXfer)(void *MemPtr);
+ void (*FreeDev)(const void *MemPtr);
+ void (*FreeDmaXfer)(const void *MemPtr);
void (*IsrRegister)(OS_DEVICE *OsDev, int (*halISR)(HAL_DEVICE*, int*), int InterruptBit);
void (*IsrUnRegister)(OS_DEVICE *OsDev, int InterruptBit);
void* (*Malloc)(bit32u size);
--- a/cpswhal_cpaal5.h
+++ b/cpswhal_cpaal5.h
@@ -436,10 +436,10 @@ typedef struct
int (*DeviceFindInfo)(int Inst, const char *DeviceName, void *DeviceInfo);
int (*DeviceFindParmUint)(void *DeviceInfo, const char *Parm, bit32u *Value);
int (*DeviceFindParmValue)(void *DeviceInfo, const char *Parm, void *Value);
- void (*Free)(void *MemPtr);
+ void (*Free)(const void *MemPtr);
void (*FreeRxBuffer)(OS_RECEIVEINFO *OsReceiveInfo, void *MemPtr);
- void (*FreeDev)(void *MemPtr);
- void (*FreeDmaXfer)(void *MemPtr);
+ void (*FreeDev)(const void *MemPtr);
+ void (*FreeDmaXfer)(const void *MemPtr);
void (*IsrRegister)(OS_DEVICE *OsDev, int (*halISR)(HAL_DEVICE*, int*), int InterruptBit);
void (*IsrUnRegister)(OS_DEVICE *OsDev, int InterruptBit);
void* (*Malloc)(bit32u size);
--- a/tn7atm.c
+++ b/tn7atm.c
@@ -2690,7 +2690,7 @@ static int tn7atm_proc_turbodsl_read(str
return 0;
}
-static int tn7atm_proc_qos_write(struct file *fp, const char *buf, unsigned long count, void *data)
+static int tn7atm_proc_qos_write(struct file *fp, const char *buf, size_t count, loff_t *data)
{
char local_buf[32];
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -1770,7 +1770,7 @@ static int tn7dsl_proc_stats_open(struct
return single_open(file, tn7dsl_proc_stats, PDE_DATA(inode));
}
-int tn7dsl_proc_write_stats(struct file *fp, const char * buf, unsigned long count, void * data);
+int tn7dsl_proc_write_stats(struct file *fp, const char * buf, size_t count, loff_t * data);
struct file_operations tn7dsl_proc_stats_fops = {
.owner = THIS_MODULE,
@@ -4436,7 +4436,7 @@ int tn7dsl_generic_write( int offsetnum,
}
int tn7dsl_proc_write_stats (struct file *fp, const char *buf,
- unsigned long count, void *data)
+ size_t count, loff_t *data)
{
char local_buf[31];
int ret_val = 0;

@ -1,25 +0,0 @@
#
# Copyright (C) 2006-2011 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
ARCH:=mipsel
BOARD:=ar7
BOARDNAME:=TI AR7
FEATURES:=squashfs atm low_mem
SUBTARGETS:=generic ac49x
KERNEL_PATCHVER:=4.14
define Target/Description
Build firmware images for TI AR7 based routers.
endef
include $(INCLUDE_DIR)/target.mk
DEFAULT_PACKAGES+= swconfig
$(eval $(call BuildTarget))

@ -1,4 +0,0 @@
CONFIG_AR7_AC49X=y
CONFIG_AR7_TYPE_AC49X=y
# CONFIG_AR7_TYPE_TI is not set
CONFIG_MTD_AC49X_PARTS=y

@ -1,17 +0,0 @@
#
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
define Profile/None
NAME:=No WiFi
PACKAGES:=
endef
define Profile/None/Description
Package set without WiFi support
endef
$(eval $(call Profile,None))

@ -1,10 +0,0 @@
#
# Copyright (C) 2012 OpenWrt.org
#
SUBTARGET:=ac49x
BOARDNAME:=AudioCodes AC49x
define Target/Description
Build firmware images for AudioCodes AC49x based routers.
endef

@ -1,11 +0,0 @@
define Build/Compile
$(call Build/Compile/Default)
$(TARGET_CC) -o $(PKG_BUILD_DIR)/adam2patcher $(PLATFORM_DIR)/src/adam2patcher.c
endef
define Package/base-files/install-target
mkdir -p $(1)/sbin
$(CP) $(PKG_BUILD_DIR)/adam2patcher $(1)/sbin
endef

@ -1,28 +0,0 @@
#!/bin/sh
. /lib/functions/uci-defaults.sh
board_config_update
if [ -e "/sys/bus/mdio_bus/drivers/IC+ IP175A/1:00" -o \
-e "/sys/bus/mdio_bus/drivers/IC+ IP17xx/1:00" ] && \
[ -x /sbin/swconfig ];
then
ucidef_add_switch "eth0" \
"0:lan" "1:lan" "2:lan" "3:lan" "4t@eth0"
elif [ -e "/sys/bus/mdio_bus/drivers/Infineon ADM6996/1:00" -o \
-e "/sys/bus/mdio_bus/drivers/Marvell 88E6060/1:10" ];
then
ucidef_set_interface_lan "eth0.1"
elif [ -d "/sys/class/net/eth1" ]; then
ucidef_set_interface_lan "eth0 eth1"
else
ucidef_set_interface_lan "eth0"
fi
board_config_flush
exit 0

@ -1,32 +0,0 @@
#!/bin/sh
# Copyright (C) 2007-2013 OpenWrt.org
. /lib/functions/leds.sh
get_status_led() {
[ -d "/sys/class/leds/status" ] && status_led="status"
[ -d "/sys/class/leds/power:green" ] && status_led="power:green"
}
set_state() {
get_status_led
case "$1" in
preinit)
status_led_blink_preinit
;;
failsafe)
status_led_blink_failsafe
;;
preinit_regular)
status_led_blink_preinit_regular
;;
done)
status_led_on
[ "$status_led" = "power:green" ] && {
led_off "power:red"
}
;;
esac
}

@ -1,13 +0,0 @@
#!/bin/sh /etc/rc.common
# ADAM2 patcher for Netgear DG834 and compatible
# Copyright (C) 2006 OpenWrt.org
START=00
start() {
MD5="$(md5sum /dev/mtdblock0 | awk '{print $1}')"
[ "$MD5" = "0530bfdf00ec155f4182afd70da028c1" ] && {
mtd unlock adam2
/sbin/adam2patcher /dev/mtdblock0
}
rm -f /etc/rc.d/S${START}adam2 /etc/init.d/adam2 /sbin/adam2patcher >&- 2>&-
}

@ -1,169 +0,0 @@
CONFIG_ADM6996_PHY=y
CONFIG_AR7=y
CONFIG_AR7_TI=y
# CONFIG_AR7_TYPE_AC49X is not set
CONFIG_AR7_TYPE_TI=y
CONFIG_AR7_WDT=y
CONFIG_ARCH_BINFMT_ELF_STATE=y
CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
# CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
# CONFIG_ARCH_HAS_SG_CHAIN is not set
# CONFIG_ARCH_HAS_STRICT_KERNEL_RWX is not set
# CONFIG_ARCH_HAS_STRICT_MODULE_RWX is not set
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
CONFIG_ARCH_MMAP_RND_BITS_MAX=15
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
# CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set
# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_BOOT_ELF32=y
CONFIG_CEVT_R4K=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
CONFIG_CMDLINE_BOOL=y
# CONFIG_CMDLINE_OVERRIDE is not set
CONFIG_CPMAC=y
CONFIG_CPU_GENERIC_DUMP_TLB=y
CONFIG_CPU_HAS_PREFETCH=y
CONFIG_CPU_HAS_SYNC=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MIPS32=y
CONFIG_CPU_MIPS32_R1=y
CONFIG_CPU_MIPSR1=y
CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
CONFIG_CPU_R4K_CACHE_TLB=y
CONFIG_CPU_R4K_FPU=y
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
CONFIG_CPU_SUPPORTS_HIGHMEM=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CSRC_R4K=y
CONFIG_DMA_NONCOHERENT=y
CONFIG_EARLY_PRINTK=y
CONFIG_ETHERNET_PACKET_MANGLE=y
CONFIG_FIXED_PHY=y
CONFIG_GENERIC_ATOMIC64=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_IO=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GPIOLIB=y
# CONFIG_GRO_CELLS is not set
CONFIG_HANDLE_DOMAIN_IRQ=y
CONFIG_HARDWARE_WATCHPOINTS=y
CONFIG_HAS_DMA=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
# CONFIG_HAVE_ARCH_BITREVERSE is not set
CONFIG_HAVE_ARCH_COMPILER_H=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
CONFIG_HAVE_CBPF_JIT=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_COPY_THREAD_TLS=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_HAVE_IDE=y
CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_HAVE_MEMBLOCK=y
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_HAVE_NET_DSA=y
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HW_RANDOM=y
CONFIG_HZ_PERIODIC=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_IP17XX_PHY=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_MIPS_CPU=y
CONFIG_IRQ_WORK=y
CONFIG_KALLSYMS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_MDIO_BUS=y
CONFIG_MDIO_DEVICE=y
CONFIG_MIGRATION=y
CONFIG_MIPS=y
CONFIG_MIPS_ASID_BITS=8
CONFIG_MIPS_ASID_SHIFT=0
CONFIG_MIPS_CBPF_JIT=y
CONFIG_MIPS_CLOCK_VSYSCALL=y
# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y
# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set
CONFIG_MIPS_L1_CACHE_SHIFT=5
# CONFIG_MIPS_MACHINE is not set
CONFIG_MODULES_USE_ELF_REL=y
# CONFIG_MTD_AC49X_PARTS is not set
CONFIG_MTD_CFI_STAA=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MVSWITCH_PHY=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_PER_CPU_KM=y
CONFIG_NO_EXCEPT_FILL=y
CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
# CONFIG_NO_IOPORT_MAP is not set
# CONFIG_OF is not set
CONFIG_PCI_DRIVERS_LEGACY=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_PGTABLE_LEVELS=2
CONFIG_PHYLIB=y
# CONFIG_RCU_NEED_SEGCBLIST is not set
# CONFIG_RCU_STALL_COMMON is not set
# CONFIG_SCHED_INFO is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SERIAL_8250_FSL is not set
CONFIG_SRCU=y
CONFIG_SWAP_IO_SPACE=y
CONFIG_SWCONFIG=y
CONFIG_SWPHY=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
CONFIG_SYS_HAS_EARLY_PRINTK=y
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
CONFIG_SYS_SUPPORTS_MIPS16=y
CONFIG_SYS_SUPPORTS_ZBOOT=y
CONFIG_SYS_SUPPORTS_ZBOOT_UART16550=y
CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_TINY_SRCU=y
CONFIG_VLYNQ=y
# CONFIG_VLYNQ_DEBUG is not set

@ -1,221 +0,0 @@
/*
* AudioCodes AC49x PSPBoot-based flash partition table
* Copyright 2012 Daniel Golle <daniel.golle@gmail.com>
*
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/bootmem.h>
#include <linux/magic.h>
#include <linux/module.h>
#include <asm/mach-ar7/prom.h>
#define AC49X_MAXENVPARTS 8
#define AC49X_PARTTYPE_LOADER 0
#define AC49X_PARTTYPE_BOOTENV 1
#define AC49X_PARTTYPE_LINUX 2
#define AC49X_PARTTYPE_ROOTFS 3
#define AC49X_PARTTYPE_UNKNOWN 4
#define AC49X_NUM_PARTTYPES 5
#define AC49X_FLASH_ADDRMASK 0x00FFFFFF
#define AC49X_LOADER_MAGIC 0x40809000
#define AC49X_LINUX_MAGIC 0x464c457f /* ELF */
#define AC49X_BOOTENV_MAGIC 0x4578614d /* MaxE */
#define ROOTFS_MIN_OFFSET 0xC0000
int parse_partvar(const unsigned char *partvar, struct mtd_partition *part)
{
unsigned int partstart, partend;
unsigned int pnum;
pnum = sscanf(partvar, "0x%x,0x%x", &partstart, &partend);
if (pnum != 2)
return 1;
part->offset = partstart & AC49X_FLASH_ADDRMASK;
part->size = partend - partstart;
return 0;
}
int detect_parttype(struct mtd_info *master, struct mtd_partition part)
{
unsigned int magic;
size_t len;
if (part.size < 4)
return -1;
mtd_read(master, part.offset, sizeof(magic), &len,
(uint8_t *)&magic);
if (len != sizeof(magic))
return -1;
switch (magic) {
case AC49X_LOADER_MAGIC:
return AC49X_PARTTYPE_LOADER;
case AC49X_LINUX_MAGIC:
return AC49X_PARTTYPE_LINUX;
case SQUASHFS_MAGIC:
case CRAMFS_MAGIC:
case CRAMFS_MAGIC_WEND:
return AC49X_PARTTYPE_ROOTFS;
case AC49X_BOOTENV_MAGIC:
return AC49X_PARTTYPE_BOOTENV;
default:
switch (magic & 0xFF) {
case JFFS2_SUPER_MAGIC:
return AC49X_PARTTYPE_ROOTFS;
}
switch (magic >> 8) {
case JFFS2_SUPER_MAGIC:
return AC49X_PARTTYPE_ROOTFS;
}
return AC49X_PARTTYPE_UNKNOWN;
}
}
const char *partnames[] = {
"loader",
"config",
"linux",
"rootfs",
"data"
};
void gen_partname(unsigned int type,
unsigned int *typenumeration,
struct mtd_partition *part)
{
char *s = kzalloc(sizeof(char) * 8, GFP_KERNEL);
(typenumeration[type])++;
if (typenumeration[type] == 1)
sprintf(s, "%s", partnames[type]);
else
sprintf(s, "%s%d", partnames[type], typenumeration[type]);
part->name = s;
}
static int create_mtd_partitions(struct mtd_info *master,
const struct mtd_partition **pparts,
struct mtd_part_parser_data *data)
{
unsigned int envpartnum = 0, linuxpartnum = 0;
unsigned int typenumeration[5] = { 0, 0, 0, 0, 0 };
unsigned char evn[5];
const unsigned char *partvar = NULL;
struct mtd_partition *ac49x_parts;
ac49x_parts = kzalloc(sizeof(*ac49x_parts) * AC49X_MAXENVPARTS,
GFP_KERNEL);
if (!ac49x_parts)
return -ENOMEM;
linuxpartnum = 0;
for (envpartnum = 0; envpartnum < AC49X_MAXENVPARTS; envpartnum++) {
struct mtd_partition parsepart;
unsigned int offset, size, type;
int err;
sprintf(evn, "mtd%d", envpartnum);
partvar = prom_getenv(evn);
if (!partvar)
continue;
err = parse_partvar(partvar, &parsepart);
if (err)
continue;
offset = parsepart.offset;
size = parsepart.size;
type = detect_parttype(master, parsepart);
gen_partname(type, typenumeration, &parsepart);
/* protect loader */
if (type == AC49X_PARTTYPE_LOADER)
parsepart.mask_flags = MTD_WRITEABLE;
else
parsepart.mask_flags = 0;
memcpy(&(ac49x_parts[linuxpartnum]), &parsepart,
sizeof(struct mtd_partition));
/* scan for contained rootfs */
if (type == AC49X_PARTTYPE_LINUX) {
parsepart.offset += ROOTFS_MIN_OFFSET &
~(master->erasesize - 1);
parsepart.size -= ROOTFS_MIN_OFFSET &
~(master->erasesize - 1);
do {
unsigned int size, offset;
size = parsepart.size;
offset = parsepart.offset;
type = detect_parttype(master, parsepart);
if (type == AC49X_PARTTYPE_ROOTFS) {
gen_partname(type, typenumeration,
&parsepart);
printk(KERN_INFO
"%s %s: 0x%08x@0x%08x\n",
"detected sub-partition",
parsepart.name,
(unsigned int)parsepart.size,
(unsigned int)parsepart.offset);
linuxpartnum++;
memcpy(&(ac49x_parts[linuxpartnum]),
&parsepart,
sizeof(struct mtd_partition));
break;
}
parsepart.offset += master->erasesize;
parsepart.size -= master->erasesize;
} while (parsepart.size >= master->erasesize);
}
linuxpartnum++;
}
*pparts = ac49x_parts;
return linuxpartnum;
}
static struct mtd_part_parser ac49x_parser = {
.owner = THIS_MODULE,
.parse_fn = create_mtd_partitions,
.name = "ac49xpart",
};
static int __init ac49x_parser_init(void)
{
register_mtd_parser(&ac49x_parser);
return 0;
}
module_init(ac49x_parser_init);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Daniel Golle <daniel.golle@gmail.com>");
MODULE_DESCRIPTION("MTD partitioning for AudioCodes AC49x");

@ -1,234 +0,0 @@
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/bootmem.h>
#include <linux/magic.h>
#include <asm/mach-ar7/prom.h>
#define IMAGE_A_SIZE 0X3c0000
#define WRTP_PARTS 14
#define NSP_IMG_MAGIC_NUMBER le32_to_cpu(0x4D544443)
#define NSP_IMG_SECTION_TYPE_KERNEL (0x01)
#define NSP_IMG_SECTION_TYPE_FILESYSTEM_ROOT (0x02)
#define NSP_IMG_SECTION_TYPE_FILESYSTEM (0x03)
#define MAX_NUM_PARTITIONS 14
static int part_count=0;
static struct mtd_partition titan_parts[WRTP_PARTS];
struct nsp_img_hdr_head
{
unsigned int magic; /* Magic number to identify this image header */
unsigned int boot_offset; /* Offset from start of header to kernel code. */
unsigned int flags; /* Image flags. */
unsigned int hdr_version; /* Version of this header. */
unsigned int hdr_size; /* The complete size of all portions of the header */
unsigned int prod_id; /* This product id */
unsigned int rel_id; /* Which release this is */
unsigned int version; /* name-MMM.nnn.ooo-rxx => 0xMMnnooxx. See comment
below */
unsigned int image_size; /* Image size (including header) */
unsigned int info_offset; /* Offset from start of header to info block */
unsigned int sect_info_offset; /* Offset from start of header to section desc */
unsigned int chksum_offset; /* Offset from start of header to chksum block */
unsigned int pad1;
};
struct nsp_img_hdr_section_info
{
unsigned int num_sects; /* Number of section (and section desc blocks) in this image */
unsigned int sect_size; /* Size of a SINGLE section_desc block */
unsigned int sections_offset; /* Offset to from start of header to the start of the section blocks */
};
/* There will be one of more of the following stuctures in the image header. Each
section will have one of these blocks. */
struct nsp_img_hdr_sections
{
unsigned int offset; /* Offset of section from start of NSP_IMG_HDR_HEAD */
unsigned int total_size; /* Size of section (including pad size.) */
unsigned int raw_size; /* Size of section only */
unsigned int flags; /* Section flags */
unsigned int chksum; /* Section checksum */
unsigned int type; /* Section type. What kind of info does this section describe */
char name[16]; /* Reference name for this section. */
};
static int titan_parse_env_address(char *env_name, unsigned int *flash_base,
unsigned int *flash_end)
{
char image_name[30];
char *env_ptr;
char *base_ptr;
char *end_ptr;
char * string_ptr;
/* Get the image variable */
env_ptr = prom_getenv(env_name);
if(!env_ptr){
printk("titan: invalid env name, %s.\n", env_name);
return -1; /* Error, no image variable */
}
strncpy(image_name, env_ptr, 30);
image_name[29]=0;
string_ptr = image_name;
/* Extract the start and stop addresses of the partition */
base_ptr = strsep(&string_ptr, ",");
end_ptr = strsep(&string_ptr, ",");
if ((base_ptr == NULL) || (end_ptr == NULL)) {
printk("titan: Couldn't tokenize %s start,end.\n", image_name);
return -1;
}
*flash_base = (unsigned int) simple_strtol(base_ptr, NULL, 0);
*flash_end = (unsigned int) simple_strtol(end_ptr, NULL, 0);
if((!*flash_base) || (!*flash_end)) {
printk("titan: Unable to convert :%s: :%s: into start,end values.\n",
env_name, image_name);
return -1;
}
*flash_base &= 0x0fffffff;
*flash_end &= 0x0fffffff;
return 0;
}
static int titan_get_single_image(char *bootcfg_name, unsigned int *flash_base,
unsigned int *flash_end)
{
char *env_ptr;
char *base_ptr;
char *end_ptr;
char image_name[30];
char * string_ptr;
if(!bootcfg_name || !flash_base || !flash_end)
return -1;
env_ptr = prom_getenv(bootcfg_name);
if(!env_ptr){
printk("titan: %s variable not found.\n", bootcfg_name);
return -1; /* Error, no bootcfg variable */
}
string_ptr = image_name;
/* Save off the image name */
strncpy(image_name, env_ptr, 30);
image_name[29]=0;
end_ptr=strsep(&string_ptr, "\"");
base_ptr=strsep(&string_ptr, "\""); /* Loose the last " */
if(!end_ptr || !base_ptr){
printk("titan: invalid bootcfg format, %s.\n", image_name);
return -1; /* Error, invalid bootcfg variable */
}
/* Now, parse the addresses */
return titan_parse_env_address(base_ptr, flash_base, flash_end);
}
static void titan_add_partition(char * env_name, unsigned int flash_base, unsigned int flash_end)
{
titan_parts[part_count].name = env_name;
titan_parts[part_count].offset = flash_base;
titan_parts[part_count].size = flash_end-flash_base;
titan_parts[part_count].mask_flags = (strcmp(env_name, "bootloader")==0||
strcmp(env_name, "boot_env")==0 ||
strcmp(env_name, "full_image")==0 )?MTD_WRITEABLE:0;
part_count++;
}
int create_titan_partitions(struct mtd_info *master,
struct mtd_partition **pparts,
unsigned long origin)
{
struct nsp_img_hdr_head hdr;
struct nsp_img_hdr_section_info sect_info;
struct nsp_img_hdr_sections section;
unsigned int flash_base, flash_end;
unsigned int start, end;
char *name;
int i;
int total_sects=0;
size_t len;
/* Get the bootcfg env variable first */
if(titan_get_single_image("BOOTCFG", &flash_base, &flash_end)) {
/* Error, fallback */
return -1;
}
/* Get access to the header, and do some validation checks */
//hdr=(struct nsp_img_hdr_head*)flash_base;
mtd_read(master, flash_base, sizeof(struct nsp_img_hdr_head), &len, (uint8_t *)&hdr);
if(hdr.magic != NSP_IMG_MAGIC_NUMBER)
return -1; /* Not a single image */
mtd_read(master, flash_base + hdr.sect_info_offset, sizeof(struct nsp_img_hdr_section_info), &len, (uint8_t *)&sect_info);
/* Look for the root fs, and add it first. This way we KNOW where the rootfs is */
for(i=0; i< sect_info.num_sects && i<MAX_NUM_PARTITIONS; i++){
mtd_read(master, flash_base + sect_info.sections_offset + (i * sect_info.sect_size) , sizeof(struct nsp_img_hdr_sections), &len, (uint8_t *)&section);
/* Add only the root partition */
if(section.type != NSP_IMG_SECTION_TYPE_FILESYSTEM_ROOT){
continue;
}
start=flash_base + section.offset;
end=start + section.total_size;
titan_add_partition("root", start, end);
total_sects++;
}
for(i=0; i< sect_info.num_sects && i<MAX_NUM_PARTITIONS; i++){
mtd_read(master, flash_base + sect_info.sections_offset + (i * sect_info.sect_size) , sizeof(struct nsp_img_hdr_sections), &len, (uint8_t *)&section);
name=section.name;
if(section.type == NSP_IMG_SECTION_TYPE_FILESYSTEM_ROOT)
{
name = "rootfs";
start=flash_base + section.offset;
end=flash_end;
titan_add_partition(name, start, end);
total_sects++;
}
else if(section.type == NSP_IMG_SECTION_TYPE_KERNEL)
{
name = "kernel";
start=flash_base + section.offset;
end=start + section.total_size;
titan_add_partition(name, start, end);
total_sects++;
}
}
/* Next, lets add the single image */
titan_add_partition("primary_image", flash_base, flash_end);
total_sects++;
titan_add_partition("full_image", 0, master->size);
total_sects++;
if (!titan_parse_env_address("BOOTLOADER", &start, &end)){
titan_add_partition("bootloader", start, end);
total_sects++;
}
if (!titan_parse_env_address("boot_env", &start, &end)){
titan_add_partition("boot_env", start, end);
total_sects++;
}
*pparts = titan_parts;
return total_sects;
}

@ -1,5 +0,0 @@
CONFIG_AR7_TI=y
# CONFIG_AR7_TYPE_AC49X is not set
CONFIG_AR7_TYPE_TI=y
# CONFIG_MTD_AC49X_PARTS is not set
CONFIG_MTD_AR7_PARTS=y

@ -1,18 +0,0 @@
#
# Copyright (C) 2009 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
define Profile/Annex-A
NAME:=Annex-A DSL firmware (default)
PACKAGES:=kmod-pppoa ppp-mod-pppoa linux-atm atm-tools br2684ctl \
kmod-sangam-atm-annex-a
endef
define Profile/Annex-A/Description
Package set compatible with Annex-A DSL lines (most countries).
endef
$(eval $(call Profile,Annex-A))

@ -1,18 +0,0 @@
#
# Copyright (C) 2009 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
define Profile/Annex-B
NAME:=Annex-B DSL firmware
PACKAGES:=kmod-pppoa ppp-mod-pppoa linux-atm atm-tools br2684ctl \
kmod-sangam-atm-annex-b
endef
define Profile/Annex-B/Description
Package set compatible with Annex-B DSL lines (Germany).
endef
$(eval $(call Profile,Annex-B))

@ -1,18 +0,0 @@
#
# Copyright (C) 2006-2009 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
define Profile/Texas
NAME:=Texas Instruments WiFi (mac80211)
PACKAGES:=kmod-acx-mac80211
endef
define Profile/Texas/Description
Package set compatible with hardware using Texas Instruments WiFi cards
using the mac80211 driver.
endef
$(eval $(call Profile,Texas))

@ -1,17 +0,0 @@
#
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
define Profile/None
NAME:=No WiFi
PACKAGES:=
endef
define Profile/None/Description
Package set without WiFi support
endef
$(eval $(call Profile,None))

@ -1,12 +0,0 @@
#
# Copyright (C) 2012 OpenWrt.org
#
SUBTARGET:=generic
BOARDNAME:=Texas Instruments AR7 boards
DEFAULT_PACKAGES+= kmod-mac80211 kmod-acx-mac80211 wpad-basic
define Target/Description
Build firmware images for TI AR7 based routers.
endef

@ -1,137 +0,0 @@
#
# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
DROP_SECTIONS:=.reginfo .mdebug .comment .note .pdr .options .MIPS.options
OBJCOPY_SREC:=$(TARGET_CROSS)objcopy -S -O srec $(addprefix --remove-section=,$(DROP_SECTIONS))
LOADADDR:=0x94600000
KERNEL_ENTRY:=0x94100000
RAMSTART:=0x94000000
RAMSIZE:=0x00100000
EVA_LOADADDR := 0x94100000
LOADER_MAKEOPTS= \
KDIR=$(KDIR) \
LOADADDR=$(LOADADDR) \
KERNEL_ENTRY=$(KERNEL_ENTRY) \
RAMSTART=$(RAMSTART) \
RAMSIZE=$(RAMSIZE)
CFLAGS := -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \
-fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic \
-pipe -mlong-calls -fno-common \
-mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap \
-DLOADADDR=$(LOADADDR)
define Build/Clean
$(MAKE) -C $(GENERIC_PLATFORM_DIR)/image/lzma-loader $(LOADER_MAKEOPTS) clean
endef
define Image/Prepare
cat $(KDIR)/vmlinux | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux.lzma
$(STAGING_DIR_HOST)/bin/lzma2eva $(EVA_LOADADDR) 0x$${shell $(TARGET_CROSS)nm $(KDIR)/vmlinux | grep -w kernel_entry | cut -d' ' -f1} $(KDIR)/vmlinux.lzma $(KDIR)/loader.eva
$(MAKE) -C $(GENERIC_PLATFORM_DIR)/image/lzma-loader \
$(LOADER_MAKEOPTS) \
clean compile
$(OBJCOPY_SREC) $(KDIR)/loader.elf $(KDIR)/loader.srec
$(OBJCOPY_SREC) $(KDIR)/vmlinux.elf $(KDIR)/vmlinux.srec
srec2bin $(KDIR)/loader.srec $(KDIR)/loader.bin
srec2bin $(KDIR)/vmlinux.srec $(KDIR)/vmlinux.bin
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
$(OBJCOPY_SREC) $(KDIR)/vmlinux-initramfs.elf \
$(KDIR)/vmlinux-initramfs.srec
srec2bin $(KDIR)/vmlinux-initramfs.srec $(KDIR)/vmlinux-initramfs.bin
endif
endef
define align/jffs2-64k
bs=65536 conv=sync
endef
define align/jffs2-128k
bs=131072 conv=sync
endef
define align/squashfs
endef
define Image/Build/CyberTAN
(dd if=/dev/zero bs=16 count=1; cat $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin) | \
$(STAGING_DIR_HOST)/bin/addpattern -p $(3) -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(4)-code.bin
endef
define Image/Build/Titan
$(STAGING_DIR_HOST)/bin/mktitanimg -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(4)-code.bin -i $(KDIR)/loader.bin $(KDIR)/root.$(1) -a 0x10000 0x10000 -h 2 -p 0x4C575943 -s 0x0b010000
$(STAGING_DIR_HOST)/bin/mktitanimg -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-na-$(4)-code.bin -i $(KDIR)/loader.bin $(KDIR)/root.$(1) -a 0x10000 0x10000 -h 2 -p 0x4D575943 -s 0x0b010000
endef
define Image/Build/AudioCodes
( dd if=$(KDIR)/vmlinux.elf bs=64k conv=sync ; dd if=$(KDIR)/root.$(1) ) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).bin
endef
#define Image/Build/sErCoMm
# cat sercomm/adam2.bin "$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin" > "$(KDIR)/dgfw.tmp"
# dd if=sercomm/$(2) of="$(KDIR)/dgfw.tmp" bs=$$$$((0x3e0000 - 80)) seek=1 conv=notrunc
# $(STAGING_DIR_HOST)/bin/dgfirmware -f -w "$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(3).img" "$(KDIR)/dgfw.tmp"
# rm -f "$(KDIR)/dgfw.tmp"
#endef
define Image/Build/EVA
dd if=$(KDIR)/loader.eva $(call align/$(1)) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(KERNEL)-$(1).bin
cat $(KDIR)/root.$(1) >> $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(KERNEL)-$(1).bin
$(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(KERNEL)-$(1).bin)
endef
define Image/Build/Initramfs
$(CP) $(KDIR)/vmlinux-initramfs.bin $(BIN_DIR)/$(IMG_PREFIX)-initramfs.bin
endef
ifeq ($(CONFIG_AR7_TI),y)
define Image/Build
dd if=$(KDIR)/loader.bin $(call align/$(1)) > $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin
cat $(KDIR)/root.$(1) >> $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin
$(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin)
$(call Image/Build/CyberTAN,$(1),AG1B,AG1B,$(1))
$(call Image/Build/CyberTAN,$(1),AG1A,AG1A,$(1))
$(call Image/Build/CyberTAN,$(1),WA21,WA21,$(1))
$(call Image/Build/CyberTAN,$(1),WA22,WA22,$(1))
$(call Image/Build/CyberTAN,$(1),WAG2,WAG2,$(1))
$(call Image/Build/CyberTAN,$(1),AG310,AV2A -b -r 1.0,$(1))
$(call Image/Build/CyberTAN,$(1),AG241v2,AG3A -b -r 2.0,$(1))
$(call Image/Build/CyberTAN,$(1),AG241v2b,AG3B -b -r 2.0,$(1))
$(call Image/Build/CyberTAN,$(1),AG241v1,AG3A -b,$(1))
$(call Image/Build/CyberTAN,$(1),WAG54GP2v1,ATWL -b,$(1))
$(call Image/Build/CyberTAN,$(1),WAG54GP2v2,CTWL -b,$(1))
$(call Image/Build/CyberTAN,$(1),WA31,WA31 -b,$(1))
$(call Image/Build/CyberTAN,$(1),WA32,WA32 -b,$(1))
$(call Image/Build/CyberTAN,$(1),WA7A,WA7A -b,$(1))
$(call Image/Build/CyberTAN,$(1),WA7B,WA7B -b,$(1))
# $(call Image/Build/sErCoMm,$(1),dg834,$(1))
# $(call Image/Build/sErCoMm,$(1),jdr454wb,$(1))
$(call Image/Build/EVA,$(1),EVA)
$(call Image/Build/Titan,$(1),Titan,Titan,$(1))
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
$(call Image/Build/Initramfs)
endif
endef
endif
ifeq ($(CONFIG_AR7_AC49X),y)
define Image/Build
# $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin)
$(call Image/Build/AudioCodes,$(1),mp202,$(1))
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
$(call Image/Build/Initramfs)
endif
endef
endif
$(eval $(call BuildImage))

@ -1,11 +0,0 @@
--- a/arch/mips/include/asm/mach-ar7/spaces.h
+++ b/arch/mips/include/asm/mach-ar7/spaces.h
@@ -20,6 +20,8 @@
#define UNCAC_BASE _AC(0xb4000000, UL) /* 0xa0000000 + PHYS_OFFSET */
#define IO_BASE UNCAC_BASE
+#define HIGHMEM_START _AC(0x20000000, UL)
+
#include <asm/mach-generic/spaces.h>
#endif /* __ASM_AR7_SPACES_H */

@ -1,22 +0,0 @@
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
@@ -13,7 +13,7 @@ obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o
obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
-obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o
+obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o titanpart.o
obj-$(CONFIG_MTD_BCM63XX_PARTS) += bcm63xxpart.o
obj-$(CONFIG_MTD_BCM47XX_PARTS) += bcm47xxpart.o
obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
--- a/arch/mips/ar7/platform.c
+++ b/arch/mips/ar7/platform.c
@@ -197,7 +197,7 @@ static struct resource physmap_flash_res
.name = "mem",
.flags = IORESOURCE_MEM,
.start = 0x10000000,
- .end = 0x107fffff,
+ .end = 0x11ffffff,
};
static const char *ar7_probe_types[] = { "ar7part", NULL };

@ -1,300 +0,0 @@
--- a/drivers/vlynq/vlynq.c
+++ b/drivers/vlynq/vlynq.c
@@ -119,20 +119,40 @@ static int vlynq_linked(struct vlynq_dev
return 0;
}
+static volatile int vlynq_delay_value_new = 0;
+
+static void vlynq_delay_wait(u32 count)
+{
+ /* Code adopted from original vlynq driver */
+ int i = 0;
+ volatile int *ptr = &vlynq_delay_value_new;
+ *ptr = 0;
+
+ /* We are assuming that the each cycle takes about
+ * 23 assembly instructions. */
+ for(i = 0; i < (count + 23)/23; i++)
+ *ptr = *ptr + 1;
+}
+
static void vlynq_reset(struct vlynq_device *dev)
{
+ u32 rtm = readl(&dev->local->revision);
+
+ rtm = rtm < 0x00010205 || readl(&dev->local->status) & 0x800 == 0 ?
+ 0 : 0x600000;
+
writel(readl(&dev->local->control) | VLYNQ_CTRL_RESET,
&dev->local->control);
/* Wait for the devices to finish resetting */
- msleep(5);
+ vlynq_delay_wait(0xffffff);
/* Remove reset bit */
- writel(readl(&dev->local->control) & ~VLYNQ_CTRL_RESET,
+ writel(readl(&dev->local->control) & ~VLYNQ_CTRL_RESET | rtm,
&dev->local->control);
/* Give some time for the devices to settle */
- msleep(5);
+ vlynq_delay_wait(0xffffff);
}
static void vlynq_irq_unmask(struct irq_data *d)
@@ -379,6 +399,61 @@ void vlynq_unregister_driver(struct vlyn
}
EXPORT_SYMBOL(vlynq_unregister_driver);
+enum vlynq_clk_src {
+ vlynq_clk_external,
+ vlynq_clk_local,
+ vlynq_clk_remote,
+ vlynq_clk_invalid,
+};
+
+static int __vlynq_set_clocks(struct vlynq_device *dev,
+ enum vlynq_clk_src clk_dir,
+ int lclk_div, int rclk_div)
+{
+ u32 reg;
+
+ if (clk_dir == vlynq_clk_invalid) {
+ printk(KERN_ERR "%s: attempt to set invalid clocking\n",
+ dev_name(&dev->dev));
+ return -EINVAL;
+ }
+
+ reg = readl(&dev->local->control);
+ if (readl(&dev->local->revision) < 0x00010205) {
+ if (clk_dir & vlynq_clk_local)
+ reg |= VLYNQ_CTRL_CLOCK_INT;
+ else
+ reg &= ~VLYNQ_CTRL_CLOCK_INT;
+ }
+ reg &= ~VLYNQ_CTRL_CLOCK_MASK;
+ reg |= VLYNQ_CTRL_CLOCK_DIV(lclk_div);
+ writel(reg, &dev->local->control);
+
+ if (!vlynq_linked(dev))
+ return -ENODEV;
+
+ printk(KERN_INFO "%s: local VLYNQ protocol rev. is 0x%08x\n",
+ dev_name(&dev->dev), readl(&dev->local->revision));
+ printk(KERN_INFO "%s: remote VLYNQ protocol rev. is 0x%08x\n",
+ dev_name(&dev->dev), readl(&dev->remote->revision));
+
+ reg = readl(&dev->remote->control);
+ if (readl(&dev->remote->revision) < 0x00010205) {
+ if (clk_dir & vlynq_clk_remote)
+ reg |= VLYNQ_CTRL_CLOCK_INT;
+ else
+ reg &= ~VLYNQ_CTRL_CLOCK_INT;
+ }
+ reg &= ~VLYNQ_CTRL_CLOCK_MASK;
+ reg |= VLYNQ_CTRL_CLOCK_DIV(rclk_div);
+ writel(reg, &dev->remote->control);
+
+ if (!vlynq_linked(dev))
+ return -ENODEV;
+
+ return 0;
+}
+
/*
* A VLYNQ remote device can clock the VLYNQ bus master
* using a dedicated clock line. In that case, both the
@@ -392,29 +467,16 @@ static int __vlynq_try_remote(struct vly
int i;
vlynq_reset(dev);
- for (i = dev->dev_id ? vlynq_rdiv2 : vlynq_rdiv8; dev->dev_id ?
- i <= vlynq_rdiv8 : i >= vlynq_rdiv2;
- dev->dev_id ? i++ : i--) {
+ for (i = 0; i <= 7; i++) {
if (!vlynq_linked(dev))
break;
- writel((readl(&dev->remote->control) &
- ~VLYNQ_CTRL_CLOCK_MASK) |
- VLYNQ_CTRL_CLOCK_INT |
- VLYNQ_CTRL_CLOCK_DIV(i - vlynq_rdiv1),
- &dev->remote->control);
- writel((readl(&dev->local->control)
- & ~(VLYNQ_CTRL_CLOCK_INT |
- VLYNQ_CTRL_CLOCK_MASK)) |
- VLYNQ_CTRL_CLOCK_DIV(i - vlynq_rdiv1),
- &dev->local->control);
-
- if (vlynq_linked(dev)) {
- printk(KERN_DEBUG
- "%s: using remote clock divisor %d\n",
- dev_name(&dev->dev), i - vlynq_rdiv1 + 1);
- dev->divisor = i;
+ if (!__vlynq_set_clocks(dev, vlynq_clk_remote, i, i)) {
+ printk(KERN_INFO
+ "%s: using remote clock divisor %d\n",
+ dev_name(&dev->dev), i + 1);
+ dev->divisor = i + vlynq_rdiv1;
return 0;
} else {
vlynq_reset(dev);
@@ -433,25 +495,17 @@ static int __vlynq_try_remote(struct vly
*/
static int __vlynq_try_local(struct vlynq_device *dev)
{
- int i;
+ int i, dir = !dev->dev_id;
vlynq_reset(dev);
- for (i = dev->dev_id ? vlynq_ldiv2 : vlynq_ldiv8; dev->dev_id ?
- i <= vlynq_ldiv8 : i >= vlynq_ldiv2;
- dev->dev_id ? i++ : i--) {
-
- writel((readl(&dev->local->control) &
- ~VLYNQ_CTRL_CLOCK_MASK) |
- VLYNQ_CTRL_CLOCK_INT |
- VLYNQ_CTRL_CLOCK_DIV(i - vlynq_ldiv1),
- &dev->local->control);
-
- if (vlynq_linked(dev)) {
- printk(KERN_DEBUG
- "%s: using local clock divisor %d\n",
- dev_name(&dev->dev), i - vlynq_ldiv1 + 1);
- dev->divisor = i;
+ for (i = dir ? 7 : 0; dir ? i >= 0 : i <= 7; dir ? i-- : i++) {
+
+ if (!__vlynq_set_clocks(dev, vlynq_clk_local, i, 0)) {
+ printk(KERN_INFO
+ "%s: using local clock divisor %d\n",
+ dev_name(&dev->dev), i + 1);
+ dev->divisor = i + vlynq_ldiv1;
return 0;
} else {
vlynq_reset(dev);
@@ -473,18 +527,10 @@ static int __vlynq_try_external(struct v
if (!vlynq_linked(dev))
return -ENODEV;
- writel((readl(&dev->remote->control) &
- ~VLYNQ_CTRL_CLOCK_INT),
- &dev->remote->control);
-
- writel((readl(&dev->local->control) &
- ~VLYNQ_CTRL_CLOCK_INT),
- &dev->local->control);
-
- if (vlynq_linked(dev)) {
- printk(KERN_DEBUG "%s: using external clock\n",
- dev_name(&dev->dev));
- dev->divisor = vlynq_div_external;
+ if (!__vlynq_set_clocks(dev, vlynq_clk_external, 0, 0)) {
+ printk(KERN_INFO "%s: using external clock\n",
+ dev_name(&dev->dev));
+ dev->divisor = vlynq_div_external;
return 0;
}
@@ -501,24 +547,16 @@ static int __vlynq_enable_device(struct
return result;
switch (dev->divisor) {
- case vlynq_div_external:
case vlynq_div_auto:
/* When the device is brought from reset it should have clock
* generation negotiated by hardware.
* Check which device is generating clocks and perform setup
* accordingly */
- if (vlynq_linked(dev) && readl(&dev->remote->control) &
- VLYNQ_CTRL_CLOCK_INT) {
- if (!__vlynq_try_remote(dev) ||
- !__vlynq_try_local(dev) ||
- !__vlynq_try_external(dev))
- return 0;
- } else {
- if (!__vlynq_try_external(dev) ||
- !__vlynq_try_local(dev) ||
- !__vlynq_try_remote(dev))
- return 0;
- }
+ if (!__vlynq_try_remote(dev) || !__vlynq_try_local(dev))
+ return 0;
+ case vlynq_div_external:
+ if (!__vlynq_try_external(dev))
+ return 0;
break;
case vlynq_ldiv1:
case vlynq_ldiv2:
@@ -528,15 +566,12 @@ static int __vlynq_enable_device(struct
case vlynq_ldiv6:
case vlynq_ldiv7:
case vlynq_ldiv8:
- writel(VLYNQ_CTRL_CLOCK_INT |
- VLYNQ_CTRL_CLOCK_DIV(dev->divisor -
- vlynq_ldiv1), &dev->local->control);
- writel(0, &dev->remote->control);
- if (vlynq_linked(dev)) {
- printk(KERN_DEBUG
- "%s: using local clock divisor %d\n",
- dev_name(&dev->dev),
- dev->divisor - vlynq_ldiv1 + 1);
+ if (!__vlynq_set_clocks(dev, vlynq_clk_local, dev->divisor -
+ vlynq_ldiv1, 0)) {
+ printk(KERN_INFO
+ "%s: using local clock divisor %d\n",
+ dev_name(&dev->dev),
+ dev->divisor - vlynq_ldiv1 + 1);
return 0;
}
break;
@@ -548,20 +583,17 @@ static int __vlynq_enable_device(struct
case vlynq_rdiv6:
case vlynq_rdiv7:
case vlynq_rdiv8:
- writel(0, &dev->local->control);
- writel(VLYNQ_CTRL_CLOCK_INT |
- VLYNQ_CTRL_CLOCK_DIV(dev->divisor -
- vlynq_rdiv1), &dev->remote->control);
- if (vlynq_linked(dev)) {
- printk(KERN_DEBUG
- "%s: using remote clock divisor %d\n",
- dev_name(&dev->dev),
- dev->divisor - vlynq_rdiv1 + 1);
+ if (!__vlynq_set_clocks(dev, vlynq_clk_remote, 0,
+ dev->divisor - vlynq_rdiv1)) {
+ printk(KERN_INFO
+ "%s: using remote clock divisor %d\n",
+ dev_name(&dev->dev),
+ dev->divisor - vlynq_rdiv1 + 1);
return 0;
}
break;
}
-
+ vlynq_reset(dev);
ops->off(dev);
return -ENODEV;
}
@@ -732,14 +764,14 @@ static int vlynq_probe(struct platform_d
platform_set_drvdata(pdev, dev);
printk(KERN_INFO "%s: regs 0x%p, irq %d, mem 0x%p\n",
- dev_name(&dev->dev), (void *)dev->regs_start, dev->irq,
- (void *)dev->mem_start);
+ dev_name(&dev->dev), (void *)dev->regs_start,
+ dev->irq, (void *)dev->mem_start);
dev->dev_id = 0;
dev->divisor = vlynq_div_auto;
- result = __vlynq_enable_device(dev);
- if (result == 0) {
+ if (!__vlynq_enable_device(dev)) {
dev->dev_id = readl(&dev->remote->chip);
+ vlynq_reset(dev);
((struct plat_vlynq_ops *)(dev->dev.platform_data))->off(dev);
}
if (dev->dev_id)

@ -1,15 +0,0 @@
--- a/arch/mips/ar7/memory.c
+++ b/arch/mips/ar7/memory.c
@@ -65,5 +65,11 @@ void __init prom_meminit(void)
void __init prom_free_prom_memory(void)
{
- /* Nothing to free */
+ /* adapted from arch/mips/txx9/generic/setup.c */
+ unsigned long saddr = PHYS_OFFSET + PAGE_SIZE;
+ unsigned long eaddr = __pa_symbol(&_text);
+
+ /* free memory between prom-record and kernel _text base */
+ if (saddr < eaddr)
+ free_init_pages("prom memory", saddr, eaddr);
}

@ -1,85 +0,0 @@
--- a/arch/mips/ar7/Platform
+++ b/arch/mips/ar7/Platform
@@ -3,4 +3,9 @@
#
platform-$(CONFIG_AR7) += ar7/
cflags-$(CONFIG_AR7) += -I$(srctree)/arch/mips/include/asm/mach-ar7
-load-$(CONFIG_AR7) += 0xffffffff94100000
+load-$(CONFIG_AR7_TI) += 0xffffffff94100000
+
+#
+# AudioCodes AC49x
+#
+load-$(CONFIG_AR7_AC49X) += 0xffffffff945ca000
--- a/arch/mips/ar7/setup.c
+++ b/arch/mips/ar7/setup.c
@@ -68,6 +68,10 @@ const char *get_system_type(void)
return "TI AR7 (TNETV1056)";
case TITAN_CHIP_1060:
return "TI AR7 (TNETV1060)";
+ case TITAN_CHIP_AC495:
+ return "AudioCodes AC495";
+ case TITAN_CHIP_AC496:
+ return "AudioCodes AC496";
}
default:
return "TI AR7 (unknown)";
--- a/arch/mips/include/asm/mach-ar7/ar7.h
+++ b/arch/mips/include/asm/mach-ar7/ar7.h
@@ -92,6 +92,8 @@
#define TITAN_CHIP_1055 0x0e
#define TITAN_CHIP_1056 0x0d
#define TITAN_CHIP_1060 0x07
+#define TITAN_CHIP_AC495 0x00
+#define TITAN_CHIP_AC496 0x02
/* Interrupts */
#define AR7_IRQ_UART0 15
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -168,7 +168,7 @@ config AR7
select HAVE_CLK
help
Support for the Texas Instruments AR7 System-on-a-Chip
- family: TNETD7100, 7200 and 7300.
+ family: TI TNETD7100, 7200, 7300 and AudioCodes AC49x.
config ATH25
bool "Atheros AR231x/AR531x SoC support"
@@ -1016,6 +1016,7 @@ config MIPS_PARAVIRT
endchoice
source "arch/mips/alchemy/Kconfig"
+source "arch/mips/ar7/Kconfig"
source "arch/mips/ath25/Kconfig"
source "arch/mips/ath79/Kconfig"
source "arch/mips/bcm47xx/Kconfig"
--- /dev/null
+++ b/arch/mips/ar7/Kconfig
@@ -0,0 +1,26 @@
+if AR7
+
+config AR7_TI
+ bool
+
+config AR7_AC49X
+ bool
+
+choice
+ prompt "AR7 SoC family selection"
+ default AR7_TYPE_TI
+ depends on AR7
+ help
+ Select AR7 MIPS SoC implementation.
+
+ config AR7_TYPE_TI
+ bool "Texas Instruments AR7"
+ select AR7_TI
+
+ config AR7_TYPE_AC49X
+ bool "AudioCodes AC49X"
+ select AR7_AC49X
+
+endchoice
+
+endif

@ -1,20 +0,0 @@
--- a/arch/mips/ar7/prom.c
+++ b/arch/mips/ar7/prom.c
@@ -70,6 +70,7 @@ struct psbl_rec {
};
static const char psp_env_version[] __initconst = "TIENV0.8";
+static const char psp_env_version_ac49x[] __initconst = "MaxENV0.2";
struct psp_env_chunk {
u8 num;
@@ -186,7 +187,8 @@ static void __init ar7_init_env(struct e
struct psbl_rec *psbl = (struct psbl_rec *)(KSEG1ADDR(0x14000300));
void *psp_env = (void *)KSEG1ADDR(psbl->env_base);
- if (strcmp(psp_env, psp_env_version) == 0) {
+ if (strcmp(psp_env, psp_env_version) == 0 ||
+ strcmp(psp_env, psp_env_version_ac49x) == 0) {
parse_psp_env(psp_env);
} else {
for (i = 0; i < MAX_ENTRY; i++, env++)

@ -1,35 +0,0 @@
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -154,6 +154,11 @@ config MTD_OF_PARTS
the partition map from the children of the flash node,
as described in Documentation/devicetree/bindings/mtd/partition.txt.
+config MTD_AC49X_PARTS
+ tristate "AudioCodes AC49X partitioning support"
+ ---help---
+ AudioCodes AC49X partitioning support
+
config MTD_AR7_PARTS
tristate "TI AR7 partitioning support"
---help---
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_MTD_SPLIT) += mtdsplit/
obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o
obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
+obj-$(CONFIG_MTD_AC49X_PARTS) += ac49xpart.o
obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o titanpart.o
obj-$(CONFIG_MTD_BCM63XX_PARTS) += bcm63xxpart.o
--- a/arch/mips/ar7/platform.c
+++ b/arch/mips/ar7/platform.c
@@ -200,7 +200,7 @@ static struct resource physmap_flash_res
.end = 0x11ffffff,
};
-static const char *ar7_probe_types[] = { "ar7part", NULL };
+static const char *ar7_probe_types[] = { "ac49xpart", "ar7part", NULL };
static struct physmap_flash_data physmap_flash_data = {
.width = 2,

@ -1,120 +0,0 @@
--- a/drivers/mtd/ar7part.c
+++ b/drivers/mtd/ar7part.c
@@ -30,11 +30,14 @@
#include <uapi/linux/magic.h>
+#include <asm/mach-ar7/prom.h>
+
#define AR7_PARTS 4
#define ROOT_OFFSET 0xe0000
#define LOADER_MAGIC1 le32_to_cpu(0xfeedfa42)
#define LOADER_MAGIC2 le32_to_cpu(0xfeed1281)
+#define LOADER_MAGIC3 le32_to_cpu(0x434d4d4c)
struct ar7_bin_rec {
unsigned int checksum;
@@ -42,12 +45,16 @@ struct ar7_bin_rec {
unsigned int address;
};
+int create_titan_partitions(struct mtd_info *master,
+ const struct mtd_partition **pparts,
+ struct mtd_part_parser_data *data);
+
static int create_mtd_partitions(struct mtd_info *master,
const struct mtd_partition **pparts,
struct mtd_part_parser_data *data)
{
struct ar7_bin_rec header;
- unsigned int offset;
+ unsigned int offset, mtd_start, mtd_end;
size_t len;
unsigned int pre_size = master->erasesize, post_size = 0;
unsigned int root_offset = ROOT_OFFSET;
@@ -55,6 +62,16 @@ static int create_mtd_partitions(struct
int retries = 10;
struct mtd_partition *ar7_parts;
+ const char *prom_str = prom_getenv("ProductID");
+ char mtd_name[] = "mtd1";
+ if(prom_str &&
+ (strcmp(prom_str, "CYWL")==0 ||
+ strcmp(prom_str, "CYWM")==0 ||
+ strcmp(prom_str, "CYLM")==0 ||
+ strcmp(prom_str, "CYLL")==0)){
+ return create_titan_partitions(master, pparts, data);
+ }
+
ar7_parts = kzalloc(sizeof(*ar7_parts) * AR7_PARTS, GFP_KERNEL);
if (!ar7_parts)
return -ENOMEM;
@@ -83,34 +100,39 @@ static int create_mtd_partitions(struct
pre_size = offset;
- if (!ar7_parts[1].offset) {
- ar7_parts[1].offset = master->size - master->erasesize;
- post_size = master->erasesize;
- }
-
switch (header.checksum) {
- case LOADER_MAGIC1:
- while (header.length) {
- offset += sizeof(header) + header.length;
- mtd_read(master, offset, sizeof(header), &len,
- (uint8_t *)&header);
- }
- root_offset = offset + sizeof(header) + 4;
- break;
case LOADER_MAGIC2:
+ for (retries = 0; retries <= 9; retries++) {
+ mtd_name[3] = '0' + retries;
+ prom_str = prom_getenv(mtd_name);
+ if (prom_str == NULL)
+ continue;
+ sscanf(prom_str, "%i,%i", &mtd_start, &mtd_end);
+ if (pre_size == (mtd_start & 0x1ffffff)) {
+ ar7_parts[1].offset = mtd_end &= 0x1ffffff;
+ ar7_parts[1].size = post_size = master->size - mtd_end;
+ break;
+ }
+ }
+ case LOADER_MAGIC1:
+ root_offset = (header.checksum == LOADER_MAGIC1) ? 4 : 0;
while (header.length) {
offset += sizeof(header) + header.length;
mtd_read(master, offset, sizeof(header), &len,
(uint8_t *)&header);
}
- root_offset = offset + sizeof(header) + 4 + 0xff;
- root_offset &= ~(uint32_t)0xff;
+ root_offset += offset + sizeof(header);
break;
default:
printk(KERN_WARNING "Unknown magic: %08x\n", header.checksum);
break;
}
+ if (!ar7_parts[1].offset) {
+ post_size = master->erasesize;
+ ar7_parts[1].offset = master->size - post_size;
+ }
+
mtd_read(master, root_offset, sizeof(header), &len, (u8 *)&header);
if (header.checksum != SQUASHFS_MAGIC) {
root_offset += master->erasesize - 1;
--- a/drivers/mtd/titanpart.c
+++ b/drivers/mtd/titanpart.c
@@ -148,8 +148,8 @@ static void titan_add_partition(char * e
}
int create_titan_partitions(struct mtd_info *master,
- struct mtd_partition **pparts,
- unsigned long origin)
+ const struct mtd_partition **pparts,
+ struct mtd_part_parser_data *data)
{
struct nsp_img_hdr_head hdr;
struct nsp_img_hdr_section_info sect_info;

@ -1,95 +0,0 @@
--- a/arch/mips/ar7/platform.c
+++ b/arch/mips/ar7/platform.c
@@ -459,31 +459,22 @@ static struct gpio_led fb_fon_leds[] = {
},
};
-static struct gpio_led gt701_leds[] = {
+static struct gpio_led actiontec_leds[] = {
{
.name = "inet:green",
.gpio = 13,
- .active_low = 1,
- },
- {
- .name = "usb",
- .gpio = 12,
- .active_low = 1,
},
{
.name = "inet:red",
.gpio = 9,
- .active_low = 1,
},
{
- .name = "power:red",
+ .name = "power:green",
.gpio = 7,
- .active_low = 1,
},
{
- .name = "power:green",
+ .name = "power:red",
.gpio = 8,
- .active_low = 1,
.default_trigger = "default-on",
},
{
@@ -491,6 +482,44 @@ static struct gpio_led gt701_leds[] = {
.gpio = 10,
.active_low = 1,
},
+ {
+ .name = "wifi",
+ .gpio = 6,
+ .active_low = 1,
+ },
+ {
+ .name = "wifi:red",
+ .gpio = 3,
+ },
+ {
+ .name = "standby",
+ .gpio = 4,
+ },
+ {
+ .name = "wps",
+ .gpio = 16,
+ .active_low = 1,
+ },
+ {
+ .name = "usb",
+ .gpio = 12,
+ .active_low = 1,
+ },
+ {
+ .name = "voip",
+ .gpio = 15,
+ .active_low = 1,
+ },
+ {
+ .name = "line1",
+ .gpio = 23,
+ .active_low = 1,
+ },
+ {
+ .name = "line2",
+ .gpio = 25,
+ .active_low = 1,
+ },
};
static struct gpio_led_platform_data ar7_led_data;
@@ -534,9 +563,9 @@ static void __init detect_leds(void)
} else if (strstr(prid, "CYWM") || strstr(prid, "CYWL")) {
ar7_led_data.num_leds = ARRAY_SIZE(titan_leds);
ar7_led_data.leds = titan_leds;
- } else if (strstr(prid, "GT701")) {
- ar7_led_data.num_leds = ARRAY_SIZE(gt701_leds);
- ar7_led_data.leds = gt701_leds;
+ } else if (strstr(prid, "GT7") || strstr(prid, "PK5000")) {
+ ar7_led_data.num_leds = ARRAY_SIZE(actiontec_leds);
+ ar7_led_data.leds = actiontec_leds;
}
}

@ -1,52 +0,0 @@
--- a/drivers/net/ethernet/ti/cpmac.c
+++ b/drivers/net/ethernet/ti/cpmac.c
@@ -1123,6 +1123,8 @@ static int cpmac_probe(struct platform_d
goto fail;
}
+ ar7_device_reset(pdata->reset_bit);
+
dev->irq = platform_get_irq_byname(pdev, "irq");
dev->netdev_ops = &cpmac_netdev_ops;
@@ -1202,7 +1204,7 @@ int cpmac_init(void)
cpmac_mii->write = cpmac_mdio_write;
cpmac_mii->reset = cpmac_mdio_reset;
- cpmac_mii->priv = ioremap(AR7_REGS_MDIO, 256);
+ cpmac_mii->priv = ioremap(ar7_is_titan() ? TITAN_REGS_MDIO : AR7_REGS_MDIO, 256);
if (!cpmac_mii->priv) {
pr_err("Can't ioremap mdio registers\n");
@@ -1213,10 +1215,16 @@ int cpmac_init(void)
/* FIXME: unhardcode gpio&reset bits */
ar7_gpio_disable(26);
ar7_gpio_disable(27);
- ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
- ar7_device_reset(AR7_RESET_BIT_CPMAC_HI);
+
+ if (!ar7_is_titan()) {
+ ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
+ ar7_device_reset(AR7_RESET_BIT_CPMAC_HI);
+ }
ar7_device_reset(AR7_RESET_BIT_EPHY);
+ if (ar7_is_titan())
+ ar7_device_reset(TITAN_RESET_BIT_EPHY1);
+
cpmac_mii->reset(cpmac_mii);
for (i = 0; i < 300; i++) {
@@ -1233,7 +1241,11 @@ int cpmac_init(void)
mask = 0;
}
- cpmac_mii->phy_mask = ~(mask | 0x80000000);
+ if (ar7_is_titan())
+ cpmac_mii->phy_mask = ~(mask | 0x80000000 | 0x40000000);
+ else
+ cpmac_mii->phy_mask = ~(mask | 0x80000000);
+
snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "cpmac-1");
res = mdiobus_register(cpmac_mii);

@ -1,59 +0,0 @@
/*
* patcher.c - ADAM2 patcher for Netgear DG834 (and compatible)
*
* Copyright (C) 2006 Felix Fietkau
*
* 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.
*/
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdint.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <string.h>
#include <sys/ioctl.h>
int main(int argc, char **argv)
{
int fd;
char *ptr;
uint32_t *i;
if (argc != 2) {
fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
exit(1);
}
if (((fd = open(argv[1], O_RDWR)) < 0)
|| ((ptr = mmap(0, 128 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == (void *) (-1))) {
fprintf(stderr, "Can't open file\n");
exit(1);
}
i = (uint32_t *) &ptr[0x3944];
if (*i == 0x0c000944) {
fprintf(stderr, "Unpatched ADAM2 detected. Patching... ");
*i = 0x00000000;
msync(i, sizeof(*i), MS_SYNC|MS_INVALIDATE);
fprintf(stderr, "done!\n");
} else if (*i == 0x00000000) {
fprintf(stderr, "Patched ADAM2 detected.\n");
} else {
fprintf(stderr, "Unknown ADAM2 detected. Can't patch!\n");
}
close(fd);
}
Loading…
Cancel
Save