aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm63xx
diff options
context:
space:
mode:
authorSieng Piaw Liew <liew.s.piaw@gmail.com>2020-10-09 17:04:03 +0800
committerÁlvaro Fernández Rojas <noltari@gmail.com>2020-12-09 08:42:26 +0100
commita58826c34f34e1ce99d0870a0a0eefd71e4868a0 (patch)
treefd5eab81b5d81fe32f9ef759e669a57daa5e66b0 /target/linux/bcm63xx
parent21311ca6b6144c86bcfea28bff51eb937e34029e (diff)
downloadupstream-a58826c34f34e1ce99d0870a0a0eefd71e4868a0.tar.gz
upstream-a58826c34f34e1ce99d0870a0a0eefd71e4868a0.tar.bz2
upstream-a58826c34f34e1ce99d0870a0a0eefd71e4868a0.zip
bcm63xx: add support for Innacomm W3400V6
Innacomm W3400V6 is an xDSL B/G wireless router based on Broadcom BCM6328 SoC. Hardware: SoC: Broadcom BCM6328 CPU: BMIPS4350 V8.0, 320 MHz, 1 core Flash: SPI-NOR 8MB, MX25L6406E RAM: 64 MB Ethernet: 4x 10/100 Mbps Switch: Integrated Wireless: 802.11b/g, BCM4312 LEDs/Buttons: 9x / 2x Flash instruction, web UI: 1) Set a static IP on your computer compatible with 192.168.1.1, i.e 192.168.1.100 2) Connect the ethernet cable from your computer to the router. 3) Make sure the router is powered off. 4) Press the reset button, don't release it yet! 5) While pressing reset, power on the router. 6) Wait 10 seconds or more. Note: The power LED is red at first then turns to solid green when ready. 8) Release the reset button. 9) Browse to 192.168.1.1 10) Select .bin file. 10) Upgrade the image. 11) Wait for it to reboot. Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com> [Ammend commit description, merge patches, DT improvements] Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm63xx')
-rwxr-xr-xtarget/linux/bcm63xx/base-files/etc/board.d/02_network1
-rw-r--r--target/linux/bcm63xx/dts/bcm6328-innacomm-w3400v6.dts118
-rw-r--r--target/linux/bcm63xx/image/bcm63xx.mk12
-rw-r--r--target/linux/bcm63xx/patches-5.4/512-board_bcm6328.patch48
-rw-r--r--target/linux/bcm63xx/patches-5.4/513-board-bcm6338.patch6
-rw-r--r--target/linux/bcm63xx/patches-5.4/514-board_bcm6345.patch6
-rw-r--r--target/linux/bcm63xx/patches-5.4/515-board-bcm6348.patch6
-rw-r--r--target/linux/bcm63xx/patches-5.4/516-board-bcm6358.patch8
-rw-r--r--target/linux/bcm63xx/patches-5.4/517-board_bcm6362.patch6
-rw-r--r--target/linux/bcm63xx/patches-5.4/518-board_bcm6368.patch6
-rw-r--r--target/linux/bcm63xx/patches-5.4/519-board_bcm63268.patch6
-rw-r--r--target/linux/bcm63xx/patches-5.4/531-board_bcm6348-bt-voyager-2500v-bb.patch2
12 files changed, 199 insertions, 26 deletions
diff --git a/target/linux/bcm63xx/base-files/etc/board.d/02_network b/target/linux/bcm63xx/base-files/etc/board.d/02_network
index 700439ec36..cca607fce1 100755
--- a/target/linux/bcm63xx/base-files/etc/board.d/02_network
+++ b/target/linux/bcm63xx/base-files/etc/board.d/02_network
@@ -100,6 +100,7 @@ huawei,echolife-hg556a-c)
"0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "5t@eth0"
;;
comtrend,ar-5315u|\
+innacomm,w3400v6|\
observa,vh4032n|\
sagem,fast-2704n)
ucidef_add_switch "switch0" \
diff --git a/target/linux/bcm63xx/dts/bcm6328-innacomm-w3400v6.dts b/target/linux/bcm63xx/dts/bcm6328-innacomm-w3400v6.dts
new file mode 100644
index 0000000000..dd8ab12958
--- /dev/null
+++ b/target/linux/bcm63xx/dts/bcm6328-innacomm-w3400v6.dts
@@ -0,0 +1,118 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Innacomm W3400V6";
+ compatible = "innacomm,w3400v6", "brcm,bcm6328";
+
+ aliases {
+ led-boot = &led_power_green;
+ led-failsafe = &led_power_red;
+ led-running = &led_power_green;
+ led-upgrade = &led_power_green;
+ };
+
+ chosen {
+ bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+ stdout-path = "serial0:115200n8";
+ };
+
+ keys {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ poll-interval = <20>;
+
+ wps {
+ label = "wps";
+ gpios = <&pinctrl 15 1>;
+ linux,code = <KEY_WPS_BUTTON>;
+ debounce-interval = <60>;
+ };
+
+ reset {
+ label = "reset";
+ gpios = <&pinctrl 23 1>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <60>;
+ };
+ };
+};
+
+&hsspi {
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ spi-max-frequency = <16666667>;
+ spi-tx-bus-width = <2>;
+ spi-rx-bus-width = <2>;
+ reg = <0>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partitions {
+ compatible = "brcm,bcm963xx-cfe-nor-partitions";
+ };
+ };
+};
+
+&leds {
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_leds>;
+
+ led@1 {
+ reg = <1>;
+ active-low;
+ label = "green:inet";
+ };
+
+ led@2 {
+ reg = <2>;
+ active-low;
+ label = "red:inet";
+ };
+
+ led@3 {
+ reg = <3>;
+ active-low;
+ label = "green:dsl";
+ };
+
+ led_power_green: led@4 {
+ reg = <4>;
+ active-low;
+ label = "green:power";
+ default-state = "on";
+ };
+
+ led_power_red: led@5 {
+ reg = <5>;
+ active-low;
+ label = "red:power";
+ };
+
+ led@11 {
+ reg = <11>;
+ active-low;
+ label = "green:wps";
+ };
+};
+
+&pinctrl {
+ pinctrl_leds: leds {
+ function = "led";
+ pins = "gpio1", "gpio2", "gpio3",
+ "gpio4", "gpio5", "gpio11";
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
diff --git a/target/linux/bcm63xx/image/bcm63xx.mk b/target/linux/bcm63xx/image/bcm63xx.mk
index 773f098dea..24b150c063 100644
--- a/target/linux/bcm63xx/image/bcm63xx.mk
+++ b/target/linux/bcm63xx/image/bcm63xx.mk
@@ -781,6 +781,18 @@ define Device/huawei_echolife-hg655b
endef
TARGET_DEVICES += huawei_echolife-hg655b
+### Innacomm ###
+define Device/innacomm_w3400v6
+ $(Device/bcm63xx)
+ DEVICE_VENDOR := Innacomm
+ DEVICE_MODEL := W3400V6
+ CFE_BOARD_ID := 96328ang
+ CHIP_ID := 6328
+ FLASH_MB := 8
+ DEVICE_PACKAGES := $(B43_PACKAGES)
+endef
+TARGET_DEVICES += innacomm_w3400v6
+
### Inteno ###
define Device/inteno_vg50
$(Device/bcm63xx)
diff --git a/target/linux/bcm63xx/patches-5.4/512-board_bcm6328.patch b/target/linux/bcm63xx/patches-5.4/512-board_bcm6328.patch
index ae0c538660..e28ff912cb 100644
--- a/target/linux/bcm63xx/patches-5.4/512-board_bcm6328.patch
+++ b/target/linux/bcm63xx/patches-5.4/512-board_bcm6328.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -348,6 +348,611 @@ static struct board_info __initdata boar
+@@ -348,6 +348,651 @@ static struct board_info __initdata boar
},
},
};
@@ -609,10 +609,50 @@
+ .pci_dev = 0,
+ },
+};
++
++static struct board_info __initdata board_W3400V6 = {
++ .name = "96328ang",
++ .expected_cpu_id = 0x6328,
++
++ .has_pci = 1,
++
++ .has_enetsw = 1,
++ .enetsw = {
++ .used_ports = {
++ [0] = {
++ .used = 1,
++ .phy_id = 1,
++ .name = "Port 1",
++ },
++ [1] = {
++ .used = 1,
++ .phy_id = 2,
++ .name = "Port 2",
++ },
++ [2] = {
++ .used = 1,
++ .phy_id = 3,
++ .name = "Port 3",
++ },
++ [3] = {
++ .used = 1,
++ .phy_id = 4,
++ .name = "Port 4",
++ },
++ },
++ },
++
++ .use_fallback_sprom = 1,
++ .fallback_sprom = {
++ .type = SPROM_BCM4318,
++ .pci_bus = 1,
++ .pci_dev = 0,
++ },
++};
#endif /* CONFIG_BCM63XX_CPU_6328 */
/*
-@@ -703,6 +1308,19 @@ static const struct board_info __initcon
+@@ -703,6 +1348,20 @@ static const struct board_info __initcon
#endif /* CONFIG_BCM63XX_CPU_6318 */
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
@@ -629,10 +669,11 @@
+ &board_TG582N,
+ &board_TG582N_TELECOM_ITALIA,
+ &board_R5010UNV2,
++ &board_W3400V6,
#endif /* CONFIG_BCM63XX_CPU_6328 */
#ifdef CONFIG_BCM63XX_CPU_6338
&board_96338gw,
-@@ -742,7 +1360,22 @@ static struct of_device_id const bcm963x
+@@ -742,7 +1401,23 @@ static struct of_device_id const bcm963x
{ .compatible = "sagem,fast-2704n", .data = &board_FAST2704N, },
#endif /* CONFIG_BCM63XX_CPU_6318 */
#ifdef CONFIG_BCM63XX_CPU_6328
@@ -646,6 +687,7 @@
+ { .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
+ { .compatible = "d-link,dsl-274xb-f1", .data = &board_dsl_274xb_f1, },
+ { .compatible = "d-link,dsl-2750u-c1", .data = &board_A4001N, },
++ { .compatible = "innacomm,w3400v6", .data = &board_W3400V6, },
+ { .compatible = "nucom,r5010un-v2", .data = &board_R5010UNV2, },
+ { .compatible = "sagem,fast-2704-v2", .data = &board_FAST2704V2, },
+ { .compatible = "sercomm,ad1018", .data = &board_AD1018, },
diff --git a/target/linux/bcm63xx/patches-5.4/513-board-bcm6338.patch b/target/linux/bcm63xx/patches-5.4/513-board-bcm6338.patch
index 9319f974ac..f3847c8140 100644
--- a/target/linux/bcm63xx/patches-5.4/513-board-bcm6338.patch
+++ b/target/linux/bcm63xx/patches-5.4/513-board-bcm6338.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -986,6 +986,32 @@ static struct board_info __initdata boar
+@@ -1026,6 +1026,32 @@ static struct board_info __initdata boar
.force_duplex_full = 1,
},
};
@@ -33,7 +33,7 @@
#endif /* CONFIG_BCM63XX_CPU_6338 */
/*
-@@ -1325,6 +1351,8 @@ static const struct board_info __initcon
+@@ -1366,6 +1392,8 @@ static const struct board_info __initcon
#ifdef CONFIG_BCM63XX_CPU_6338
&board_96338gw,
&board_96338w,
@@ -42,7 +42,7 @@
#endif /* CONFIG_BCM63XX_CPU_6338 */
#ifdef CONFIG_BCM63XX_CPU_6345
&board_96345gw2,
-@@ -1380,6 +1408,8 @@ static struct of_device_id const bcm963x
+@@ -1422,6 +1450,8 @@ static struct of_device_id const bcm963x
#ifdef CONFIG_BCM63XX_CPU_6338
{ .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
{ .compatible = "brcm,bcm96338w", .data = &board_96338w, },
diff --git a/target/linux/bcm63xx/patches-5.4/514-board_bcm6345.patch b/target/linux/bcm63xx/patches-5.4/514-board_bcm6345.patch
index 3b1f2842b5..3f84c95385 100644
--- a/target/linux/bcm63xx/patches-5.4/514-board_bcm6345.patch
+++ b/target/linux/bcm63xx/patches-5.4/514-board_bcm6345.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1022,6 +1022,19 @@ static struct board_info __initdata boar
+@@ -1062,6 +1062,19 @@ static struct board_info __initdata boar
.name = "96345GW2",
.expected_cpu_id = 0x6345,
};
@@ -20,7 +20,7 @@
#endif /* CONFIG_BCM63XX_CPU_6345 */
/*
-@@ -1356,6 +1369,7 @@ static const struct board_info __initcon
+@@ -1397,6 +1410,7 @@ static const struct board_info __initcon
#endif /* CONFIG_BCM63XX_CPU_6338 */
#ifdef CONFIG_BCM63XX_CPU_6345
&board_96345gw2,
@@ -28,7 +28,7 @@
#endif /* CONFIG_BCM63XX_CPU_6345 */
#ifdef CONFIG_BCM63XX_CPU_6348
&board_96348r,
-@@ -1413,6 +1427,8 @@ static struct of_device_id const bcm963x
+@@ -1455,6 +1469,8 @@ static struct of_device_id const bcm963x
#endif /* CONFIG_BCM63XX_CPU_6338 */
#ifdef CONFIG_BCM63XX_CPU_6345
{ .compatible = "brcm,bcm96345gw2", .data = &board_96345gw2, },
diff --git a/target/linux/bcm63xx/patches-5.4/515-board-bcm6348.patch b/target/linux/bcm63xx/patches-5.4/515-board-bcm6348.patch
index eb3eb26dd0..891184eedd 100644
--- a/target/linux/bcm63xx/patches-5.4/515-board-bcm6348.patch
+++ b/target/linux/bcm63xx/patches-5.4/515-board-bcm6348.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1221,6 +1221,275 @@ static struct board_info __initdata boar
+@@ -1261,6 +1261,275 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
@@ -276,7 +276,7 @@
#endif /* CONFIG_BCM63XX_CPU_6348 */
/*
-@@ -1380,6 +1649,19 @@ static const struct board_info __initcon
+@@ -1421,6 +1690,19 @@ static const struct board_info __initcon
&board_DV201AMR,
&board_96348gw_a,
&board_rta1025w_16,
@@ -296,7 +296,7 @@
#endif /* CONFIG_BCM63XX_CPU_6348 */
#ifdef CONFIG_BCM63XX_CPU_6358
&board_96358vw,
-@@ -1431,15 +1713,29 @@ static struct of_device_id const bcm963x
+@@ -1473,15 +1755,29 @@ static struct of_device_id const bcm963x
{ .compatible = "dynalink,rta770w", .data = &board_rta770w, },
#endif /* CONFIG_BCM63XX_CPU_6345 */
#ifdef CONFIG_BCM63XX_CPU_6348
diff --git a/target/linux/bcm63xx/patches-5.4/516-board-bcm6358.patch b/target/linux/bcm63xx/patches-5.4/516-board-bcm6358.patch
index 6af94bdbe0..c1a4e9bbd5 100644
--- a/target/linux/bcm63xx/patches-5.4/516-board-bcm6358.patch
+++ b/target/linux/bcm63xx/patches-5.4/516-board-bcm6358.patch
@@ -8,7 +8,7 @@
#include <asm/addrspace.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
-@@ -1574,6 +1575,88 @@ static struct board_info __initdata boar
+@@ -1614,6 +1615,88 @@ static struct board_info __initdata boar
.has_ehci0 = 1,
};
@@ -97,7 +97,7 @@
static struct board_info __initdata board_DWVS0 = {
.name = "DWV-S0",
.expected_cpu_id = 0x6358,
-@@ -1598,6 +1681,238 @@ static struct board_info __initdata boar
+@@ -1638,6 +1721,238 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
.has_ehci0 = 1,
};
@@ -336,7 +336,7 @@
#endif /* CONFIG_BCM63XX_CPU_6358 */
/*
-@@ -1667,7 +1982,20 @@ static const struct board_info __initcon
+@@ -1708,7 +2023,20 @@ static const struct board_info __initcon
&board_96358vw,
&board_96358vw2,
&board_AGPFS0,
@@ -357,7 +357,7 @@
#endif /* CONFIG_BCM63XX_CPU_6358 */
};
-@@ -1743,11 +2071,24 @@ static struct of_device_id const bcm963x
+@@ -1785,11 +2113,24 @@ static struct of_device_id const bcm963x
{ .compatible = "alcatel,rg100a", .data = &board_96358vw2, },
{ .compatible = "brcm,bcm96358vw", .data = &board_96358vw, },
{ .compatible = "brcm,bcm96358vw2", .data = &board_96358vw2, },
diff --git a/target/linux/bcm63xx/patches-5.4/517-board_bcm6362.patch b/target/linux/bcm63xx/patches-5.4/517-board_bcm6362.patch
index c917914dd1..71a84937a2 100644
--- a/target/linux/bcm63xx/patches-5.4/517-board_bcm6362.patch
+++ b/target/linux/bcm63xx/patches-5.4/517-board_bcm6362.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1915,6 +1915,117 @@ static struct board_info __initdata boar
+@@ -1955,6 +1955,117 @@ static struct board_info __initdata boar
};
#endif /* CONFIG_BCM63XX_CPU_6358 */
@@ -118,7 +118,7 @@
/*
* all boards
*/
-@@ -1997,6 +2108,12 @@ static const struct board_info __initcon
+@@ -2038,6 +2149,12 @@ static const struct board_info __initcon
&board_nb4_fxc_r1,
&board_spw303v,
#endif /* CONFIG_BCM63XX_CPU_6358 */
@@ -131,7 +131,7 @@
};
static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -2091,6 +2208,10 @@ static struct of_device_id const bcm963x
+@@ -2133,6 +2250,10 @@ static struct of_device_id const bcm963x
{ .compatible = "telsey,cpva642", .data = &board_CPVA642, },
#endif /* CONFIG_BCM63XX_CPU_6358 */
#ifdef CONFIG_BCM63XX_CPU_6362
diff --git a/target/linux/bcm63xx/patches-5.4/518-board_bcm6368.patch b/target/linux/bcm63xx/patches-5.4/518-board_bcm6368.patch
index 31d724ca24..4b85e0bbab 100644
--- a/target/linux/bcm63xx/patches-5.4/518-board_bcm6368.patch
+++ b/target/linux/bcm63xx/patches-5.4/518-board_bcm6368.patch
@@ -9,7 +9,7 @@
#include <asm/addrspace.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
-@@ -2027,6 +2029,648 @@ static struct board_info __initdata boar
+@@ -2067,6 +2069,648 @@ static struct board_info __initdata boar
#endif /* CONFIG_BCM63XX_CPU_6362 */
/*
@@ -658,7 +658,7 @@
* all boards
*/
static const struct board_info __initconst *bcm963xx_boards[] = {
-@@ -2114,6 +2758,22 @@ static const struct board_info __initcon
+@@ -2155,6 +2799,22 @@ static const struct board_info __initcon
&board_hg253s_v2,
&board_nb6,
#endif /* CONFIG_BCM63XX_CPU_6362 */
@@ -681,7 +681,7 @@
};
static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -2214,6 +2874,20 @@ static struct of_device_id const bcm963x
+@@ -2256,6 +2916,20 @@ static struct of_device_id const bcm963x
{ .compatible = "sfr,neufbox-6-sercomm-r0", .data = &board_nb6, },
#endif /* CONFIG_BCM63XX_CPU_6362 */
#ifdef CONFIG_BCM63XX_CPU_6368
diff --git a/target/linux/bcm63xx/patches-5.4/519-board_bcm63268.patch b/target/linux/bcm63xx/patches-5.4/519-board_bcm63268.patch
index 20fbf5e68e..f46cbbedc7 100644
--- a/target/linux/bcm63xx/patches-5.4/519-board_bcm63268.patch
+++ b/target/linux/bcm63xx/patches-5.4/519-board_bcm63268.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2671,6 +2671,273 @@ static struct board_info __initdata boar
+@@ -2711,6 +2711,273 @@ static struct board_info __initdata boar
#endif /* CONFIG_BCM63XX_CPU_6368 */
/*
@@ -274,7 +274,7 @@
* all boards
*/
static const struct board_info __initconst *bcm963xx_boards[] = {
-@@ -2774,6 +3041,15 @@ static const struct board_info __initcon
+@@ -2815,6 +3082,15 @@ static const struct board_info __initcon
&board_VR3026e,
&board_WAP5813n,
#endif /* CONFIG_BCM63XX_CPU_6368 */
@@ -290,7 +290,7 @@
};
static struct of_device_id const bcm963xx_boards_dt[] = {
-@@ -2890,6 +3166,14 @@ static struct of_device_id const bcm963x
+@@ -2932,6 +3208,14 @@ static struct of_device_id const bcm963x
{ .compatible = "zyxel,p870hw-51a-v2", .data = &board_P870HW51A_V2, },
#endif /* CONFIG_BCM63XX_CPU_6368 */
#ifdef CONFIG_BCM63XX_CPU_63268
diff --git a/target/linux/bcm63xx/patches-5.4/531-board_bcm6348-bt-voyager-2500v-bb.patch b/target/linux/bcm63xx/patches-5.4/531-board_bcm6348-bt-voyager-2500v-bb.patch
index 23fefee97a..ec49e933d6 100644
--- a/target/linux/bcm63xx/patches-5.4/531-board_bcm6348-bt-voyager-2500v-bb.patch
+++ b/target/linux/bcm63xx/patches-5.4/531-board_bcm6348-bt-voyager-2500v-bb.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -3202,6 +3202,22 @@ void __init board_bcm963xx_init(void)
+@@ -3244,6 +3244,22 @@ void __init board_bcm963xx_init(void)
val &= MPI_CSBASE_BASE_MASK;
}
boot_addr = (u8 *)KSEG1ADDR(val);