summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorKevin Lo <kevlo@cvs.openbsd.org>2023-12-22 05:28:15 +0000
committerKevin Lo <kevlo@cvs.openbsd.org>2023-12-22 05:28:15 +0000
commit99ddd45e25cbcb266a38c364953c6d4d7db64a36 (patch)
tree39c1dcd19ff32b503a961348dbb8d0a81aee3d0f /sys/dev
parentda298a06914391de4534feb05bba9474a8ffba4e (diff)
Update microcode, initialization and reset behavior.
Remove two chip versions (identified by MAC_CFG2 and MAC_CFG4) support that may not be available in the market, and also raise rxring lwm to 32. Tested by Nick Owens.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pci/if_rge.c765
-rw-r--r--sys/dev/pci/if_rgereg.h3650
2 files changed, 561 insertions, 3854 deletions
diff --git a/sys/dev/pci/if_rge.c b/sys/dev/pci/if_rge.c
index 2ef59a7a4cc..08aecaeca9e 100644
--- a/sys/dev/pci/if_rge.c
+++ b/sys/dev/pci/if_rge.c
@@ -1,7 +1,7 @@
-/* $OpenBSD: if_rge.c,v 1.22 2023/11/10 15:51:20 bluhm Exp $ */
+/* $OpenBSD: if_rge.c,v 1.23 2023/12/22 05:28:14 kevlo Exp $ */
/*
- * Copyright (c) 2019, 2020 Kevin Lo <kevlo@openbsd.org>
+ * Copyright (c) 2019, 2020, 2023 Kevin Lo <kevlo@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -70,7 +70,7 @@ int rge_encap(struct rge_queues *, struct mbuf *, int);
int rge_ioctl(struct ifnet *, u_long, caddr_t);
void rge_start(struct ifqueue *);
void rge_watchdog(struct ifnet *);
-int rge_init(struct ifnet *);
+void rge_init(struct ifnet *);
void rge_stop(struct ifnet *);
int rge_ifmedia_upd(struct ifnet *);
void rge_ifmedia_sts(struct ifnet *, struct ifmediareq *);
@@ -84,24 +84,29 @@ int rge_rxeof(struct rge_queues *);
int rge_txeof(struct rge_queues *);
void rge_reset(struct rge_softc *);
void rge_iff(struct rge_softc *);
+void rge_chipinit(struct rge_softc *);
void rge_set_phy_power(struct rge_softc *, int);
-void rge_phy_config(struct rge_softc *);
-void rge_phy_config_mac_cfg2(struct rge_softc *);
+void rge_ephy_config(struct rge_softc *);
+void rge_ephy_config_mac_cfg3(struct rge_softc *);
+void rge_ephy_config_mac_cfg5(struct rge_softc *);
+int rge_phy_config(struct rge_softc *);
void rge_phy_config_mac_cfg3(struct rge_softc *);
-void rge_phy_config_mac_cfg4(struct rge_softc *);
void rge_phy_config_mac_cfg5(struct rge_softc *);
void rge_phy_config_mcu(struct rge_softc *, uint16_t);
void rge_set_macaddr(struct rge_softc *, const uint8_t *);
void rge_get_macaddr(struct rge_softc *, uint8_t *);
void rge_hw_init(struct rge_softc *);
+void rge_hw_reset(struct rge_softc *);
void rge_disable_phy_ocp_pwrsave(struct rge_softc *);
void rge_patch_phy_mcu(struct rge_softc *, int);
void rge_add_media_types(struct rge_softc *);
void rge_config_imtype(struct rge_softc *, int);
+void rge_disable_aspm_clkreq(struct rge_softc *);
void rge_disable_hw_im(struct rge_softc *);
void rge_disable_sim_im(struct rge_softc *);
void rge_setup_sim_im(struct rge_softc *);
void rge_setup_intr(struct rge_softc *, int);
+void rge_switch_mcu_ram_page(struct rge_softc *, int);
void rge_exit_oob(struct rge_softc *);
void rge_write_csi(struct rge_softc *, uint32_t, uint32_t);
uint32_t rge_read_csi(struct rge_softc *, uint32_t);
@@ -129,12 +134,8 @@ void rge_kstat_attach(struct rge_softc *);
static const struct {
uint16_t reg;
uint16_t val;
-} rtl8125_mac_cfg2_mcu[] = {
- RTL8125_MAC_CFG2_MCU
-}, rtl8125_mac_cfg3_mcu[] = {
+} rtl8125_mac_cfg3_mcu[] = {
RTL8125_MAC_CFG3_MCU
-}, rtl8125_mac_cfg4_mcu[] = {
- RTL8125_MAC_CFG4_MCU
}, rtl8125_mac_cfg5_mcu[] = {
RTL8125_MAC_CFG5_MCU
};
@@ -176,7 +177,7 @@ rge_attach(struct device *parent, struct device *self, void *aux)
pci_set_powerstate(pa->pa_pc, pa->pa_tag, PCI_PMCSR_STATE_D0);
- /*
+ /*
* Map control/status registers.
*/
if (pci_mapreg_map(pa, RGE_PCI_BAR2, PCI_MAPREG_TYPE_MEM |
@@ -205,7 +206,7 @@ rge_attach(struct device *parent, struct device *self, void *aux)
sc->sc_queues = q;
sc->sc_nqueues = 1;
- /*
+ /*
* Allocate interrupt.
*/
if (pci_intr_map_msi(pa, &ih) == 0)
@@ -233,15 +234,9 @@ rge_attach(struct device *parent, struct device *self, void *aux)
/* Determine hardware revision */
hwrev = RGE_READ_4(sc, RGE_TXCFG) & RGE_TXCFG_HWREV;
switch (hwrev) {
- case 0x60800000:
- sc->rge_type = MAC_CFG2;
- break;
case 0x60900000:
sc->rge_type = MAC_CFG3;
break;
- case 0x64000000:
- sc->rge_type = MAC_CFG4;
- break;
case 0x64100000:
sc->rge_type = MAC_CFG5;
break;
@@ -252,7 +247,7 @@ rge_attach(struct device *parent, struct device *self, void *aux)
rge_config_imtype(sc, RGE_IMTYPE_SIM);
- /*
+ /*
* PCI Express check.
*/
if (pci_get_capability(pa->pa_pc, pa->pa_tag, PCI_CAP_PCIEXPRESS,
@@ -266,17 +261,13 @@ rge_attach(struct device *parent, struct device *self, void *aux)
reg);
}
- rge_exit_oob(sc);
- rge_hw_init(sc);
+ rge_chipinit(sc);
rge_get_macaddr(sc, eaddr);
printf(", address %s\n", ether_sprintf(eaddr));
memcpy(sc->sc_arpcom.ac_enaddr, eaddr, ETHER_ADDR_LEN);
- rge_set_phy_power(sc, 1);
- rge_phy_config(sc);
-
if (rge_allocmem(sc))
return;
@@ -631,26 +622,36 @@ rge_watchdog(struct ifnet *ifp)
rge_init(ifp);
}
-int
+void
rge_init(struct ifnet *ifp)
{
struct rge_softc *sc = ifp->if_softc;
struct rge_queues *q = sc->sc_queues;
uint32_t val;
- int i;
+ int i, num_miti;
rge_stop(ifp);
/* Set MAC address. */
rge_set_macaddr(sc, sc->sc_arpcom.ac_enaddr);
- /* Set Maximum frame size. */
- RGE_WRITE_2(sc, RGE_RXMAXSIZE, RGE_JUMBO_FRAMELEN);
-
/* Initialize RX and TX descriptors lists. */
rge_rx_list_init(q);
rge_tx_list_init(q);
+ rge_chipinit(sc);
+
+ if (rge_phy_config(sc))
+ return;
+
+ RGE_SETBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG);
+
+ RGE_CLRBIT_1(sc, 0xf1, 0x80);
+ rge_disable_aspm_clkreq(sc);
+ RGE_WRITE_2(sc, RGE_EEE_TXIDLE_TIMER,
+ RGE_JUMBO_MTU + ETHER_HDR_LEN + 32);
+ RGE_CLRBIT_1(sc, RGE_CFG3, RGE_CFG3_RDY_TO_L23);
+
/* Load the addresses of the RX and TX lists into the chip. */
RGE_WRITE_4(sc, RGE_RXDESC_ADDR_LO,
RGE_ADDR_LO(q->q_rx.rge_rx_list_map->dm_segs[0].ds_addr));
@@ -661,28 +662,15 @@ rge_init(struct ifnet *ifp)
RGE_WRITE_4(sc, RGE_TXDESC_ADDR_HI,
RGE_ADDR_HI(q->q_tx.rge_tx_list_map->dm_segs[0].ds_addr));
- RGE_SETBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG);
-
- RGE_CLRBIT_1(sc, 0xf1, 0x80);
- RGE_CLRBIT_1(sc, RGE_CFG2, RGE_CFG2_CLKREQ_EN);
- RGE_CLRBIT_1(sc, RGE_CFG5, RGE_CFG5_PME_STS);
- RGE_CLRBIT_1(sc, RGE_CFG3, RGE_CFG3_RDY_TO_L23);
-
- /* Clear interrupt moderation timer. */
- for (i = 0; i < 64; i++)
- RGE_WRITE_4(sc, RGE_INTMITI(i), 0);
-
/* Set the initial RX and TX configurations. */
- RGE_WRITE_4(sc, RGE_RXCFG, RGE_RXCFG_CONFIG);
+ RGE_WRITE_4(sc, RGE_RXCFG,
+ (sc->rge_type == MAC_CFG3) ? RGE_RXCFG_CONFIG :
+ RGE_RXCFG_CONFIG_8125B);
RGE_WRITE_4(sc, RGE_TXCFG, RGE_TXCFG_CONFIG);
val = rge_read_csi(sc, 0x70c) & ~0xff000000;
rge_write_csi(sc, 0x70c, val | 0x27000000);
- /* Enable hardware optimization function. */
- val = pci_conf_read(sc->sc_pc, sc->sc_tag, 0x78) & ~0x00007000;
- pci_conf_write(sc->sc_pc, sc->sc_tag, 0x78, val | 0x00005000);
-
RGE_WRITE_2(sc, 0x0382, 0x221b);
RGE_WRITE_1(sc, RGE_RSS_CTRL, 0);
@@ -698,8 +686,8 @@ rge_init(struct ifnet *ifp)
RGE_MAC_SETBIT(sc, 0xeb58, 0x0001);
val = rge_read_mac_ocp(sc, 0xe614) & ~0x0700;
- if (sc->rge_type == MAC_CFG2 || sc->rge_type == MAC_CFG3)
- rge_write_mac_ocp(sc, 0xe614, val | 0x0400);
+ if (sc->rge_type == MAC_CFG3)
+ rge_write_mac_ocp(sc, 0xe614, val | 0x0300);
else
rge_write_mac_ocp(sc, 0xe614, val | 0x0200);
@@ -708,11 +696,12 @@ rge_init(struct ifnet *ifp)
((fls(sc->sc_nqueues) - 1) & 0x03) << 10);
RGE_MAC_CLRBIT(sc, 0xe63e, 0x0030);
- if (sc->rge_type == MAC_CFG2 || sc->rge_type == MAC_CFG3)
+ if (sc->rge_type == MAC_CFG3)
RGE_MAC_SETBIT(sc, 0xe63e, 0x0020);
RGE_MAC_CLRBIT(sc, 0xc0b4, 0x0001);
RGE_MAC_SETBIT(sc, 0xc0b4, 0x0001);
+
RGE_MAC_SETBIT(sc, 0xc0b4, 0x000c);
val = rge_read_mac_ocp(sc, 0xeb6a) & ~0x00ff;
@@ -721,30 +710,26 @@ rge_init(struct ifnet *ifp)
val = rge_read_mac_ocp(sc, 0xeb50) & ~0x03e0;
rge_write_mac_ocp(sc, 0xeb50, val | 0x0040);
- val = rge_read_mac_ocp(sc, 0xe056) & ~0x00f0;
- rge_write_mac_ocp(sc, 0xe056, val | 0x0030);
+ RGE_MAC_CLRBIT(sc, 0xe056, 0x00f0);
RGE_WRITE_1(sc, RGE_TDFNR, 0x10);
- RGE_SETBIT_1(sc, RGE_DLLPR, RGE_DLLPR_TX_10M_PS_EN);
-
RGE_MAC_CLRBIT(sc, 0xe040, 0x1000);
val = rge_read_mac_ocp(sc, 0xea1c) & ~0x0003;
rge_write_mac_ocp(sc, 0xea1c, val | 0x0001);
- val = rge_read_mac_ocp(sc, 0xe0c0) & ~0x4f0f;
- rge_write_mac_ocp(sc, 0xe0c0, val | 0x4403);
+ rge_write_mac_ocp(sc, 0xe0c0, 0x4000);
- RGE_MAC_SETBIT(sc, 0xe052, 0x0068);
- RGE_MAC_CLRBIT(sc, 0xe052, 0x0080);
+ RGE_MAC_SETBIT(sc, 0xe052, 0x0060);
+ RGE_MAC_CLRBIT(sc, 0xe052, 0x0088);
val = rge_read_mac_ocp(sc, 0xd430) & ~0x0fff;
- rge_write_mac_ocp(sc, 0xd430, val | 0x047f);
+ rge_write_mac_ocp(sc, 0xd430, val | 0x045f);
RGE_SETBIT_1(sc, RGE_DLLPR, RGE_DLLPR_PFM_EN | RGE_DLLPR_TX_10M_PS_EN);
- if (sc->rge_type == MAC_CFG2 || sc->rge_type == MAC_CFG3)
+ if (sc->rge_type == MAC_CFG3)
RGE_SETBIT_1(sc, RGE_MCUCMD, 0x01);
/* Disable EEE plus. */
@@ -756,37 +741,65 @@ rge_init(struct ifnet *ifp)
DELAY(1);
RGE_MAC_CLRBIT(sc, 0xeb54, 0x0001);
- RGE_CLRBIT_4(sc, 0x1880, 0x0030);
+ RGE_CLRBIT_2(sc, 0x1880, 0x0030);
+
+ /* Config interrupt type for RTL8125B. */
+ if (sc->rge_type == MAC_CFG5)
+ RGE_CLRBIT_1(sc, RGE_INT_CFG0, RGE_INT_CFG0_EN);
+
+ /* Clear timer interrupts. */
+ RGE_WRITE_4(sc, RGE_TIMERINT0, 0);
+ RGE_WRITE_4(sc, RGE_TIMERINT1, 0);
+ RGE_WRITE_4(sc, RGE_TIMERINT2, 0);
+ RGE_WRITE_4(sc, RGE_TIMERINT3, 0);
+
+ num_miti = (sc->rge_type == MAC_CFG3) ? 64 : 32;
+ /* Clear interrupt moderation timer. */
+ for (i = 0; i < num_miti; i++)
+ RGE_WRITE_4(sc, RGE_INTMITI(i), 0);
+
+ if (sc->rge_type == MAC_CFG5) {
+ RGE_CLRBIT_1(sc, RGE_INT_CFG0,
+ RGE_INT_CFG0_TIMEOUT_BYPASS |
+ RGE_INT_CFG0_MITIGATION_BYPASS);
+ RGE_WRITE_2(sc, RGE_INT_CFG1, 0);
+ }
+
+ RGE_MAC_SETBIT(sc, 0xc0ac, 0x1f80);
rge_write_mac_ocp(sc, 0xe098, 0xc302);
+ RGE_MAC_CLRBIT(sc, 0xe032, 0x0003);
+ val = rge_read_csi(sc, 0x98) & ~0x0000ff00;
+ rge_write_csi(sc, 0x98, val);
+
+ val = rge_read_mac_ocp(sc, 0xe092) & ~0x00ff;
+ rge_write_mac_ocp(sc, 0xe092, val);
+
if (ifp->if_capabilities & IFCAP_VLAN_HWTAGGING)
RGE_SETBIT_4(sc, RGE_RXCFG, RGE_RXCFG_VLANSTRIP);
RGE_SETBIT_2(sc, RGE_CPLUSCMD, RGE_CPLUSCMD_RXCSUM);
- for (i = 0; i < 10; i++) {
- if (!(rge_read_mac_ocp(sc, 0xe00e) & 0x2000))
- break;
- DELAY(1000);
- }
+ /* Set Maximum frame size. */
+ RGE_WRITE_2(sc, RGE_RXMAXSIZE, RGE_JUMBO_FRAMELEN);
/* Disable RXDV gate. */
RGE_CLRBIT_1(sc, RGE_PPSW, 0x08);
DELAY(2000);
- rge_ifmedia_upd(ifp);
-
- /* Enable transmit and receive. */
- RGE_WRITE_1(sc, RGE_CMD, RGE_CMD_TXENB | RGE_CMD_RXENB);
-
/* Program promiscuous mode and multicast filters. */
rge_iff(sc);
- RGE_CLRBIT_1(sc, RGE_CFG2, RGE_CFG2_CLKREQ_EN);
- RGE_CLRBIT_1(sc, RGE_CFG5, RGE_CFG5_PME_STS);
+ rge_disable_aspm_clkreq(sc);
RGE_CLRBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG);
+ DELAY(10);
+
+ rge_ifmedia_upd(ifp);
+
+ /* Enable transmit and receive. */
+ RGE_WRITE_1(sc, RGE_CMD, RGE_CMD_TXENB | RGE_CMD_RXENB);
/* Enable interrupts. */
rge_setup_intr(sc, RGE_IMTYPE_SIM);
@@ -795,8 +808,6 @@ rge_init(struct ifnet *ifp)
ifq_clr_oactive(&ifp->if_snd);
timeout_add_sec(&sc->sc_timeout, 1);
-
- return (0);
}
/*
@@ -819,16 +830,9 @@ rge_stop(struct ifnet *ifp)
RGE_RXCFG_MULTI | RGE_RXCFG_BROAD | RGE_RXCFG_RUNT |
RGE_RXCFG_ERRPKT);
- RGE_WRITE_4(sc, RGE_IMR, 0);
- RGE_WRITE_4(sc, RGE_ISR, 0);
+ rge_hw_reset(sc);
- /* Clear timer interrupts. */
- RGE_WRITE_4(sc, RGE_TIMERINT0, 0);
- RGE_WRITE_4(sc, RGE_TIMERINT1, 0);
- RGE_WRITE_4(sc, RGE_TIMERINT2, 0);
- RGE_WRITE_4(sc, RGE_TIMERINT3, 0);
-
- rge_reset(sc);
+ RGE_MAC_CLRBIT(sc, 0xc0ac, 0x1f80);
intr_barrier(sc->sc_ih);
ifq_barrier(&ifp->if_snd);
@@ -960,7 +964,7 @@ rge_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
}
}
-/*
+/*
* Allocate memory for RX/TX rings.
*/
int
@@ -971,7 +975,8 @@ rge_allocmem(struct rge_softc *sc)
/* Allocate DMA'able memory for the TX ring. */
error = bus_dmamap_create(sc->sc_dmat, RGE_TX_LIST_SZ, 1,
- RGE_TX_LIST_SZ, 0, BUS_DMA_NOWAIT, &q->q_tx.rge_tx_list_map);
+ RGE_TX_LIST_SZ, 0, BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
+ &q->q_tx.rge_tx_list_map);
if (error) {
printf("%s: can't create TX list map\n", sc->sc_dev.dv_xname);
return (error);
@@ -1009,7 +1014,8 @@ rge_allocmem(struct rge_softc *sc)
/* Create DMA maps for TX buffers. */
for (i = 0; i < RGE_TX_LIST_CNT; i++) {
error = bus_dmamap_create(sc->sc_dmat, RGE_JUMBO_FRAMELEN,
- RGE_TX_NSEGS, RGE_JUMBO_FRAMELEN, 0, BUS_DMA_NOWAIT,
+ RGE_TX_NSEGS, RGE_JUMBO_FRAMELEN, 0,
+ BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
&q->q_tx.rge_txq[i].txq_dmamap);
if (error) {
printf("%s: can't create DMA map for TX\n",
@@ -1020,7 +1026,8 @@ rge_allocmem(struct rge_softc *sc)
/* Allocate DMA'able memory for the RX ring. */
error = bus_dmamap_create(sc->sc_dmat, RGE_RX_LIST_SZ, 1,
- RGE_RX_LIST_SZ, 0, BUS_DMA_NOWAIT, &q->q_rx.rge_rx_list_map);
+ RGE_RX_LIST_SZ, 0, BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
+ &q->q_rx.rge_rx_list_map);
if (error) {
printf("%s: can't create RX list map\n", sc->sc_dev.dv_xname);
return (error);
@@ -1058,7 +1065,7 @@ rge_allocmem(struct rge_softc *sc)
/* Create DMA maps for RX buffers. */
for (i = 0; i < RGE_RX_LIST_CNT; i++) {
error = bus_dmamap_create(sc->sc_dmat, RGE_JUMBO_FRAMELEN, 1,
- RGE_JUMBO_FRAMELEN, 0, BUS_DMA_NOWAIT,
+ RGE_JUMBO_FRAMELEN, 0, BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW,
&q->q_rx.rge_rxq[i].rxq_dmamap);
if (error) {
printf("%s: can't create DMA map for RX\n",
@@ -1151,7 +1158,7 @@ rge_rx_list_init(struct rge_queues *q)
q->q_rx.rge_rxq_prodidx = q->q_rx.rge_rxq_considx = 0;
q->q_rx.rge_head = q->q_rx.rge_tail = NULL;
- if_rxr_init(&q->q_rx.rge_rx_ring, 2, RGE_RX_LIST_CNT - 1);
+ if_rxr_init(&q->q_rx.rge_rx_ring, 32, RGE_RX_LIST_CNT);
rge_fill_rx_ring(q);
}
@@ -1162,7 +1169,7 @@ rge_fill_rx_ring(struct rge_queues *q)
int slots;
for (slots = if_rxr_get(rxr, RGE_RX_LIST_CNT); slots > 0; slots--) {
- if (rge_newbuf(q) == ENOBUFS)
+ if (rge_newbuf(q))
break;
}
if_rxr_put(rxr, slots);
@@ -1172,6 +1179,7 @@ void
rge_tx_list_init(struct rge_queues *q)
{
struct rge_softc *sc = q->q_sc;
+ struct rge_tx_desc *d;
int i;
memset(q->q_tx.rge_tx_list, 0, RGE_TX_LIST_SZ);
@@ -1179,6 +1187,9 @@ rge_tx_list_init(struct rge_queues *q)
for (i = 0; i < RGE_TX_LIST_CNT; i++)
q->q_tx.rge_txq[i].txq_mbuf = NULL;
+ d = &q->q_tx.rge_tx_list[RGE_TX_LIST_CNT - 1];
+ d->rge_cmdsts = htole32(RGE_TDCMDSTS_EOR);
+
bus_dmamap_sync(sc->sc_dmat, q->q_tx.rge_tx_list_map, 0,
q->q_tx.rge_tx_list_map->dm_mapsize,
BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
@@ -1207,14 +1218,13 @@ rge_rxeof(struct rge_queues *q)
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
cur_rx = &q->q_rx.rge_rx_list[i];
+ rxstat = letoh32(cur_rx->hi_qword1.rx_qword4.rge_cmdsts);
+ extsts = letoh32(cur_rx->hi_qword1.rx_qword4.rge_extsts);
- if (RGE_OWN(cur_rx))
+ if (rxstat & RGE_RDCMDSTS_OWN)
break;
- rxstat = letoh32(cur_rx->hi_qword1.rx_qword4.rge_cmdsts);
- extsts = letoh32(cur_rx->hi_qword1.rx_qword4.rge_extsts);
-
- total_len = RGE_RXBYTES(cur_rx);
+ total_len = rxstat & RGE_RDCMDSTS_FRAGLEN;
rxq = &q->q_rx.rge_rxq[i];
m = rxq->rxq_mbuf;
rxq->rxq_mbuf = NULL;
@@ -1336,7 +1346,7 @@ rge_txeof(struct rge_queues *q)
break;
}
- bus_dmamap_sync(sc->sc_dmat, txq->txq_dmamap, 0,
+ bus_dmamap_sync(sc->sc_dmat, txq->txq_dmamap, 0,
txq->txq_dmamap->dm_mapsize, BUS_DMASYNC_POSTWRITE);
bus_dmamap_unload(sc->sc_dmat, txq->txq_dmamap);
m_freem(txq->txq_mbuf);
@@ -1376,10 +1386,21 @@ rge_reset(struct rge_softc *sc)
{
int i;
+ RGE_CLRBIT_4(sc, RGE_RXCFG, RGE_RXCFG_ALLPHYS | RGE_RXCFG_INDIV |
+ RGE_RXCFG_MULTI | RGE_RXCFG_BROAD | RGE_RXCFG_RUNT |
+ RGE_RXCFG_ERRPKT);
+
/* Enable RXDV gate. */
RGE_SETBIT_1(sc, RGE_PPSW, 0x08);
DELAY(2000);
+ RGE_SETBIT_1(sc, RGE_CMD, RGE_CMD_STOPREQ);
+ for (i = 0; i < 20; i++) {
+ DELAY(10);
+ if (!(RGE_READ_1(sc, RGE_CMD) & RGE_CMD_STOPREQ))
+ break;
+ }
+
for (i = 0; i < 3000; i++) {
DELAY(50);
if ((RGE_READ_1(sc, RGE_MCUCMD) & (RGE_MCUCMD_RXFIFO_EMPTY |
@@ -1387,7 +1408,7 @@ rge_reset(struct rge_softc *sc)
RGE_MCUCMD_TXFIFO_EMPTY))
break;
}
- if (sc->rge_type == MAC_CFG4 || sc->rge_type == MAC_CFG5) {
+ if (sc->rge_type != MAC_CFG3) {
for (i = 0; i < 3000; i++) {
DELAY(50);
if ((RGE_READ_2(sc, RGE_IM) & 0x0103) == 0x0103)
@@ -1461,6 +1482,15 @@ rge_iff(struct rge_softc *sc)
}
void
+rge_chipinit(struct rge_softc *sc)
+{
+ rge_exit_oob(sc);
+ rge_set_phy_power(sc, 1);
+ rge_hw_init(sc);
+ rge_hw_reset(sc);
+}
+
+void
rge_set_phy_power(struct rge_softc *sc, int on)
{
int i;
@@ -1483,22 +1513,91 @@ rge_set_phy_power(struct rge_softc *sc, int on)
}
void
+rge_ephy_config(struct rge_softc *sc)
+{
+ switch (sc->rge_type) {
+ case MAC_CFG3:
+ rge_ephy_config_mac_cfg3(sc);
+ break;
+ case MAC_CFG5:
+ rge_ephy_config_mac_cfg5(sc);
+ break;
+ default:
+ break; /* Can't happen. */
+ }
+}
+
+void
+rge_ephy_config_mac_cfg3(struct rge_softc *sc)
+{
+ uint16_t val;
+ int i;
+
+ for (i = 0; i < nitems(rtl8125_mac_cfg3_ephy); i++)
+ rge_write_ephy(sc, rtl8125_mac_cfg3_ephy[i].reg,
+ rtl8125_mac_cfg3_ephy[i].val);
+
+ val = rge_read_ephy(sc, 0x002a) & ~0x7000;
+ rge_write_ephy(sc, 0x002a, val | 0x3000);
+ RGE_EPHY_CLRBIT(sc, 0x0019, 0x0040);
+ RGE_EPHY_SETBIT(sc, 0x001b, 0x0e00);
+ RGE_EPHY_CLRBIT(sc, 0x001b, 0x7000);
+ rge_write_ephy(sc, 0x0002, 0x6042);
+ rge_write_ephy(sc, 0x0006, 0x0014);
+ val = rge_read_ephy(sc, 0x006a) & ~0x7000;
+ rge_write_ephy(sc, 0x006a, val | 0x3000);
+ RGE_EPHY_CLRBIT(sc, 0x0059, 0x0040);
+ RGE_EPHY_SETBIT(sc, 0x005b, 0x0e00);
+ RGE_EPHY_CLRBIT(sc, 0x005b, 0x7000);
+ rge_write_ephy(sc, 0x0042, 0x6042);
+ rge_write_ephy(sc, 0x0046, 0x0014);
+}
+
+void
+rge_ephy_config_mac_cfg5(struct rge_softc *sc)
+{
+ int i;
+
+ for (i = 0; i < nitems(rtl8125_mac_cfg5_ephy); i++)
+ rge_write_ephy(sc, rtl8125_mac_cfg5_ephy[i].reg,
+ rtl8125_mac_cfg5_ephy[i].val);
+}
+
+int
rge_phy_config(struct rge_softc *sc)
{
+ int i;
+
+ rge_ephy_config(sc);
+
+ /* PHY reset. */
+ rge_write_phy(sc, 0, MII_ANAR,
+ rge_read_phy(sc, 0, MII_ANAR) &
+ ~(ANAR_TX_FD | ANAR_TX | ANAR_10_FD | ANAR_10));
+ rge_write_phy(sc, 0, MII_100T2CR,
+ rge_read_phy(sc, 0, MII_100T2CR) &
+ ~(GTCR_ADV_1000TFDX | GTCR_ADV_1000THDX));
+ RGE_PHY_CLRBIT(sc, 0xa5d4, RGE_ADV_2500TFDX);
+ rge_write_phy(sc, 0, MII_BMCR, BMCR_RESET | BMCR_AUTOEN |
+ BMCR_STARTNEG);
+ for (i = 0; i < 2500; i++) {
+ if (!(rge_read_phy(sc, 0, MII_BMCR) & BMCR_RESET))
+ break;
+ DELAY(1000);
+ }
+ if (i == 2500) {
+ printf("%s: PHY reset failed\n", sc->sc_dev.dv_xname);
+ return (ETIMEDOUT);
+ }
+
/* Read microcode version. */
rge_write_phy_ocp(sc, 0xa436, 0x801e);
sc->rge_mcodever = rge_read_phy_ocp(sc, 0xa438);
switch (sc->rge_type) {
- case MAC_CFG2:
- rge_phy_config_mac_cfg2(sc);
- break;
case MAC_CFG3:
rge_phy_config_mac_cfg3(sc);
break;
- case MAC_CFG4:
- rge_phy_config_mac_cfg4(sc);
- break;
case MAC_CFG5:
rge_phy_config_mac_cfg5(sc);
break;
@@ -1506,12 +1605,11 @@ rge_phy_config(struct rge_softc *sc)
break; /* Can't happen. */
}
- rge_write_phy(sc, 0x0a5b, 0x12,
- rge_read_phy(sc, 0x0a5b, 0x12) & ~0x8000);
+ RGE_PHY_CLRBIT(sc, 0xa5b4, 0x8000);
/* Disable EEE. */
RGE_MAC_CLRBIT(sc, 0xe040, 0x0003);
- if (sc->rge_type == MAC_CFG2 || sc->rge_type == MAC_CFG3) {
+ if (sc->rge_type == MAC_CFG3) {
RGE_MAC_CLRBIT(sc, 0xeb62, 0x0006);
RGE_PHY_CLRBIT(sc, 0xa432, 0x0010);
}
@@ -1521,85 +1619,14 @@ rge_phy_config(struct rge_softc *sc)
RGE_PHY_CLRBIT(sc, 0xa428, 0x0080);
RGE_PHY_CLRBIT(sc, 0xa4a2, 0x0200);
+ /* Advanced EEE. */
rge_patch_phy_mcu(sc, 1);
RGE_MAC_CLRBIT(sc, 0xe052, 0x0001);
RGE_PHY_CLRBIT(sc, 0xa442, 0x3000);
RGE_PHY_CLRBIT(sc, 0xa430, 0x8000);
rge_patch_phy_mcu(sc, 0);
-}
-
-void
-rge_phy_config_mac_cfg2(struct rge_softc *sc)
-{
- uint16_t val;
- int i;
-
- for (i = 0; i < nitems(rtl8125_mac_cfg2_ephy); i++)
- rge_write_ephy(sc, rtl8125_mac_cfg2_ephy[i].reg,
- rtl8125_mac_cfg2_ephy[i].val);
-
- rge_phy_config_mcu(sc, RGE_MAC_CFG2_MCODE_VER);
-
- val = rge_read_phy_ocp(sc, 0xad40) & ~0x03ff;
- rge_write_phy_ocp(sc, 0xad40, val | 0x0084);
- RGE_PHY_SETBIT(sc, 0xad4e, 0x0010);
- val = rge_read_phy_ocp(sc, 0xad16) & ~0x03ff;
- rge_write_phy_ocp(sc, 0xad16, val | 0x0006);
- val = rge_read_phy_ocp(sc, 0xad32) & ~0x03ff;
- rge_write_phy_ocp(sc, 0xad32, val | 0x0006);
- RGE_PHY_CLRBIT(sc, 0xac08, 0x1100);
- val = rge_read_phy_ocp(sc, 0xac8a) & ~0xf000;
- rge_write_phy_ocp(sc, 0xac8a, val | 0x7000);
- RGE_PHY_SETBIT(sc, 0xad18, 0x0400);
- RGE_PHY_SETBIT(sc, 0xad1a, 0x03ff);
- RGE_PHY_SETBIT(sc, 0xad1c, 0x03ff);
- rge_write_phy_ocp(sc, 0xa436, 0x80ea);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0xc400);
- rge_write_phy_ocp(sc, 0xa436, 0x80eb);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0x0700;
- rge_write_phy_ocp(sc, 0xa438, val | 0x0300);
- rge_write_phy_ocp(sc, 0xa436, 0x80f8);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x1c00);
- rge_write_phy_ocp(sc, 0xa436, 0x80f1);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x3000);
- rge_write_phy_ocp(sc, 0xa436, 0x80fe);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0xa500);
- rge_write_phy_ocp(sc, 0xa436, 0x8102);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x5000);
- rge_write_phy_ocp(sc, 0xa436, 0x8105);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x3300);
- rge_write_phy_ocp(sc, 0xa436, 0x8100);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x7000);
- rge_write_phy_ocp(sc, 0xa436, 0x8104);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0xf000);
- rge_write_phy_ocp(sc, 0xa436, 0x8106);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x6500);
- rge_write_phy_ocp(sc, 0xa436, 0x80dc);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0xed00);
- rge_write_phy_ocp(sc, 0xa436, 0x80df);
- RGE_PHY_SETBIT(sc, 0xa438, 0x0100);
- rge_write_phy_ocp(sc, 0xa436, 0x80e1);
- RGE_PHY_CLRBIT(sc, 0xa438, 0x0100);
- val = rge_read_phy_ocp(sc, 0xbf06) & ~0x003f;
- rge_write_phy_ocp(sc, 0xbf06, val | 0x0038);
- rge_write_phy_ocp(sc, 0xa436, 0x819f);
- rge_write_phy_ocp(sc, 0xa438, 0xd0b6);
- rge_write_phy_ocp(sc, 0xbc34, 0x5555);
- val = rge_read_phy_ocp(sc, 0xbf0a) & ~0x0e00;
- rge_write_phy_ocp(sc, 0xbf0a, val | 0x0a00);
- RGE_PHY_CLRBIT(sc, 0xa5c0, 0x0400);
- RGE_PHY_SETBIT(sc, 0xa442, 0x0800);
+ return (0);
}
void
@@ -1612,32 +1639,13 @@ rge_phy_config_mac_cfg3(struct rge_softc *sc)
0x00bb, 0x0058, 0x0029, 0x0013, 0x0009, 0x0004, 0x0002 };
static const uint16_t mac_cfg3_b88e_value[] =
- { 0xc091, 0x6e12, 0xc092, 0x1214, 0xc094, 0x1516, 0xc096, 0x171b,
+ { 0xc091, 0x6e12, 0xc092, 0x1214, 0xc094, 0x1516, 0xc096, 0x171b,
0xc098, 0x1b1c, 0xc09a, 0x1f1f, 0xc09c, 0x2021, 0xc09e, 0x2224,
0xc0a0, 0x2424, 0xc0a2, 0x2424, 0xc0a4, 0x2424, 0xc018, 0x0af2,
0xc01a, 0x0d4a, 0xc01c, 0x0f26, 0xc01e, 0x118d, 0xc020, 0x14f3,
0xc022, 0x175a, 0xc024, 0x19c0, 0xc026, 0x1c26, 0xc089, 0x6050,
0xc08a, 0x5f6e, 0xc08c, 0x6e6e, 0xc08e, 0x6e6e, 0xc090, 0x6e12 };
- for (i = 0; i < nitems(rtl8125_mac_cfg3_ephy); i++)
- rge_write_ephy(sc, rtl8125_mac_cfg3_ephy[i].reg,
- rtl8125_mac_cfg3_ephy[i].val);
-
- val = rge_read_ephy(sc, 0x002a) & ~0x7000;
- rge_write_ephy(sc, 0x002a, val | 0x3000);
- RGE_EPHY_CLRBIT(sc, 0x0019, 0x0040);
- RGE_EPHY_SETBIT(sc, 0x001b, 0x0e00);
- RGE_EPHY_CLRBIT(sc, 0x001b, 0x7000);
- rge_write_ephy(sc, 0x0002, 0x6042);
- rge_write_ephy(sc, 0x0006, 0x0014);
- val = rge_read_ephy(sc, 0x006a) & ~0x7000;
- rge_write_ephy(sc, 0x006a, val | 0x3000);
- RGE_EPHY_CLRBIT(sc, 0x0059, 0x0040);
- RGE_EPHY_SETBIT(sc, 0x005b, 0x0e00);
- RGE_EPHY_CLRBIT(sc, 0x005b, 0x7000);
- rge_write_ephy(sc, 0x0042, 0x6042);
- rge_write_ephy(sc, 0x0046, 0x0014);
-
rge_phy_config_mcu(sc, RGE_MAC_CFG3_MCODE_VER);
RGE_PHY_SETBIT(sc, 0xad4e, 0x0010);
@@ -1667,8 +1675,6 @@ rge_phy_config_mac_cfg3(struct rge_softc *sc)
rge_write_phy_ocp(sc, 0xb87c, 0x8159);
val = rge_read_phy_ocp(sc, 0xb87e) & ~0xff00;
rge_write_phy_ocp(sc, 0xb87e, val | 0x0700);
- RGE_WRITE_2(sc, RGE_EEE_TXIDLE_TIMER, RGE_JUMBO_MTU + ETHER_HDR_LEN +
- 32);
rge_write_phy_ocp(sc, 0xb87c, 0x80a2);
rge_write_phy_ocp(sc, 0xb87e, 0x0153);
rge_write_phy_ocp(sc, 0xb87c, 0x809c);
@@ -1704,195 +1710,7 @@ rge_phy_config_mac_cfg3(struct rge_softc *sc)
RGE_PHY_CLRBIT(sc, 0xad4e, 0x0010);
RGE_PHY_CLRBIT(sc, 0xa86a, 0x0001);
RGE_PHY_SETBIT(sc, 0xa442, 0x0800);
-}
-
-void
-rge_phy_config_mac_cfg4(struct rge_softc *sc)
-{
- uint16_t val;
- int i;
- static const uint16_t mac_cfg4_b87c_value[] =
- { 0x8013, 0x0700, 0x8fb9, 0x2801, 0x8fba, 0x0100, 0x8fbc, 0x1900,
- 0x8fbe, 0xe100, 0x8fc0, 0x0800, 0x8fc2, 0xe500, 0x8fc4, 0x0f00,
- 0x8fc6, 0xf100, 0x8fc8, 0x0400, 0x8fca, 0xf300, 0x8fcc, 0xfd00,
- 0x8fce, 0xff00, 0x8fd0, 0xfb00, 0x8fd2, 0x0100, 0x8fd4, 0xf400,
- 0x8fd6, 0xff00, 0x8fd8, 0xf600, 0x813d, 0x390e, 0x814f, 0x790e,
- 0x80b0, 0x0f31 };
-
- for (i = 0; i < nitems(rtl8125_mac_cfg4_ephy); i++)
- rge_write_ephy(sc, rtl8125_mac_cfg4_ephy[i].reg,
- rtl8125_mac_cfg4_ephy[i].val);
-
- rge_write_phy_ocp(sc, 0xbf86, 0x9000);
- RGE_PHY_SETBIT(sc, 0xc402, 0x0400);
- RGE_PHY_CLRBIT(sc, 0xc402, 0x0400);
- rge_write_phy_ocp(sc, 0xbd86, 0x1010);
- rge_write_phy_ocp(sc, 0xbd88, 0x1010);
- val = rge_read_phy_ocp(sc, 0xbd4e) & ~0x0c00;
- rge_write_phy_ocp(sc, 0xbd4e, val | 0x0800);
- val = rge_read_phy_ocp(sc, 0xbf46) & ~0x0f00;
- rge_write_phy_ocp(sc, 0xbf46, val | 0x0700);
-
- rge_phy_config_mcu(sc, RGE_MAC_CFG4_MCODE_VER);
-
- RGE_PHY_SETBIT(sc, 0xa442, 0x0800);
- RGE_PHY_SETBIT(sc, 0xbc08, 0x000c);
- rge_write_phy_ocp(sc, 0xa436, 0x8fff);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x0400);
- for (i = 0; i < 6; i++) {
- rge_write_phy_ocp(sc, 0xb87c, 0x8560 + i * 2);
- if (i < 3)
- rge_write_phy_ocp(sc, 0xb87e, 0x19cc);
- else
- rge_write_phy_ocp(sc, 0xb87e, 0x147d);
- }
- rge_write_phy_ocp(sc, 0xb87c, 0x8ffe);
- rge_write_phy_ocp(sc, 0xb87e, 0x0907);
- val = rge_read_phy_ocp(sc, 0xacda) & ~0xff00;
- rge_write_phy_ocp(sc, 0xacda, val | 0xff00);
- val = rge_read_phy_ocp(sc, 0xacde) & ~0xf000;
- rge_write_phy_ocp(sc, 0xacde, val | 0xf000);
- rge_write_phy_ocp(sc, 0xb87c, 0x80d6);
- rge_write_phy_ocp(sc, 0xb87e, 0x2801);
- rge_write_phy_ocp(sc, 0xb87c, 0x80F2);
- rge_write_phy_ocp(sc, 0xb87e, 0x2801);
- rge_write_phy_ocp(sc, 0xb87c, 0x80f4);
- rge_write_phy_ocp(sc, 0xb87e, 0x6077);
- rge_write_phy_ocp(sc, 0xb506, 0x01e7);
- rge_write_phy_ocp(sc, 0xac8c, 0x0ffc);
- rge_write_phy_ocp(sc, 0xac46, 0xb7b4);
- rge_write_phy_ocp(sc, 0xac50, 0x0fbc);
- rge_write_phy_ocp(sc, 0xac3c, 0x9240);
- rge_write_phy_ocp(sc, 0xac4E, 0x0db4);
- rge_write_phy_ocp(sc, 0xacc6, 0x0707);
- rge_write_phy_ocp(sc, 0xacc8, 0xa0d3);
- rge_write_phy_ocp(sc, 0xad08, 0x0007);
- for (i = 0; i < nitems(mac_cfg4_b87c_value); i += 2) {
- rge_write_phy_ocp(sc, 0xb87c, mac_cfg4_b87c_value[i]);
- rge_write_phy_ocp(sc, 0xb87e, mac_cfg4_b87c_value[i + 1]);
- }
- RGE_PHY_SETBIT(sc, 0xbf4c, 0x0002);
- RGE_PHY_SETBIT(sc, 0xbcca, 0x0300);
- rge_write_phy_ocp(sc, 0xb87c, 0x8141);
- rge_write_phy_ocp(sc, 0xb87e, 0x320e);
- rge_write_phy_ocp(sc, 0xb87c, 0x8153);
- rge_write_phy_ocp(sc, 0xb87e, 0x720e);
- RGE_PHY_CLRBIT(sc, 0xa432, 0x0040);
- rge_write_phy_ocp(sc, 0xb87c, 0x8529);
- rge_write_phy_ocp(sc, 0xb87e, 0x050e);
- RGE_WRITE_2(sc, RGE_EEE_TXIDLE_TIMER, RGE_JUMBO_MTU + ETHER_HDR_LEN +
- 32);
- rge_write_phy_ocp(sc, 0xa436, 0x816c);
- rge_write_phy_ocp(sc, 0xa438, 0xc4a0);
- rge_write_phy_ocp(sc, 0xa436, 0x8170);
- rge_write_phy_ocp(sc, 0xa438, 0xc4a0);
- rge_write_phy_ocp(sc, 0xa436, 0x8174);
- rge_write_phy_ocp(sc, 0xa438, 0x04a0);
- rge_write_phy_ocp(sc, 0xa436, 0x8178);
- rge_write_phy_ocp(sc, 0xa438, 0x04a0);
- rge_write_phy_ocp(sc, 0xa436, 0x817c);
- rge_write_phy_ocp(sc, 0xa438, 0x0719);
- rge_write_phy_ocp(sc, 0xa436, 0x8ff4);
- rge_write_phy_ocp(sc, 0xa438, 0x0400);
- rge_write_phy_ocp(sc, 0xa436, 0x8ff1);
- rge_write_phy_ocp(sc, 0xa438, 0x0404);
- rge_write_phy_ocp(sc, 0xbf4a, 0x001b);
- for (i = 0; i < 6; i++) {
- rge_write_phy_ocp(sc, 0xb87c, 0x8033 + i * 4);
- if (i == 2)
- rge_write_phy_ocp(sc, 0xb87e, 0xfc32);
- else
- rge_write_phy_ocp(sc, 0xb87e, 0x7c13);
- }
- rge_write_phy_ocp(sc, 0xb87c, 0x8145);
- rge_write_phy_ocp(sc, 0xb87e, 0x370e);
- rge_write_phy_ocp(sc, 0xb87c, 0x8157);
- rge_write_phy_ocp(sc, 0xb87e, 0x770e);
- rge_write_phy_ocp(sc, 0xb87c, 0x8169);
- rge_write_phy_ocp(sc, 0xb87e, 0x0d0a);
- rge_write_phy_ocp(sc, 0xb87c, 0x817b);
- rge_write_phy_ocp(sc, 0xb87e, 0x1d0a);
- rge_write_phy_ocp(sc, 0xa436, 0x8217);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x5000);
- rge_write_phy_ocp(sc, 0xa436, 0x821a);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x5000);
- rge_write_phy_ocp(sc, 0xa436, 0x80da);
- rge_write_phy_ocp(sc, 0xa438, 0x0403);
- rge_write_phy_ocp(sc, 0xa436, 0x80dc);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x1000);
- rge_write_phy_ocp(sc, 0xa436, 0x80b3);
- rge_write_phy_ocp(sc, 0xa438, 0x0384);
- rge_write_phy_ocp(sc, 0xa436, 0x80b7);
- rge_write_phy_ocp(sc, 0xa438, 0x2007);
- rge_write_phy_ocp(sc, 0xa436, 0x80ba);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x6c00);
- rge_write_phy_ocp(sc, 0xa436, 0x80b5);
- rge_write_phy_ocp(sc, 0xa438, 0xf009);
- rge_write_phy_ocp(sc, 0xa436, 0x80bd);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x9f00);
- rge_write_phy_ocp(sc, 0xa436, 0x80c7);
- rge_write_phy_ocp(sc, 0xa438, 0xf083);
- rge_write_phy_ocp(sc, 0xa436, 0x80dd);
- rge_write_phy_ocp(sc, 0xa438, 0x03f0);
- rge_write_phy_ocp(sc, 0xa436, 0x80df);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x1000);
- rge_write_phy_ocp(sc, 0xa436, 0x80cb);
- rge_write_phy_ocp(sc, 0xa438, 0x2007);
- rge_write_phy_ocp(sc, 0xa436, 0x80ce);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x6c00);
- rge_write_phy_ocp(sc, 0xa436, 0x80c9);
- rge_write_phy_ocp(sc, 0xa438, 0x8009);
- rge_write_phy_ocp(sc, 0xa436, 0x80d1);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0x8000);
- rge_write_phy_ocp(sc, 0xa436, 0x80a3);
- rge_write_phy_ocp(sc, 0xa438, 0x200a);
- rge_write_phy_ocp(sc, 0xa436, 0x80a5);
- rge_write_phy_ocp(sc, 0xa438, 0xf0ad);
- rge_write_phy_ocp(sc, 0xa436, 0x809f);
- rge_write_phy_ocp(sc, 0xa438, 0x6073);
- rge_write_phy_ocp(sc, 0xa436, 0x80a1);
- rge_write_phy_ocp(sc, 0xa438, 0x000b);
- rge_write_phy_ocp(sc, 0xa436, 0x80a9);
- val = rge_read_phy_ocp(sc, 0xa438) & ~0xff00;
- rge_write_phy_ocp(sc, 0xa438, val | 0xc000);
- rge_patch_phy_mcu(sc, 1);
- RGE_PHY_CLRBIT(sc, 0xb896, 0x0001);
- RGE_PHY_CLRBIT(sc, 0xb892, 0xff00);
- rge_write_phy_ocp(sc, 0xb88e, 0xc23e);
- rge_write_phy_ocp(sc, 0xb890, 0x0000);
- rge_write_phy_ocp(sc, 0xb88e, 0xc240);
- rge_write_phy_ocp(sc, 0xb890, 0x0103);
- rge_write_phy_ocp(sc, 0xb88e, 0xc242);
- rge_write_phy_ocp(sc, 0xb890, 0x0507);
- rge_write_phy_ocp(sc, 0xb88e, 0xc244);
- rge_write_phy_ocp(sc, 0xb890, 0x090b);
- rge_write_phy_ocp(sc, 0xb88e, 0xc246);
- rge_write_phy_ocp(sc, 0xb890, 0x0c0e);
- rge_write_phy_ocp(sc, 0xb88e, 0xc248);
- rge_write_phy_ocp(sc, 0xb890, 0x1012);
- rge_write_phy_ocp(sc, 0xb88e, 0xc24a);
- rge_write_phy_ocp(sc, 0xb890, 0x1416);
- RGE_PHY_SETBIT(sc, 0xb896, 0x0001);
- rge_patch_phy_mcu(sc, 0);
- RGE_PHY_SETBIT(sc, 0xa86a, 0x0001);
- RGE_PHY_SETBIT(sc, 0xa6f0, 0x0001);
- rge_write_phy_ocp(sc, 0xbfa0, 0xd70d);
- rge_write_phy_ocp(sc, 0xbfa2, 0x4100);
- rge_write_phy_ocp(sc, 0xbfa4, 0xe868);
- rge_write_phy_ocp(sc, 0xbfa6, 0xdc59);
- rge_write_phy_ocp(sc, 0xb54c, 0x3c18);
- RGE_PHY_CLRBIT(sc, 0xbfa4, 0x0020);
- rge_write_phy_ocp(sc, 0xa436, 0x817d);
- RGE_PHY_SETBIT(sc, 0xa438, 0x1000);
+ RGE_PHY_SETBIT(sc, 0xa424, 0x0008);
}
void
@@ -1901,10 +1719,6 @@ rge_phy_config_mac_cfg5(struct rge_softc *sc)
uint16_t val;
int i;
- for (i = 0; i < nitems(rtl8125_mac_cfg5_ephy); i++)
- rge_write_ephy(sc, rtl8125_mac_cfg5_ephy[i].reg,
- rtl8125_mac_cfg5_ephy[i].val);
-
rge_phy_config_mcu(sc, RGE_MAC_CFG5_MCODE_VER);
RGE_PHY_SETBIT(sc, 0xa442, 0x0800);
@@ -1912,8 +1726,6 @@ rge_phy_config_mac_cfg5(struct rge_softc *sc)
rge_write_phy_ocp(sc, 0xac46, val | 0x0090);
val = rge_read_phy_ocp(sc, 0xad30) & ~0x0003;
rge_write_phy_ocp(sc, 0xad30, val | 0x0001);
- RGE_WRITE_2(sc, RGE_EEE_TXIDLE_TIMER, RGE_JUMBO_MTU + ETHER_HDR_LEN +
- 32);
rge_write_phy_ocp(sc, 0xb87c, 0x80f5);
rge_write_phy_ocp(sc, 0xb87e, 0x760e);
rge_write_phy_ocp(sc, 0xb87c, 0x8107);
@@ -1935,6 +1747,7 @@ rge_phy_config_mac_cfg5(struct rge_softc *sc)
rge_write_phy_ocp(sc, 0xa436, 0x8170);
val = rge_read_phy_ocp(sc, 0xa438) & ~0x2700;
rge_write_phy_ocp(sc, 0xa438, val | 0xd800);
+ RGE_PHY_SETBIT(sc, 0xa424, 0x0008);
}
void
@@ -1945,45 +1758,20 @@ rge_phy_config_mcu(struct rge_softc *sc, uint16_t mcode_version)
rge_patch_phy_mcu(sc, 1);
- if (sc->rge_type == MAC_CFG2 || sc->rge_type == MAC_CFG3) {
+ if (sc->rge_type == MAC_CFG3) {
rge_write_phy_ocp(sc, 0xa436, 0x8024);
- if (sc->rge_type == MAC_CFG2)
- rge_write_phy_ocp(sc, 0xa438, 0x8600);
- else
- rge_write_phy_ocp(sc, 0xa438, 0x8601);
+ rge_write_phy_ocp(sc, 0xa438, 0x8601);
rge_write_phy_ocp(sc, 0xa436, 0xb82e);
rge_write_phy_ocp(sc, 0xa438, 0x0001);
RGE_PHY_SETBIT(sc, 0xb820, 0x0080);
- }
- if (sc->rge_type == MAC_CFG2) {
- for (i = 0; i < nitems(rtl8125_mac_cfg2_mcu); i++) {
- rge_write_phy_ocp(sc,
- rtl8125_mac_cfg2_mcu[i].reg,
- rtl8125_mac_cfg2_mcu[i].val);
- }
- } else if (sc->rge_type == MAC_CFG3) {
for (i = 0; i < nitems(rtl8125_mac_cfg3_mcu); i++) {
rge_write_phy_ocp(sc,
rtl8125_mac_cfg3_mcu[i].reg,
rtl8125_mac_cfg3_mcu[i].val);
}
- } else if (sc->rge_type == MAC_CFG4) {
- for (i = 0; i < nitems(rtl8125_mac_cfg4_mcu); i++) {
- rge_write_phy_ocp(sc,
- rtl8125_mac_cfg4_mcu[i].reg,
- rtl8125_mac_cfg4_mcu[i].val);
- }
- } else if (sc->rge_type == MAC_CFG5) {
- for (i = 0; i < nitems(rtl8125_mac_cfg5_mcu); i++) {
- rge_write_phy_ocp(sc,
- rtl8125_mac_cfg5_mcu[i].reg,
- rtl8125_mac_cfg5_mcu[i].val);
- }
- }
- if (sc->rge_type == MAC_CFG2 || sc->rge_type == MAC_CFG3) {
RGE_PHY_CLRBIT(sc, 0xb820, 0x0080);
rge_write_phy_ocp(sc, 0xa436, 0);
@@ -1991,6 +1779,12 @@ rge_phy_config_mcu(struct rge_softc *sc, uint16_t mcode_version)
RGE_PHY_CLRBIT(sc, 0xb82e, 0x0001);
rge_write_phy_ocp(sc, 0xa436, 0x8024);
rge_write_phy_ocp(sc, 0xa438, 0);
+ } else if (sc->rge_type == MAC_CFG5) {
+ for (i = 0; i < nitems(rtl8125_mac_cfg5_mcu); i++) {
+ rge_write_phy_ocp(sc,
+ rtl8125_mac_cfg5_mcu[i].reg,
+ rtl8125_mac_cfg5_mcu[i].val);
+ }
}
rge_patch_phy_mcu(sc, 0);
@@ -2015,39 +1809,72 @@ rge_set_macaddr(struct rge_softc *sc, const uint8_t *addr)
void
rge_get_macaddr(struct rge_softc *sc, uint8_t *addr)
{
+ int i;
+
+ for (i = 0; i < ETHER_ADDR_LEN; i++)
+ addr[i] = RGE_READ_1(sc, RGE_MAC0 + i);
+
*(uint32_t *)&addr[0] = RGE_READ_4(sc, RGE_ADDR0);
*(uint16_t *)&addr[4] = RGE_READ_2(sc, RGE_ADDR1);
+
+ rge_set_macaddr(sc, addr);
}
void
rge_hw_init(struct rge_softc *sc)
{
- int i;
+ uint16_t reg;
+ int i, npages;
- RGE_SETBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG);
- RGE_CLRBIT_1(sc, RGE_CFG5, RGE_CFG5_PME_STS);
- RGE_CLRBIT_1(sc, RGE_CFG2, RGE_CFG2_CLKREQ_EN);
- RGE_CLRBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG);
+ rge_disable_aspm_clkreq(sc);
RGE_CLRBIT_1(sc, 0xf1, 0x80);
/* Disable UPS. */
RGE_MAC_CLRBIT(sc, 0xd40a, 0x0010);
- /* Configure MAC MCU. */
- rge_write_mac_ocp(sc, 0xfc38, 0);
-
- for (i = 0xfc28; i < 0xfc38; i += 2)
- rge_write_mac_ocp(sc, i, 0);
-
+ /* Disable MAC MCU. */
+ rge_disable_aspm_clkreq(sc);
+ rge_write_mac_ocp(sc, 0xfc48, 0);
+ for (reg = 0xfc28; reg < 0xfc48; reg += 2)
+ rge_write_mac_ocp(sc, reg, 0);
DELAY(3000);
rge_write_mac_ocp(sc, 0xfc26, 0);
if (sc->rge_type == MAC_CFG3) {
- for (i = 0; i < nitems(rtl8125_mac_bps); i++) {
- rge_write_mac_ocp(sc, rtl8125_mac_bps[i].reg,
- rtl8125_mac_bps[i].val);
+ for (npages = 0; npages < 3; npages++) {
+ rge_switch_mcu_ram_page(sc, npages);
+ for (i = 0; i < nitems(rtl8125_mac_bps); i++) {
+ if (npages == 0)
+ rge_write_mac_ocp(sc,
+ rtl8125_mac_bps[i].reg,
+ rtl8125_mac_bps[i].val);
+ else if (npages == 1)
+ rge_write_mac_ocp(sc,
+ rtl8125_mac_bps[i].reg, 0);
+ else {
+ if (rtl8125_mac_bps[i].reg < 0xf9f8)
+ rge_write_mac_ocp(sc,
+ rtl8125_mac_bps[i].reg, 0);
+ }
+ }
+ if (npages == 2) {
+ rge_write_mac_ocp(sc, 0xf9f8, 0x6486);
+ rge_write_mac_ocp(sc, 0xf9fa, 0x0b15);
+ rge_write_mac_ocp(sc, 0xf9fc, 0x090e);
+ rge_write_mac_ocp(sc, 0xf9fe, 0x1139);
+ }
}
+ rge_write_mac_ocp(sc, 0xfc26, 0x8000);
+ rge_write_mac_ocp(sc, 0xfc2a, 0x0540);
+ rge_write_mac_ocp(sc, 0xfc2e, 0x0a06);
+ rge_write_mac_ocp(sc, 0xfc30, 0x0eb8);
+ rge_write_mac_ocp(sc, 0xfc32, 0x3a5c);
+ rge_write_mac_ocp(sc, 0xfc34, 0x10a8);
+ rge_write_mac_ocp(sc, 0xfc40, 0x0d54);
+ rge_write_mac_ocp(sc, 0xfc42, 0x0e24);
+ rge_write_mac_ocp(sc, 0xfc48, 0x307a);
} else if (sc->rge_type == MAC_CFG5) {
+ rge_switch_mcu_ram_page(sc, 0);
for (i = 0; i < nitems(rtl8125b_mac_bps); i++) {
rge_write_mac_ocp(sc, rtl8125b_mac_bps[i].reg,
rtl8125b_mac_bps[i].val);
@@ -2060,7 +1887,22 @@ rge_hw_init(struct rge_softc *sc)
/* Set PCIe uncorrectable error status. */
rge_write_csi(sc, 0x108,
rge_read_csi(sc, 0x108) | 0x00100000);
+}
+void
+rge_hw_reset(struct rge_softc *sc)
+{
+ /* Disable interrupts */
+ RGE_WRITE_4(sc, RGE_IMR, 0);
+ RGE_WRITE_4(sc, RGE_ISR, RGE_READ_4(sc, RGE_ISR));
+
+ /* Clear timer interrupts. */
+ RGE_WRITE_4(sc, RGE_TIMERINT0, 0);
+ RGE_WRITE_4(sc, RGE_TIMERINT1, 0);
+ RGE_WRITE_4(sc, RGE_TIMERINT2, 0);
+ RGE_WRITE_4(sc, RGE_TIMERINT3, 0);
+
+ rge_reset(sc);
}
void
@@ -2085,14 +1927,18 @@ rge_patch_phy_mcu(struct rge_softc *sc, int set)
RGE_PHY_CLRBIT(sc, 0xb820, 0x0010);
for (i = 0; i < 1000; i++) {
- if ((rge_read_phy_ocp(sc, 0xb800) & 0x0040) == 0x0040)
- break;
+ if (set) {
+ if ((rge_read_phy_ocp(sc, 0xb800) & 0x0040) != 0)
+ break;
+ } else {
+ if (!(rge_read_phy_ocp(sc, 0xb800) & 0x0040))
+ break;
+ }
DELAY(100);
}
- if (i == 1000) {
- DPRINTF(("timeout waiting to patch phy mcu\n"));
- return;
- }
+ if (i == 1000)
+ printf("%s: timeout waiting to patch phy mcu\n",
+ sc->sc_dev.dv_xname);
}
void
@@ -2124,6 +1970,15 @@ rge_config_imtype(struct rge_softc *sc, int imtype)
}
void
+rge_disable_aspm_clkreq(struct rge_softc *sc)
+{
+ RGE_SETBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG);
+ RGE_CLRBIT_1(sc, RGE_CFG2, RGE_CFG2_CLKREQ_EN);
+ RGE_CLRBIT_1(sc, RGE_CFG5, RGE_CFG5_PME_STS);
+ RGE_CLRBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG);
+}
+
+void
rge_disable_hw_im(struct rge_softc *sc)
{
RGE_WRITE_2(sc, RGE_IM, 0);
@@ -2167,6 +2022,16 @@ rge_setup_intr(struct rge_softc *sc, int imtype)
}
void
+rge_switch_mcu_ram_page(struct rge_softc *sc, int page)
+{
+ uint16_t val;
+
+ val = rge_read_mac_ocp(sc, 0xe446) & ~0x0003;
+ val |= page;
+ rge_write_mac_ocp(sc, 0xe446, val);
+}
+
+void
rge_exit_oob(struct rge_softc *sc)
{
int i;
@@ -2202,15 +2067,13 @@ rge_exit_oob(struct rge_softc *sc)
}
if (rge_read_mac_ocp(sc, 0xd42c) & 0x0100) {
- printf("%s: rge_exit_oob(): rtl8125_is_ups_resume!!\n",
- sc->sc_dev.dv_xname);
for (i = 0; i < RGE_TIMEOUT; i++) {
if ((rge_read_phy_ocp(sc, 0xa420) & 0x0007) == 2)
break;
DELAY(1000);
}
- RGE_MAC_CLRBIT(sc, 0xd408, 0x0100);
- if (sc->rge_type == MAC_CFG4 || sc->rge_type == MAC_CFG5)
+ RGE_MAC_CLRBIT(sc, 0xd42c, 0x0100);
+ if (sc->rge_type != MAC_CFG3)
RGE_PHY_CLRBIT(sc, 0xa466, 0x0001);
RGE_PHY_CLRBIT(sc, 0xa468, 0x000a);
}
@@ -2225,8 +2088,8 @@ rge_write_csi(struct rge_softc *sc, uint32_t reg, uint32_t val)
RGE_WRITE_4(sc, RGE_CSIAR, (reg & RGE_CSIAR_ADDR_MASK) |
(RGE_CSIAR_BYTE_EN << RGE_CSIAR_BYTE_EN_SHIFT) | RGE_CSIAR_BUSY);
- for (i = 0; i < 10; i++) {
- DELAY(100);
+ for (i = 0; i < 20000; i++) {
+ DELAY(1);
if (!(RGE_READ_4(sc, RGE_CSIAR) & RGE_CSIAR_BUSY))
break;
}
@@ -2242,8 +2105,8 @@ rge_read_csi(struct rge_softc *sc, uint32_t reg)
RGE_WRITE_4(sc, RGE_CSIAR, (reg & RGE_CSIAR_ADDR_MASK) |
(RGE_CSIAR_BYTE_EN << RGE_CSIAR_BYTE_EN_SHIFT));
- for (i = 0; i < 10; i++) {
- DELAY(100);
+ for (i = 0; i < 20000; i++) {
+ DELAY(1);
if (RGE_READ_4(sc, RGE_CSIAR) & RGE_CSIAR_BUSY)
break;
}
diff --git a/sys/dev/pci/if_rgereg.h b/sys/dev/pci/if_rgereg.h
index 6cedaf8e412..2775e2c1141 100644
--- a/sys/dev/pci/if_rgereg.h
+++ b/sys/dev/pci/if_rgereg.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_rgereg.h,v 1.9 2022/12/21 02:31:09 kevlo Exp $ */
+/* $OpenBSD: if_rgereg.h,v 1.10 2023/12/22 05:28:14 kevlo Exp $ */
/*
* Copyright (c) 2019, 2020 Kevin Lo <kevlo@openbsd.org>
@@ -26,6 +26,7 @@
#define RGE_MAR4 0x000c
#define RGE_TXDESC_ADDR_LO 0x0020
#define RGE_TXDESC_ADDR_HI 0x0024
+#define RGE_INT_CFG0 0x0034
#define RGE_CMD 0x0037
#define RGE_IMR 0x0038
#define RGE_ISR 0x003c
@@ -46,6 +47,7 @@
#define RGE_CSIAR 0x0068
#define RGE_PHYSTAT 0x006c
#define RGE_PMCH 0x006f
+#define RGE_INT_CFG1 0x007a
#define RGE_EPHYAR 0x0080
#define RGE_TIMERINT2 0x008c
#define RGE_TXSTART 0x0090
@@ -69,11 +71,17 @@
#define RGE_RXQUEUE_CTRL 0x4800
#define RGE_EEE_TXIDLE_TIMER 0x6048
+/* Flags for register RGE_INT_CFG0 */
+#define RGE_INT_CFG0_EN 0x01
+#define RGE_INT_CFG0_TIMEOUT_BYPASS 0x02
+#define RGE_INT_CFG0_MITIGATION_BYPASS 0x04
+
/* Flags for register RGE_CMD */
#define RGE_CMD_RXBUF_EMPTY 0x01
#define RGE_CMD_TXENB 0x04
#define RGE_CMD_RXENB 0x08
#define RGE_CMD_RESET 0x10
+#define RGE_CMD_STOPREQ 0x80
/* Flags for register RGE_ISR */
#define RGE_ISR_RX_OK 0x00000001
@@ -81,7 +89,7 @@
#define RGE_ISR_TX_OK 0x00000004
#define RGE_ISR_TX_ERR 0x00000008
#define RGE_ISR_RX_DESC_UNAVAIL 0x00000010
-#define RGE_ISR_LINKCHG 0x00000020
+#define RGE_ISR_LINKCHG 0x00000020
#define RGE_ISR_RX_FIFO_OFLOW 0x00000040
#define RGE_ISR_TX_DESC_UNAVAIL 0x00000080
#define RGE_ISR_SWI 0x00000100
@@ -90,8 +98,8 @@
#define RGE_INTRS \
(RGE_ISR_RX_OK | RGE_ISR_RX_ERR | RGE_ISR_TX_OK | \
- RGE_ISR_TX_ERR | RGE_ISR_LINKCHG | \
- RGE_ISR_TX_DESC_UNAVAIL | RGE_ISR_PCS_TIMEOUT | RGE_ISR_SYSTEM_ERR)
+ RGE_ISR_TX_ERR | RGE_ISR_LINKCHG | RGE_ISR_TX_DESC_UNAVAIL | \
+ RGE_ISR_PCS_TIMEOUT | RGE_ISR_SYSTEM_ERR)
#define RGE_INTRS_TIMER \
(RGE_ISR_RX_ERR | RGE_ISR_TX_ERR | RGE_ISR_PCS_TIMEOUT | \
@@ -180,8 +188,8 @@
#define RGE_CPLUSCMD_RXCSUM 0x0020
#define RGE_TX_NSEGS 32
-#define RGE_TX_LIST_CNT 1024
-#define RGE_RX_LIST_CNT 1024
+#define RGE_TX_LIST_CNT 1024
+#define RGE_RX_LIST_CNT 1024
#define RGE_ALIGN 256
#define RGE_TX_LIST_SZ (sizeof(struct rge_tx_desc) * RGE_TX_LIST_CNT)
#define RGE_RX_LIST_SZ (sizeof(struct rge_rx_desc) * RGE_RX_LIST_CNT)
@@ -189,10 +197,6 @@
#define RGE_NEXT_RX_DESC(x) (((x) + 1) % RGE_RX_LIST_CNT)
#define RGE_ADDR_LO(y) ((uint64_t) (y) & 0xffffffff)
#define RGE_ADDR_HI(y) ((uint64_t) (y) >> 32)
-#define RGE_OWN(x) \
- (letoh32((x)->hi_qword1.rx_qword4.rge_cmdsts) & RGE_RDCMDSTS_OWN)
-#define RGE_RXBYTES(x) \
- (letoh32((x)->hi_qword1.rx_qword4.rge_cmdsts) & RGE_RDCMDSTS_FRAGLEN)
#define RGE_ADV_2500TFDX 0x0080
@@ -353,10 +357,8 @@ struct rge_queues {
};
/* Microcode version */
-#define RGE_MAC_CFG2_MCODE_VER 0x0b11
#define RGE_MAC_CFG3_MCODE_VER 0x0b33
-#define RGE_MAC_CFG4_MCODE_VER 0x0b17
-#define RGE_MAC_CFG5_MCODE_VER 0x0b55
+#define RGE_MAC_CFG5_MCODE_VER 0x0b74
enum rge_mac_type {
MAC_CFG_UNKNOWN = 1,
@@ -375,6 +377,7 @@ enum rge_mac_type {
#define RGE_TXCFG_CONFIG 0x03000700
#define RGE_RXCFG_CONFIG 0x41c00700
+#define RGE_RXCFG_CONFIG_8125B 0x41c00f00
struct kstat;
@@ -463,960 +466,156 @@ static const struct {
uint16_t reg;
uint16_t val;
} rtl8125_mac_bps[] = {
- { 0xf800, 0xe008 }, { 0xf802, 0xe01e }, { 0xf804, 0xe02e },
- { 0xf806, 0xe054 }, { 0xf808, 0xe057 }, { 0xf80a, 0xe059 },
- { 0xf80c, 0xe0c2 }, { 0xf80e, 0xe0cb }, { 0xf810, 0x9996 },
- { 0xf812, 0x49d1 }, { 0xf814, 0xf005 }, { 0xf816, 0x49d4 },
- { 0xf818, 0xf10a }, { 0xf81a, 0x49d8 }, { 0xf81c, 0xf108 },
- { 0xf81e, 0xc00f }, { 0xf820, 0x7100 }, { 0xf822, 0x209c },
- { 0xf824, 0x249c }, { 0xf826, 0xc009 }, { 0xf828, 0x9900 },
- { 0xf82a, 0xe004 }, { 0xf82c, 0xc006 }, { 0xf82e, 0x1900 },
- { 0xf830, 0x9900 }, { 0xf832, 0xc602 }, { 0xf834, 0xbe00 },
- { 0xf836, 0x5a48 }, { 0xf838, 0xe0c2 }, { 0xf83a, 0x0004 },
- { 0xf83c, 0xe10a }, { 0xf83e, 0xc60f }, { 0xf840, 0x73c4 },
- { 0xf842, 0x49b3 }, { 0xf844, 0xf106 }, { 0xf846, 0x73c2 },
- { 0xf848, 0xc608 }, { 0xf84a, 0xb406 }, { 0xf84c, 0xc609 },
- { 0xf84e, 0xff80 }, { 0xf850, 0xc605 }, { 0xf852, 0xb406 },
- { 0xf854, 0xc605 }, { 0xf856, 0xff80 }, { 0xf858, 0x0544 },
- { 0xf85a, 0x0568 }, { 0xf85c, 0xe906 }, { 0xf85e, 0xcde8 },
- { 0xf860, 0xc724 }, { 0xf862, 0xc624 }, { 0xf864, 0x9ee2 },
- { 0xf866, 0x1e01 }, { 0xf868, 0x9ee0 }, { 0xf86a, 0x76e0 },
- { 0xf86c, 0x49e0 }, { 0xf86e, 0xf1fe }, { 0xf870, 0x76e6 },
- { 0xf872, 0x486d }, { 0xf874, 0x4868 }, { 0xf876, 0x9ee4 },
- { 0xf878, 0x1e03 }, { 0xf87a, 0x9ee0 }, { 0xf87c, 0x76e0 },
- { 0xf87e, 0x49e0 }, { 0xf880, 0xf1fe }, { 0xf882, 0xc615 },
- { 0xf884, 0x9ee2 }, { 0xf886, 0x1e01 }, { 0xf888, 0x9ee0 },
- { 0xf88a, 0x76e0 }, { 0xf88c, 0x49e0 }, { 0xf88e, 0xf1fe },
- { 0xf890, 0x76e6 }, { 0xf892, 0x486f }, { 0xf894, 0x9ee4 },
- { 0xf896, 0x1e03 }, { 0xf898, 0x9ee0 }, { 0xf89a, 0x76e0 },
- { 0xf89c, 0x49e0 }, { 0xf89e, 0xf1fe }, { 0xf8a0, 0x7196 },
- { 0xf8a2, 0xc702 }, { 0xf8a4, 0xbf00 }, { 0xf8a6, 0x5a44 },
- { 0xf8a8, 0xeb0e }, { 0xf8aa, 0x0070 }, { 0xf8ac, 0x00c3 },
- { 0xf8ae, 0x1bc0 }, { 0xf8b0, 0xc602 }, { 0xf8b2, 0xbe00 },
- { 0xf8b4, 0x0e26 }, { 0xf8b6, 0xc602 }, { 0xf8b8, 0xbe00 },
- { 0xf8ba, 0x0eba }, { 0xf8bc, 0x1501 }, { 0xf8be, 0xf02a },
- { 0xf8c0, 0x1500 }, { 0xf8c2, 0xf15d }, { 0xf8c4, 0xc661 },
- { 0xf8c6, 0x75c8 }, { 0xf8c8, 0x49d5 }, { 0xf8ca, 0xf00a },
- { 0xf8cc, 0x49d6 }, { 0xf8ce, 0xf008 }, { 0xf8d0, 0x49d7 },
- { 0xf8d2, 0xf006 }, { 0xf8d4, 0x49d8 }, { 0xf8d6, 0xf004 },
- { 0xf8d8, 0x75d2 }, { 0xf8da, 0x49d9 }, { 0xf8dc, 0xf150 },
- { 0xf8de, 0xc553 }, { 0xf8e0, 0x77a0 }, { 0xf8e2, 0x75c8 },
- { 0xf8e4, 0x4855 }, { 0xf8e6, 0x4856 }, { 0xf8e8, 0x4857 },
- { 0xf8ea, 0x4858 }, { 0xf8ec, 0x48da }, { 0xf8ee, 0x48db },
- { 0xf8f0, 0x49fe }, { 0xf8f2, 0xf002 }, { 0xf8f4, 0x485a },
- { 0xf8f6, 0x49ff }, { 0xf8f8, 0xf002 }, { 0xf8fa, 0x485b },
- { 0xf8fc, 0x9dc8 }, { 0xf8fe, 0x75d2 }, { 0xf900, 0x4859 },
- { 0xf902, 0x9dd2 }, { 0xf904, 0xc643 }, { 0xf906, 0x75c0 },
- { 0xf908, 0x49d4 }, { 0xf90a, 0xf033 }, { 0xf90c, 0x49d0 },
- { 0xf90e, 0xf137 }, { 0xf910, 0xe030 }, { 0xf912, 0xc63a },
- { 0xf914, 0x75c8 }, { 0xf916, 0x49d5 }, { 0xf918, 0xf00e },
- { 0xf91a, 0x49d6 }, { 0xf91c, 0xf00c }, { 0xf91e, 0x49d7 },
- { 0xf920, 0xf00a }, { 0xf922, 0x49d8 }, { 0xf924, 0xf008 },
- { 0xf926, 0x75d2 }, { 0xf928, 0x49d9 }, { 0xf92a, 0xf005 },
- { 0xf92c, 0xc62e }, { 0xf92e, 0x75c0 }, { 0xf930, 0x49d7 },
- { 0xf932, 0xf125 }, { 0xf934, 0xc528 }, { 0xf936, 0x77a0 },
- { 0xf938, 0xc627 }, { 0xf93a, 0x75c8 }, { 0xf93c, 0x4855 },
- { 0xf93e, 0x4856 }, { 0xf940, 0x4857 }, { 0xf942, 0x4858 },
- { 0xf944, 0x48da }, { 0xf946, 0x48db }, { 0xf948, 0x49fe },
- { 0xf94a, 0xf002 }, { 0xf94c, 0x485a }, { 0xf94e, 0x49ff },
- { 0xf950, 0xf002 }, { 0xf952, 0x485b }, { 0xf954, 0x9dc8 },
- { 0xf956, 0x75d2 }, { 0xf958, 0x4859 }, { 0xf95a, 0x9dd2 },
- { 0xf95c, 0xc616 }, { 0xf95e, 0x75c0 }, { 0xf960, 0x4857 },
- { 0xf962, 0x9dc0 }, { 0xf964, 0xc613 }, { 0xf966, 0x75c0 },
- { 0xf968, 0x49da }, { 0xf96a, 0xf003 }, { 0xf96c, 0x49d0 },
- { 0xf96e, 0xf107 }, { 0xf970, 0xc60b }, { 0xf972, 0xc50e },
- { 0xf974, 0x48d9 }, { 0xf976, 0x9dc0 }, { 0xf978, 0x4859 },
- { 0xf97a, 0x9dc0 }, { 0xf97c, 0xc608 }, { 0xf97e, 0xc702 },
- { 0xf980, 0xbf00 }, { 0xf982, 0x3ae0 }, { 0xf984, 0xe860 },
- { 0xf986, 0xb400 }, { 0xf988, 0xb5d4 }, { 0xf98a, 0xe908 },
- { 0xf98c, 0xe86c }, { 0xf98e, 0x1200 }, { 0xf990, 0xc409 },
- { 0xf992, 0x6780 }, { 0xf994, 0x48f1 }, { 0xf996, 0x8f80 },
- { 0xf998, 0xc404 }, { 0xf99a, 0xc602 }, { 0xf99c, 0xbe00 },
- { 0xf99e, 0x10aa }, { 0xf9a0, 0xc010 }, { 0xf9a2, 0xea7c },
- { 0xf9a4, 0xc602 }, { 0xf9a6, 0xbe00 }, { 0xf9a8, 0x0000 },
- { 0xfc26, 0x8000 }, { 0xfc2a, 0x0540 }, { 0xfc2e, 0x0e24 },
- { 0xfc30, 0x0eb8 }, { 0xfc32, 0x3a5c }, { 0xfc34, 0x10a8 },
- { 0xfc48, 0x007a }
+ { 0xf800, 0xe010 }, { 0xf802, 0xe012 }, { 0xf804, 0xe022 },
+ { 0xf806, 0xe024 }, { 0xf808, 0xe029 }, { 0xf80a, 0xe02b },
+ { 0xf80c, 0xe094 }, { 0xf80e, 0xe09d }, { 0xf810, 0xe09f },
+ { 0xf812, 0xe0aa }, { 0xf814, 0xe0b5 }, { 0xf816, 0xe0c6 },
+ { 0xf818, 0xe0cc }, { 0xf81a, 0xe0d1 }, { 0xf81c, 0xe0d6 },
+ { 0xf81e, 0xe0d8 }, { 0xf820, 0xc602 }, { 0xf822, 0xbe00 },
+ { 0xf824, 0x0000 }, { 0xf826, 0xc60f }, { 0xf828, 0x73c4 },
+ { 0xf82a, 0x49b3 }, { 0xf82c, 0xf106 }, { 0xf82e, 0x73c2 },
+ { 0xf830, 0xc608 }, { 0xf832, 0xb406 }, { 0xf834, 0xc609 },
+ { 0xf836, 0xff80 }, { 0xf838, 0xc605 }, { 0xf83a, 0xb406 },
+ { 0xf83c, 0xc605 }, { 0xf83e, 0xff80 }, { 0xf840, 0x0544 },
+ { 0xf842, 0x0568 }, { 0xf844, 0xe906 }, { 0xf846, 0xcde8 },
+ { 0xf848, 0xc602 }, { 0xf84a, 0xbe00 }, { 0xf84c, 0x0000 },
+ { 0xf84e, 0x48c1 }, { 0xf850, 0x48c2 }, { 0xf852, 0x9c46 },
+ { 0xf854, 0xc402 }, { 0xf856, 0xbc00 }, { 0xf858, 0x0a12 },
+ { 0xf85a, 0xc602 }, { 0xf85c, 0xbe00 }, { 0xf85e, 0x0eba },
+ { 0xf860, 0x1501 }, { 0xf862, 0xf02a }, { 0xf864, 0x1500 },
+ { 0xf866, 0xf15d }, { 0xf868, 0xc661 }, { 0xf86a, 0x75c8 },
+ { 0xf86c, 0x49d5 }, { 0xf86e, 0xf00a }, { 0xf870, 0x49d6 },
+ { 0xf872, 0xf008 }, { 0xf874, 0x49d7 }, { 0xf876, 0xf006 },
+ { 0xf878, 0x49d8 }, { 0xf87a, 0xf004 }, { 0xf87c, 0x75d2 },
+ { 0xf87e, 0x49d9 }, { 0xf880, 0xf150 }, { 0xf882, 0xc553 },
+ { 0xf884, 0x77a0 }, { 0xf886, 0x75c8 }, { 0xf888, 0x4855 },
+ { 0xf88a, 0x4856 }, { 0xf88c, 0x4857 }, { 0xf88e, 0x4858 },
+ { 0xf890, 0x48da }, { 0xf892, 0x48db }, { 0xf894, 0x49fe },
+ { 0xf896, 0xf002 }, { 0xf898, 0x485a }, { 0xf89a, 0x49ff },
+ { 0xf89c, 0xf002 }, { 0xf89e, 0x485b }, { 0xf8a0, 0x9dc8 },
+ { 0xf8a2, 0x75d2 }, { 0xf8a4, 0x4859 }, { 0xf8a6, 0x9dd2 },
+ { 0xf8a8, 0xc643 }, { 0xf8aa, 0x75c0 }, { 0xf8ac, 0x49d4 },
+ { 0xf8ae, 0xf033 }, { 0xf8b0, 0x49d0 }, { 0xf8b2, 0xf137 },
+ { 0xf8b4, 0xe030 }, { 0xf8b6, 0xc63a }, { 0xf8b8, 0x75c8 },
+ { 0xf8ba, 0x49d5 }, { 0xf8bc, 0xf00e }, { 0xf8be, 0x49d6 },
+ { 0xf8c0, 0xf00c }, { 0xf8c2, 0x49d7 }, { 0xf8c4, 0xf00a },
+ { 0xf8c6, 0x49d8 }, { 0xf8c8, 0xf008 }, { 0xf8ca, 0x75d2 },
+ { 0xf8cc, 0x49d9 }, { 0xf8ce, 0xf005 }, { 0xf8d0, 0xc62e },
+ { 0xf8d2, 0x75c0 }, { 0xf8d4, 0x49d7 }, { 0xf8d6, 0xf125 },
+ { 0xf8d8, 0xc528 }, { 0xf8da, 0x77a0 }, { 0xf8dc, 0xc627 },
+ { 0xf8de, 0x75c8 }, { 0xf8e0, 0x4855 }, { 0xf8e2, 0x4856 },
+ { 0xf8e4, 0x4857 }, { 0xf8e6, 0x4858 }, { 0xf8e8, 0x48da },
+ { 0xf8ea, 0x48db }, { 0xf8ec, 0x49fe }, { 0xf8ee, 0xf002 },
+ { 0xf8f0, 0x485a }, { 0xf8f2, 0x49ff }, { 0xf8f4, 0xf002 },
+ { 0xf8f6, 0x485b }, { 0xf8f8, 0x9dc8 }, { 0xf8fa, 0x75d2 },
+ { 0xf8fc, 0x4859 }, { 0xf8fe, 0x9dd2 }, { 0xf900, 0xc616 },
+ { 0xf902, 0x75c0 }, { 0xf904, 0x4857 }, { 0xf906, 0x9dc0 },
+ { 0xf908, 0xc613 }, { 0xf90a, 0x75c0 }, { 0xf90c, 0x49da },
+ { 0xf90e, 0xf003 }, { 0xf910, 0x49d0 }, { 0xf912, 0xf107 },
+ { 0xf914, 0xc60b }, { 0xf916, 0xc50e }, { 0xf918, 0x48d9 },
+ { 0xf91a, 0x9dc0 }, { 0xf91c, 0x4859 }, { 0xf91e, 0x9dc0 },
+ { 0xf920, 0xc608 }, { 0xf922, 0xc702 }, { 0xf924, 0xbf00 },
+ { 0xf926, 0x3ae0 }, { 0xf928, 0xe860 }, { 0xf92a, 0xb400 },
+ { 0xf92c, 0xb5d4 }, { 0xf92e, 0xe908 }, { 0xf930, 0xe86c },
+ { 0xf932, 0x1200 }, { 0xf934, 0xc409 }, { 0xf936, 0x6780 },
+ { 0xf938, 0x48f1 }, { 0xf93a, 0x8f80 }, { 0xf93c, 0xc404 },
+ { 0xf93e, 0xc602 }, { 0xf940, 0xbe00 }, { 0xf942, 0x10aa },
+ { 0xf944, 0xc010 }, { 0xf946, 0xea7c }, { 0xf948, 0xc602 },
+ { 0xf94a, 0xbe00 }, { 0xf94c, 0x0000 }, { 0xf94e, 0x740a },
+ { 0xf950, 0x4846 }, { 0xf952, 0x4847 }, { 0xf954, 0x9c0a },
+ { 0xf956, 0xc607 }, { 0xf958, 0x74c0 }, { 0xf95a, 0x48c6 },
+ { 0xf95c, 0x9cc0 }, { 0xf95e, 0xc602 }, { 0xf960, 0xbe00 },
+ { 0xf962, 0x13fe }, { 0xf964, 0xe054 }, { 0xf966, 0x72ca },
+ { 0xf968, 0x4826 }, { 0xf96a, 0x4827 }, { 0xf96c, 0x9aca },
+ { 0xf96e, 0xc607 }, { 0xf970, 0x72c0 }, { 0xf972, 0x48a6 },
+ { 0xf974, 0x9ac0 }, { 0xf976, 0xc602 }, { 0xf978, 0xbe00 },
+ { 0xf97a, 0x07dc }, { 0xf97c, 0xe054 }, { 0xf97e, 0xc60f },
+ { 0xf980, 0x74c4 }, { 0xf982, 0x49cc }, { 0xf984, 0xf109 },
+ { 0xf986, 0xc60c }, { 0xf988, 0x74ca }, { 0xf98a, 0x48c7 },
+ { 0xf98c, 0x9cca }, { 0xf98e, 0xc609 }, { 0xf990, 0x74c0 },
+ { 0xf992, 0x4846 }, { 0xf994, 0x9cc0 }, { 0xf996, 0xc602 },
+ { 0xf998, 0xbe00 }, { 0xf99a, 0x2480 }, { 0xf99c, 0xe092 },
+ { 0xf99e, 0xe0c0 }, { 0xf9a0, 0xe054 }, { 0xf9a2, 0x7420 },
+ { 0xf9a4, 0x48c0 }, { 0xf9a6, 0x9c20 }, { 0xf9a8, 0x7444 },
+ { 0xf9aa, 0xc602 }, { 0xf9ac, 0xbe00 }, { 0xf9ae, 0x12f8 },
+ { 0xf9b0, 0x1bff }, { 0xf9b2, 0x46eb }, { 0xf9b4, 0x1bff },
+ { 0xf9b6, 0xc102 }, { 0xf9b8, 0xb900 }, { 0xf9ba, 0x0d5a },
+ { 0xf9bc, 0x1bff }, { 0xf9be, 0x46eb }, { 0xf9c0, 0x1bff },
+ { 0xf9c2, 0xc102 }, { 0xf9c4, 0xb900 }, { 0xf9c6, 0x0e2a },
+ { 0xf9c8, 0xc602 }, { 0xf9ca, 0xbe00 }, { 0xf9cc, 0x0000 },
+ { 0xf9ce, 0xc602 }, { 0xf9d0, 0xbe00 }, { 0xf9d2, 0x0000 },
+ { 0xf9d4, 0x0000 }, { 0xf9d6, 0x0000 }, { 0xf9d8, 0x0000 },
+ { 0xf9da, 0x0000 }, { 0xf9dc, 0x0000 }, { 0xf9de, 0x0000 },
+ { 0xf9e0, 0x0000 }, { 0xf9e2, 0x0000 }, { 0xf9e4, 0x0000 },
+ { 0xf9e6, 0x0000 }, { 0xf9e8, 0x0000 }, { 0xf9ea, 0x0000 },
+ { 0xf9ec, 0x0000 }, { 0xf9ee, 0x0000 }, { 0xf9f0, 0x0000 },
+ { 0xf9f2, 0x0000 }, { 0xf9f4, 0x0000 }, { 0xf9f6, 0x0000 },
+ { 0xf9f8, 0x0000 }, { 0xf9fa, 0x0000 }, { 0xf9fc, 0x0000 },
+ { 0xf9fe, 0x0000 }
}, rtl8125b_mac_bps[] = {
- { 0xf800, 0xe008 }, { 0xf802, 0xe013 }, { 0xf804, 0xe01e },
- { 0xf806, 0xe02f }, { 0xf808, 0xe035 }, { 0xf80a, 0xe04f },
- { 0xf80c, 0xe053 }, { 0xf80e, 0xe055 }, { 0xf810, 0x740a },
- { 0xf812, 0x4846 }, { 0xf814, 0x4847 }, { 0xf816, 0x9c0a },
- { 0xf818, 0xc607 }, { 0xf81a, 0x74c0 }, { 0xf81c, 0x48c6 },
- { 0xf81e, 0x9cc0 }, { 0xf820, 0xc602 }, { 0xf822, 0xbe00 },
- { 0xf824, 0x13f0 }, { 0xf826, 0xe054 }, { 0xf828, 0x72ca },
- { 0xf82a, 0x4826 }, { 0xf82c, 0x4827 }, { 0xf82e, 0x9aca },
- { 0xf830, 0xc607 }, { 0xf832, 0x72c0 }, { 0xf834, 0x48a6 },
- { 0xf836, 0x9ac0 }, { 0xf838, 0xc602 }, { 0xf83a, 0xbe00 },
- { 0xf83c, 0x081c }, { 0xf83e, 0xe054 }, { 0xf840, 0xc60f },
- { 0xf842, 0x74c4 }, { 0xf844, 0x49cc }, { 0xf846, 0xf109 },
- { 0xf848, 0xc60c }, { 0xf84a, 0x74ca }, { 0xf84c, 0x48c7 },
- { 0xf84e, 0x9cca }, { 0xf850, 0xc609 }, { 0xf852, 0x74c0 },
- { 0xf854, 0x4846 }, { 0xf856, 0x9cc0 }, { 0xf858, 0xc602 },
- { 0xf85a, 0xbe00 }, { 0xf85c, 0x2494 }, { 0xf85e, 0xe092 },
- { 0xf860, 0xe0c0 }, { 0xf862, 0xe054 }, { 0xf864, 0x7420 },
- { 0xf866, 0x48c0 }, { 0xf868, 0x9c20 }, { 0xf86a, 0x7444 },
- { 0xf86c, 0xc602 }, { 0xf86e, 0xbe00 }, { 0xf870, 0x12dc },
- { 0xf872, 0x733a }, { 0xf874, 0x21b5 }, { 0xf876, 0x25bc },
- { 0xf878, 0x1304 }, { 0xf87a, 0xf111 }, { 0xf87c, 0x1b12 },
- { 0xf87e, 0x1d2a }, { 0xf880, 0x3168 }, { 0xf882, 0x3ada },
- { 0xf884, 0x31ab }, { 0xf886, 0x1a00 }, { 0xf888, 0x9ac0 },
- { 0xf88a, 0x1300 }, { 0xf88c, 0xf1fb }, { 0xf88e, 0x7620 },
- { 0xf890, 0x236e }, { 0xf892, 0x276f }, { 0xf894, 0x1a3c },
- { 0xf896, 0x22a1 }, { 0xf898, 0x41b5 }, { 0xf89a, 0x9ee2 },
- { 0xf89c, 0x76e4 }, { 0xf89e, 0x486f }, { 0xf8a0, 0x9ee4 },
- { 0xf8a2, 0xc602 }, { 0xf8a4, 0xbe00 }, { 0xf8a6, 0x4a26 },
- { 0xf8a8, 0x733a }, { 0xf8aa, 0x49bb }, { 0xf8ac, 0xc602 },
- { 0xf8ae, 0xbe00 }, { 0xf8b0, 0x47a2 }, { 0xf8b2, 0xc602 },
- { 0xf8b4, 0xbe00 }, { 0xf8b6, 0x0000 }, { 0xf8b8, 0xc602 },
- { 0xf8ba, 0xbe00 }, { 0xf8bc, 0x0000 }, { 0xfc26, 0x8000 },
- { 0xfc28, 0x13e6 }, { 0xfc2a, 0x0812 }, { 0xfc2c, 0x248c },
- { 0xfc2e, 0x12da }, { 0xfc30, 0x4a20 }, { 0xfc32, 0x47a0 },
- { 0xfc48, 0x003f }
+ { 0xf800, 0xe010 }, { 0xf802, 0xe01b }, { 0xf804, 0xe026 },
+ { 0xf806, 0xe037 }, { 0xf808, 0xe03d }, { 0xf80a, 0xe057 },
+ { 0xf80c, 0xe05b }, { 0xf80e, 0xe060 }, { 0xf810, 0xe062 },
+ { 0xf812, 0xe064 }, { 0xf814, 0xe066 }, { 0xf816, 0xe068 },
+ { 0xf818, 0xe06a }, { 0xf81a, 0xe06c }, { 0xf81c, 0xe06e },
+ { 0xf81e, 0xe070 }, { 0xf820, 0x740a }, { 0xf822, 0x4846 },
+ { 0xf824, 0x4847 }, { 0xf826, 0x9c0a }, { 0xf828, 0xc607 },
+ { 0xf82a, 0x74c0 }, { 0xf82c, 0x48c6 }, { 0xf82e, 0x9cc0 },
+ { 0xf830, 0xc602 }, { 0xf832, 0xbe00 }, { 0xf834, 0x13f0 },
+ { 0xf836, 0xe054 }, { 0xf838, 0x72ca }, { 0xf83a, 0x4826 },
+ { 0xf83c, 0x4827 }, { 0xf83e, 0x9aca }, { 0xf840, 0xc607 },
+ { 0xf842, 0x72c0 }, { 0xf844, 0x48a6 }, { 0xf846, 0x9ac0 },
+ { 0xf848, 0xc602 }, { 0xf84a, 0xbe00 }, { 0xf84c, 0x081c },
+ { 0xf84e, 0xe054 }, { 0xf850, 0xc60f }, { 0xf852, 0x74c4 },
+ { 0xf854, 0x49cc }, { 0xf856, 0xf109 }, { 0xf858, 0xc60c },
+ { 0xf85a, 0x74ca }, { 0xf85c, 0x48c7 }, { 0xf85e, 0x9cca },
+ { 0xf860, 0xc609 }, { 0xf862, 0x74c0 }, { 0xf864, 0x4846 },
+ { 0xf866, 0x9cc0 }, { 0xf868, 0xc602 }, { 0xf86a, 0xbe00 },
+ { 0xf86c, 0x2494 }, { 0xf86e, 0xe092 }, { 0xf870, 0xe0c0 },
+ { 0xf872, 0xe054 }, { 0xf874, 0x7420 }, { 0xf876, 0x48c0 },
+ { 0xf878, 0x9c20 }, { 0xf87a, 0x7444 }, { 0xf87c, 0xc602 },
+ { 0xf87e, 0xbe00 }, { 0xf880, 0x12dc }, { 0xf882, 0x733a },
+ { 0xf884, 0x21b5 }, { 0xf886, 0x25bc }, { 0xf888, 0x1304 },
+ { 0xf88a, 0xf111 }, { 0xf88c, 0x1b12 }, { 0xf88e, 0x1d2a },
+ { 0xf890, 0x3168 }, { 0xf892, 0x3ada }, { 0xf894, 0x31ab },
+ { 0xf896, 0x1a00 }, { 0xf898, 0x9ac0 }, { 0xf89a, 0x1300 },
+ { 0xf89c, 0xf1fb }, { 0xf89e, 0x7620 }, { 0xf8a0, 0x236e },
+ { 0xf8a2, 0x276f }, { 0xf8a4, 0x1a3c }, { 0xf8a6, 0x22a1 },
+ { 0xf8a8, 0x41b5 }, { 0xf8aa, 0x9ee2 }, { 0xf8ac, 0x76e4 },
+ { 0xf8ae, 0x486f }, { 0xf8b0, 0x9ee4 }, { 0xf8b2, 0xc602 },
+ { 0xf8b4, 0xbe00 }, { 0xf8b6, 0x4a26 }, { 0xf8b8, 0x733a },
+ { 0xf8ba, 0x49bb }, { 0xf8bc, 0xc602 }, { 0xf8be, 0xbe00 },
+ { 0xf8c0, 0x47a2 }, { 0xf8c2, 0x48c1 }, { 0xf8c4, 0x48c2 },
+ { 0xf8c6, 0x9c46 }, { 0xf8c8, 0xc402 }, { 0xf8ca, 0xbc00 },
+ { 0xf8cc, 0x0a52 }, { 0xf8ce, 0xc602 }, { 0xf8d0, 0xbe00 },
+ { 0xf8d2, 0x0000 }, { 0xf8d4, 0xc602 }, { 0xf8d6, 0xbe00 },
+ { 0xf8d8, 0x0000 }, { 0xf8da, 0xc602 }, { 0xf8dc, 0xbe00 },
+ { 0xf8de, 0x0000 }, { 0xf8e0, 0xc602 }, { 0xf8e2, 0xbe00 },
+ { 0xf8e4, 0x0000 }, { 0xf8e6, 0xc602 }, { 0xf8e8, 0xbe00 },
+ { 0xf8ea, 0x0000 }, { 0xf8ec, 0xc602 }, { 0xf8ee, 0xbe00 },
+ { 0xf8f0, 0x0000 }, { 0xf8f2, 0xc602 }, { 0xf8f4, 0xbe00 },
+ { 0xf8f6, 0x0000 }, { 0xf8f8, 0xc602 }, { 0xf8fa, 0xbe00 },
+ { 0xf8fc, 0x0000 }, { 0xf8fe, 0xc602 }, { 0xf900, 0xbe00 },
+ { 0xf902, 0x0000 }, { 0xfc26, 0x8000 }, { 0xfc28, 0x13e6 },
+ { 0xfc2a, 0x0812 }, { 0xfc2c, 0x248c }, { 0xfc2e, 0x12da },
+ { 0xfc30, 0x4a20 }, { 0xfc32, 0x47a0 }, { 0xfc48, 0x003f }
};
static const struct {
uint16_t reg;
uint16_t val;
-} rtl8125_mac_cfg2_ephy[] = {
- { 0x0001, 0xa812 }, { 0x0009, 0x520c }, { 0x0004, 0xd000 },
- { 0x000d, 0xf702 }, { 0x000a, 0x8653 }, { 0x0006, 0x001e },
- { 0x0008, 0x3595 }, { 0x0020, 0x9455 }, { 0x0021, 0x99ff },
- { 0x0002, 0x6046 }, { 0x0029, 0xfe00 }, { 0x0023, 0xab62 },
- { 0x0041, 0xa80c }, { 0x0049, 0x520c }, { 0x0044, 0xd000 },
- { 0x004d, 0xf702 }, { 0x004a, 0x8653 }, { 0x0046, 0x001e },
- { 0x0048, 0x3595 }, { 0x0060, 0x9455 }, { 0x0061, 0x99ff },
- { 0x0042, 0x6046 }, { 0x0069, 0xfe00 }, { 0x0063, 0xab62 }
-}, rtl8125_mac_cfg3_ephy[] = {
+} rtl8125_mac_cfg3_ephy[] = {
{ 0x0004, 0xd000 }, { 0x000a, 0x8653 }, { 0x0023, 0xab66 },
{ 0x0020, 0x9455 }, { 0x0021, 0x99ff }, { 0x0029, 0xfe04 },
{ 0x0044, 0xd000 }, { 0x004a, 0x8653 }, { 0x0063, 0xab66 },
{ 0x0060, 0x9455 }, { 0x0061, 0x99ff }, { 0x0069, 0xfe04 }
-}, rtl8125_mac_cfg4_ephy[] = {
- { 0x0006, 0x001f }, { 0x000a, 0xb66b }, { 0x0001, 0xa852 },
- { 0x0024, 0x0008 }, { 0x002f, 0x6052 }, { 0x000d, 0xf716 },
- { 0x0020, 0xd477 }, { 0x0021, 0x4477 }, { 0x0022, 0x0013 },
- { 0x0023, 0xbb66 }, { 0x000b, 0xa909 }, { 0x0029, 0xff04 },
- { 0x001b, 0x1ea0 }, { 0x0046, 0x001f }, { 0x004a, 0xb66b },
- { 0x0041, 0xa84a }, { 0x0064, 0x000c }, { 0x006f, 0x604a },
- { 0x004d, 0xf716 }, { 0x0060, 0xd477 }, { 0x0061, 0x4477 },
- { 0x0062, 0x0013 }, { 0x0063, 0xbb66 }, { 0x004b, 0xa909 },
- { 0x0069, 0xff04 }, { 0x005b, 0x1ea0 }
}, rtl8125_mac_cfg5_ephy[] = {
- { 0x000b, 0xa908 }, { 0x0022, 0x0023 }, { 0x001e, 0x28eb },
- { 0x004b, 0xa908 }, { 0x0062, 0x0023 }, { 0x005e, 0x28eb }
+ { 0x000b, 0xa908 }, { 0x001e, 0x20eb }, { 0x0022, 0x0023 },
+ { 0x0002, 0x60c2 }, { 0x0029, 0xff00 }, { 0x004b, 0xa908 },
+ { 0x005e, 0x28eb }, { 0x0062, 0x0023 }, { 0x0042, 0x60c2 },
+ { 0x0069, 0xff00 }
};
-#define RTL8125_MAC_CFG2_MCU \
- { 0xa436, 0xa016 }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0xa012 }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0xa014 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8013 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8021 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x802f }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x803d }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8042 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8051 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8051 }, \
- { 0xa438, 0xa088 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0a50 }, \
- { 0xa438, 0x8008 }, \
- { 0xa438, 0xd014 }, \
- { 0xa438, 0xd1a3 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x401a }, \
- { 0xa438, 0xd707 }, \
- { 0xa438, 0x40c2 }, \
- { 0xa438, 0x60a6 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f8b }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0a86 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0a6c }, \
- { 0xa438, 0x8080 }, \
- { 0xa438, 0xd019 }, \
- { 0xa438, 0xd1a2 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x401a }, \
- { 0xa438, 0xd707 }, \
- { 0xa438, 0x40c4 }, \
- { 0xa438, 0x60a6 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f8b }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0a86 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0a84 }, \
- { 0xa438, 0xd503 }, \
- { 0xa438, 0x8970 }, \
- { 0xa438, 0x0c07 }, \
- { 0xa438, 0x0901 }, \
- { 0xa438, 0xd500 }, \
- { 0xa438, 0xce01 }, \
- { 0xa438, 0xcf09 }, \
- { 0xa438, 0xd705 }, \
- { 0xa438, 0x4000 }, \
- { 0xa438, 0xceff }, \
- { 0xa438, 0xaf0a }, \
- { 0xa438, 0xd504 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1213 }, \
- { 0xa438, 0x8401 }, \
- { 0xa438, 0xd500 }, \
- { 0xa438, 0x8580 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1253 }, \
- { 0xa438, 0xd064 }, \
- { 0xa438, 0xd181 }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x4018 }, \
- { 0xa438, 0xd504 }, \
- { 0xa438, 0xc50f }, \
- { 0xa438, 0xd706 }, \
- { 0xa438, 0x2c59 }, \
- { 0xa438, 0x804d }, \
- { 0xa438, 0xc60f }, \
- { 0xa438, 0xf002 }, \
- { 0xa438, 0xc605 }, \
- { 0xa438, 0xae02 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x10fd }, \
- { 0xa436, 0xa026 }, \
- { 0xa438, 0xffff }, \
- { 0xa436, 0xa024 }, \
- { 0xa438, 0xffff }, \
- { 0xa436, 0xa022 }, \
- { 0xa438, 0x10f4 }, \
- { 0xa436, 0xa020 }, \
- { 0xa438, 0x1252 }, \
- { 0xa436, 0xa006 }, \
- { 0xa438, 0x1206 }, \
- { 0xa436, 0xa004 }, \
- { 0xa438, 0x0a78 }, \
- { 0xa436, 0xa002 }, \
- { 0xa438, 0x0a60 }, \
- { 0xa436, 0xa000 }, \
- { 0xa438, 0x0a4f }, \
- { 0xa436, 0xa008 }, \
- { 0xa438, 0x3f00 }, \
- { 0xa436, 0xa016 }, \
- { 0xa438, 0x0010 }, \
- { 0xa436, 0xa012 }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0xa014 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8066 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x807c }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8089 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x808e }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x80a0 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x80b2 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x80c2 }, \
- { 0xa438, 0xd501 }, \
- { 0xa438, 0xce01 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x62db }, \
- { 0xa438, 0x655c }, \
- { 0xa438, 0xd73e }, \
- { 0xa438, 0x60e9 }, \
- { 0xa438, 0x614a }, \
- { 0xa438, 0x61ab }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0501 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0503 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0505 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0509 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x653c }, \
- { 0xa438, 0xd73e }, \
- { 0xa438, 0x60e9 }, \
- { 0xa438, 0x614a }, \
- { 0xa438, 0x61ab }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0503 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0502 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0506 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x050a }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0xd73e }, \
- { 0xa438, 0x60e9 }, \
- { 0xa438, 0x614a }, \
- { 0xa438, 0x61ab }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0505 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0506 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0504 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x050c }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0xd73e }, \
- { 0xa438, 0x60e9 }, \
- { 0xa438, 0x614a }, \
- { 0xa438, 0x61ab }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0509 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x050a }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x050c }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0508 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0304 }, \
- { 0xa438, 0xd501 }, \
- { 0xa438, 0xce01 }, \
- { 0xa438, 0xd73e }, \
- { 0xa438, 0x60e9 }, \
- { 0xa438, 0x614a }, \
- { 0xa438, 0x61ab }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0501 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0321 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0502 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0321 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0504 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0321 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0508 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0321 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0346 }, \
- { 0xa438, 0xd501 }, \
- { 0xa438, 0xce01 }, \
- { 0xa438, 0x8208 }, \
- { 0xa438, 0x609d }, \
- { 0xa438, 0xa50f }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x001a }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0503 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x001a }, \
- { 0xa438, 0x607d }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x00ab }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x00ab }, \
- { 0xa438, 0xd501 }, \
- { 0xa438, 0xce01 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x60fd }, \
- { 0xa438, 0xa50f }, \
- { 0xa438, 0xce00 }, \
- { 0xa438, 0xd500 }, \
- { 0xa438, 0xaa0f }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x017b }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0503 }, \
- { 0xa438, 0xce00 }, \
- { 0xa438, 0xd500 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0a05 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x017b }, \
- { 0xa438, 0xd501 }, \
- { 0xa438, 0xce01 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x60fd }, \
- { 0xa438, 0xa50f }, \
- { 0xa438, 0xce00 }, \
- { 0xa438, 0xd500 }, \
- { 0xa438, 0xaa0f }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x01e0 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0503 }, \
- { 0xa438, 0xce00 }, \
- { 0xa438, 0xd500 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0a05 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x01e0 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x60fd }, \
- { 0xa438, 0xa50f }, \
- { 0xa438, 0xce00 }, \
- { 0xa438, 0xd500 }, \
- { 0xa438, 0xaa0f }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0231 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0503 }, \
- { 0xa438, 0xce00 }, \
- { 0xa438, 0xd500 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0a05 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0231 }, \
- { 0xa436, 0xa08e }, \
- { 0xa438, 0xffff }, \
- { 0xa436, 0xa08c }, \
- { 0xa438, 0x0221 }, \
- { 0xa436, 0xa08a }, \
- { 0xa438, 0x01ce }, \
- { 0xa436, 0xa088 }, \
- { 0xa438, 0x0169 }, \
- { 0xa436, 0xa086 }, \
- { 0xa438, 0x00a6 }, \
- { 0xa436, 0xa084 }, \
- { 0xa438, 0x000d }, \
- { 0xa436, 0xa082 }, \
- { 0xa438, 0x0308 }, \
- { 0xa436, 0xa080 }, \
- { 0xa438, 0x029f }, \
- { 0xa436, 0xa090 }, \
- { 0xa438, 0x007f }, \
- { 0xa436, 0xa016 }, \
- { 0xa438, 0x0020 }, \
- { 0xa436, 0xa012 }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0xa014 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8017 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x801b }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8029 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8054 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x805a }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8064 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x80a7 }, \
- { 0xa438, 0x9430 }, \
- { 0xa438, 0x9480 }, \
- { 0xa438, 0xb408 }, \
- { 0xa438, 0xd120 }, \
- { 0xa438, 0xd057 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x064b }, \
- { 0xa438, 0xcb80 }, \
- { 0xa438, 0x9906 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0567 }, \
- { 0xa438, 0xcb94 }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x82a0 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0x8406 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0xa740 }, \
- { 0xa438, 0x8dff }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x07e4 }, \
- { 0xa438, 0xa840 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0773 }, \
- { 0xa438, 0xcb91 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x4063 }, \
- { 0xa438, 0xd139 }, \
- { 0xa438, 0xf002 }, \
- { 0xa438, 0xd140 }, \
- { 0xa438, 0xd040 }, \
- { 0xa438, 0xb404 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0d00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x07dc }, \
- { 0xa438, 0xa610 }, \
- { 0xa438, 0xa110 }, \
- { 0xa438, 0xa2a0 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x4045 }, \
- { 0xa438, 0xa180 }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x405d }, \
- { 0xa438, 0xa720 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0742 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x07ec }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f74 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0742 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x7fb6 }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x82a0 }, \
- { 0xa438, 0x8404 }, \
- { 0xa438, 0x8610 }, \
- { 0xa438, 0x0c0f }, \
- { 0xa438, 0x0d01 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x07dc }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x064b }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x07c0 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa7 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0481 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x94bc }, \
- { 0xa438, 0x870c }, \
- { 0xa438, 0xa190 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xa280 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0x8220 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x078e }, \
- { 0xa438, 0xcb92 }, \
- { 0xa438, 0xa840 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x4063 }, \
- { 0xa438, 0xd140 }, \
- { 0xa438, 0xf002 }, \
- { 0xa438, 0xd150 }, \
- { 0xa438, 0xd040 }, \
- { 0xa438, 0xd703 }, \
- { 0xa438, 0x60a0 }, \
- { 0xa438, 0x6121 }, \
- { 0xa438, 0x61a2 }, \
- { 0xa438, 0x6223 }, \
- { 0xa438, 0xf02f }, \
- { 0xa438, 0x0cf0 }, \
- { 0xa438, 0x0d10 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0xa740 }, \
- { 0xa438, 0xf00f }, \
- { 0xa438, 0x0cf0 }, \
- { 0xa438, 0x0d20 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0xa740 }, \
- { 0xa438, 0xf00a }, \
- { 0xa438, 0x0cf0 }, \
- { 0xa438, 0x0d30 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0xa740 }, \
- { 0xa438, 0xf005 }, \
- { 0xa438, 0x0cf0 }, \
- { 0xa438, 0x0d40 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0xa740 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x07e4 }, \
- { 0xa438, 0xa610 }, \
- { 0xa438, 0xa008 }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x4046 }, \
- { 0xa438, 0xa002 }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x405d }, \
- { 0xa438, 0xa720 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0742 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x07f7 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f74 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0742 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x7fb5 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0x0cf0 }, \
- { 0xa438, 0x0d00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x07e4 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0xa740 }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x3ad4 }, \
- { 0xa438, 0x0537 }, \
- { 0xa438, 0x8610 }, \
- { 0xa438, 0x8840 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x064b }, \
- { 0xa438, 0x8301 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x82a0 }, \
- { 0xa438, 0x8404 }, \
- { 0xa438, 0xa70c }, \
- { 0xa438, 0x9402 }, \
- { 0xa438, 0x890c }, \
- { 0xa438, 0x8840 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x064b }, \
- { 0xa436, 0xa10e }, \
- { 0xa438, 0x0642 }, \
- { 0xa436, 0xa10c }, \
- { 0xa438, 0x0686 }, \
- { 0xa436, 0xa10a }, \
- { 0xa438, 0x0788 }, \
- { 0xa436, 0xa108 }, \
- { 0xa438, 0x047b }, \
- { 0xa436, 0xa106 }, \
- { 0xa438, 0x065c }, \
- { 0xa436, 0xa104 }, \
- { 0xa438, 0x0769 }, \
- { 0xa436, 0xa102 }, \
- { 0xa438, 0x0565 }, \
- { 0xa436, 0xa100 }, \
- { 0xa438, 0x06f9 }, \
- { 0xa436, 0xa110 }, \
- { 0xa438, 0x00ff }, \
- { 0xa436, 0xb87c }, \
- { 0xa438, 0x8530 }, \
- { 0xa436, 0xb87e }, \
- { 0xa438, 0xaf85 }, \
- { 0xa438, 0x3caf }, \
- { 0xa438, 0x8593 }, \
- { 0xa438, 0xaf85 }, \
- { 0xa438, 0x9caf }, \
- { 0xa438, 0x85a5 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x5afb }, \
- { 0xa438, 0xe083 }, \
- { 0xa438, 0xfb0c }, \
- { 0xa438, 0x020d }, \
- { 0xa438, 0x021b }, \
- { 0xa438, 0x10bf }, \
- { 0xa438, 0x86d7 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x86da }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xfbe0 }, \
- { 0xa438, 0x83fc }, \
- { 0xa438, 0x0c02 }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x1b10 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0xda02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0xdd02 }, \
- { 0xa438, 0x5afb }, \
- { 0xa438, 0xe083 }, \
- { 0xa438, 0xfd0c }, \
- { 0xa438, 0x020d }, \
- { 0xa438, 0x021b }, \
- { 0xa438, 0x10bf }, \
- { 0xa438, 0x86dd }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x86e0 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xfbe0 }, \
- { 0xa438, 0x83fe }, \
- { 0xa438, 0x0c02 }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x1b10 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0xe002 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xaf2f }, \
- { 0xa438, 0xbd02 }, \
- { 0xa438, 0x2cac }, \
- { 0xa438, 0x0286 }, \
- { 0xa438, 0x65af }, \
- { 0xa438, 0x212b }, \
- { 0xa438, 0x022c }, \
- { 0xa438, 0x6002 }, \
- { 0xa438, 0x86b6 }, \
- { 0xa438, 0xaf21 }, \
- { 0xa438, 0x0cd1 }, \
- { 0xa438, 0x03bf }, \
- { 0xa438, 0x8710 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x870d }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x8719 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x8716 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x871f }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x871c }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x8728 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x8725 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x8707 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xfbad }, \
- { 0xa438, 0x281c }, \
- { 0xa438, 0xd100 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x0a02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x1302 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x2202 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x2b02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xae1a }, \
- { 0xa438, 0xd101 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x0a02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x1302 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x2202 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x2b02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xd101 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x3402 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x3102 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x3d02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x3a02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x4302 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x4002 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x4c02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x4902 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xd100 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x2e02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x3702 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x4602 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xbf87 }, \
- { 0xa438, 0x4f02 }, \
- { 0xa438, 0x5ab7 }, \
- { 0xa438, 0xaf35 }, \
- { 0xa438, 0x7ff8 }, \
- { 0xa438, 0xfaef }, \
- { 0xa438, 0x69bf }, \
- { 0xa438, 0x86e3 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xfbbf }, \
- { 0xa438, 0x86fb }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x86e6 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xfbbf }, \
- { 0xa438, 0x86fe }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x86e9 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xfbbf }, \
- { 0xa438, 0x8701 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x86ec }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xfbbf }, \
- { 0xa438, 0x8704 }, \
- { 0xa438, 0x025a }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x86ef }, \
- { 0xa438, 0x0262 }, \
- { 0xa438, 0x7cbf }, \
- { 0xa438, 0x86f2 }, \
- { 0xa438, 0x0262 }, \
- { 0xa438, 0x7cbf }, \
- { 0xa438, 0x86f5 }, \
- { 0xa438, 0x0262 }, \
- { 0xa438, 0x7cbf }, \
- { 0xa438, 0x86f8 }, \
- { 0xa438, 0x0262 }, \
- { 0xa438, 0x7cef }, \
- { 0xa438, 0x96fe }, \
- { 0xa438, 0xfc04 }, \
- { 0xa438, 0xf8fa }, \
- { 0xa438, 0xef69 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0xef02 }, \
- { 0xa438, 0x6273 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0xf202 }, \
- { 0xa438, 0x6273 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0xf502 }, \
- { 0xa438, 0x6273 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0xf802 }, \
- { 0xa438, 0x6273 }, \
- { 0xa438, 0xef96 }, \
- { 0xa438, 0xfefc }, \
- { 0xa438, 0x0420 }, \
- { 0xa438, 0xb540 }, \
- { 0xa438, 0x53b5 }, \
- { 0xa438, 0x4086 }, \
- { 0xa438, 0xb540 }, \
- { 0xa438, 0xb9b5 }, \
- { 0xa438, 0x40c8 }, \
- { 0xa438, 0xb03a }, \
- { 0xa438, 0xc8b0 }, \
- { 0xa438, 0xbac8 }, \
- { 0xa438, 0xb13a }, \
- { 0xa438, 0xc8b1 }, \
- { 0xa438, 0xba77 }, \
- { 0xa438, 0xbd26 }, \
- { 0xa438, 0xffbd }, \
- { 0xa438, 0x2677 }, \
- { 0xa438, 0xbd28 }, \
- { 0xa438, 0xffbd }, \
- { 0xa438, 0x2840 }, \
- { 0xa438, 0xbd26 }, \
- { 0xa438, 0xc8bd }, \
- { 0xa438, 0x2640 }, \
- { 0xa438, 0xbd28 }, \
- { 0xa438, 0xc8bd }, \
- { 0xa438, 0x28bb }, \
- { 0xa438, 0xa430 }, \
- { 0xa438, 0x98b0 }, \
- { 0xa438, 0x1eba }, \
- { 0xa438, 0xb01e }, \
- { 0xa438, 0xdcb0 }, \
- { 0xa438, 0x1e98 }, \
- { 0xa438, 0xb09e }, \
- { 0xa438, 0xbab0 }, \
- { 0xa438, 0x9edc }, \
- { 0xa438, 0xb09e }, \
- { 0xa438, 0x98b1 }, \
- { 0xa438, 0x1eba }, \
- { 0xa438, 0xb11e }, \
- { 0xa438, 0xdcb1 }, \
- { 0xa438, 0x1e98 }, \
- { 0xa438, 0xb19e }, \
- { 0xa438, 0xbab1 }, \
- { 0xa438, 0x9edc }, \
- { 0xa438, 0xb19e }, \
- { 0xa438, 0x11b0 }, \
- { 0xa438, 0x1e22 }, \
- { 0xa438, 0xb01e }, \
- { 0xa438, 0x33b0 }, \
- { 0xa438, 0x1e11 }, \
- { 0xa438, 0xb09e }, \
- { 0xa438, 0x22b0 }, \
- { 0xa438, 0x9e33 }, \
- { 0xa438, 0xb09e }, \
- { 0xa438, 0x11b1 }, \
- { 0xa438, 0x1e22 }, \
- { 0xa438, 0xb11e }, \
- { 0xa438, 0x33b1 }, \
- { 0xa438, 0x1e11 }, \
- { 0xa438, 0xb19e }, \
- { 0xa438, 0x22b1 }, \
- { 0xa438, 0x9e33 }, \
- { 0xa438, 0xb19e }, \
- { 0xa436, 0xb85e }, \
- { 0xa438, 0x2f71 }, \
- { 0xa436, 0xb860 }, \
- { 0xa438, 0x20d9 }, \
- { 0xa436, 0xb862 }, \
- { 0xa438, 0x2109 }, \
- { 0xa436, 0xb864 }, \
- { 0xa438, 0x34e7 }, \
- { 0xa436, 0xb878 }, \
- { 0xa438, 0x000f }
-
#define RTL8125_MAC_CFG3_MCU \
{ 0xa436, 0xa016 }, \
{ 0xa438, 0x0000 }, \
@@ -1969,2434 +1168,6 @@ static const struct {
{ 0xa436, 0xb878 }, \
{ 0xa438, 0x0001 }
-#define RTL8125_MAC_CFG4_MCU \
- { 0xa436, 0x8024 }, \
- { 0xa438, 0x3700 }, \
- { 0xa436, 0xb82e }, \
- { 0xa438, 0x0001 }, \
- { 0xb820, 0x0090 }, \
- { 0xa436, 0xa016 }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0xa012 }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0xa014 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8025 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x803a }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8044 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8083 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x808d }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x808d }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x808d }, \
- { 0xa438, 0xd712 }, \
- { 0xa438, 0x4077 }, \
- { 0xa438, 0xd71e }, \
- { 0xa438, 0x4159 }, \
- { 0xa438, 0xd71e }, \
- { 0xa438, 0x6099 }, \
- { 0xa438, 0x7f44 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1a14 }, \
- { 0xa438, 0x9040 }, \
- { 0xa438, 0x9201 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1b1a }, \
- { 0xa438, 0xd71e }, \
- { 0xa438, 0x2425 }, \
- { 0xa438, 0x1a14 }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x3ce5 }, \
- { 0xa438, 0x1afb }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1b00 }, \
- { 0xa438, 0xd712 }, \
- { 0xa438, 0x4077 }, \
- { 0xa438, 0xd71e }, \
- { 0xa438, 0x4159 }, \
- { 0xa438, 0xd71e }, \
- { 0xa438, 0x60b9 }, \
- { 0xa438, 0x2421 }, \
- { 0xa438, 0x1c17 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1a14 }, \
- { 0xa438, 0x9040 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1c2c }, \
- { 0xa438, 0xd71e }, \
- { 0xa438, 0x2425 }, \
- { 0xa438, 0x1a14 }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x3ce5 }, \
- { 0xa438, 0x1c0f }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1c13 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0xd501 }, \
- { 0xa438, 0x6072 }, \
- { 0xa438, 0x8401 }, \
- { 0xa438, 0xf002 }, \
- { 0xa438, 0xa401 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x146e }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0b77 }, \
- { 0xa438, 0xd703 }, \
- { 0xa438, 0x665d }, \
- { 0xa438, 0x653e }, \
- { 0xa438, 0x641f }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x62c4 }, \
- { 0xa438, 0x6185 }, \
- { 0xa438, 0x6066 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x165a }, \
- { 0xa438, 0xc101 }, \
- { 0xa438, 0xcb00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x1945 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x7fa6 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x807d }, \
- { 0xa438, 0xc102 }, \
- { 0xa438, 0xcb00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x1945 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x2569 }, \
- { 0xa438, 0x8058 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x807d }, \
- { 0xa438, 0xc104 }, \
- { 0xa438, 0xcb00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x1945 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x7fa4 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x807d }, \
- { 0xa438, 0xc120 }, \
- { 0xa438, 0xcb00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x1945 }, \
- { 0xa438, 0xd703 }, \
- { 0xa438, 0x7fbf }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x807d }, \
- { 0xa438, 0xc140 }, \
- { 0xa438, 0xcb00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x1945 }, \
- { 0xa438, 0xd703 }, \
- { 0xa438, 0x7fbe }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x807d }, \
- { 0xa438, 0xc180 }, \
- { 0xa438, 0xcb00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x1945 }, \
- { 0xa438, 0xd703 }, \
- { 0xa438, 0x7fbd }, \
- { 0xa438, 0xc100 }, \
- { 0xa438, 0xcb00 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x6018 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x165a }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x14f6 }, \
- { 0xa438, 0xd014 }, \
- { 0xa438, 0xd1e3 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x1356 }, \
- { 0xa438, 0xd705 }, \
- { 0xa438, 0x5fbe }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x1559 }, \
- { 0xa436, 0xa026 }, \
- { 0xa438, 0xffff }, \
- { 0xa436, 0xa024 }, \
- { 0xa438, 0xffff }, \
- { 0xa436, 0xa022 }, \
- { 0xa438, 0xffff }, \
- { 0xa436, 0xa020 }, \
- { 0xa438, 0x1557 }, \
- { 0xa436, 0xa006 }, \
- { 0xa438, 0x1677 }, \
- { 0xa436, 0xa004 }, \
- { 0xa438, 0x0b75 }, \
- { 0xa436, 0xa002 }, \
- { 0xa438, 0x1c17 }, \
- { 0xa436, 0xa000 }, \
- { 0xa438, 0x1b04 }, \
- { 0xa436, 0xa008 }, \
- { 0xa438, 0x1f00 }, \
- { 0xa436, 0xa016 }, \
- { 0xa438, 0x0020 }, \
- { 0xa436, 0xa012 }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0xa014 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8010 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x817f }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x82ab }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x83f8 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8444 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8454 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8459 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8465 }, \
- { 0xa438, 0xcb11 }, \
- { 0xa438, 0xa50c }, \
- { 0xa438, 0x8310 }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x4076 }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x0903 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d00 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a4d }, \
- { 0xa438, 0xcb12 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5f84 }, \
- { 0xa438, 0xd102 }, \
- { 0xa438, 0xd040 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x60f3 }, \
- { 0xa438, 0xd413 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xd410 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xcb13 }, \
- { 0xa438, 0xa108 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8108 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xa910 }, \
- { 0xa438, 0xa780 }, \
- { 0xa438, 0xd14a }, \
- { 0xa438, 0xd048 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x6255 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f74 }, \
- { 0xa438, 0x6326 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x5f07 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0xa004 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8004 }, \
- { 0xa438, 0xa001 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8001 }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x0902 }, \
- { 0xa438, 0xffe2 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fab }, \
- { 0xa438, 0xba08 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8b }, \
- { 0xa438, 0x9a08 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x6535 }, \
- { 0xa438, 0xd40d }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xcb14 }, \
- { 0xa438, 0xa004 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8004 }, \
- { 0xa438, 0xa001 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8001 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xa780 }, \
- { 0xa438, 0xd14a }, \
- { 0xa438, 0xd048 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0x6206 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x5f47 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0xa004 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8004 }, \
- { 0xa438, 0xa001 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8001 }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x0902 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x8064 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0xd40e }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x6073 }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x4216 }, \
- { 0xa438, 0xa004 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8004 }, \
- { 0xa438, 0xa001 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8001 }, \
- { 0xa438, 0xd120 }, \
- { 0xa438, 0xd040 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0x8504 }, \
- { 0xa438, 0xcb21 }, \
- { 0xa438, 0xa301 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f9f }, \
- { 0xa438, 0x8301 }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x40e0 }, \
- { 0xa438, 0xd196 }, \
- { 0xa438, 0xd04d }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xcb22 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a6d }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x1502 }, \
- { 0xa438, 0xa640 }, \
- { 0xa438, 0x9503 }, \
- { 0xa438, 0x8910 }, \
- { 0xa438, 0x8720 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d01 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d01 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0f14 }, \
- { 0xa438, 0xcb23 }, \
- { 0xa438, 0x8fc0 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a25 }, \
- { 0xa438, 0xaf40 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a25 }, \
- { 0xa438, 0x0cc0 }, \
- { 0xa438, 0x0f80 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a25 }, \
- { 0xa438, 0xafc0 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a25 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x5dee }, \
- { 0xa438, 0xcb24 }, \
- { 0xa438, 0x8f1f }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x7f6e }, \
- { 0xa438, 0xa111 }, \
- { 0xa438, 0xa215 }, \
- { 0xa438, 0xa401 }, \
- { 0xa438, 0x8404 }, \
- { 0xa438, 0xa720 }, \
- { 0xa438, 0xcb25 }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x1502 }, \
- { 0xa438, 0x8640 }, \
- { 0xa438, 0x9503 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0b43 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0b86 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0xcb26 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5f82 }, \
- { 0xa438, 0x8111 }, \
- { 0xa438, 0x8205 }, \
- { 0xa438, 0x8404 }, \
- { 0xa438, 0xcb27 }, \
- { 0xa438, 0xd404 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0xa710 }, \
- { 0xa438, 0xa104 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8104 }, \
- { 0xa438, 0xa001 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8001 }, \
- { 0xa438, 0xa120 }, \
- { 0xa438, 0xaa0f }, \
- { 0xa438, 0x8110 }, \
- { 0xa438, 0xa284 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xd193 }, \
- { 0xa438, 0xd046 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xcb28 }, \
- { 0xa438, 0xa110 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa8 }, \
- { 0xa438, 0x8110 }, \
- { 0xa438, 0x8284 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0x8710 }, \
- { 0xa438, 0xb804 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f82 }, \
- { 0xa438, 0x9804 }, \
- { 0xa438, 0xcb29 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5f85 }, \
- { 0xa438, 0xa710 }, \
- { 0xa438, 0xb820 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f65 }, \
- { 0xa438, 0x9820 }, \
- { 0xa438, 0xcb2a }, \
- { 0xa438, 0xa190 }, \
- { 0xa438, 0xa284 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xd13d }, \
- { 0xa438, 0xd04a }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x3444 }, \
- { 0xa438, 0x8149 }, \
- { 0xa438, 0xa220 }, \
- { 0xa438, 0xd1a0 }, \
- { 0xa438, 0xd040 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x3444 }, \
- { 0xa438, 0x8151 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x5f51 }, \
- { 0xa438, 0xcb2f }, \
- { 0xa438, 0xa302 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x5f63 }, \
- { 0xa438, 0xd411 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0x8302 }, \
- { 0xa438, 0xd409 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fa3 }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x82a4 }, \
- { 0xa438, 0x8404 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0xb808 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7fa3 }, \
- { 0xa438, 0x9808 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0433 }, \
- { 0xa438, 0xcb15 }, \
- { 0xa438, 0xa508 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d01 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d01 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a4d }, \
- { 0xa438, 0xa301 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f9f }, \
- { 0xa438, 0x8301 }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x40e0 }, \
- { 0xa438, 0xd115 }, \
- { 0xa438, 0xd04f }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xd413 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xcb16 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a6d }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x1502 }, \
- { 0xa438, 0xa640 }, \
- { 0xa438, 0x9503 }, \
- { 0xa438, 0x8720 }, \
- { 0xa438, 0xd17a }, \
- { 0xa438, 0xd04c }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0f14 }, \
- { 0xa438, 0xcb17 }, \
- { 0xa438, 0x8fc0 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a25 }, \
- { 0xa438, 0xaf40 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a25 }, \
- { 0xa438, 0x0cc0 }, \
- { 0xa438, 0x0f80 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a25 }, \
- { 0xa438, 0xafc0 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a25 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x61ce }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5db4 }, \
- { 0xa438, 0xcb18 }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x1502 }, \
- { 0xa438, 0x8640 }, \
- { 0xa438, 0x9503 }, \
- { 0xa438, 0xa720 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0b43 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xffd6 }, \
- { 0xa438, 0x8f1f }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x7f8e }, \
- { 0xa438, 0xa131 }, \
- { 0xa438, 0xaa0f }, \
- { 0xa438, 0xa2d5 }, \
- { 0xa438, 0xa407 }, \
- { 0xa438, 0xa720 }, \
- { 0xa438, 0x8310 }, \
- { 0xa438, 0xa308 }, \
- { 0xa438, 0x8308 }, \
- { 0xa438, 0xcb19 }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x1502 }, \
- { 0xa438, 0x8640 }, \
- { 0xa438, 0x9503 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0b43 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0b86 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0xcb1a }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5f82 }, \
- { 0xa438, 0x8111 }, \
- { 0xa438, 0x82c5 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0x8402 }, \
- { 0xa438, 0xb804 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f82 }, \
- { 0xa438, 0x9804 }, \
- { 0xa438, 0xcb1b }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5f85 }, \
- { 0xa438, 0xa710 }, \
- { 0xa438, 0xb820 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f65 }, \
- { 0xa438, 0x9820 }, \
- { 0xa438, 0xcb1c }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0xa110 }, \
- { 0xa438, 0xa284 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0x8402 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa8 }, \
- { 0xa438, 0xcb1d }, \
- { 0xa438, 0xa180 }, \
- { 0xa438, 0xa402 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa8 }, \
- { 0xa438, 0xa220 }, \
- { 0xa438, 0xd1f5 }, \
- { 0xa438, 0xd049 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x3444 }, \
- { 0xa438, 0x8221 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x5f51 }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fa3 }, \
- { 0xa438, 0xa504 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d00 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x82a4 }, \
- { 0xa438, 0x8402 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xb808 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7fa3 }, \
- { 0xa438, 0x9808 }, \
- { 0xa438, 0xcb2b }, \
- { 0xa438, 0xcb2c }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5f84 }, \
- { 0xa438, 0xd14a }, \
- { 0xa438, 0xd048 }, \
- { 0xa438, 0xa780 }, \
- { 0xa438, 0xcb2d }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f94 }, \
- { 0xa438, 0x6208 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x5f27 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0xa004 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8004 }, \
- { 0xa438, 0xa001 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8001 }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x0902 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xffe9 }, \
- { 0xa438, 0xcb2e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0xa190 }, \
- { 0xa438, 0xa284 }, \
- { 0xa438, 0xa406 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa8 }, \
- { 0xa438, 0xa220 }, \
- { 0xa438, 0xd1a0 }, \
- { 0xa438, 0xd040 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x3444 }, \
- { 0xa438, 0x827d }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x5f51 }, \
- { 0xa438, 0xcb2f }, \
- { 0xa438, 0xa302 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x5f63 }, \
- { 0xa438, 0xd411 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0x8302 }, \
- { 0xa438, 0xd409 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fa3 }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x82a4 }, \
- { 0xa438, 0x8406 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0xb808 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7fa3 }, \
- { 0xa438, 0x9808 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0433 }, \
- { 0xa438, 0xcb30 }, \
- { 0xa438, 0x8380 }, \
- { 0xa438, 0xcb31 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5f86 }, \
- { 0xa438, 0x9308 }, \
- { 0xa438, 0xb204 }, \
- { 0xa438, 0xb301 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x5fa2 }, \
- { 0xa438, 0xb302 }, \
- { 0xa438, 0x9204 }, \
- { 0xa438, 0xcb32 }, \
- { 0xa438, 0xd408 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xd141 }, \
- { 0xa438, 0xd043 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x4ccc }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x4c81 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x609e }, \
- { 0xa438, 0xd1e5 }, \
- { 0xa438, 0xd04d }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0xd1e5 }, \
- { 0xa438, 0xd04d }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d01 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d01 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0x8710 }, \
- { 0xa438, 0xa108 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8108 }, \
- { 0xa438, 0xa203 }, \
- { 0xa438, 0x8120 }, \
- { 0xa438, 0x8a0f }, \
- { 0xa438, 0xa111 }, \
- { 0xa438, 0x8204 }, \
- { 0xa438, 0xa140 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8140 }, \
- { 0xa438, 0xd17a }, \
- { 0xa438, 0xd04b }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xa204 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa7 }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0xd404 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0xa710 }, \
- { 0xa438, 0x8101 }, \
- { 0xa438, 0x8201 }, \
- { 0xa438, 0xa104 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8104 }, \
- { 0xa438, 0xa120 }, \
- { 0xa438, 0xaa0f }, \
- { 0xa438, 0x8110 }, \
- { 0xa438, 0xa284 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xd193 }, \
- { 0xa438, 0xd047 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xa110 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa8 }, \
- { 0xa438, 0xa180 }, \
- { 0xa438, 0xd13d }, \
- { 0xa438, 0xd04a }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xf024 }, \
- { 0xa438, 0xa710 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x8204 }, \
- { 0xa438, 0xa280 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa7 }, \
- { 0xa438, 0x8710 }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x8284 }, \
- { 0xa438, 0x8406 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x4121 }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x60f3 }, \
- { 0xa438, 0xd1e5 }, \
- { 0xa438, 0xd04d }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0x8710 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x8204 }, \
- { 0xa438, 0xa280 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xb920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5fac }, \
- { 0xa438, 0x9920 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f8c }, \
- { 0xa438, 0xcb33 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x5f85 }, \
- { 0xa438, 0xa710 }, \
- { 0xa438, 0xb820 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd71f }, \
- { 0xa438, 0x7f65 }, \
- { 0xa438, 0x9820 }, \
- { 0xa438, 0xcb34 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xa190 }, \
- { 0xa438, 0xa284 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa9 }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x6853 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d00 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d00 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0x8190 }, \
- { 0xa438, 0x8284 }, \
- { 0xa438, 0xcb35 }, \
- { 0xa438, 0xd407 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0x8110 }, \
- { 0xa438, 0x8204 }, \
- { 0xa438, 0xa280 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x4215 }, \
- { 0xa438, 0xa304 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb8 }, \
- { 0xa438, 0xd1c3 }, \
- { 0xa438, 0xd043 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0x8304 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x4109 }, \
- { 0xa438, 0xf01e }, \
- { 0xa438, 0xcb36 }, \
- { 0xa438, 0xd412 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6309 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x42c7 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0x8180 }, \
- { 0xa438, 0x8280 }, \
- { 0xa438, 0x8404 }, \
- { 0xa438, 0xa004 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8004 }, \
- { 0xa438, 0xa001 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a42 }, \
- { 0xa438, 0x8001 }, \
- { 0xa438, 0x0c03 }, \
- { 0xa438, 0x0902 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xd14a }, \
- { 0xa438, 0xd048 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6083 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a7d }, \
- { 0xa438, 0xcc55 }, \
- { 0xa438, 0xcb37 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xa190 }, \
- { 0xa438, 0xa2a4 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6041 }, \
- { 0xa438, 0xa402 }, \
- { 0xa438, 0xd13d }, \
- { 0xa438, 0xd04a }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fa9 }, \
- { 0xa438, 0xd702 }, \
- { 0xa438, 0x5f71 }, \
- { 0xa438, 0xcb38 }, \
- { 0xa438, 0x8224 }, \
- { 0xa438, 0xa288 }, \
- { 0xa438, 0x8180 }, \
- { 0xa438, 0xa110 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0x800a }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6041 }, \
- { 0xa438, 0x8402 }, \
- { 0xa438, 0xd415 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a37 }, \
- { 0xa438, 0xd13d }, \
- { 0xa438, 0xd04a }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0xcb39 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xa190 }, \
- { 0xa438, 0xa2a0 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x6041 }, \
- { 0xa438, 0xa402 }, \
- { 0xa438, 0xd17a }, \
- { 0xa438, 0xd047 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5fb4 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0560 }, \
- { 0xa438, 0xa111 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0xd3f5 }, \
- { 0xa438, 0xd219 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c31 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x5fa5 }, \
- { 0xa438, 0xa215 }, \
- { 0xa438, 0xd30e }, \
- { 0xa438, 0xd21a }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c31 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x63e9 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x5f65 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x7f36 }, \
- { 0xa438, 0xa004 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c35 }, \
- { 0xa438, 0x8004 }, \
- { 0xa438, 0xa001 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c35 }, \
- { 0xa438, 0x8001 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x4098 }, \
- { 0xa438, 0xd102 }, \
- { 0xa438, 0x9401 }, \
- { 0xa438, 0xf003 }, \
- { 0xa438, 0xd103 }, \
- { 0xa438, 0xb401 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c27 }, \
- { 0xa438, 0xa108 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c35 }, \
- { 0xa438, 0x8108 }, \
- { 0xa438, 0x8110 }, \
- { 0xa438, 0x8294 }, \
- { 0xa438, 0xa202 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0bdb }, \
- { 0xa438, 0xd39c }, \
- { 0xa438, 0xd210 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c31 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x5fa5 }, \
- { 0xa438, 0xd39c }, \
- { 0xa438, 0xd210 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c31 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x5fa5 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c31 }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x29b5 }, \
- { 0xa438, 0x840e }, \
- { 0xa438, 0xd708 }, \
- { 0xa438, 0x5f4a }, \
- { 0xa438, 0x0c1f }, \
- { 0xa438, 0x1014 }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0c31 }, \
- { 0xa438, 0xd709 }, \
- { 0xa438, 0x7fa4 }, \
- { 0xa438, 0x901f }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0c23 }, \
- { 0xa438, 0xcb43 }, \
- { 0xa438, 0xa508 }, \
- { 0xa438, 0xd701 }, \
- { 0xa438, 0x3699 }, \
- { 0xa438, 0x844a }, \
- { 0xa438, 0xa504 }, \
- { 0xa438, 0xa190 }, \
- { 0xa438, 0xa2a0 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x2109 }, \
- { 0xa438, 0x05ea }, \
- { 0xa438, 0xa402 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x05ea }, \
- { 0xa438, 0xcb90 }, \
- { 0xa438, 0x0cf0 }, \
- { 0xa438, 0x0ca0 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x06db }, \
- { 0xa438, 0xd1ff }, \
- { 0xa438, 0xd052 }, \
- { 0xa438, 0xa508 }, \
- { 0xa438, 0x8718 }, \
- { 0xa438, 0xa00a }, \
- { 0xa438, 0xa190 }, \
- { 0xa438, 0xa2a0 }, \
- { 0xa438, 0xa404 }, \
- { 0xa438, 0x0cf0 }, \
- { 0xa438, 0x0c50 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x09ef }, \
- { 0xa438, 0x1000 }, \
- { 0xa438, 0x0a5e }, \
- { 0xa438, 0xd704 }, \
- { 0xa438, 0x2e70 }, \
- { 0xa438, 0x06da }, \
- { 0xa438, 0xd700 }, \
- { 0xa438, 0x5f55 }, \
- { 0xa438, 0xa90c }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0645 }, \
- { 0xa436, 0xa10e }, \
- { 0xa438, 0x0644 }, \
- { 0xa436, 0xa10c }, \
- { 0xa438, 0x09e9 }, \
- { 0xa436, 0xa10a }, \
- { 0xa438, 0x06da }, \
- { 0xa436, 0xa108 }, \
- { 0xa438, 0x05e1 }, \
- { 0xa436, 0xa106 }, \
- { 0xa438, 0x0be4 }, \
- { 0xa436, 0xa104 }, \
- { 0xa438, 0x0435 }, \
- { 0xa436, 0xa102 }, \
- { 0xa438, 0x0141 }, \
- { 0xa436, 0xa100 }, \
- { 0xa438, 0x026d }, \
- { 0xa436, 0xa110 }, \
- { 0xa438, 0x00ff }, \
- { 0xa436, 0xb87c }, \
- { 0xa438, 0x85fe }, \
- { 0xa436, 0xb87e }, \
- { 0xa438, 0xaf86 }, \
- { 0xa438, 0x16af }, \
- { 0xa438, 0x8699 }, \
- { 0xa438, 0xaf86 }, \
- { 0xa438, 0xe5af }, \
- { 0xa438, 0x86f9 }, \
- { 0xa438, 0xaf87 }, \
- { 0xa438, 0x7aaf }, \
- { 0xa438, 0x883a }, \
- { 0xa438, 0xaf88 }, \
- { 0xa438, 0x58af }, \
- { 0xa438, 0x8b6c }, \
- { 0xa438, 0xd48b }, \
- { 0xa438, 0x7c02 }, \
- { 0xa438, 0x8644 }, \
- { 0xa438, 0x2c00 }, \
- { 0xa438, 0x503c }, \
- { 0xa438, 0xffd6 }, \
- { 0xa438, 0xac27 }, \
- { 0xa438, 0x18e1 }, \
- { 0xa438, 0x82fe }, \
- { 0xa438, 0xad28 }, \
- { 0xa438, 0x0cd4 }, \
- { 0xa438, 0x8b84 }, \
- { 0xa438, 0x0286 }, \
- { 0xa438, 0x442c }, \
- { 0xa438, 0x003c }, \
- { 0xa438, 0xac27 }, \
- { 0xa438, 0x06ee }, \
- { 0xa438, 0x8299 }, \
- { 0xa438, 0x01ae }, \
- { 0xa438, 0x04ee }, \
- { 0xa438, 0x8299 }, \
- { 0xa438, 0x00af }, \
- { 0xa438, 0x23dc }, \
- { 0xa438, 0xf9fa }, \
- { 0xa438, 0xcefa }, \
- { 0xa438, 0xfbef }, \
- { 0xa438, 0x79fb }, \
- { 0xa438, 0xc4bf }, \
- { 0xa438, 0x8b76 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x6dac }, \
- { 0xa438, 0x2804 }, \
- { 0xa438, 0xd203 }, \
- { 0xa438, 0xae02 }, \
- { 0xa438, 0xd201 }, \
- { 0xa438, 0xbdd8 }, \
- { 0xa438, 0x19d9 }, \
- { 0xa438, 0xef94 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x6d78 }, \
- { 0xa438, 0x03ef }, \
- { 0xa438, 0x648a }, \
- { 0xa438, 0x0002 }, \
- { 0xa438, 0xbdd8 }, \
- { 0xa438, 0x19d9 }, \
- { 0xa438, 0xef94 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x6d78 }, \
- { 0xa438, 0x03ef }, \
- { 0xa438, 0x7402 }, \
- { 0xa438, 0x72cd }, \
- { 0xa438, 0xac50 }, \
- { 0xa438, 0x02ef }, \
- { 0xa438, 0x643a }, \
- { 0xa438, 0x019f }, \
- { 0xa438, 0xe4ef }, \
- { 0xa438, 0x4678 }, \
- { 0xa438, 0x03ac }, \
- { 0xa438, 0x2002 }, \
- { 0xa438, 0xae02 }, \
- { 0xa438, 0xd0ff }, \
- { 0xa438, 0xffef }, \
- { 0xa438, 0x97ff }, \
- { 0xa438, 0xfec6 }, \
- { 0xa438, 0xfefd }, \
- { 0xa438, 0x041f }, \
- { 0xa438, 0x771f }, \
- { 0xa438, 0x221c }, \
- { 0xa438, 0x450d }, \
- { 0xa438, 0x481f }, \
- { 0xa438, 0x00ac }, \
- { 0xa438, 0x7f04 }, \
- { 0xa438, 0x1a94 }, \
- { 0xa438, 0xae08 }, \
- { 0xa438, 0x1a94 }, \
- { 0xa438, 0xac7f }, \
- { 0xa438, 0x03d7 }, \
- { 0xa438, 0x0100 }, \
- { 0xa438, 0xef46 }, \
- { 0xa438, 0x0d48 }, \
- { 0xa438, 0x1f00 }, \
- { 0xa438, 0x1c45 }, \
- { 0xa438, 0xef69 }, \
- { 0xa438, 0xef57 }, \
- { 0xa438, 0xef74 }, \
- { 0xa438, 0x0272 }, \
- { 0xa438, 0xe8a7 }, \
- { 0xa438, 0xffff }, \
- { 0xa438, 0x0d1a }, \
- { 0xa438, 0x941b }, \
- { 0xa438, 0x979e }, \
- { 0xa438, 0x072d }, \
- { 0xa438, 0x0100 }, \
- { 0xa438, 0x1a64 }, \
- { 0xa438, 0xef76 }, \
- { 0xa438, 0xef97 }, \
- { 0xa438, 0x0d98 }, \
- { 0xa438, 0xd400 }, \
- { 0xa438, 0xff1d }, \
- { 0xa438, 0x941a }, \
- { 0xa438, 0x89cf }, \
- { 0xa438, 0x1a75 }, \
- { 0xa438, 0xaf74 }, \
- { 0xa438, 0xf9bf }, \
- { 0xa438, 0x8b79 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x6da1 }, \
- { 0xa438, 0x0005 }, \
- { 0xa438, 0xe180 }, \
- { 0xa438, 0xa0ae }, \
- { 0xa438, 0x03e1 }, \
- { 0xa438, 0x80a1 }, \
- { 0xa438, 0xaf26 }, \
- { 0xa438, 0x9aac }, \
- { 0xa438, 0x284d }, \
- { 0xa438, 0xe08f }, \
- { 0xa438, 0xffef }, \
- { 0xa438, 0x10c0 }, \
- { 0xa438, 0xe08f }, \
- { 0xa438, 0xfe10 }, \
- { 0xa438, 0x1b08 }, \
- { 0xa438, 0xa000 }, \
- { 0xa438, 0x04c8 }, \
- { 0xa438, 0xaf40 }, \
- { 0xa438, 0x67c8 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x8c02 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xc4bf }, \
- { 0xa438, 0x8b8f }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x6def }, \
- { 0xa438, 0x74e0 }, \
- { 0xa438, 0x830c }, \
- { 0xa438, 0xad20 }, \
- { 0xa438, 0x0302 }, \
- { 0xa438, 0x74ac }, \
- { 0xa438, 0xccef }, \
- { 0xa438, 0x971b }, \
- { 0xa438, 0x76ad }, \
- { 0xa438, 0x5f02 }, \
- { 0xa438, 0xae13 }, \
- { 0xa438, 0xef69 }, \
- { 0xa438, 0xef30 }, \
- { 0xa438, 0x1b32 }, \
- { 0xa438, 0xc4ef }, \
- { 0xa438, 0x46e4 }, \
- { 0xa438, 0x8ffb }, \
- { 0xa438, 0xe58f }, \
- { 0xa438, 0xfce7 }, \
- { 0xa438, 0x8ffd }, \
- { 0xa438, 0xcc10 }, \
- { 0xa438, 0x11ae }, \
- { 0xa438, 0xb8d1 }, \
- { 0xa438, 0x00a1 }, \
- { 0xa438, 0x1f03 }, \
- { 0xa438, 0xaf40 }, \
- { 0xa438, 0x4fbf }, \
- { 0xa438, 0x8b8c }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ec4 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x8f02 }, \
- { 0xa438, 0x6c6d }, \
- { 0xa438, 0xef74 }, \
- { 0xa438, 0xe083 }, \
- { 0xa438, 0x0cad }, \
- { 0xa438, 0x2003 }, \
- { 0xa438, 0x0274 }, \
- { 0xa438, 0xaccc }, \
- { 0xa438, 0xef97 }, \
- { 0xa438, 0x1b76 }, \
- { 0xa438, 0xad5f }, \
- { 0xa438, 0x02ae }, \
- { 0xa438, 0x04ef }, \
- { 0xa438, 0x69ef }, \
- { 0xa438, 0x3111 }, \
- { 0xa438, 0xaed1 }, \
- { 0xa438, 0x0287 }, \
- { 0xa438, 0x80af }, \
- { 0xa438, 0x2293 }, \
- { 0xa438, 0xf8f9 }, \
- { 0xa438, 0xfafb }, \
- { 0xa438, 0xef59 }, \
- { 0xa438, 0xe080 }, \
- { 0xa438, 0x13ad }, \
- { 0xa438, 0x252f }, \
- { 0xa438, 0xbf88 }, \
- { 0xa438, 0x2802 }, \
- { 0xa438, 0x6c6d }, \
- { 0xa438, 0xef64 }, \
- { 0xa438, 0x1f44 }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xb91b }, \
- { 0xa438, 0x64ad }, \
- { 0xa438, 0x4f1d }, \
- { 0xa438, 0xd688 }, \
- { 0xa438, 0x2bd7 }, \
- { 0xa438, 0x882e }, \
- { 0xa438, 0x0274 }, \
- { 0xa438, 0x73ad }, \
- { 0xa438, 0x5008 }, \
- { 0xa438, 0xbf88 }, \
- { 0xa438, 0x3102 }, \
- { 0xa438, 0x737c }, \
- { 0xa438, 0xae03 }, \
- { 0xa438, 0x0287 }, \
- { 0xa438, 0xd0bf }, \
- { 0xa438, 0x882b }, \
- { 0xa438, 0x0273 }, \
- { 0xa438, 0x73e0 }, \
- { 0xa438, 0x824c }, \
- { 0xa438, 0xf621 }, \
- { 0xa438, 0xe482 }, \
- { 0xa438, 0x4cbf }, \
- { 0xa438, 0x8834 }, \
- { 0xa438, 0x0273 }, \
- { 0xa438, 0x7cef }, \
- { 0xa438, 0x95ff }, \
- { 0xa438, 0xfefd }, \
- { 0xa438, 0xfc04 }, \
- { 0xa438, 0xf8f9 }, \
- { 0xa438, 0xfafb }, \
- { 0xa438, 0xef79 }, \
- { 0xa438, 0xbf88 }, \
- { 0xa438, 0x1f02 }, \
- { 0xa438, 0x737c }, \
- { 0xa438, 0x1f22 }, \
- { 0xa438, 0xac32 }, \
- { 0xa438, 0x31ef }, \
- { 0xa438, 0x12bf }, \
- { 0xa438, 0x8822 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ed6 }, \
- { 0xa438, 0x8fba }, \
- { 0xa438, 0x1f33 }, \
- { 0xa438, 0xac3c }, \
- { 0xa438, 0x1eef }, \
- { 0xa438, 0x13bf }, \
- { 0xa438, 0x8837 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4eef }, \
- { 0xa438, 0x96d8 }, \
- { 0xa438, 0x19d9 }, \
- { 0xa438, 0xbf88 }, \
- { 0xa438, 0x2502 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xbf88 }, \
- { 0xa438, 0x2502 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0x1616 }, \
- { 0xa438, 0x13ae }, \
- { 0xa438, 0xdf12 }, \
- { 0xa438, 0xaecc }, \
- { 0xa438, 0xbf88 }, \
- { 0xa438, 0x1f02 }, \
- { 0xa438, 0x7373 }, \
- { 0xa438, 0xef97 }, \
- { 0xa438, 0xfffe }, \
- { 0xa438, 0xfdfc }, \
- { 0xa438, 0x0466 }, \
- { 0xa438, 0xac88 }, \
- { 0xa438, 0x54ac }, \
- { 0xa438, 0x88f0 }, \
- { 0xa438, 0xac8a }, \
- { 0xa438, 0x92ac }, \
- { 0xa438, 0xbadd }, \
- { 0xa438, 0xac6c }, \
- { 0xa438, 0xeeac }, \
- { 0xa438, 0x6cff }, \
- { 0xa438, 0xad02 }, \
- { 0xa438, 0x99ac }, \
- { 0xa438, 0x0030 }, \
- { 0xa438, 0xac88 }, \
- { 0xa438, 0xd4c3 }, \
- { 0xa438, 0x5000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa438, 0x00b4 }, \
- { 0xa438, 0xecee }, \
- { 0xa438, 0x8298 }, \
- { 0xa438, 0x00af }, \
- { 0xa438, 0x1412 }, \
- { 0xa438, 0xf8bf }, \
- { 0xa438, 0x8b5d }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x6d58 }, \
- { 0xa438, 0x03e1 }, \
- { 0xa438, 0x8fb8 }, \
- { 0xa438, 0x2901 }, \
- { 0xa438, 0xe58f }, \
- { 0xa438, 0xb8a0 }, \
- { 0xa438, 0x0049 }, \
- { 0xa438, 0xef47 }, \
- { 0xa438, 0xe483 }, \
- { 0xa438, 0x02e5 }, \
- { 0xa438, 0x8303 }, \
- { 0xa438, 0xbfc2 }, \
- { 0xa438, 0x5f1a }, \
- { 0xa438, 0x95f7 }, \
- { 0xa438, 0x05ee }, \
- { 0xa438, 0xffd2 }, \
- { 0xa438, 0x00d8 }, \
- { 0xa438, 0xf605 }, \
- { 0xa438, 0x1f11 }, \
- { 0xa438, 0xef60 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3002 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c6d }, \
- { 0xa438, 0xf728 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xf628 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0x0c64 }, \
- { 0xa438, 0xef46 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x6002 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0x0289 }, \
- { 0xa438, 0x9902 }, \
- { 0xa438, 0x3920 }, \
- { 0xa438, 0xaf89 }, \
- { 0xa438, 0x96a0 }, \
- { 0xa438, 0x0149 }, \
- { 0xa438, 0xef47 }, \
- { 0xa438, 0xe483 }, \
- { 0xa438, 0x04e5 }, \
- { 0xa438, 0x8305 }, \
- { 0xa438, 0xbfc2 }, \
- { 0xa438, 0x5f1a }, \
- { 0xa438, 0x95f7 }, \
- { 0xa438, 0x05ee }, \
- { 0xa438, 0xffd2 }, \
- { 0xa438, 0x00d8 }, \
- { 0xa438, 0xf605 }, \
- { 0xa438, 0x1f11 }, \
- { 0xa438, 0xef60 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3002 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c6d }, \
- { 0xa438, 0xf729 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xf629 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0x0c64 }, \
- { 0xa438, 0xef46 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x6302 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0x0289 }, \
- { 0xa438, 0x9902 }, \
- { 0xa438, 0x3920 }, \
- { 0xa438, 0xaf89 }, \
- { 0xa438, 0x96a0 }, \
- { 0xa438, 0x0249 }, \
- { 0xa438, 0xef47 }, \
- { 0xa438, 0xe483 }, \
- { 0xa438, 0x06e5 }, \
- { 0xa438, 0x8307 }, \
- { 0xa438, 0xbfc2 }, \
- { 0xa438, 0x5f1a }, \
- { 0xa438, 0x95f7 }, \
- { 0xa438, 0x05ee }, \
- { 0xa438, 0xffd2 }, \
- { 0xa438, 0x00d8 }, \
- { 0xa438, 0xf605 }, \
- { 0xa438, 0x1f11 }, \
- { 0xa438, 0xef60 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3002 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c6d }, \
- { 0xa438, 0xf72a }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xf62a }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x3302 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0x0c64 }, \
- { 0xa438, 0xef46 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x6602 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0x0289 }, \
- { 0xa438, 0x9902 }, \
- { 0xa438, 0x3920 }, \
- { 0xa438, 0xaf89 }, \
- { 0xa438, 0x96ef }, \
- { 0xa438, 0x47e4 }, \
- { 0xa438, 0x8308 }, \
- { 0xa438, 0xe583 }, \
- { 0xa438, 0x09bf }, \
- { 0xa438, 0xc25f }, \
- { 0xa438, 0x1a95 }, \
- { 0xa438, 0xf705 }, \
- { 0xa438, 0xeeff }, \
- { 0xa438, 0xd200 }, \
- { 0xa438, 0xd8f6 }, \
- { 0xa438, 0x051f }, \
- { 0xa438, 0x11ef }, \
- { 0xa438, 0x60bf }, \
- { 0xa438, 0x8b30 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ebf }, \
- { 0xa438, 0x8b33 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x6df7 }, \
- { 0xa438, 0x2bbf }, \
- { 0xa438, 0x8b33 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ef6 }, \
- { 0xa438, 0x2bbf }, \
- { 0xa438, 0x8b33 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4e0c }, \
- { 0xa438, 0x64ef }, \
- { 0xa438, 0x46bf }, \
- { 0xa438, 0x8b69 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4e02 }, \
- { 0xa438, 0x8999 }, \
- { 0xa438, 0x0239 }, \
- { 0xa438, 0x20af }, \
- { 0xa438, 0x8996 }, \
- { 0xa438, 0xaf39 }, \
- { 0xa438, 0x1ef8 }, \
- { 0xa438, 0xf9fa }, \
- { 0xa438, 0xe08f }, \
- { 0xa438, 0xb838 }, \
- { 0xa438, 0x02ad }, \
- { 0xa438, 0x2702 }, \
- { 0xa438, 0xae03 }, \
- { 0xa438, 0xaf8b }, \
- { 0xa438, 0x201f }, \
- { 0xa438, 0x66ef }, \
- { 0xa438, 0x65bf }, \
- { 0xa438, 0xc21f }, \
- { 0xa438, 0x1a96 }, \
- { 0xa438, 0xf705 }, \
- { 0xa438, 0xeeff }, \
- { 0xa438, 0xd200 }, \
- { 0xa438, 0xdaf6 }, \
- { 0xa438, 0x05bf }, \
- { 0xa438, 0xc22f }, \
- { 0xa438, 0x1a96 }, \
- { 0xa438, 0xf705 }, \
- { 0xa438, 0xeeff }, \
- { 0xa438, 0xd200 }, \
- { 0xa438, 0xdbf6 }, \
- { 0xa438, 0x05ef }, \
- { 0xa438, 0x021f }, \
- { 0xa438, 0x110d }, \
- { 0xa438, 0x42bf }, \
- { 0xa438, 0x8b3c }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4eef }, \
- { 0xa438, 0x021b }, \
- { 0xa438, 0x031f }, \
- { 0xa438, 0x110d }, \
- { 0xa438, 0x42bf }, \
- { 0xa438, 0x8b36 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4eef }, \
- { 0xa438, 0x021a }, \
- { 0xa438, 0x031f }, \
- { 0xa438, 0x110d }, \
- { 0xa438, 0x42bf }, \
- { 0xa438, 0x8b39 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ebf }, \
- { 0xa438, 0xc23f }, \
- { 0xa438, 0x1a96 }, \
- { 0xa438, 0xf705 }, \
- { 0xa438, 0xeeff }, \
- { 0xa438, 0xd200 }, \
- { 0xa438, 0xdaf6 }, \
- { 0xa438, 0x05bf }, \
- { 0xa438, 0xc24f }, \
- { 0xa438, 0x1a96 }, \
- { 0xa438, 0xf705 }, \
- { 0xa438, 0xeeff }, \
- { 0xa438, 0xd200 }, \
- { 0xa438, 0xdbf6 }, \
- { 0xa438, 0x05ef }, \
- { 0xa438, 0x021f }, \
- { 0xa438, 0x110d }, \
- { 0xa438, 0x42bf }, \
- { 0xa438, 0x8b45 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4eef }, \
- { 0xa438, 0x021b }, \
- { 0xa438, 0x031f }, \
- { 0xa438, 0x110d }, \
- { 0xa438, 0x42bf }, \
- { 0xa438, 0x8b3f }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4eef }, \
- { 0xa438, 0x021a }, \
- { 0xa438, 0x031f }, \
- { 0xa438, 0x110d }, \
- { 0xa438, 0x42bf }, \
- { 0xa438, 0x8b42 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4eef }, \
- { 0xa438, 0x56d0 }, \
- { 0xa438, 0x201f }, \
- { 0xa438, 0x11bf }, \
- { 0xa438, 0x8b4e }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ebf }, \
- { 0xa438, 0x8b48 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ebf }, \
- { 0xa438, 0x8b4b }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ee1 }, \
- { 0xa438, 0x8578 }, \
- { 0xa438, 0xef03 }, \
- { 0xa438, 0x480a }, \
- { 0xa438, 0x2805 }, \
- { 0xa438, 0xef20 }, \
- { 0xa438, 0x1b01 }, \
- { 0xa438, 0xad27 }, \
- { 0xa438, 0x3f1f }, \
- { 0xa438, 0x44e0 }, \
- { 0xa438, 0x8560 }, \
- { 0xa438, 0xe185 }, \
- { 0xa438, 0x61bf }, \
- { 0xa438, 0x8b51 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ee0 }, \
- { 0xa438, 0x8566 }, \
- { 0xa438, 0xe185 }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8b54 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ee0 }, \
- { 0xa438, 0x856c }, \
- { 0xa438, 0xe185 }, \
- { 0xa438, 0x6dbf }, \
- { 0xa438, 0x8b57 }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ee0 }, \
- { 0xa438, 0x8572 }, \
- { 0xa438, 0xe185 }, \
- { 0xa438, 0x73bf }, \
- { 0xa438, 0x8b5a }, \
- { 0xa438, 0x026c }, \
- { 0xa438, 0x4ee1 }, \
- { 0xa438, 0x8fb8 }, \
- { 0xa438, 0x5900 }, \
- { 0xa438, 0xf728 }, \
- { 0xa438, 0xe58f }, \
- { 0xa438, 0xb8af }, \
- { 0xa438, 0x8b2c }, \
- { 0xa438, 0xe185 }, \
- { 0xa438, 0x791b }, \
- { 0xa438, 0x21ad }, \
- { 0xa438, 0x373e }, \
- { 0xa438, 0x1f44 }, \
- { 0xa438, 0xe085 }, \
- { 0xa438, 0x62e1 }, \
- { 0xa438, 0x8563 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x5102 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xe085 }, \
- { 0xa438, 0x68e1 }, \
- { 0xa438, 0x8569 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x5402 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xe085 }, \
- { 0xa438, 0x6ee1 }, \
- { 0xa438, 0x856f }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x5702 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xe085 }, \
- { 0xa438, 0x74e1 }, \
- { 0xa438, 0x8575 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x5a02 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xb859 }, \
- { 0xa438, 0x00f7 }, \
- { 0xa438, 0x28e5 }, \
- { 0xa438, 0x8fb8 }, \
- { 0xa438, 0xae4a }, \
- { 0xa438, 0x1f44 }, \
- { 0xa438, 0xe085 }, \
- { 0xa438, 0x64e1 }, \
- { 0xa438, 0x8565 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x5102 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xe085 }, \
- { 0xa438, 0x6ae1 }, \
- { 0xa438, 0x856b }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x5402 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xe085 }, \
- { 0xa438, 0x70e1 }, \
- { 0xa438, 0x8571 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x5702 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xe085 }, \
- { 0xa438, 0x76e1 }, \
- { 0xa438, 0x8577 }, \
- { 0xa438, 0xbf8b }, \
- { 0xa438, 0x5a02 }, \
- { 0xa438, 0x6c4e }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xb859 }, \
- { 0xa438, 0x00f7 }, \
- { 0xa438, 0x28e5 }, \
- { 0xa438, 0x8fb8 }, \
- { 0xa438, 0xae0c }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xb839 }, \
- { 0xa438, 0x04ac }, \
- { 0xa438, 0x2f04 }, \
- { 0xa438, 0xee8f }, \
- { 0xa438, 0xb800 }, \
- { 0xa438, 0xfefd }, \
- { 0xa438, 0xfc04 }, \
- { 0xa438, 0xf0ac }, \
- { 0xa438, 0x8efc }, \
- { 0xa438, 0xac8c }, \
- { 0xa438, 0xf0ac }, \
- { 0xa438, 0xfaf0 }, \
- { 0xa438, 0xacf8 }, \
- { 0xa438, 0xf0ac }, \
- { 0xa438, 0xf6f0 }, \
- { 0xa438, 0xad00 }, \
- { 0xa438, 0xf0ac }, \
- { 0xa438, 0xfef0 }, \
- { 0xa438, 0xacfc }, \
- { 0xa438, 0xf0ac }, \
- { 0xa438, 0xf4f0 }, \
- { 0xa438, 0xacf2 }, \
- { 0xa438, 0xf0ac }, \
- { 0xa438, 0xf0f0 }, \
- { 0xa438, 0xacb0 }, \
- { 0xa438, 0xf0ac }, \
- { 0xa438, 0xaef0 }, \
- { 0xa438, 0xacac }, \
- { 0xa438, 0xf0ac }, \
- { 0xa438, 0xaaf0 }, \
- { 0xa438, 0xacee }, \
- { 0xa438, 0xf0b0 }, \
- { 0xa438, 0x24f0 }, \
- { 0xa438, 0xb0a4 }, \
- { 0xa438, 0xf0b1 }, \
- { 0xa438, 0x24f0 }, \
- { 0xa438, 0xb1a4 }, \
- { 0xa438, 0xee8f }, \
- { 0xa438, 0xb800 }, \
- { 0xa438, 0xd400 }, \
- { 0xa438, 0x00af }, \
- { 0xa438, 0x3976 }, \
- { 0xa438, 0x66ac }, \
- { 0xa438, 0xeabb }, \
- { 0xa438, 0xa430 }, \
- { 0xa438, 0x6e50 }, \
- { 0xa438, 0x6e53 }, \
- { 0xa438, 0x6e56 }, \
- { 0xa438, 0x6e59 }, \
- { 0xa438, 0x6e5c }, \
- { 0xa438, 0x6e5f }, \
- { 0xa438, 0x6e62 }, \
- { 0xa438, 0x6e65 }, \
- { 0xa438, 0xd9ac }, \
- { 0xa438, 0x70f0 }, \
- { 0xa438, 0xac6a }, \
- { 0xa436, 0xb85e }, \
- { 0xa438, 0x23b7 }, \
- { 0xa436, 0xb860 }, \
- { 0xa438, 0x74db }, \
- { 0xa436, 0xb862 }, \
- { 0xa438, 0x268c }, \
- { 0xa436, 0xb864 }, \
- { 0xa438, 0x3fe5 }, \
- { 0xa436, 0xb886 }, \
- { 0xa438, 0x2250 }, \
- { 0xa436, 0xb888 }, \
- { 0xa438, 0x140e }, \
- { 0xa436, 0xb88a }, \
- { 0xa438, 0x3696 }, \
- { 0xa436, 0xb88c }, \
- { 0xa438, 0x3973 }, \
- { 0xa436, 0xb838 }, \
- { 0xa438, 0x00ff }, \
- { 0xb820, 0x0010 }, \
- { 0xa436, 0x8464 }, \
- { 0xa438, 0xaf84 }, \
- { 0xa438, 0x7caf }, \
- { 0xa438, 0x8485 }, \
- { 0xa438, 0xaf85 }, \
- { 0xa438, 0x13af }, \
- { 0xa438, 0x851e }, \
- { 0xa438, 0xaf85 }, \
- { 0xa438, 0xb9af }, \
- { 0xa438, 0x8684 }, \
- { 0xa438, 0xaf87 }, \
- { 0xa438, 0x01af }, \
- { 0xa438, 0x8701 }, \
- { 0xa438, 0xac38 }, \
- { 0xa438, 0x03af }, \
- { 0xa438, 0x38bb }, \
- { 0xa438, 0xaf38 }, \
- { 0xa438, 0xc302 }, \
- { 0xa438, 0x4618 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0x0a02 }, \
- { 0xa438, 0x54b7 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0x1002 }, \
- { 0xa438, 0x54c0 }, \
- { 0xa438, 0xd400 }, \
- { 0xa438, 0x0fbf }, \
- { 0xa438, 0x8507 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48bf }, \
- { 0xa438, 0x8504 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x6759 }, \
- { 0xa438, 0xf0a1 }, \
- { 0xa438, 0x3008 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x54c0 }, \
- { 0xa438, 0xae06 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0x0d02 }, \
- { 0xa438, 0x54b7 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0x0402 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xa183 }, \
- { 0xa438, 0x02ae }, \
- { 0xa438, 0x15a1 }, \
- { 0xa438, 0x8502 }, \
- { 0xa438, 0xae10 }, \
- { 0xa438, 0x59f0 }, \
- { 0xa438, 0xa180 }, \
- { 0xa438, 0x16bf }, \
- { 0xa438, 0x8501 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67a1 }, \
- { 0xa438, 0x381b }, \
- { 0xa438, 0xae0b }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xffbf }, \
- { 0xa438, 0x84fe }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48ae }, \
- { 0xa438, 0x17bf }, \
- { 0xa438, 0x84fe }, \
- { 0xa438, 0x0254 }, \
- { 0xa438, 0xb7bf }, \
- { 0xa438, 0x84fb }, \
- { 0xa438, 0x0254 }, \
- { 0xa438, 0xb7ae }, \
- { 0xa438, 0x09a1 }, \
- { 0xa438, 0x5006 }, \
- { 0xa438, 0xbf84 }, \
- { 0xa438, 0xfb02 }, \
- { 0xa438, 0x54c0 }, \
- { 0xa438, 0xaf04 }, \
- { 0xa438, 0x4700 }, \
- { 0xa438, 0xad34 }, \
- { 0xa438, 0xfdad }, \
- { 0xa438, 0x0670 }, \
- { 0xa438, 0xae14 }, \
- { 0xa438, 0xf0a6 }, \
- { 0xa438, 0x00b8 }, \
- { 0xa438, 0xbd32 }, \
- { 0xa438, 0x30bd }, \
- { 0xa438, 0x30aa }, \
- { 0xa438, 0xbd2c }, \
- { 0xa438, 0xccbd }, \
- { 0xa438, 0x2ca1 }, \
- { 0xa438, 0x0705 }, \
- { 0xa438, 0xec80 }, \
- { 0xa438, 0xaf40 }, \
- { 0xa438, 0xf7af }, \
- { 0xa438, 0x40f5 }, \
- { 0xa438, 0xd101 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xa402 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xa702 }, \
- { 0xa438, 0x54c0 }, \
- { 0xa438, 0xd10f }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xaa02 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0x024d }, \
- { 0xa438, 0x6abf }, \
- { 0xa438, 0x85ad }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8ff7 }, \
- { 0xa438, 0xddbf }, \
- { 0xa438, 0x85b0 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8ff8 }, \
- { 0xa438, 0xddbf }, \
- { 0xa438, 0x85b3 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8ff9 }, \
- { 0xa438, 0xddbf }, \
- { 0xa438, 0x85b6 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8ffa }, \
- { 0xa438, 0xddd1 }, \
- { 0xa438, 0x00bf }, \
- { 0xa438, 0x85aa }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x4802 }, \
- { 0xa438, 0x4d6a }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xad02 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xbf8f }, \
- { 0xa438, 0xfbdd }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb002 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xbf8f }, \
- { 0xa438, 0xfcdd }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb302 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xbf8f }, \
- { 0xa438, 0xfddd }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb602 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xbf8f }, \
- { 0xa438, 0xfedd }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xa702 }, \
- { 0xa438, 0x54b7 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xa102 }, \
- { 0xa438, 0x54b7 }, \
- { 0xa438, 0xaf3c }, \
- { 0xa438, 0x2066 }, \
- { 0xa438, 0xb800 }, \
- { 0xa438, 0xb8bd }, \
- { 0xa438, 0x30ee }, \
- { 0xa438, 0xbd2c }, \
- { 0xa438, 0xb8bd }, \
- { 0xa438, 0x7040 }, \
- { 0xa438, 0xbd86 }, \
- { 0xa438, 0xc8bd }, \
- { 0xa438, 0x8640 }, \
- { 0xa438, 0xbd88 }, \
- { 0xa438, 0xc8bd }, \
- { 0xa438, 0x8802 }, \
- { 0xa438, 0x1929 }, \
- { 0xa438, 0xa202 }, \
- { 0xa438, 0x02ae }, \
- { 0xa438, 0x03a2 }, \
- { 0xa438, 0x032e }, \
- { 0xa438, 0xd10f }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xaa02 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xf7bf }, \
- { 0xa438, 0x85ad }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48e1 }, \
- { 0xa438, 0x8ff8 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb002 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xf9bf }, \
- { 0xa438, 0x85b3 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48e1 }, \
- { 0xa438, 0x8ffa }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb602 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xae2c }, \
- { 0xa438, 0xd100 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xaa02 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xfbbf }, \
- { 0xa438, 0x85ad }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48e1 }, \
- { 0xa438, 0x8ffc }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb002 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xfdbf }, \
- { 0xa438, 0x85b3 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48e1 }, \
- { 0xa438, 0x8ffe }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb602 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0x7e02 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xa100 }, \
- { 0xa438, 0x02ae }, \
- { 0xa438, 0x25a1 }, \
- { 0xa438, 0x041d }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xf1bf }, \
- { 0xa438, 0x8675 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48e1 }, \
- { 0xa438, 0x8ff2 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0x7802 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xf3bf }, \
- { 0xa438, 0x867b }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48ae }, \
- { 0xa438, 0x29a1 }, \
- { 0xa438, 0x070b }, \
- { 0xa438, 0xae24 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0x8102 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xad28 }, \
- { 0xa438, 0x1be1 }, \
- { 0xa438, 0x8ff4 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0x7502 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xe18f }, \
- { 0xa438, 0xf5bf }, \
- { 0xa438, 0x8678 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x48e1 }, \
- { 0xa438, 0x8ff6 }, \
- { 0xa438, 0xbf86 }, \
- { 0xa438, 0x7b02 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xaf09 }, \
- { 0xa438, 0x8420 }, \
- { 0xa438, 0xbc32 }, \
- { 0xa438, 0x20bc }, \
- { 0xa438, 0x3e76 }, \
- { 0xa438, 0xbc08 }, \
- { 0xa438, 0xfda6 }, \
- { 0xa438, 0x1a00 }, \
- { 0xa438, 0xb64e }, \
- { 0xa438, 0xd101 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xa402 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xa702 }, \
- { 0xa438, 0x54c0 }, \
- { 0xa438, 0xd10f }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xaa02 }, \
- { 0xa438, 0x4f48 }, \
- { 0xa438, 0x024d }, \
- { 0xa438, 0x6abf }, \
- { 0xa438, 0x85ad }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8ff7 }, \
- { 0xa438, 0xddbf }, \
- { 0xa438, 0x85b0 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8ff8 }, \
- { 0xa438, 0xddbf }, \
- { 0xa438, 0x85b3 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8ff9 }, \
- { 0xa438, 0xddbf }, \
- { 0xa438, 0x85b6 }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x67bf }, \
- { 0xa438, 0x8ffa }, \
- { 0xa438, 0xddd1 }, \
- { 0xa438, 0x00bf }, \
- { 0xa438, 0x85aa }, \
- { 0xa438, 0x024f }, \
- { 0xa438, 0x4802 }, \
- { 0xa438, 0x4d6a }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xad02 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xbf8f }, \
- { 0xa438, 0xfbdd }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb002 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xbf8f }, \
- { 0xa438, 0xfcdd }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb302 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xbf8f }, \
- { 0xa438, 0xfddd }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xb602 }, \
- { 0xa438, 0x4f67 }, \
- { 0xa438, 0xbf8f }, \
- { 0xa438, 0xfedd }, \
- { 0xa438, 0xbf85 }, \
- { 0xa438, 0xa702 }, \
- { 0xa438, 0x54b7 }, \
- { 0xa438, 0xaf00 }, \
- { 0xa438, 0x8800 }, \
- { 0xa436, 0xb818 }, \
- { 0xa438, 0x38b8 }, \
- { 0xa436, 0xb81a }, \
- { 0xa438, 0x0444 }, \
- { 0xa436, 0xb81c }, \
- { 0xa438, 0x40ee }, \
- { 0xa436, 0xb81e }, \
- { 0xa438, 0x3c1a }, \
- { 0xa436, 0xb850 }, \
- { 0xa438, 0x0981 }, \
- { 0xa436, 0xb852 }, \
- { 0xa438, 0x0085 }, \
- { 0xa436, 0xb878 }, \
- { 0xa438, 0xffff }, \
- { 0xa436, 0xb884 }, \
- { 0xa438, 0xffff }, \
- { 0xa436, 0xb832 }, \
- { 0xa438, 0x003f }, \
- { 0xa436, 0x0000 }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0xb82e }, \
- { 0xa438, 0x0000 }, \
- { 0xa436, 0x8024 }, \
- { 0xa438, 0x0000 }, \
- { 0xb820, 0x0000 }, \
- { 0xa436, 0x801e }, \
- { 0xa438, 0x0021 }
-
#define RTL8125_MAC_CFG5_MCU \
{ 0xa436, 0x8024 }, \
{ 0xa438, 0x3701 }, \
@@ -4413,17 +1184,17 @@ static const struct {
{ 0xa438, 0x1800 }, \
{ 0xa438, 0x801a }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x8024 }, \
+ { 0xa438, 0x803f }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x802f }, \
+ { 0xa438, 0x8045 }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x8051 }, \
+ { 0xa438, 0x8067 }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x8057 }, \
+ { 0xa438, 0x806d }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x8063 }, \
+ { 0xa438, 0x8071 }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x8068 }, \
+ { 0xa438, 0x80b1 }, \
{ 0xa438, 0xd093 }, \
{ 0xa438, 0xd1c4 }, \
{ 0xa438, 0x1000 }, \
@@ -4442,19 +1213,41 @@ static const struct {
{ 0xa438, 0xd500 }, \
{ 0xa438, 0x1000 }, \
{ 0xa438, 0x1519 }, \
+ { 0xa438, 0x1000 }, \
+ { 0xa438, 0x135c }, \
+ { 0xa438, 0xd75e }, \
+ { 0xa438, 0x5fae }, \
+ { 0xa438, 0x9b50 }, \
+ { 0xa438, 0x1000 }, \
+ { 0xa438, 0x135c }, \
+ { 0xa438, 0xd75e }, \
+ { 0xa438, 0x7fae }, \
+ { 0xa438, 0x1000 }, \
+ { 0xa438, 0x135c }, \
+ { 0xa438, 0xd707 }, \
+ { 0xa438, 0x40a7 }, \
+ { 0xa438, 0xd719 }, \
+ { 0xa438, 0x4071 }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x1548 }, \
+ { 0xa438, 0x1557 }, \
+ { 0xa438, 0xd719 }, \
{ 0xa438, 0x2f70 }, \
- { 0xa438, 0x802a }, \
+ { 0xa438, 0x803b }, \
{ 0xa438, 0x2f73 }, \
{ 0xa438, 0x156a }, \
+ { 0xa438, 0x5e70 }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x155c }, \
+ { 0xa438, 0x155d }, \
{ 0xa438, 0xd505 }, \
{ 0xa438, 0xa202 }, \
{ 0xa438, 0xd500 }, \
+ { 0xa438, 0xffed }, \
+ { 0xa438, 0xd709 }, \
+ { 0xa438, 0x4054 }, \
+ { 0xa438, 0xa788 }, \
+ { 0xa438, 0xd70b }, \
{ 0xa438, 0x1800 }, \
- { 0xa438, 0x1551 }, \
+ { 0xa438, 0x172a }, \
{ 0xa438, 0xc0c1 }, \
{ 0xa438, 0xc0c0 }, \
{ 0xa438, 0xd05a }, \
@@ -4482,7 +1275,7 @@ static const struct {
{ 0xa438, 0x1000 }, \
{ 0xa438, 0x0909 }, \
{ 0xa438, 0x228f }, \
- { 0xa438, 0x8038 }, \
+ { 0xa438, 0x804e }, \
{ 0xa438, 0x9801 }, \
{ 0xa438, 0xd71e }, \
{ 0xa438, 0x5d61 }, \
@@ -4495,11 +1288,67 @@ static const struct {
{ 0xa438, 0x0919 }, \
{ 0xa438, 0x1800 }, \
{ 0xa438, 0x0916 }, \
+ { 0xa438, 0xd090 }, \
+ { 0xa438, 0xd1c9 }, \
+ { 0xa438, 0x1800 }, \
+ { 0xa438, 0x1064 }, \
+ { 0xa438, 0xd096 }, \
+ { 0xa438, 0xd1a9 }, \
+ { 0xa438, 0xd503 }, \
+ { 0xa438, 0xa104 }, \
+ { 0xa438, 0x0c07 }, \
+ { 0xa438, 0x0902 }, \
+ { 0xa438, 0xd500 }, \
+ { 0xa438, 0xbc10 }, \
+ { 0xa438, 0xd501 }, \
+ { 0xa438, 0xce01 }, \
+ { 0xa438, 0xa201 }, \
+ { 0xa438, 0x8201 }, \
+ { 0xa438, 0xce00 }, \
+ { 0xa438, 0xd500 }, \
+ { 0xa438, 0xc484 }, \
+ { 0xa438, 0xd503 }, \
+ { 0xa438, 0xcc02 }, \
+ { 0xa438, 0xcd0d }, \
+ { 0xa438, 0xaf01 }, \
+ { 0xa438, 0xd500 }, \
+ { 0xa438, 0xd703 }, \
+ { 0xa438, 0x4371 }, \
+ { 0xa438, 0xbd08 }, \
+ { 0xa438, 0x1000 }, \
+ { 0xa438, 0x135c }, \
+ { 0xa438, 0xd75e }, \
+ { 0xa438, 0x5fb3 }, \
+ { 0xa438, 0xd503 }, \
+ { 0xa438, 0xd0f5 }, \
+ { 0xa438, 0xd1c6 }, \
+ { 0xa438, 0x0cf0 }, \
+ { 0xa438, 0x0e50 }, \
+ { 0xa438, 0xd704 }, \
+ { 0xa438, 0x401c }, \
+ { 0xa438, 0xd0f5 }, \
+ { 0xa438, 0xd1c6 }, \
+ { 0xa438, 0x0cf0 }, \
+ { 0xa438, 0x0ea0 }, \
+ { 0xa438, 0x401c }, \
+ { 0xa438, 0xd07b }, \
+ { 0xa438, 0xd1c5 }, \
+ { 0xa438, 0x8ef0 }, \
+ { 0xa438, 0x401c }, \
+ { 0xa438, 0x9d08 }, \
+ { 0xa438, 0x1000 }, \
+ { 0xa438, 0x135c }, \
+ { 0xa438, 0xd75e }, \
+ { 0xa438, 0x7fb3 }, \
+ { 0xa438, 0x1000 }, \
+ { 0xa438, 0x135c }, \
+ { 0xa438, 0xd75e }, \
+ { 0xa438, 0x5fad }, \
{ 0xa438, 0x1000 }, \
{ 0xa438, 0x14c5 }, \
{ 0xa438, 0xd703 }, \
{ 0xa438, 0x3181 }, \
- { 0xa438, 0x8061 }, \
+ { 0xa438, 0x80af }, \
{ 0xa438, 0x60ad }, \
{ 0xa438, 0x1000 }, \
{ 0xa438, 0x135c }, \
@@ -4507,11 +1356,6 @@ static const struct {
{ 0xa438, 0x5fba }, \
{ 0xa438, 0x1800 }, \
{ 0xa438, 0x0cc7 }, \
- { 0xa438, 0xd096 }, \
- { 0xa438, 0xd1a9 }, \
- { 0xa438, 0xd503 }, \
- { 0xa438, 0x1800 }, \
- { 0xa438, 0x0c94 }, \
{ 0xa438, 0xa802 }, \
{ 0xa438, 0xa301 }, \
{ 0xa438, 0xa801 }, \
@@ -4525,13 +1369,13 @@ static const struct {
{ 0xa436, 0xa024 }, \
{ 0xa438, 0x0c93 }, \
{ 0xa436, 0xa022 }, \
- { 0xa438, 0x0cc5 }, \
+ { 0xa438, 0x1062 }, \
{ 0xa436, 0xa020 }, \
{ 0xa438, 0x0915 }, \
{ 0xa436, 0xa006 }, \
{ 0xa438, 0x020a }, \
{ 0xa436, 0xa004 }, \
- { 0xa438, 0x155b }, \
+ { 0xa438, 0x1726 }, \
{ 0xa436, 0xa002 }, \
{ 0xa438, 0x1542 }, \
{ 0xa436, 0xa000 }, \
@@ -5354,6 +2198,6 @@ static const struct {
{ 0xa438, 0x0000 }, \
{ 0xa436, 0x8024 }, \
{ 0xa438, 0x0000 }, \
- { 0xb820, 0x0000 }, \
{ 0xa436, 0x801e }, \
- { 0xa438, 0x0019 }
+ { 0xa438, 0x0021 }, \
+ { 0xb820, 0x0000 }