From 933c1538508ae12ebdf0f3b1c6f1283b4c919f15 Mon Sep 17 00:00:00 2001 From: purplerain Date: Sat, 23 Dec 2023 13:56:21 +0000 Subject: [PATCH] sync with OpenBSD -current --- bin/pax/tar.c | 76 +- distrib/sets/lists/comp/mi | 1 + gnu/llvm/libcxxabi/src/cxa_guard_impl.h | 2 +- lib/libcrypto/cms/cms_smime.c | 21 +- lib/libcrypto/evp/evp_enc.c | 107 +- lib/libcrypto/evp/evp_local.h | 6 +- lib/libcrypto/x509/x509_local.h | 18 +- lib/libcrypto/x509/x509_vfy.c | 143 +- regress/usr.bin/xargs/xargs-L.sh | 10 +- share/man/man4/abcrtc.4 | 6 +- share/man/man5/python-module.5 | 8 +- sys/dev/pci/drm/drm_linux.c | 80 +- sys/dev/pci/drm/include/drm/drm_file.h | 2 - sys/dev/pci/drm/include/linux/backlight.h | 37 +- sys/dev/pci/drm/include/linux/device.h | 12 +- sys/dev/pci/drm/include/linux/io.h | 3 + sys/dev/pci/drm/include/linux/ioport.h | 2 + sys/dev/pci/drm/include/linux/jiffies.h | 13 +- sys/dev/pci/drm/include/linux/kernel.h | 2 + sys/dev/pci/drm/include/linux/pci.h | 10 +- sys/dev/pci/drm/include/linux/types.h | 2 +- sys/dev/pci/if_rge.c | 793 ++--- sys/dev/pci/if_rgereg.h | 3648 ++------------------- sys/net/if.c | 2 +- sys/net/if_aggr.c | 2 +- sys/net/if_bpe.c | 2 +- sys/net/if_etherip.c | 2 +- sys/net/if_gif.c | 2 +- sys/net/if_gre.c | 2 +- sys/net/if_mpe.c | 2 +- sys/net/if_mpip.c | 2 +- sys/net/if_mpw.c | 2 +- sys/net/if_pflow.c | 2 +- sys/net/if_pfsync.c | 2 +- sys/net/if_pppx.c | 2 +- sys/net/if_sec.c | 2 +- sys/net/if_tpmr.c | 2 +- sys/net/if_trunk.c | 2 +- sys/net/if_tun.c | 2 +- sys/net/if_var.h | 2 +- sys/net/if_veb.c | 2 +- sys/net/if_vlan.c | 2 +- sys/net/if_vxlan.c | 2 +- sys/net/if_wg.c | 2 +- sys/netinet/ip_carp.c | 2 +- usr.bin/xargs/xargs.c | 10 +- usr.sbin/smtpd/smtp_session.c | 2 +- usr.sbin/snmpd/snmpd.c | 4 +- usr.sbin/snmpd/usm.c | 25 +- 49 files changed, 931 insertions(+), 4156 deletions(-) diff --git a/bin/pax/tar.c b/bin/pax/tar.c index 84078ea14..a41a6d4d0 100644 --- a/bin/pax/tar.c +++ b/bin/pax/tar.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tar.c,v 1.75 2023/12/21 01:20:54 jca Exp $ */ +/* $OpenBSD: tar.c,v 1.77 2023/12/22 20:32:29 jca Exp $ */ /* $NetBSD: tar.c,v 1.5 1995/03/21 09:07:49 cgd Exp $ */ /*- @@ -741,6 +741,7 @@ reset: memset(arcn, 0, sizeof(*arcn)); arcn->org_name = arcn->name; arcn->sb.st_nlink = 1; + arcn->sb.st_size = (off_t)-1; /* Process Extended headers. */ if (hd->typeflag == XHDRTYPE || hd->typeflag == GHDRTYPE) { @@ -795,7 +796,10 @@ reset: */ arcn->sb.st_mode = (mode_t)(asc_ul(hd->mode, sizeof(hd->mode), OCT) & 0xfff); - arcn->sb.st_size = (off_t)asc_ull(hd->size, sizeof(hd->size), OCT); + if (arcn->sb.st_size == (off_t)-1) { + arcn->sb.st_size = + (off_t)asc_ull(hd->size, sizeof(hd->size), OCT); + } if (arcn->sb.st_mtime == 0) { val = asc_ull(hd->mtime, sizeof(hd->mtime), OCT); if (val > MAX_TIME_T) @@ -942,6 +946,38 @@ xheader_add(struct xheader *xhdr, const char *keyword, return 0; } +static int +xheader_add_ull(struct xheader *xhdr, const char *keyword, + unsigned long long value) +{ + struct xheader_record *rec; + int reclen, tmplen; + char *s; + + tmplen = MINXHDRSZ; + do { + reclen = tmplen; + tmplen = snprintf(NULL, 0, "%d %s=%llu\n", reclen, keyword, + value); + } while (tmplen >= 0 && tmplen != reclen); + if (tmplen < 0) + return -1; + + rec = calloc(1, sizeof(*rec)); + if (rec == NULL) + return -1; + rec->reclen = reclen; + if (asprintf(&s, "%d %s=%llu\n", reclen, keyword, value) < 0) { + free(rec); + return -1; + } + rec->record = s; + + SLIST_INSERT_HEAD(xhdr, rec, entry); + + return 0; +} + static void xheader_free(struct xheader *xhdr) { @@ -1160,9 +1196,20 @@ wr_ustar_or_pax(ARCHD *arcn, int ustar) hd->typeflag = REGTYPE; arcn->pad = TAR_PAD(arcn->sb.st_size); if (ull_oct(arcn->sb.st_size, hd->size, sizeof(hd->size), 3)) { - paxwarn(1, "File is too long for ustar %s", - arcn->org_name); - return(1); + if (ustar) { + paxwarn(1, "File is too long for ustar %s", + arcn->org_name); + return(1); + } +#ifndef SMALL + else if (xheader_add_ull(&xhdr, "size", + arcn->sb.st_size) == -1) { + paxwarn(1, "File is too long for pax %s", + arcn->org_name); + xheader_free(&xhdr); + return(1); + } +#endif } break; } @@ -1408,6 +1455,21 @@ rd_time(struct timespec *ts, const char *keyword, char *p) return 0; } +static int +rd_size(off_t *size, const char *keyword, char *p) +{ + const char *errstr; + + /* Assume off_t is a long long. */ + *size = strtonum(p, 0, LLONG_MAX, &errstr); + if (errstr != NULL) { + paxwarn(1, "%s is %s: %s", keyword, errstr, p); + return -1; + } + + return 0; +} + static int rd_xheader(ARCHD *arcn, int global, off_t size) { @@ -1498,6 +1560,10 @@ rd_xheader(ARCHD *arcn, int global, off_t size) ret = rd_time(&arcn->sb.st_ctim, keyword, p); if (ret < 0) break; + } else if (!strcmp(keyword, "size")) { + ret = rd_size(&arcn->sb.st_size, keyword, p); + if (ret < 0) + break; } } p = nextp; diff --git a/distrib/sets/lists/comp/mi b/distrib/sets/lists/comp/mi index 2cde9af96..0ea4fabe8 100644 --- a/distrib/sets/lists/comp/mi +++ b/distrib/sets/lists/comp/mi @@ -3209,6 +3209,7 @@ ./usr/share/man/man9/startuphook_establish.9 ./usr/share/man/man9/stoeplitz_to_key.9 ./usr/share/man/man9/strcmp.9 +./usr/share/man/man9/strnstr.9 ./usr/share/man/man9/style.9 ./usr/share/man/man9/syscall.9 ./usr/share/man/man9/sysctl_int.9 diff --git a/gnu/llvm/libcxxabi/src/cxa_guard_impl.h b/gnu/llvm/libcxxabi/src/cxa_guard_impl.h index 2aba893dd..5ca4c5715 100644 --- a/gnu/llvm/libcxxabi/src/cxa_guard_impl.h +++ b/gnu/llvm/libcxxabi/src/cxa_guard_impl.h @@ -395,7 +395,7 @@ private: // Futex Implementation //===----------------------------------------------------------------------===// -#ifdef __SecBSD__ +#ifdef __OpenBSD__ #include void PlatformFutexWait(int* addr, int expect) { diff --git a/lib/libcrypto/cms/cms_smime.c b/lib/libcrypto/cms/cms_smime.c index b2930017f..5a194748d 100644 --- a/lib/libcrypto/cms/cms_smime.c +++ b/lib/libcrypto/cms/cms_smime.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cms_smime.c,v 1.27 2023/07/08 08:26:26 beck Exp $ */ +/* $OpenBSD: cms_smime.c,v 1.28 2023/12/22 10:23:11 tb Exp $ */ /* * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project. @@ -52,14 +52,21 @@ * ==================================================================== */ -#include "cryptlib.h" -#include -#include -#include -#include +#include + +#include + +#include +#include #include +#include +#include +#include +#include +#include +#include + #include "cms_local.h" -#include "asn1/asn1_local.h" static BIO * cms_get_text_bio(BIO *out, unsigned int flags) diff --git a/lib/libcrypto/evp/evp_enc.c b/lib/libcrypto/evp/evp_enc.c index d8c01cdc4..1bde05f49 100644 --- a/lib/libcrypto/evp/evp_enc.c +++ b/lib/libcrypto/evp/evp_enc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: evp_enc.c,v 1.74 2023/12/21 20:50:43 tb Exp $ */ +/* $OpenBSD: evp_enc.c,v 1.79 2023/12/23 13:05:06 tb Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -83,44 +83,48 @@ EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *engine, { if (enc == -1) enc = ctx->encrypt; - else { - if (enc) - enc = 1; - ctx->encrypt = enc; - } - if (cipher) { - /* Ensure a context left lying around from last time is cleared - * (the previous check attempted to avoid this if the same - * EVP_CIPHER could be used). */ - if (ctx->cipher) { - unsigned long flags = ctx->flags; - EVP_CIPHER_CTX_cleanup(ctx); - /* Restore encrypt and flags */ - ctx->encrypt = enc; - ctx->flags = flags; - } + if (enc != 0) + enc = 1; + ctx->encrypt = enc; + if (cipher == NULL && ctx->cipher == NULL) { + EVPerror(EVP_R_NO_CIPHER_SET); + return 0; + } + + /* + * If the ctx is reused and a cipher is passed in, reset the ctx but + * remember enc and whether key wrap was enabled. + */ + if (cipher != NULL && ctx->cipher != NULL) { + unsigned long flags = ctx->flags; + + EVP_CIPHER_CTX_cleanup(ctx); + + ctx->encrypt = enc; + ctx->flags = flags & EVP_CIPHER_CTX_FLAG_WRAP_ALLOW; + } + + /* Set up cipher. Allocate cipher data and initialize if necessary. */ + if (cipher != NULL) { ctx->cipher = cipher; - if (ctx->cipher->ctx_size) { + ctx->key_len = cipher->key_len; + ctx->flags &= EVP_CIPHER_CTX_FLAG_WRAP_ALLOW; + + if (ctx->cipher->ctx_size != 0) { ctx->cipher_data = calloc(1, ctx->cipher->ctx_size); if (ctx->cipher_data == NULL) { EVPerror(ERR_R_MALLOC_FAILURE); return 0; } - } else { - ctx->cipher_data = NULL; } - ctx->key_len = cipher->key_len; - ctx->flags &= EVP_CIPHER_CTX_FLAG_WRAP_ALLOW; - if (ctx->cipher->flags & EVP_CIPH_CTRL_INIT) { + + if ((ctx->cipher->flags & EVP_CIPH_CTRL_INIT) != 0) { if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_INIT, 0, NULL)) { EVPerror(EVP_R_INITIALIZATION_ERROR); return 0; } } - } else if (!ctx->cipher) { - EVPerror(EVP_R_NO_CIPHER_SET); - return 0; } /* Block sizes must be a power of 2 due to the use of block_mask. */ @@ -131,13 +135,13 @@ EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *engine, return 0; } - if (!(ctx->flags & EVP_CIPHER_CTX_FLAG_WRAP_ALLOW) && + if ((ctx->flags & EVP_CIPHER_CTX_FLAG_WRAP_ALLOW) == 0 && EVP_CIPHER_CTX_mode(ctx) == EVP_CIPH_WRAP_MODE) { EVPerror(EVP_R_WRAP_MODE_NOT_ALLOWED); return 0; } - if (!(EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_CUSTOM_IV)) { + if ((EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_CUSTOM_IV) == 0) { int iv_len; switch (EVP_CIPHER_CTX_mode(ctx)) { @@ -181,7 +185,7 @@ EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *engine, } } - if (key || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT)) { + if (key != NULL || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT) != 0) { if (!ctx->cipher->init(ctx, key, iv, enc)) return 0; } @@ -203,7 +207,7 @@ EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len, } int -EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len) +EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len) { if (ctx->encrypt) return EVP_EncryptFinal_ex(ctx, out, out_len); @@ -212,7 +216,7 @@ EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len) } int -EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len) +EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len) { if (ctx->encrypt) return EVP_EncryptFinal_ex(ctx, out, out_len); @@ -234,20 +238,6 @@ EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *engine return EVP_CipherInit_ex(ctx, cipher, NULL, key, iv, 1); } -int -EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, - const unsigned char *key, const unsigned char *iv) -{ - return EVP_CipherInit(ctx, cipher, key, iv, 0); -} - -int -EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *engine, - const unsigned char *key, const unsigned char *iv) -{ - return EVP_CipherInit_ex(ctx, cipher, NULL, key, iv, 0); -} - /* * EVP_Cipher() is an implementation detail of EVP_Cipher{Update,Final}(). * Behavior depends on EVP_CIPH_FLAG_CUSTOM_CIPHER being set on ctx->cipher. @@ -320,13 +310,13 @@ EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len, if (partial_len == 0 && (in_len & block_mask) == 0) return evp_cipher(ctx, out, out_len, in, in_len); - /* XXX - check that block_size > partial_len. */ - if (block_size > sizeof(ctx->buf)) { + if (partial_len < 0 || partial_len >= block_size || + block_size > sizeof(ctx->buf)) { EVPerror(EVP_R_BAD_BLOCK_LENGTH); return 0; } - if (partial_len != 0) { + if (partial_len > 0) { int partial_needed; if ((partial_needed = block_size - partial_len) > in_len) { @@ -369,9 +359,8 @@ EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len, total_len += len; } - if (partial_len != 0) + if ((ctx->partial_len = partial_len) > 0) memcpy(ctx->buf, &in[in_len], partial_len); - ctx->partial_len = partial_len; *out_len = total_len; @@ -396,8 +385,8 @@ EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len) if ((ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) != 0) return evp_cipher(ctx, out, out_len, NULL, 0); - /* XXX - check that block_size > partial_len. */ - if (block_size > sizeof(ctx->buf)) { + if (partial_len < 0 || partial_len >= block_size || + block_size > sizeof(ctx->buf)) { EVPerror(EVP_R_BAD_BLOCK_LENGTH); return 0; } @@ -418,6 +407,20 @@ EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len) return evp_cipher(ctx, out, out_len, ctx->buf, block_size); } +int +EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv) +{ + return EVP_CipherInit(ctx, cipher, key, iv, 0); +} + +int +EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *engine, + const unsigned char *key, const unsigned char *iv) +{ + return EVP_CipherInit_ex(ctx, cipher, NULL, key, iv, 0); +} + int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out_len, const unsigned char *in, int in_len) diff --git a/lib/libcrypto/evp/evp_local.h b/lib/libcrypto/evp/evp_local.h index 36c373523..1034b88a1 100644 --- a/lib/libcrypto/evp/evp_local.h +++ b/lib/libcrypto/evp/evp_local.h @@ -1,4 +1,4 @@ -/* $OpenBSD: evp_local.h,v 1.8 2023/12/20 14:10:03 tb Exp $ */ +/* $OpenBSD: evp_local.h,v 1.9 2023/12/22 17:25:47 tb Exp $ */ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project 2000. */ @@ -170,8 +170,8 @@ struct evp_cipher_ctx_st { int encrypt; /* encrypt or decrypt */ int partial_len; /* number of bytes written to buf */ - unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ - unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ + unsigned char oiv[EVP_MAX_IV_LENGTH]; /* original iv */ + unsigned char iv[EVP_MAX_IV_LENGTH]; /* working iv */ unsigned char buf[EVP_MAX_BLOCK_LENGTH];/* saved partial block */ int num; /* used by cfb/ofb/ctr mode */ diff --git a/lib/libcrypto/x509/x509_local.h b/lib/libcrypto/x509/x509_local.h index 63082d1b1..0312e6cac 100644 --- a/lib/libcrypto/x509/x509_local.h +++ b/lib/libcrypto/x509/x509_local.h @@ -1,4 +1,4 @@ -/* $OpenBSD: x509_local.h,v 1.11 2023/11/01 20:37:42 tb Exp $ */ +/* $OpenBSD: x509_local.h,v 1.14 2023/12/22 13:31:35 tb Exp $ */ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project 2013. */ @@ -299,15 +299,7 @@ struct x509_store_st { /* Callbacks for various operations */ int (*verify)(X509_STORE_CTX *ctx); /* called to verify a certificate */ int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */ - int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */ int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */ - int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */ - int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */ - int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */ - int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */ - STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm); - STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm); - int (*cleanup)(X509_STORE_CTX *ctx); CRYPTO_EX_DATA ex_data; int references; @@ -344,14 +336,6 @@ struct x509_store_ctx_st { int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */ int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */ int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */ - int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */ - int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */ - int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */ - int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */ - int (*check_policy)(X509_STORE_CTX *ctx); - STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm); - STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm); - int (*cleanup)(X509_STORE_CTX *ctx); /* The following is built up */ int valid; /* if 0, rebuild chain */ diff --git a/lib/libcrypto/x509/x509_vfy.c b/lib/libcrypto/x509/x509_vfy.c index 2d4061cfd..d9b68109c 100644 --- a/lib/libcrypto/x509/x509_vfy.c +++ b/lib/libcrypto/x509/x509_vfy.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x509_vfy.c,v 1.127 2023/11/27 00:51:12 tb Exp $ */ +/* $OpenBSD: x509_vfy.c,v 1.135 2023/12/23 00:52:13 tb Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -116,16 +116,15 @@ #define CRL_SCORE_TIME_DELTA 0x002 +static int x509_vfy_check_crl(X509_STORE_CTX *ctx, X509_CRL *crl); +static int x509_vfy_cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); + static int null_callback(int ok, X509_STORE_CTX *e); static int check_issued(X509_STORE_CTX *ctx, X509 *subject, X509 *issuer); static X509 *find_issuer(X509_STORE_CTX *ctx, STACK_OF(X509) *sk, X509 *x, int allow_expired); -static int check_chain_extensions(X509_STORE_CTX *ctx); static int check_name_constraints(X509_STORE_CTX *ctx); -static int check_trust(X509_STORE_CTX *ctx); -static int check_revocation(X509_STORE_CTX *ctx); static int check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth); -static int check_policy(X509_STORE_CTX *ctx); static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer, unsigned int *preasons, X509_CRL *crl, X509 *x); @@ -144,7 +143,6 @@ static int X509_cmp_time_internal(const ASN1_TIME *ctm, time_t *cmp_time, int clamp_notafter); static int internal_verify(X509_STORE_CTX *ctx); -static int get_trusted_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); static int check_key_level(X509_STORE_CTX *ctx, X509 *cert); static int verify_cb_cert(X509_STORE_CTX *ctx, X509 *x, int depth, int err); @@ -177,7 +175,7 @@ check_id_error(X509_STORE_CTX *ctx, int errcode) } static int -check_hosts(X509 *x, X509_VERIFY_PARAM *vpm) +x509_vfy_check_hosts(X509 *x, X509_VERIFY_PARAM *vpm) { int i, n; char *name; @@ -195,13 +193,13 @@ check_hosts(X509 *x, X509_VERIFY_PARAM *vpm) return n == 0; } -static int -check_id(X509_STORE_CTX *ctx) +int +x509_vfy_check_id(X509_STORE_CTX *ctx) { X509_VERIFY_PARAM *vpm = ctx->param; X509 *x = ctx->cert; - if (vpm->hosts && check_hosts(x, vpm) <= 0) { + if (vpm->hosts && x509_vfy_check_hosts(x, vpm) <= 0) { if (!check_id_error(ctx, X509_V_ERR_HOSTNAME_MISMATCH)) return 0; } @@ -217,11 +215,6 @@ check_id(X509_STORE_CTX *ctx) return 1; } -int -x509_vfy_check_id(X509_STORE_CTX *ctx) { - return check_id(ctx); -} - /* * This is the effectively broken legacy OpenSSL chain builder. It * might find an unvalidated chain and leave it sitting in @@ -430,7 +423,7 @@ X509_verify_cert_legacy_build_chain(X509_STORE_CTX *ctx, int *bad, int *out_ok) } /* we now have our chain, lets check it... */ - trust = check_trust(ctx); + trust = x509_vfy_check_trust(ctx); /* If explicitly rejected error */ if (trust == X509_TRUST_REJECTED) { @@ -532,7 +525,7 @@ X509_verify_cert_legacy(X509_STORE_CTX *ctx) goto end; /* We have the chain complete: now we need to check its purpose */ - ok = check_chain_extensions(ctx); + ok = x509_vfy_check_chain_extensions(ctx); if (!ok) goto end; @@ -556,7 +549,7 @@ X509_verify_cert_legacy(X509_STORE_CTX *ctx) goto end; #endif - ok = check_id(ctx); + ok = x509_vfy_check_id(ctx); if (!ok) goto end; @@ -564,7 +557,7 @@ X509_verify_cert_legacy(X509_STORE_CTX *ctx) * Check revocation status: we do this after copying parameters because * they may be needed for CRL signature verification. */ - ok = ctx->check_revocation(ctx); + ok = x509_vfy_check_revocation(ctx); if (!ok) goto end; @@ -578,7 +571,7 @@ X509_verify_cert_legacy(X509_STORE_CTX *ctx) /* If we get this far evaluate policies */ if (!bad_chain) - ok = ctx->check_policy(ctx); + ok = x509_vfy_check_policy(ctx); end: /* Safety net, error returns must set ctx->error */ @@ -696,7 +689,7 @@ check_issued(X509_STORE_CTX *ctx, X509 *subject, X509 *issuer) /* Alternative lookup method: look from a STACK stored in ctx->trusted */ static int -get_trusted_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x) +x509_vfy_get_trusted_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x) { *issuer = find_issuer(ctx, ctx->trusted, x, 1); if (*issuer) { @@ -813,11 +806,6 @@ end: #endif } -static int -check_chain_extensions(X509_STORE_CTX *ctx) { - return x509_vfy_check_chain_extensions(ctx); -} - static int check_name_constraints(X509_STORE_CTX *ctx) { @@ -840,7 +828,7 @@ lookup_cert_match(X509_STORE_CTX *ctx, X509 *x) size_t i; /* Lookup all certs with matching subject name */ - certs = ctx->lookup_certs(ctx, X509_get_subject_name(x)); + certs = X509_STORE_CTX_get1_certs(ctx, X509_get_subject_name(x)); if (certs == NULL) return NULL; @@ -863,14 +851,13 @@ lookup_cert_match(X509_STORE_CTX *ctx, X509 *x) X509 * x509_vfy_lookup_cert_match(X509_STORE_CTX *ctx, X509 *x) { - if (ctx->lookup_certs == NULL || ctx->store == NULL || - ctx->store->objs == NULL) + if (ctx->store == NULL || ctx->store->objs == NULL) return NULL; return lookup_cert_match(ctx, x); } -static int -check_trust(X509_STORE_CTX *ctx) +int +x509_vfy_check_trust(X509_STORE_CTX *ctx) { size_t i; int ok; @@ -925,13 +912,7 @@ check_trust(X509_STORE_CTX *ctx) } int -x509_vfy_check_trust(X509_STORE_CTX *ctx) -{ - return check_trust(ctx); -} - -static int -check_revocation(X509_STORE_CTX *ctx) +x509_vfy_check_revocation(X509_STORE_CTX *ctx) { int i, last, ok; @@ -953,12 +934,6 @@ check_revocation(X509_STORE_CTX *ctx) return 1; } -int -x509_vfy_check_revocation(X509_STORE_CTX *ctx) -{ - return check_revocation(ctx); -} - static int check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth) { @@ -976,28 +951,22 @@ check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth) while (ctx->current_reasons != CRLDP_ALL_REASONS) { last_reasons = ctx->current_reasons; /* Try to retrieve relevant CRL */ - if (ctx->get_crl) - ok = ctx->get_crl(ctx, &crl, x); - else - ok = get_crl_delta(ctx, &crl, &dcrl, x); - /* If error looking up CRL, nothing we can do except - * notify callback - */ + ok = get_crl_delta(ctx, &crl, &dcrl, x); if (!ok) { ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL; ok = ctx->verify_cb(0, ctx); goto err; } ctx->current_crl = crl; - ok = ctx->check_crl(ctx, crl); + ok = x509_vfy_check_crl(ctx, crl); if (!ok) goto err; if (dcrl) { - ok = ctx->check_crl(ctx, dcrl); + ok = x509_vfy_check_crl(ctx, dcrl); if (!ok) goto err; - ok = ctx->cert_crl(ctx, dcrl, x); + ok = x509_vfy_cert_crl(ctx, dcrl, x); if (!ok) goto err; } else @@ -1005,7 +974,7 @@ check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth) /* Don't look in full CRL if delta reason is removefromCRL */ if (ok != 2) { - ok = ctx->cert_crl(ctx, crl, x); + ok = x509_vfy_cert_crl(ctx, crl, x); if (!ok) goto err; } @@ -1559,7 +1528,7 @@ get_crl_delta(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509_CRL **pdcrl, X509 *x) goto done; /* Lookup CRLs from store */ - skcrl = ctx->lookup_crls(ctx, nm); + skcrl = X509_STORE_CTX_get1_crls(ctx, nm); /* If no CRLs found and a near match from get_crl_sk use that */ if (!skcrl && crl) @@ -1586,7 +1555,7 @@ done: /* Check CRL validity */ static int -check_crl(X509_STORE_CTX *ctx, X509_CRL *crl) +x509_vfy_check_crl(X509_STORE_CTX *ctx, X509_CRL *crl) { X509 *issuer = NULL; EVP_PKEY *ikey = NULL; @@ -1689,7 +1658,7 @@ err: /* Check certificate against CRL */ static int -cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x) +x509_vfy_cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x) { int ok; X509_REVOKED *rev; @@ -1756,12 +1725,6 @@ x509_vfy_check_policy(X509_STORE_CTX *ctx) return 1; } -static int -check_policy(X509_STORE_CTX *ctx) -{ - return x509_vfy_check_policy(ctx); -} - /* * Inform the verify callback of an error. * @@ -2338,52 +2301,8 @@ X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *leaf, else ctx->verify_cb = null_callback; - if (store && store->get_issuer) - ctx->get_issuer = store->get_issuer; - else - ctx->get_issuer = X509_STORE_CTX_get1_issuer; - - if (store && store->check_issued) - ctx->check_issued = store->check_issued; - else - ctx->check_issued = check_issued; - - if (store && store->check_revocation) - ctx->check_revocation = store->check_revocation; - else - ctx->check_revocation = check_revocation; - - if (store && store->get_crl) - ctx->get_crl = store->get_crl; - else - ctx->get_crl = NULL; - - if (store && store->check_crl) - ctx->check_crl = store->check_crl; - else - ctx->check_crl = check_crl; - - if (store && store->cert_crl) - ctx->cert_crl = store->cert_crl; - else - ctx->cert_crl = cert_crl; - - ctx->check_policy = check_policy; - - if (store && store->lookup_certs) - ctx->lookup_certs = store->lookup_certs; - else - ctx->lookup_certs = X509_STORE_CTX_get1_certs; - - if (store && store->lookup_crls) - ctx->lookup_crls = store->lookup_crls; - else - ctx->lookup_crls = X509_STORE_CTX_get1_crls; - - if (store && store->cleanup) - ctx->cleanup = store->cleanup; - else - ctx->cleanup = NULL; + ctx->get_issuer = X509_STORE_CTX_get1_issuer; + ctx->check_issued = check_issued; ctx->param = X509_VERIFY_PARAM_new(); if (!ctx->param) { @@ -2432,15 +2351,13 @@ void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *trusted) { ctx->trusted = trusted; - ctx->get_issuer = get_trusted_issuer; + ctx->get_issuer = x509_vfy_get_trusted_issuer; } LCRYPTO_ALIAS(X509_STORE_CTX_set0_trusted_stack); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx) { - if (ctx->cleanup) - ctx->cleanup(ctx); if (ctx->param != NULL) { if (ctx->parent == NULL) X509_VERIFY_PARAM_free(ctx->param); diff --git a/regress/usr.bin/xargs/xargs-L.sh b/regress/usr.bin/xargs/xargs-L.sh index 50477de3f..7f4a32970 100755 --- a/regress/usr.bin/xargs/xargs-L.sh +++ b/regress/usr.bin/xargs/xargs-L.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# $OpenBSD: xargs-L.sh,v 1.3 2017/10/16 13:48:22 anton Exp $ +# $OpenBSD: xargs-L.sh,v 1.4 2023/12/22 17:12:13 millert Exp $ # # written by Ingo Schwarze 2010 # and placed in the public domain @@ -97,3 +97,11 @@ test_xargs 'a\n\\\nb\0c' '-0 -L 1' 'a\n\\\nb|\nc|' test_xargs 'a \\\nb\0c' '-0 -L 1' 'a \\\nb|\nc|' test_xargs 'a\\\n b\0c' '-0 -L 1' 'a\\\n b|\nc|' test_xargs 'a \\\n b\0c' '-0 -L 1' 'a \\\n b|\nc|' + +test_xargs 'a' '-0 -L 1' 'a|\n' +test_xargs 'a\0' '-0 -L 1' 'a|\n' +test_xargs 'a\0\0' '-0 -L 1' 'a|\n|\n' +test_xargs 'a\0\0b' '-0 -L 2' 'a||\nb|' +test_xargs 'a\0\0b' '-0 -L 1' 'a|\n|\nb|' +test_xargs 'a\0\0b' '-0 -L 3' 'a||b|' +test_xargs 'a\0\0b' '-0 -L 9' 'a||b|' diff --git a/share/man/man4/abcrtc.4 b/share/man/man4/abcrtc.4 index f6f36e90e..53b64415d 100644 --- a/share/man/man4/abcrtc.4 +++ b/share/man/man4/abcrtc.4 @@ -1,7 +1,7 @@ -.\" $OpenBSD: abcrtc.4,v 1.2 2019/01/11 20:39:46 jmc Exp $ +.\" $OpenBSD: abcrtc.4,v 1.3 2023/12/23 02:42:51 jsg Exp $ .\" .\" Copyright (c) 2006 Theo de Raadt -.\" Copyright (c) 2018 Mark Kettenis +.\" Copyright (c) 2018 Mark Kettenis .\" Copyright (c) 2018 Patrick Wildt .\" .\" Permission to use, copy, modify, and distribute this software for any @@ -16,7 +16,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: January 11 2019 $ +.Dd $Mdocdate: December 23 2023 $ .Dt ABCRTC 4 .Os .Sh NAME diff --git a/share/man/man5/python-module.5 b/share/man/man5/python-module.5 index 3505b0a27..67d8435b5 100644 --- a/share/man/man5/python-module.5 +++ b/share/man/man5/python-module.5 @@ -1,4 +1,4 @@ -.\" $OpenBSD: python-module.5,v 1.8 2023/12/20 13:30:51 sthen Exp $ +.\" $OpenBSD: python-module.5,v 1.9 2023/12/22 12:51:53 sthen Exp $ .\" .\" Copyright (c) 2008 Marc Espie .\" @@ -24,7 +24,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd $Mdocdate: December 20 2023 $ +.Dd $Mdocdate: December 22 2023 $ .Dt PYTHON-MODULE 5 .Os .Sh NAME @@ -113,8 +113,8 @@ If the port provides a .Pa pyproject.toml file, check the "build-backend" line in the [build-system] section. .Nm -currently supports flit_core, hatchling, hatch-vcs, poetry-core, setuptools -and setuptools_scm. +currently supports flit_core, hatchling, hatch-vcs, jupyter_packaging, +poetry-core, setuptools and setuptools_scm. If no .Pa pyproject.toml is provided then it probably uses setuptools. diff --git a/sys/dev/pci/drm/drm_linux.c b/sys/dev/pci/drm/drm_linux.c index 26d40fe6d..005bf0039 100644 --- a/sys/dev/pci/drm/drm_linux.c +++ b/sys/dev/pci/drm/drm_linux.c @@ -1,4 +1,4 @@ -/* $OpenBSD: drm_linux.c,v 1.104 2023/10/20 03:38:58 jsg Exp $ */ +/* $OpenBSD: drm_linux.c,v 1.105 2023/12/23 14:18:27 kettenis Exp $ */ /* * Copyright (c) 2013 Jonathan Gray * Copyright (c) 2015, 2016 Mark Kettenis @@ -1501,6 +1501,9 @@ acpi_format_exception(acpi_status status) #endif +SLIST_HEAD(,backlight_device) backlight_device_list = + SLIST_HEAD_INITIALIZER(backlight_device_list); + void backlight_do_update_status(void *arg) { @@ -1509,7 +1512,7 @@ backlight_do_update_status(void *arg) struct backlight_device * backlight_device_register(const char *name, void *kdev, void *data, - const struct backlight_ops *ops, struct backlight_properties *props) + const struct backlight_ops *ops, const struct backlight_properties *props) { struct backlight_device *bd; @@ -1520,31 +1523,26 @@ backlight_device_register(const char *name, void *kdev, void *data, task_set(&bd->task, backlight_do_update_status, bd); + SLIST_INSERT_HEAD(&backlight_device_list, bd, next); + bd->name = name; + return bd; } void backlight_device_unregister(struct backlight_device *bd) { + SLIST_REMOVE(&backlight_device_list, bd, backlight_device, next); free(bd, M_DRM, sizeof(*bd)); } -struct backlight_device * -devm_backlight_device_register(void *dev, const char *name, void *parent, - void *data, const struct backlight_ops *bo, - const struct backlight_properties *bp) -{ - STUB(); - return NULL; -} - void backlight_schedule_update_status(struct backlight_device *bd) { task_add(systq, &bd->task); } -inline int +int backlight_enable(struct backlight_device *bd) { if (bd == NULL) @@ -1555,7 +1553,7 @@ backlight_enable(struct backlight_device *bd) return bd->ops->update_status(bd); } -inline int +int backlight_disable(struct backlight_device *bd) { if (bd == NULL) @@ -1566,6 +1564,62 @@ backlight_disable(struct backlight_device *bd) return bd->ops->update_status(bd); } +struct backlight_device * +backlight_device_get_by_name(const char *name) +{ + struct backlight_device *bd; + + SLIST_FOREACH(bd, &backlight_device_list, next) { + if (strcmp(name, bd->name) == 0) + return bd; + } + + return NULL; +} + +struct drvdata { + struct device *dev; + void *data; + SLIST_ENTRY(drvdata) next; +}; + +SLIST_HEAD(,drvdata) drvdata_list = SLIST_HEAD_INITIALIZER(drvdata_list); + +void +dev_set_drvdata(struct device *dev, void *data) +{ + struct drvdata *drvdata; + + SLIST_FOREACH(drvdata, &drvdata_list, next) { + if (drvdata->dev == dev) { + drvdata->data = data; + return; + } + } + + if (data == NULL) + return; + + drvdata = malloc(sizeof(*drvdata), M_DRM, M_WAITOK); + drvdata->dev = dev; + drvdata->data = data; + + SLIST_INSERT_HEAD(&drvdata_list, drvdata, next); +} + +void * +dev_get_drvdata(struct device *dev) +{ + struct drvdata *drvdata; + + SLIST_FOREACH(drvdata, &drvdata_list, next) { + if (drvdata->dev == dev) + return drvdata->data; + } + + return NULL; +} + void drm_sysfs_hotplug_event(struct drm_device *dev) { diff --git a/sys/dev/pci/drm/include/drm/drm_file.h b/sys/dev/pci/drm/include/drm/drm_file.h index 3adb34af4..1eaa4db6f 100644 --- a/sys/dev/pci/drm/include/drm/drm_file.h +++ b/sys/dev/pci/drm/include/drm/drm_file.h @@ -73,9 +73,7 @@ struct drm_minor { /* private: */ int index; /* Minor device number */ int type; /* Control or render */ -#ifdef __linux__ struct device *kdev; /* Linux device */ -#endif struct drm_device *dev; struct dentry *debugfs_root; diff --git a/sys/dev/pci/drm/include/linux/backlight.h b/sys/dev/pci/drm/include/linux/backlight.h index a6951c70b..1420c9df0 100644 --- a/sys/dev/pci/drm/include/linux/backlight.h +++ b/sys/dev/pci/drm/include/linux/backlight.h @@ -11,24 +11,32 @@ struct device; struct backlight_properties { int type; +#define BACKLIGHT_RAW 0 +#define BACKLIGHT_FIRMWARE 1 +#define BACKLIGHT_PLATFORM 2 int max_brightness; int brightness; int power; + int scale; +#define BACKLIGHT_SCALE_LINEAR 0 + int state; +#define BL_CORE_SUSPENDED 0x00000001 }; struct backlight_ops { int options; +#define BL_CORE_SUSPENDRESUME 0x00000001 int (*update_status)(struct backlight_device *); int (*get_brightness)(struct backlight_device *); }; -#define BL_CORE_SUSPENDRESUME 1 - struct backlight_device { const struct backlight_ops *ops; struct backlight_properties props; struct task task; void *data; + SLIST_ENTRY(backlight_device) next; + const char *name; }; static inline void * @@ -37,18 +45,25 @@ bl_get_data(struct backlight_device *bd) return bd->data; } -#define BACKLIGHT_RAW 0 -#define BACKLIGHT_FIRMWARE 1 +static inline int +backlight_get_brightness(struct backlight_device *bd) +{ + return bd->props.brightness; +} #define BACKLIGHT_UPDATE_HOTKEY 0 struct backlight_device *backlight_device_register(const char *, void *, - void *, const struct backlight_ops *, struct backlight_properties *); + void *, const struct backlight_ops *, const struct backlight_properties *); void backlight_device_unregister(struct backlight_device *); -struct backlight_device *devm_backlight_device_register(void *, const char *, - void *, void *, const struct backlight_ops *, - const struct backlight_properties *); +static inline struct backlight_device * +devm_backlight_device_register(void *dev, const char *name, void *parent, + void *data, const struct backlight_ops *bo, + const struct backlight_properties *bp) +{ + return backlight_device_register(name, dev, data, bo, bp); +} static inline void backlight_update_status(struct backlight_device *bd) @@ -82,10 +97,6 @@ devm_of_find_backlight(struct device *dev) return NULL; } -static inline struct backlight_device * -backlight_device_get_by_name(const char *name) -{ - return NULL; -} +struct backlight_device *backlight_device_get_by_name(const char *); #endif diff --git a/sys/dev/pci/drm/include/linux/device.h b/sys/dev/pci/drm/include/linux/device.h index ba1e269a7..c72b33b33 100644 --- a/sys/dev/pci/drm/include/linux/device.h +++ b/sys/dev/pci/drm/include/linux/device.h @@ -16,6 +16,9 @@ struct device_node; +struct bus_type { +}; + struct device_driver { struct device *dev; }; @@ -33,12 +36,13 @@ struct device_attribute { #define device_create_file(a, b) 0 #define device_remove_file(a, b) -#define dev_get_drvdata(x) NULL -#define dev_set_drvdata(x, y) +void *dev_get_drvdata(struct device *); +void dev_set_drvdata(struct device *, void *); #define dev_pm_set_driver_flags(x, y) #define devm_kzalloc(x, y, z) kzalloc(y, z) +#define devm_kfree(x, y) kfree(y) #define dev_warn(dev, fmt, arg...) \ printf("drm:pid%d:%s *WARNING* " fmt, curproc->p_p->ps_pid, \ @@ -78,6 +82,10 @@ struct device_attribute { #define dev_err_once(dev, fmt, arg...) \ printf("drm:pid%d:%s *ERROR* " fmt, curproc->p_p->ps_pid, \ __func__ , ## arg) + +#define dev_err_probe(dev, err, fmt, arg...) \ + printf("drm:pid%d:%s *ERROR* " fmt, curproc->p_p->ps_pid, \ + __func__ , ## arg), err #ifdef DRMDEBUG #define dev_info(dev, fmt, arg...) \ diff --git a/sys/dev/pci/drm/include/linux/io.h b/sys/dev/pci/drm/include/linux/io.h index 201772580..70cecf5ac 100644 --- a/sys/dev/pci/drm/include/linux/io.h +++ b/sys/dev/pci/drm/include/linux/io.h @@ -169,6 +169,9 @@ iowrite64(u64 val, volatile void __iomem *addr) #define readq(p) ioread64(p) #define writeq(v, p) iowrite64(v, p) +#define readl_relaxed(p) readl(p) +#define writel_relaxed(v, p) writel(v, p) + int drm_mtrr_add(unsigned long, size_t, int); int drm_mtrr_del(int, unsigned long, size_t, int); diff --git a/sys/dev/pci/drm/include/linux/ioport.h b/sys/dev/pci/drm/include/linux/ioport.h index 6176300c5..912fa0017 100644 --- a/sys/dev/pci/drm/include/linux/ioport.h +++ b/sys/dev/pci/drm/include/linux/ioport.h @@ -5,6 +5,8 @@ #include +#define IORESOURCE_MEM 0x0001 + struct resource { u_long start; u_long end; diff --git a/sys/dev/pci/drm/include/linux/jiffies.h b/sys/dev/pci/drm/include/linux/jiffies.h index 8278b761a..09dc53cb6 100644 --- a/sys/dev/pci/drm/include/linux/jiffies.h +++ b/sys/dev/pci/drm/include/linux/jiffies.h @@ -40,7 +40,12 @@ jiffies_to_nsecs(const unsigned long x) #define usecs_to_jiffies(x) (((uint64_t)(x)) * hz / 1000000) #define nsecs_to_jiffies(x) (((uint64_t)(x)) * hz / 1000000000) #define nsecs_to_jiffies64(x) (((uint64_t)(x)) * hz / 1000000000) -#define get_jiffies_64() jiffies + +static inline uint64_t +get_jiffies_64(void) +{ + return jiffies; +} static inline int time_after(const unsigned long a, const unsigned long b) @@ -55,6 +60,12 @@ time_after_eq(const unsigned long a, const unsigned long b) return((long)(b - a) <= 0); } +static inline int +time_after_eq64(const unsigned long long a, const unsigned long long b) +{ + return((long long)(b - a) <= 0); +} + #define time_after32(a,b) ((int32_t)((uint32_t)(b) - (uint32_t)(a)) < 0) #endif diff --git a/sys/dev/pci/drm/include/linux/kernel.h b/sys/dev/pci/drm/include/linux/kernel.h index 66aaa8dc8..3f385be16 100644 --- a/sys/dev/pci/drm/include/linux/kernel.h +++ b/sys/dev/pci/drm/include/linux/kernel.h @@ -149,4 +149,6 @@ _in_dbg_master(void) #define STUB() do { printf("%s: stub\n", __func__); } while(0) +#define CONCATENATE(x, y) __CONCAT(x, y) + #endif diff --git a/sys/dev/pci/drm/include/linux/pci.h b/sys/dev/pci/drm/include/linux/pci.h index 614d5d03b..e8530383a 100644 --- a/sys/dev/pci/drm/include/linux/pci.h +++ b/sys/dev/pci/drm/include/linux/pci.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci.h,v 1.14 2023/09/13 12:31:49 jsg Exp $ */ +/* $OpenBSD: pci.h,v 1.15 2023/12/23 14:18:27 kettenis Exp $ */ /* * Copyright (c) 2015 Mark Kettenis * @@ -482,6 +482,14 @@ pci_set_power_state(struct pci_dev *dev, int state) return 0; } +struct pci_driver; + +static inline int +pci_register_driver(struct pci_driver *pci_drv) +{ + return 0; +} + static inline void pci_unregister_driver(void *d) { diff --git a/sys/dev/pci/drm/include/linux/types.h b/sys/dev/pci/drm/include/linux/types.h index de79e778b..73dc0dc6a 100644 --- a/sys/dev/pci/drm/include/linux/types.h +++ b/sys/dev/pci/drm/include/linux/types.h @@ -37,7 +37,7 @@ typedef uint32_t __be32; typedef uint64_t __le64; typedef uint64_t __be64; -typedef bus_addr_t dma_addr_t; +typedef uint64_t dma_addr_t; typedef paddr_t phys_addr_t; typedef paddr_t resource_size_t; diff --git a/sys/dev/pci/if_rge.c b/sys/dev/pci/if_rge.c index 7f43056e4..08aecaeca 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 + * Copyright (c) 2019, 2020, 2023 Kevin Lo * * 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 }; @@ -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; @@ -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,38 +741,66 @@ 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); + /* Program promiscuous mode and multicast filters. */ + rge_iff(sc); + + 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); - /* 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_CLRBIT_1(sc, RGE_EECMD, RGE_EECMD_WRITECFG); - /* 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); @@ -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]; - - if (RGE_OWN(cur_rx)) - 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); + if (rxstat & RGE_RDCMDSTS_OWN) + break; + + total_len = rxstat & RGE_RDCMDSTS_FRAGLEN; rxq = &q->q_rx.rge_rxq[i]; m = rxq->rxq_mbuf; rxq->rxq_mbuf = NULL; @@ -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) @@ -1460,6 +1481,15 @@ rge_iff(struct rge_softc *sc) RGE_WRITE_4(sc, RGE_MAR4, swap32(hashes[0])); } +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) { @@ -1483,142 +1513,26 @@ rge_set_phy_power(struct rge_softc *sc, int on) } void -rge_phy_config(struct rge_softc *sc) +rge_ephy_config(struct rge_softc *sc) { - /* 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); + rge_ephy_config_mac_cfg3(sc); break; case MAC_CFG5: - rge_phy_config_mac_cfg5(sc); + rge_ephy_config_mac_cfg5(sc); break; default: break; /* Can't happen. */ } - - rge_write_phy(sc, 0x0a5b, 0x12, - rge_read_phy(sc, 0x0a5b, 0x12) & ~0x8000); - - /* Disable EEE. */ - RGE_MAC_CLRBIT(sc, 0xe040, 0x0003); - if (sc->rge_type == MAC_CFG2 || sc->rge_type == MAC_CFG3) { - RGE_MAC_CLRBIT(sc, 0xeb62, 0x0006); - RGE_PHY_CLRBIT(sc, 0xa432, 0x0010); - } - RGE_PHY_CLRBIT(sc, 0xa5d0, 0x0006); - RGE_PHY_CLRBIT(sc, 0xa6d4, 0x0001); - RGE_PHY_CLRBIT(sc, 0xa6d8, 0x0010); - RGE_PHY_CLRBIT(sc, 0xa428, 0x0080); - RGE_PHY_CLRBIT(sc, 0xa4a2, 0x0200); - - 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) +rge_ephy_config_mac_cfg3(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); -} - -void -rge_phy_config_mac_cfg3(struct rge_softc *sc) -{ - uint16_t val; - int i; - static const uint16_t mac_cfg3_a438_value[] = - { 0x0043, 0x00a7, 0x00d6, 0x00ec, 0x00f6, 0x00fb, 0x00fd, 0x00ff, - 0x00bb, 0x0058, 0x0029, 0x0013, 0x0009, 0x0004, 0x0002 }; - - static const uint16_t mac_cfg3_b88e_value[] = - { 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); @@ -1637,6 +1551,100 @@ rge_phy_config_mac_cfg3(struct rge_softc *sc) 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_CFG3: + rge_phy_config_mac_cfg3(sc); + break; + case MAC_CFG5: + rge_phy_config_mac_cfg5(sc); + break; + default: + break; /* Can't happen. */ + } + + RGE_PHY_CLRBIT(sc, 0xa5b4, 0x8000); + + /* Disable EEE. */ + RGE_MAC_CLRBIT(sc, 0xe040, 0x0003); + if (sc->rge_type == MAC_CFG3) { + RGE_MAC_CLRBIT(sc, 0xeb62, 0x0006); + RGE_PHY_CLRBIT(sc, 0xa432, 0x0010); + } + RGE_PHY_CLRBIT(sc, 0xa5d0, 0x0006); + RGE_PHY_CLRBIT(sc, 0xa6d4, 0x0001); + RGE_PHY_CLRBIT(sc, 0xa6d8, 0x0010); + 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); + + return (0); +} + +void +rge_phy_config_mac_cfg3(struct rge_softc *sc) +{ + uint16_t val; + int i; + static const uint16_t mac_cfg3_a438_value[] = + { 0x0043, 0x00a7, 0x00d6, 0x00ec, 0x00f6, 0x00fb, 0x00fd, 0x00ff, + 0x00bb, 0x0058, 0x0029, 0x0013, 0x0009, 0x0004, 0x0002 }; + + static const uint16_t mac_cfg3_b88e_value[] = + { 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 }; rge_phy_config_mcu(sc, RGE_MAC_CFG3_MCODE_VER); @@ -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 @@ -2123,6 +1969,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) { @@ -2166,6 +2021,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) { @@ -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 fdca231cf..2775e2c11 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 @@ -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 @@ -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 } diff --git a/sys/net/if.c b/sys/net/if.c index 5c8641ebd..ff8042acb 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if.c,v 1.711 2023/11/11 14:24:03 bluhm Exp $ */ +/* $OpenBSD: if.c,v 1.713 2023/12/23 10:52:54 bluhm Exp $ */ /* $NetBSD: if.c,v 1.35 1996/05/07 05:26:04 thorpej Exp $ */ /* diff --git a/sys/net/if_aggr.c b/sys/net/if_aggr.c index 5240643d9..8e961b423 100644 --- a/sys/net/if_aggr.c +++ b/sys/net/if_aggr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_aggr.c,v 1.40 2023/05/16 14:32:54 jan Exp $ */ +/* $OpenBSD: if_aggr.c,v 1.42 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2019 The University of Queensland diff --git a/sys/net/if_bpe.c b/sys/net/if_bpe.c index ec3c758f7..cee69c910 100644 --- a/sys/net/if_bpe.c +++ b/sys/net/if_bpe.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_bpe.c,v 1.20 2023/10/27 20:56:47 jan Exp $ */ +/* $OpenBSD: if_bpe.c,v 1.22 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2018 David Gwynne * diff --git a/sys/net/if_etherip.c b/sys/net/if_etherip.c index f0d30b41a..6db68266e 100644 --- a/sys/net/if_etherip.c +++ b/sys/net/if_etherip.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_etherip.c,v 1.52 2023/11/28 13:23:20 bluhm Exp $ */ +/* $OpenBSD: if_etherip.c,v 1.54 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2015 Kazuya GODA * diff --git a/sys/net/if_gif.c b/sys/net/if_gif.c index 250dbe65b..884d26a37 100644 --- a/sys/net/if_gif.c +++ b/sys/net/if_gif.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_gif.c,v 1.134 2023/11/28 13:23:20 bluhm Exp $ */ +/* $OpenBSD: if_gif.c,v 1.136 2023/12/23 10:52:54 bluhm Exp $ */ /* $KAME: if_gif.c,v 1.43 2001/02/20 08:51:07 itojun Exp $ */ /* diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index 830e5c143..94f3d89c5 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_gre.c,v 1.176 2023/11/28 13:23:20 bluhm Exp $ */ +/* $OpenBSD: if_gre.c,v 1.178 2023/12/23 10:52:54 bluhm Exp $ */ /* $NetBSD: if_gre.c,v 1.9 1999/10/25 19:18:11 drochner Exp $ */ /* diff --git a/sys/net/if_mpe.c b/sys/net/if_mpe.c index 7b84d24d5..a72347b4c 100644 --- a/sys/net/if_mpe.c +++ b/sys/net/if_mpe.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_mpe.c,v 1.102 2022/08/29 07:51:45 bluhm Exp $ */ +/* $OpenBSD: if_mpe.c,v 1.104 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2008 Pierre-Yves Ritschard diff --git a/sys/net/if_mpip.c b/sys/net/if_mpip.c index 4fefa7580..8daac9346 100644 --- a/sys/net/if_mpip.c +++ b/sys/net/if_mpip.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_mpip.c,v 1.16 2022/08/29 07:51:45 bluhm Exp $ */ +/* $OpenBSD: if_mpip.c,v 1.18 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2015 Rafael Zalamena diff --git a/sys/net/if_mpw.c b/sys/net/if_mpw.c index 2106c3e68..934a757bb 100644 --- a/sys/net/if_mpw.c +++ b/sys/net/if_mpw.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_mpw.c,v 1.63 2022/08/29 07:51:45 bluhm Exp $ */ +/* $OpenBSD: if_mpw.c,v 1.65 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2015 Rafael Zalamena diff --git a/sys/net/if_pflow.c b/sys/net/if_pflow.c index 7bc9e7054..09a2689ca 100644 --- a/sys/net/if_pflow.c +++ b/sys/net/if_pflow.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_pflow.c,v 1.107 2023/12/19 20:34:10 mvs Exp $ */ +/* $OpenBSD: if_pflow.c,v 1.109 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2011 Florian Obser diff --git a/sys/net/if_pfsync.c b/sys/net/if_pfsync.c index 4f3875f20..0f328bec6 100644 --- a/sys/net/if_pfsync.c +++ b/sys/net/if_pfsync.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_pfsync.c,v 1.322 2023/10/03 10:22:10 sthen Exp $ */ +/* $OpenBSD: if_pfsync.c,v 1.324 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2002 Michael Shalayeff diff --git a/sys/net/if_pppx.c b/sys/net/if_pppx.c index 395394275..e875e78c9 100644 --- a/sys/net/if_pppx.c +++ b/sys/net/if_pppx.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_pppx.c,v 1.126 2023/02/10 14:34:17 visa Exp $ */ +/* $OpenBSD: if_pppx.c,v 1.128 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2010 Claudio Jeker diff --git a/sys/net/if_sec.c b/sys/net/if_sec.c index 4c65efe36..99e79b568 100644 --- a/sys/net/if_sec.c +++ b/sys/net/if_sec.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_sec.c,v 1.7 2023/08/15 09:46:30 dlg Exp $ */ +/* $OpenBSD: if_sec.c,v 1.9 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2022 The University of Queensland diff --git a/sys/net/if_tpmr.c b/sys/net/if_tpmr.c index 47bb4e5ca..11f5634ac 100644 --- a/sys/net/if_tpmr.c +++ b/sys/net/if_tpmr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_tpmr.c,v 1.33 2023/05/16 14:32:54 jan Exp $ */ +/* $OpenBSD: if_tpmr.c,v 1.35 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2019 The University of Queensland diff --git a/sys/net/if_trunk.c b/sys/net/if_trunk.c index c61f4ac1d..2d04043b1 100644 --- a/sys/net/if_trunk.c +++ b/sys/net/if_trunk.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_trunk.c,v 1.152 2021/08/02 21:10:55 mvs Exp $ */ +/* $OpenBSD: if_trunk.c,v 1.154 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2005, 2006, 2007 Reyk Floeter diff --git a/sys/net/if_tun.c b/sys/net/if_tun.c index b29745939..246a30096 100644 --- a/sys/net/if_tun.c +++ b/sys/net/if_tun.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_tun.c,v 1.238 2023/02/10 14:39:18 visa Exp $ */ +/* $OpenBSD: if_tun.c,v 1.240 2023/12/23 10:52:54 bluhm Exp $ */ /* $NetBSD: if_tun.c,v 1.24 1996/05/07 02:40:48 thorpej Exp $ */ /* diff --git a/sys/net/if_var.h b/sys/net/if_var.h index 7eb59a85b..db48e5ff7 100644 --- a/sys/net/if_var.h +++ b/sys/net/if_var.h @@ -1,4 +1,4 @@ -/* $OpenBSD: if_var.h,v 1.130 2023/11/11 14:24:03 bluhm Exp $ */ +/* $OpenBSD: if_var.h,v 1.132 2023/12/23 10:52:54 bluhm Exp $ */ /* $NetBSD: if.h,v 1.23 1996/05/07 02:40:27 thorpej Exp $ */ /* diff --git a/sys/net/if_veb.c b/sys/net/if_veb.c index cbdc3fb7d..e6cdf6bbe 100644 --- a/sys/net/if_veb.c +++ b/sys/net/if_veb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_veb.c,v 1.32 2023/11/23 23:45:10 dlg Exp $ */ +/* $OpenBSD: if_veb.c,v 1.34 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2021 David Gwynne diff --git a/sys/net/if_vlan.c b/sys/net/if_vlan.c index efcdac41f..9915a9439 100644 --- a/sys/net/if_vlan.c +++ b/sys/net/if_vlan.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_vlan.c,v 1.216 2023/10/27 20:56:47 jan Exp $ */ +/* $OpenBSD: if_vlan.c,v 1.218 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright 1998 Massachusetts Institute of Technology diff --git a/sys/net/if_vxlan.c b/sys/net/if_vxlan.c index 210739af3..ec9339deb 100644 --- a/sys/net/if_vxlan.c +++ b/sys/net/if_vxlan.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_vxlan.c,v 1.97 2023/11/29 18:46:37 denis Exp $ */ +/* $OpenBSD: if_vxlan.c,v 1.99 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2021 David Gwynne diff --git a/sys/net/if_wg.c b/sys/net/if_wg.c index d3530cee9..01a0e9c61 100644 --- a/sys/net/if_wg.c +++ b/sys/net/if_wg.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_wg.c,v 1.32 2023/10/23 10:22:05 mvs Exp $ */ +/* $OpenBSD: if_wg.c,v 1.34 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (C) 2015-2020 Jason A. Donenfeld . All Rights Reserved. diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c index 9aae24d5d..f2aee3e42 100644 --- a/sys/netinet/ip_carp.c +++ b/sys/netinet/ip_carp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ip_carp.c,v 1.358 2023/09/16 09:33:27 mpi Exp $ */ +/* $OpenBSD: ip_carp.c,v 1.360 2023/12/23 10:52:54 bluhm Exp $ */ /* * Copyright (c) 2002 Michael Shalayeff. All rights reserved. diff --git a/usr.bin/xargs/xargs.c b/usr.bin/xargs/xargs.c index ff17caaf4..38d14850e 100644 --- a/usr.bin/xargs/xargs.c +++ b/usr.bin/xargs/xargs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: xargs.c,v 1.36 2022/12/04 23:50:50 cheloha Exp $ */ +/* $OpenBSD: xargs.c,v 1.38 2023/12/23 15:58:58 millert Exp $ */ /* $FreeBSD: xargs.c,v 1.51 2003/05/03 19:09:11 obrien Exp $ */ /*- @@ -296,8 +296,12 @@ arg2: foundeof = *eofstr != '\0' && strcmp(argp, eofstr) == 0; - /* Do not make empty args unless they are quoted */ - if ((argp != p || wasquoted) && !foundeof) { + /* + * Do not make empty args unless they are quoted or + * we are run as "find -0" and not at EOF. + */ + if (((zflag && ch != EOF) || argp != p || wasquoted) && + !foundeof) { *p++ = '\0'; *xp++ = argp; if (Iflag) { diff --git a/usr.sbin/smtpd/smtp_session.c b/usr.sbin/smtpd/smtp_session.c index 2e34f036a..f0ede5489 100644 --- a/usr.sbin/smtpd/smtp_session.c +++ b/usr.sbin/smtpd/smtp_session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: smtp_session.c,v 1.437 2023/11/03 13:38:28 op Exp $ */ +/* $OpenBSD: smtp_session.c,v 1.438 2023/12/23 10:29:05 op Exp $ */ /* * Copyright (c) 2008 Gilles Chehade diff --git a/usr.sbin/snmpd/snmpd.c b/usr.sbin/snmpd/snmpd.c index 689a2a331..8c2a87be7 100644 --- a/usr.sbin/snmpd/snmpd.c +++ b/usr.sbin/snmpd/snmpd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: snmpd.c,v 1.49 2023/12/21 12:43:31 martijn Exp $ */ +/* $OpenBSD: snmpd.c,v 1.50 2023/12/22 13:04:30 martijn Exp $ */ /* * Copyright (c) 2007, 2008, 2012 Reyk Floeter @@ -192,6 +192,8 @@ main(int argc, char *argv[]) if (argc > 0) usage(); + log_setverbose(verbose); + if ((env = parse_config(conffile, flags)) == NULL) exit(1); diff --git a/usr.sbin/snmpd/usm.c b/usr.sbin/snmpd/usm.c index 215388254..93324b557 100644 --- a/usr.sbin/snmpd/usm.c +++ b/usr.sbin/snmpd/usm.c @@ -1,4 +1,4 @@ -/* $OpenBSD: usm.c,v 1.29 2023/12/21 12:43:31 martijn Exp $ */ +/* $OpenBSD: usm.c,v 1.30 2023/12/22 13:03:16 martijn Exp $ */ /* * Copyright (c) 2012 GeNUA mbH @@ -208,8 +208,6 @@ usm_finduser(char *name) int usm_checkuser(struct usmuser *up, const char **errp) { - char *auth = NULL, *priv = NULL; - if (up->uu_auth != AUTH_NONE && up->uu_authkey == NULL) { *errp = "missing auth passphrase"; goto fail; @@ -230,45 +228,26 @@ usm_checkuser(struct usmuser *up, const char **errp) switch (up->uu_auth) { case AUTH_NONE: - auth = "none"; break; case AUTH_MD5: - up->uu_seclevel |= SNMP_MSGFLAG_AUTH; - auth = "HMAC-MD5-96"; - break; case AUTH_SHA1: - up->uu_seclevel |= SNMP_MSGFLAG_AUTH; - auth = "HMAC-SHA1-96"; - break; case AUTH_SHA224: - up->uu_seclevel |= SNMP_MSGFLAG_AUTH; - auth = "usmHMAC128SHA224AuthProtocol"; case AUTH_SHA256: - up->uu_seclevel |= SNMP_MSGFLAG_AUTH; - auth = "usmHMAC192SHA256AuthProtocol"; case AUTH_SHA384: - up->uu_seclevel |= SNMP_MSGFLAG_AUTH; - auth = "usmHMAC256SHA384AuthProtocol"; case AUTH_SHA512: up->uu_seclevel |= SNMP_MSGFLAG_AUTH; - auth = "usmHMAC384SHA512AuthProtocol"; + break; } switch (up->uu_priv) { case PRIV_NONE: - priv = "none"; break; case PRIV_DES: - up->uu_seclevel |= SNMP_MSGFLAG_PRIV; - priv = "CBC-DES"; - break; case PRIV_AES: up->uu_seclevel |= SNMP_MSGFLAG_PRIV; - priv = "CFB128-AES-128"; break; } - log_debug("user \"%s\" auth %s enc %s", up->uu_name, auth, priv); return 0; fail: