From: Arne Fitzenreiter Date: Sat, 3 Mar 2012 18:33:40 +0000 (+0100) Subject: kernel: Add Iomega iConnect setup to kirkwood kernel. X-Git-Tag: v2.13-beta1~383 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5ca1c0b97cd3035f2e017622692fb3b5d4476bd6;p=ipfire-2.x.git kernel: Add Iomega iConnect setup to kirkwood kernel. --- diff --git a/config/kernel/kernel.config.armv5tel-ipfire-kirkwood b/config/kernel/kernel.config.armv5tel-ipfire-kirkwood index 2c09a57c73..dace245137 100644 --- a/config/kernel/kernel.config.armv5tel-ipfire-kirkwood +++ b/config/kernel/kernel.config.armv5tel-ipfire-kirkwood @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.32.45 -# Sat Oct 15 08:52:52 2011 +# Linux kernel version: 2.6.32.57 +# Fri Mar 2 20:47:53 2012 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -199,6 +199,7 @@ CONFIG_MACH_DREAMPLUG=y CONFIG_MACH_GURUPLUG=y CONFIG_MACH_TS219=y CONFIG_MACH_OPENRD_BASE=y +CONFIG_MACH_ICONNECT=y CONFIG_MACH_NAS6210=y CONFIG_PLAT_ORION=y @@ -1309,6 +1310,9 @@ CONFIG_PCNET32=m CONFIG_AMD8111_ETH=m CONFIG_ADAPTEC_STARFIRE=m CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y CONFIG_FORCEDETH=m # CONFIG_FORCEDETH_NAPI is not set CONFIG_E100=m @@ -1809,7 +1813,7 @@ CONFIG_IPWIRELESS=m # CONFIG_RAW_DRIVER is not set # CONFIG_TCG_TPM is not set CONFIG_DEVPORT=y -CONFIG_I2C=m +CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y CONFIG_I2C_CHARDEV=m @@ -1843,7 +1847,7 @@ CONFIG_I2C_VIAPRO=m # I2C system bus drivers (mostly embedded / system-on-chip) # CONFIG_I2C_GPIO=m -CONFIG_I2C_MV64XXX=m +CONFIG_I2C_MV64XXX=y CONFIG_I2C_OCORES=m CONFIG_I2C_SIMTEC=m @@ -2068,8 +2072,10 @@ CONFIG_MFD_SM501=m CONFIG_HTC_PASIC3=m # CONFIG_UCB1400_CORE is not set CONFIG_TPS65010=m +# CONFIG_TWL4030_CORE is not set # CONFIG_MFD_TMIO is not set # CONFIG_MFD_TC6393XB is not set +# CONFIG_PMIC_DA903X is not set CONFIG_MFD_WM8400=m CONFIG_MFD_WM831X=m CONFIG_MFD_WM8350=m @@ -2661,7 +2667,6 @@ CONFIG_USB_ISP116X_HCD=m # CONFIG_USB_ISP1760_HCD is not set # CONFIG_USB_ISP1362_HCD is not set CONFIG_USB_OHCI_HCD=y -CONFIG_USB_OHCI_HCD_SSB=y # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y @@ -2672,10 +2677,6 @@ CONFIG_USB_SL811_HCD=m CONFIG_USB_R8A66597_HCD=m CONFIG_USB_WHCI_HCD=m CONFIG_USB_HWA_HCD=m - -# -# Enable Host or Gadget support to see Inventra options -# # CONFIG_USB_MUSB_HDRC is not set # @@ -2874,7 +2875,7 @@ CONFIG_LEDS_TRIGGER_TIMER=m CONFIG_LEDS_TRIGGER_HEARTBEAT=m CONFIG_LEDS_TRIGGER_BACKLIGHT=m CONFIG_LEDS_TRIGGER_GPIO=m -CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y # # iptables trigger is under Netfilter config (LED target) diff --git a/lfs/linux b/lfs/linux index 0f47427414..f79dc5a54e 100644 --- a/lfs/linux +++ b/lfs/linux @@ -165,7 +165,7 @@ endif ifeq "$(KCFG)" "-kirkwood" # Add dreamplug,guruplug and icy 62x0 support on ARM-kirkwood - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.45-arm_kirkwood_setups.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.57-arm_kirkwood_setups.patch endif ifeq "$(MACHINE_TYPE)" "arm" diff --git a/src/patches/linux-2.6.32.45-arm_kirkwood_setups.patch b/src/patches/linux-2.6.32.57-arm_kirkwood_setups.patch similarity index 59% rename from src/patches/linux-2.6.32.45-arm_kirkwood_setups.patch rename to src/patches/linux-2.6.32.57-arm_kirkwood_setups.patch index 9db9c2e52d..77db60be60 100644 --- a/src/patches/linux-2.6.32.45-arm_kirkwood_setups.patch +++ b/src/patches/linux-2.6.32.57-arm_kirkwood_setups.patch @@ -1,6 +1,6 @@ -diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/dreamplug-setup.c linux-2.6.32.45/arch/arm/mach-kirkwood/dreamplug-setup.c ---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/dreamplug-setup.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.32.45/arch/arm/mach-kirkwood/dreamplug-setup.c 2011-10-11 15:35:37.000000000 +0200 +diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/dreamplug-setup.c linux-2.6.32.57/arch/arm/mach-kirkwood/dreamplug-setup.c +--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/dreamplug-setup.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.32.57/arch/arm/mach-kirkwood/dreamplug-setup.c 2012-03-02 09:22:40.107199269 +0100 @@ -0,0 +1,140 @@ +/* + * arch/arm/mach-kirkwood/dreamplug-setup.c @@ -142,10 +142,10 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/dreamplug-setup.c linux-2. + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, +MACHINE_END -diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-2.6.32.45/arch/arm/mach-kirkwood/guruplug-setup.c ---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/guruplug-setup.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.32.45/arch/arm/mach-kirkwood/guruplug-setup.c 2011-10-11 15:35:37.000000000 +0200 -@@ -0,0 +1,131 @@ +diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-2.6.32.57/arch/arm/mach-kirkwood/guruplug-setup.c +--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/guruplug-setup.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.32.57/arch/arm/mach-kirkwood/guruplug-setup.c 2012-03-02 23:36:51.627514981 +0100 +@@ -0,0 +1,133 @@ +/* + * arch/arm/mach-kirkwood/guruplug-setup.c + * @@ -159,6 +159,7 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-2.6 +#include +#include +#include ++#include +#include +#include +#include @@ -175,15 +176,16 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-2.6 + { + .name = "u-boot", + .offset = 0, -+ .size = SZ_1M ++ .size = SZ_1M, ++ .mask_flags = MTD_WRITEABLE, /* read only */ + }, { + .name = "uImage", + .offset = MTDPART_OFS_NXTBLK, -+ .size = SZ_4M ++ .size = SZ_4M, + }, { + .name = "root", + .offset = MTDPART_OFS_NXTBLK, -+ .size = MTDPART_SIZ_FULL ++ .size = MTDPART_SIZ_FULL, + }, +}; + @@ -277,9 +279,224 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/guruplug-setup.c linux-2.6 + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, +MACHINE_END -diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/Kconfig linux-2.6.32.45/arch/arm/mach-kirkwood/Kconfig ---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/Kconfig 2011-08-16 03:57:37.000000000 +0200 -+++ linux-2.6.32.45/arch/arm/mach-kirkwood/Kconfig 2011-10-15 17:06:55.816070291 +0200 +diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/iconnect-setup.c linux-2.6.32.57/arch/arm/mach-kirkwood/iconnect-setup.c +--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/iconnect-setup.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.32.57/arch/arm/mach-kirkwood/iconnect-setup.c 2012-03-03 00:15:42.757514706 +0100 +@@ -0,0 +1,211 @@ ++/* ++ * arch/arm/mach-kirkwood/iconnect-setup.c ++ * ++ * Iomega iConnect Wireless Data Station Board Setup ++ * ++ * This file is licensed under the terms of the GNU General Public ++ * License version 2. This program is licensed "as is" without any ++ * warranty of any kind, whether express or implied. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "common.h" ++#include "mpp.h" ++ ++static struct mtd_partition iconnect_nand_parts[] = { ++ { ++ .name = "u-boot", ++ .offset = 0, ++ .size = SZ_1M, ++ .mask_flags = MTD_WRITEABLE, /* read only */ ++ }, { ++ .name = "uImage", ++ .offset = MTDPART_OFS_NXTBLK, ++ .size = 0x440000, ++ }, { ++ .name = "uInit", ++ .offset = MTDPART_OFS_NXTBLK, ++ .size = 0x440000, ++ }, { ++ .name = "root", ++ .offset = MTDPART_OFS_NXTBLK, ++ .size = MTDPART_SIZ_FULL, ++ }, ++}; ++ ++static struct mv643xx_eth_platform_data iconnect_ge00_data = { ++ .phy_addr = MV643XX_ETH_PHY_ADDR(0xB), ++}; ++ ++static struct gpio_led iconnect_led_pins[] = { ++ { ++ .name = "iconnect:led_level", ++ .default_trigger = "default-on", ++ .gpio = 41, ++ .active_low = 0, ++ }, ++ ++ { ++ .name = "iconnect:blue:power", ++ .default_trigger = "default-on", ++ .gpio = 42, ++ .active_low = 0, ++ }, ++ { ++ .name = "iconnect:red:power", ++ .default_trigger = "none", ++ .gpio = 43, ++ .active_low = 0, ++ }, ++ { ++ .name = "iconnect:blue:usb_1", ++ .default_trigger = "none", ++ .gpio = 44, ++ .active_low = 0, ++ }, ++ { ++ .name = "iconnect:blue:usb_2", ++ .default_trigger = "none", ++ .gpio = 45, ++ .active_low = 0, ++ }, ++ { ++ .name = "iconnect:blue:usb_3", ++ .default_trigger = "none", ++ .gpio = 46, ++ .active_low = 0, ++ }, ++ { ++ .name = "iconnect:blue:usb_4", ++ .default_trigger = "none", ++ .gpio = 47, ++ .active_low = 0, ++ }, ++ { ++ .name = "iconnect:blue:otb", ++ .default_trigger = "none", ++ .gpio = 48, ++ .active_low = 0, ++ }, ++}; ++ ++static struct gpio_led_platform_data iconnect_led_data = { ++ .leds = iconnect_led_pins, ++ .num_leds = ARRAY_SIZE(iconnect_led_pins), ++}; ++ ++static struct platform_device iconnect_leds = { ++ .name = "leds-gpio", ++ .id = -1, ++ .dev = { ++ .platform_data = &iconnect_led_data, ++ } ++}; ++ ++static struct gpio_keys_button iconnect_buttons[] = { ++ { ++ .code = KEY_COPY, ++ .gpio = 35, ++ .desc = "OTB Button", ++ .active_low = 1, ++ }, ++ { ++ .code = KEY_RESTART, ++ .gpio = 12, ++ .desc = "Reset", ++ .active_low = 1, ++ }, ++}; ++ ++static struct gpio_keys_platform_data iconnect_button_data = { ++ .buttons = iconnect_buttons, ++ .nbuttons = ARRAY_SIZE(iconnect_buttons), ++}; ++ ++static struct platform_device iconnect_button_device = { ++ .name = "gpio-keys", ++ .id = -1, ++ .num_resources = 0, ++ .dev = { ++ .platform_data = &iconnect_button_data, ++ } ++}; ++ ++static unsigned int iconnect_mpp_config[] __initdata = { ++ MPP0_NF_IO2, ++ MPP1_NF_IO3, ++ MPP2_NF_IO4, ++ MPP3_NF_IO5, ++ MPP4_NF_IO6, ++ MPP5_NF_IO7, ++ MPP18_NF_IO0, ++ MPP19_NF_IO1, ++ MPP12_GPIO, /* Reset Button */ ++ MPP35_GPIO, /* OTB Button */ ++ ++ MPP41_GPIO, /* LED Level */ ++ MPP42_GPIO, /* Power LED blue */ ++ MPP43_GPIO, /* Power LED red */ ++ MPP44_GPIO, /* USB LED 1 */ ++ MPP45_GPIO, /* USB LED 2 */ ++ MPP46_GPIO, /* USB LED 3 */ ++ MPP47_GPIO, /* USB LED 4 */ ++ MPP48_GPIO, /* OTB LED */ ++ 0 ++}; ++ ++static struct i2c_board_info __initdata iconnect_i2c = { ++ I2C_BOARD_INFO("lm63", 0x4c), ++}; ++ ++static void __init iconnect_init(void) ++{ ++ /* ++ * Basic setup. Needs to be called early. ++ */ ++ kirkwood_init(); ++ kirkwood_mpp_conf(iconnect_mpp_config); ++ ++ kirkwood_nand_init(ARRAY_AND_SIZE(iconnect_nand_parts), 25); ++ kirkwood_ehci_init(); ++ kirkwood_ge00_init(&iconnect_ge00_data); ++ ++ kirkwood_uart0_init(); ++ platform_device_register(&iconnect_leds); ++ platform_device_register(&iconnect_button_device); ++ ++ kirkwood_i2c_init(); ++ i2c_register_board_info(0, &iconnect_i2c,1); ++} ++ ++static int __init iconnect_pci_init(void) ++{ ++ if (machine_is_iconnect()) { ++ kirkwood_pcie_init(); ++ } ++ return 0; ++} ++subsys_initcall(iconnect_pci_init); ++ ++MACHINE_START(ICONNECT, "Iomega iConnect Wireless Data Station") ++ /* Maintainer: Arne Fitzenreiter */ ++ .boot_params = 0x00000100, ++ .init_machine = iconnect_init, ++ .map_io = kirkwood_map_io, ++ .init_irq = kirkwood_init_irq, ++ .timer = &kirkwood_timer, ++MACHINE_END +diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/Kconfig linux-2.6.32.57/arch/arm/mach-kirkwood/Kconfig +--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/Kconfig 2012-02-13 20:29:11.000000000 +0100 ++++ linux-2.6.32.57/arch/arm/mach-kirkwood/Kconfig 2012-03-02 09:28:49.387192309 +0100 @@ -32,6 +32,18 @@ Say 'Y' here if you want your kernel to support the Marvell SheevaPlug Reference Board. @@ -299,10 +516,16 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/Kconfig linux-2.6.32.45/ar config MACH_TS219 bool "QNAP TS-119 and TS-219 Turbo NAS" help -@@ -44,6 +56,12 @@ +@@ -44,6 +56,18 @@ Say 'Y' here if you want your kernel to support the Marvell OpenRD Base Board. ++config MACH_ICONNECT ++ bool "Iomega iConnect Wireless Data Station" ++ help ++ Say 'Y' here if you want your kernel to support the ++ Iomega iConnect Wireless Data Station. ++ +config MACH_NAS6210 + bool "RaidSonic ICY BOX IB-NAS62x0" + help @@ -312,10 +535,10 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/Kconfig linux-2.6.32.45/ar endmenu endif -diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/Makefile linux-2.6.32.45/arch/arm/mach-kirkwood/Makefile ---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/Makefile 2011-08-16 03:57:37.000000000 +0200 -+++ linux-2.6.32.45/arch/arm/mach-kirkwood/Makefile 2011-10-15 17:07:16.346068829 +0200 -@@ -5,7 +5,10 @@ +diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/Makefile linux-2.6.32.57/arch/arm/mach-kirkwood/Makefile +--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/Makefile 2012-02-13 20:29:11.000000000 +0100 ++++ linux-2.6.32.57/arch/arm/mach-kirkwood/Makefile 2012-03-02 09:26:39.447195212 +0100 +@@ -5,7 +5,11 @@ obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o @@ -323,13 +546,27 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/Makefile linux-2.6.32.45/a +obj-$(CONFIG_MACH_DREAMPLUG) += dreamplug-setup.o obj-$(CONFIG_MACH_TS219) += ts219-setup.o obj-$(CONFIG_MACH_OPENRD_BASE) += openrd_base-setup.o ++obj-$(CONFIG_MACH_ICONNECT) += iconnect-setup.o +obj-$(CONFIG_MACH_NAS6210) += nas6210-setup.o obj-$(CONFIG_CPU_IDLE) += cpuidle.o -diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-2.6.32.45/arch/arm/mach-kirkwood/nas6210-setup.c ---- linux-2.6.32.45.org/arch/arm/mach-kirkwood/nas6210-setup.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.32.45/arch/arm/mach-kirkwood/nas6210-setup.c 2011-10-16 09:57:35.268409525 +0200 -@@ -0,0 +1,180 @@ +diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/mpp.h linux-2.6.32.57/arch/arm/mach-kirkwood/mpp.h +--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/mpp.h 2012-02-13 20:29:11.000000000 +0100 ++++ linux-2.6.32.57/arch/arm/mach-kirkwood/mpp.h 2012-03-02 10:26:53.987196429 +0100 +@@ -102,7 +102,9 @@ + #define MPP11_PTP_CLK MPP( 11, 0xd, 1, 0, 1, 1, 1, 1 ) + #define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 1, 0, 1, 1, 1 ) + ++ + #define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1 ) ++#define MPP12_GPIO MPP( 12, 0x0, 1, 1, 1, 1, 1, 1 ) + #define MPP12_SD_CLK MPP( 12, 0x1, 0, 1, 1, 1, 1, 1 ) + + #define MPP13_GPIO MPP( 13, 0x0, 1, 1, 1, 1, 1, 1 ) +diff -Naur linux-2.6.32.57.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-2.6.32.57/arch/arm/mach-kirkwood/nas6210-setup.c +--- linux-2.6.32.57.org/arch/arm/mach-kirkwood/nas6210-setup.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.32.57/arch/arm/mach-kirkwood/nas6210-setup.c 2012-03-02 23:37:35.077514152 +0100 +@@ -0,0 +1,183 @@ +/* + * arch/arm/mach-kirkwood/nas6210-setup.c + * @@ -343,11 +580,13 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-2.6. +#include +#include +#include ++#include +#include +#include +#include +#include +#include ++#include +#include +#include +#include @@ -362,15 +601,16 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-2.6. + { + .name = "u-boot", + .offset = 0, -+ .size = SZ_1M ++ .size = SZ_1M, ++ .mask_flags = MTD_WRITEABLE, /* read only */ + }, { + .name = "uImage", + .offset = MTDPART_OFS_NXTBLK, -+ .size = (SZ_1M*6) ++ .size = (SZ_1M*6), + }, { + .name = "root", + .offset = MTDPART_OFS_NXTBLK, -+ .size = MTDPART_SIZ_FULL ++ .size = MTDPART_SIZ_FULL, + }, +}; + @@ -510,13 +750,14 @@ diff -Naur linux-2.6.32.45.org/arch/arm/mach-kirkwood/nas6210-setup.c linux-2.6. + .init_irq = kirkwood_init_irq, + .timer = &kirkwood_timer, +MACHINE_END -diff -Naur linux-2.6.32.45.org/arch/arm/tools/mach-types linux-2.6.32.45/arch/arm/tools/mach-types ---- linux-2.6.32.45.org/arch/arm/tools/mach-types 2011-08-16 03:57:37.000000000 +0200 -+++ linux-2.6.32.45/arch/arm/tools/mach-types 2011-10-15 17:05:46.486069811 +0200 -@@ -2536,3 +2536,6 @@ +diff -Naur linux-2.6.32.57.org/arch/arm/tools/mach-types linux-2.6.32.57/arch/arm/tools/mach-types +--- linux-2.6.32.57.org/arch/arm/tools/mach-types 2012-02-13 20:29:11.000000000 +0100 ++++ linux-2.6.32.57/arch/arm/tools/mach-types 2012-03-02 09:25:26.787196718 +0100 +@@ -2536,3 +2536,7 @@ mxt_td60 MACH_MXT_TD60 MXT_TD60 2550 esyx MACH_ESYX ESYX 2551 bulldog MACH_BULLDOG BULLDOG 2553 +guruplug MACH_GURUPLUG GURUPLUG 2601 +dreamplug MACH_DREAMPLUG DREAMPLUG 2659 ++iconnect MACH_ICONNECT ICONNECT 2870 +nas6210 MACH_NAS6210 NAS6210 3104