From: kernel test robot <lkp@intel.com>
To: Stanislav Kinsburskii <stanislav.kinsburskii@gmail.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
Michael Ellerman <mpe@ellerman.id.au>,
Linus Walleij <linus.walleij@linaro.org>
Subject: drivers/net/ethernet/freescale/ucc_geth.c:2454:64: sparse: sparse: incorrect type in argument 1 (different address spaces)
Date: Wed, 30 Oct 2024 15:04:24 +0800 [thread overview]
Message-ID: <202410301531.7Vr9UkCn-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: c1e939a21eb111a6d6067b38e8e04b8809b64c4e
commit: b28d1ccf921a4333be14017d82066386d419e638 powerpc/io: Expect immutable pointer in virt_to_phys() prototype
date: 1 year ago
config: powerpc-randconfig-r122-20241029 (https://download.01.org/0day-ci/archive/20241030/202410301531.7Vr9UkCn-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 14.1.0
reproduce: (https://download.01.org/0day-ci/archive/20241030/202410301531.7Vr9UkCn-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410301531.7Vr9UkCn-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
drivers/net/ethernet/freescale/ucc_geth.c:244:21: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:405:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:405:22: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:405:22: sparse: got restricted __be16 [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:406:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:406:22: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:406:22: sparse: got restricted __be16 [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:407:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short volatile [noderef] [usertype] __iomem *addr @@ got restricted __be16 [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:407:22: sparse: expected unsigned short volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:407:22: sparse: got restricted __be16 [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:449:23: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected restricted __be16 [noderef] [usertype] __iomem *reg @@ got unsigned short [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:449:23: sparse: expected restricted __be16 [noderef] [usertype] __iomem *reg
drivers/net/ethernet/freescale/ucc_geth.c:449:23: sparse: got unsigned short [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1317:26: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1317:26: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1317:26: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1344:19: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1344:19: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1344:19: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1390:9: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/ethernet/freescale/ucc_geth.c:1390:9: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1390:9: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_uccm
drivers/net/ethernet/freescale/ucc_geth.c:1390:9: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/ethernet/freescale/ucc_geth.c:1390:9: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1390:9: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_uccm
drivers/net/ethernet/freescale/ucc_geth.c:1391:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_ucce @@
drivers/net/ethernet/freescale/ucc_geth.c:1391:22: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1391:22: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_ucce
drivers/net/ethernet/freescale/ucc_geth.c:1402:36: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_ucce @@
drivers/net/ethernet/freescale/ucc_geth.c:1402:36: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1402:36: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_ucce
drivers/net/ethernet/freescale/ucc_geth.c:1571:38: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1571:38: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1571:38: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1636:35: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1636:35: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1636:35: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1824:41: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1824:41: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1824:41: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1839:50: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const *objp @@ got unsigned char [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1839:50: sparse: expected void const *objp
drivers/net/ethernet/freescale/ucc_geth.c:1839:50: sparse: got unsigned char [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1864:33: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1864:33: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1864:33: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1876:42: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const *objp @@ got unsigned char [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1876:42: sparse: expected void const *objp
drivers/net/ethernet/freescale/ucc_geth.c:1876:42: sparse: got unsigned char [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1965:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1965:17: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1965:17: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1965:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1965:17: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1965:17: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1967:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1967:17: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1967:17: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:1967:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:1967:17: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:1967:17: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2013:29: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/ethernet/freescale/ucc_geth.c:2013:29: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:2013:29: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_uccm
drivers/net/ethernet/freescale/ucc_geth.c:2016:29: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_ucce @@
drivers/net/ethernet/freescale/ucc_geth.c:2016:29: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:2016:29: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_ucce
drivers/net/ethernet/freescale/ucc_geth.c:2160:40: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [noderef] [usertype] __iomem * @@ got void * @@
drivers/net/ethernet/freescale/ucc_geth.c:2160:40: sparse: expected unsigned char [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2160:40: sparse: got void *
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got unsigned char [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: expected void const *
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: got unsigned char [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got unsigned char [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: expected void const *
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: got unsigned char [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *p @@ got unsigned char [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: expected void *p
drivers/net/ethernet/freescale/ucc_geth.c:2168:17: sparse: got unsigned char [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2188:37: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2188:37: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:2188:37: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2221:40: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected unsigned char [noderef] [usertype] __iomem * @@ got void * @@
drivers/net/ethernet/freescale/ucc_geth.c:2221:40: sparse: expected unsigned char [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2221:40: sparse: got void *
drivers/net/ethernet/freescale/ucc_geth.c:2248:37: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2248:37: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:2248:37: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2310:32: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [noderef] [usertype] __iomem *upsmr_register @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2310:32: sparse: expected unsigned int [noderef] [usertype] __iomem *upsmr_register
drivers/net/ethernet/freescale/ucc_geth.c:2310:32: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2316:57: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected unsigned int [noderef] [usertype] __iomem *upsmr_register @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2316:57: sparse: expected unsigned int [noderef] [usertype] __iomem *upsmr_register
drivers/net/ethernet/freescale/ucc_geth.c:2316:57: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2328:35: sparse: sparse: incorrect type in argument 6 (different base types) @@ expected unsigned int [noderef] [usertype] __iomem *upsmr_register @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2328:35: sparse: expected unsigned int [noderef] [usertype] __iomem *upsmr_register
drivers/net/ethernet/freescale/ucc_geth.c:2328:35: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2376:37: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned int [noderef] [usertype] __iomem *upsmr_register @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2376:37: sparse: expected unsigned int [noderef] [usertype] __iomem *upsmr_register
drivers/net/ethernet/freescale/ucc_geth.c:2376:37: sparse: got restricted __be32 [noderef] __iomem *
>> drivers/net/ethernet/freescale/ucc_geth.c:2454:64: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile *address @@ got unsigned char [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2454:64: sparse: expected void const volatile *address
drivers/net/ethernet/freescale/ucc_geth.c:2454:64: sparse: got unsigned char [noderef] [usertype] __iomem *
>> drivers/net/ethernet/freescale/ucc_geth.c:2457:45: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile *address @@ got unsigned char [noderef] [usertype] __iomem *[assigned] endOfRing @@
drivers/net/ethernet/freescale/ucc_geth.c:2457:45: sparse: expected void const volatile *address
drivers/net/ethernet/freescale/ucc_geth.c:2457:45: sparse: got unsigned char [noderef] [usertype] __iomem *[assigned] endOfRing
drivers/net/ethernet/freescale/ucc_geth.c:2677:64: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile *address @@ got unsigned char [noderef] [usertype] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2677:64: sparse: expected void const volatile *address
drivers/net/ethernet/freescale/ucc_geth.c:2677:64: sparse: got unsigned char [noderef] [usertype] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:2944:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:2944:21: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:2944:21: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:3010:46: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] __iomem * @@
drivers/net/ethernet/freescale/ucc_geth.c:3010:46: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:3010:46: sparse: got restricted __be32 [noderef] __iomem *
drivers/net/ethernet/freescale/ucc_geth.c:3138:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/ethernet/freescale/ucc_geth.c:3138:17: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:3138:17: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_uccm
drivers/net/ethernet/freescale/ucc_geth.c:3138:17: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/ethernet/freescale/ucc_geth.c:3138:17: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:3138:17: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_uccm
drivers/net/ethernet/freescale/ucc_geth.c:3159:34: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_ucce @@
drivers/net/ethernet/freescale/ucc_geth.c:3159:34: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:3159:34: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_ucce
drivers/net/ethernet/freescale/ucc_geth.c:3160:34: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/ethernet/freescale/ucc_geth.c:3160:34: sparse: expected unsigned int const volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:3160:34: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_uccm
drivers/net/ethernet/freescale/ucc_geth.c:3162:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_ucce @@
drivers/net/ethernet/freescale/ucc_geth.c:3162:22: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:3162:22: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_ucce
drivers/net/ethernet/freescale/ucc_geth.c:3168:38: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int volatile [noderef] [usertype] __iomem *addr @@ got restricted __be32 [noderef] [usertype] __iomem *p_uccm @@
drivers/net/ethernet/freescale/ucc_geth.c:3168:38: sparse: expected unsigned int volatile [noderef] [usertype] __iomem *addr
drivers/net/ethernet/freescale/ucc_geth.c:3168:38: sparse: got restricted __be32 [noderef] [usertype] __iomem *p_uccm
drivers/net/ethernet/freescale/ucc_geth.c: note: in included file (through include/linux/mmzone.h, include/linux/gfp.h, include/linux/slab.h):
include/linux/page-flags.h:242:46: sparse: sparse: self-comparison always evaluates to false
vim +2454 drivers/net/ethernet/freescale/ucc_geth.c
e19a82c18f0e63 drivers/net/ethernet/freescale/ucc_geth.c Paul Gortmaker 2012-02-27 2258
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2259 static int ucc_geth_startup(struct ucc_geth_private *ugeth)
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2260 {
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2261 struct ucc_geth_82xx_address_filtering_pram __iomem *p_82xx_addr_filt;
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2262 struct ucc_geth_init_pram __iomem *p_init_enet_pram;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2263 struct ucc_fast_private *uccf;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2264 struct ucc_geth_info *ug_info;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2265 struct ucc_fast_info *uf_info;
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2266 struct ucc_fast __iomem *uf_regs;
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2267 struct ucc_geth __iomem *ug_regs;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2268 int ret_val = -EINVAL;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2269 u32 remoder = UCC_GETH_REMODER_INIT;
3bc53427e4f323 drivers/net/ucc_geth.c Timur Tabi 2009-01-11 2270 u32 init_enet_pram_offset, cecr_subblock, command;
e19a82c18f0e63 drivers/net/ethernet/freescale/ucc_geth.c Paul Gortmaker 2012-02-27 2271 u32 ifstat, i, j, size, l2qt, l3qt;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2272 u16 temoder = UCC_GETH_TEMODER_INIT;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2273 u8 function_code = 0;
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2274 u8 __iomem *endOfRing;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2275 u8 numThreadsRxNumerical, numThreadsTxNumerical;
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2276 s32 rx_glbl_pram_offset, tx_glbl_pram_offset;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2277
b39d66a81fb4f5 drivers/net/ucc_geth.c Harvey Harrison 2008-08-20 2278 ugeth_vdbg("%s: IN", __func__);
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2279 uccf = ugeth->uccf;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2280 ug_info = ugeth->ug_info;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2281 uf_info = &ug_info->uf_info;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2282 uf_regs = uccf->uf_regs;
728de4c927a354 drivers/net/ucc_geth.c Kim Phillips 2007-04-13 2283 ug_regs = ugeth->ug_regs;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2284
634b5bd7318725 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2285 numThreadsRxNumerical = ucc_geth_thread_count(ug_info->numThreadsRx);
634b5bd7318725 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2286 if (!numThreadsRxNumerical) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2287 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2288 pr_err("Bad number of Rx threads value\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2289 return -EINVAL;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2290 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2291
634b5bd7318725 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2292 numThreadsTxNumerical = ucc_geth_thread_count(ug_info->numThreadsTx);
634b5bd7318725 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2293 if (!numThreadsTxNumerical) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2294 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2295 pr_err("Bad number of Tx threads value\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2296 return -EINVAL;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2297 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2298
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2299 /* Calculate rx_extended_features */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2300 ugeth->rx_non_dynamic_extended_features = ug_info->ipCheckSumCheck ||
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2301 ug_info->ipAddressAlignment ||
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2302 (ug_info->numStationAddresses !=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2303 UCC_GETH_NUM_OF_STATION_ADDRESSES_1);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2304
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2305 ugeth->rx_extended_features = ugeth->rx_non_dynamic_extended_features ||
8e95a2026f3b43 drivers/net/ucc_geth.c Joe Perches 2009-12-03 2306 (ug_info->vlanOperationTagged != UCC_GETH_VLAN_OPERATION_TAGGED_NOP) ||
8e95a2026f3b43 drivers/net/ucc_geth.c Joe Perches 2009-12-03 2307 (ug_info->vlanOperationNonTagged !=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2308 UCC_GETH_VLAN_OPERATION_NON_TAGGED_NOP);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2309
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2310 init_default_reg_vals(&uf_regs->upsmr,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2311 &ug_regs->maccfg1, &ug_regs->maccfg2);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2312
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2313 /* Set UPSMR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2314 /* For more details see the hardware spec. */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2315 init_rx_parameters(ug_info->bro,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 @2316 ug_info->rsh, ug_info->pro, &uf_regs->upsmr);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2317
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2318 /* We're going to ignore other registers for now, */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2319 /* except as needed to get up and running */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2320
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2321 /* Set MACCFG1 */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2322 /* For more details see the hardware spec. */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2323 init_flow_control_params(ug_info->aufc,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2324 ug_info->receiveFlowControl,
ac421852b3a01e drivers/net/ucc_geth.c Li Yang 2007-07-19 2325 ug_info->transmitFlowControl,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2326 ug_info->pausePeriod,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2327 ug_info->extensionField,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 @2328 &uf_regs->upsmr,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2329 &ug_regs->uempr, &ug_regs->maccfg1);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2330
3bc53427e4f323 drivers/net/ucc_geth.c Timur Tabi 2009-01-11 2331 setbits32(&ug_regs->maccfg1, MACCFG1_ENABLE_RX | MACCFG1_ENABLE_TX);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2332
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2333 /* Set IPGIFG */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2334 /* For more details see the hardware spec. */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2335 ret_val = init_inter_frame_gap_params(ug_info->nonBackToBackIfgPart1,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2336 ug_info->nonBackToBackIfgPart2,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2337 ug_info->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2338 miminumInterFrameGapEnforcement,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2339 ug_info->backToBackInterFrameGap,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2340 &ug_regs->ipgifg);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2341 if (ret_val != 0) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2342 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2343 pr_err("IPGIFG initialization parameter too large\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2344 return ret_val;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2345 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2346
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2347 /* Set HAFDUP */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2348 /* For more details see the hardware spec. */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2349 ret_val = init_half_duplex_params(ug_info->altBeb,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2350 ug_info->backPressureNoBackoff,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2351 ug_info->noBackoff,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2352 ug_info->excessDefer,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2353 ug_info->altBebTruncation,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2354 ug_info->maxRetransmission,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2355 ug_info->collisionWindow,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2356 &ug_regs->hafdup);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2357 if (ret_val != 0) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2358 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2359 pr_err("Half Duplex initialization parameter too large\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2360 return ret_val;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2361 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2362
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2363 /* Set IFSTAT */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2364 /* For more details see the hardware spec. */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2365 /* Read only - resets upon read */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2366 ifstat = in_be32(&ug_regs->ifstat);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2367
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2368 /* Clear UEMPR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2369 /* For more details see the hardware spec. */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2370 out_be32(&ug_regs->uempr, 0);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2371
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2372 /* Set UESCR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2373 /* For more details see the hardware spec. */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2374 init_hw_statistics_gathering_mode((ug_info->statisticsMode &
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2375 UCC_GETH_STATISTICS_GATHERING_MODE_HARDWARE),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2376 0, &uf_regs->upsmr, &ug_regs->uescr);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2377
e19a82c18f0e63 drivers/net/ethernet/freescale/ucc_geth.c Paul Gortmaker 2012-02-27 2378 ret_val = ucc_geth_alloc_tx(ugeth);
e19a82c18f0e63 drivers/net/ethernet/freescale/ucc_geth.c Paul Gortmaker 2012-02-27 2379 if (ret_val != 0)
e19a82c18f0e63 drivers/net/ethernet/freescale/ucc_geth.c Paul Gortmaker 2012-02-27 2380 return ret_val;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2381
e19a82c18f0e63 drivers/net/ethernet/freescale/ucc_geth.c Paul Gortmaker 2012-02-27 2382 ret_val = ucc_geth_alloc_rx(ugeth);
e19a82c18f0e63 drivers/net/ethernet/freescale/ucc_geth.c Paul Gortmaker 2012-02-27 2383 if (ret_val != 0)
e19a82c18f0e63 drivers/net/ethernet/freescale/ucc_geth.c Paul Gortmaker 2012-02-27 2384 return ret_val;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2385
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2386 /*
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2387 * Global PRAM
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2388 */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2389 /* Tx global PRAM */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2390 /* Allocate global tx parameter RAM page */
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2391 tx_glbl_pram_offset =
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2392 qe_muram_alloc(sizeof(struct ucc_geth_tx_global_pram),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2393 UCC_GETH_TX_GLOBAL_PRAM_ALIGNMENT);
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2394 if (tx_glbl_pram_offset < 0) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2395 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2396 pr_err("Can not allocate DPRAM memory for p_tx_glbl_pram\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2397 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2398 }
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2399 ugeth->p_tx_glbl_pram = qe_muram_addr(tx_glbl_pram_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2400 /* Fill global PRAM */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2401
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2402 /* TQPTR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2403 /* Size varies with number of Tx threads */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2404 ugeth->thread_dat_tx_offset =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2405 qe_muram_alloc(numThreadsTxNumerical *
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2406 sizeof(struct ucc_geth_thread_data_tx) +
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2407 32 * (numThreadsTxNumerical == 1),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2408 UCC_GETH_THREAD_DATA_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2409 if (IS_ERR_VALUE(ugeth->thread_dat_tx_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2410 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2411 pr_err("Can not allocate DPRAM memory for p_thread_data_tx\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2412 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2413 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2414
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2415 ugeth->p_thread_data_tx =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2416 (struct ucc_geth_thread_data_tx __iomem *) qe_muram_addr(ugeth->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2417 thread_dat_tx_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2418 out_be32(&ugeth->p_tx_glbl_pram->tqptr, ugeth->thread_dat_tx_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2419
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2420 /* vtagtable */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2421 for (i = 0; i < UCC_GETH_TX_VTAG_TABLE_ENTRY_MAX; i++)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2422 out_be32(&ugeth->p_tx_glbl_pram->vtagtable[i],
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2423 ug_info->vtagtable[i]);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2424
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2425 /* iphoffset */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2426 for (i = 0; i < TX_IP_OFFSET_ENTRY_MAX; i++)
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2427 out_8(&ugeth->p_tx_glbl_pram->iphoffset[i],
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2428 ug_info->iphoffset[i]);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2429
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2430 /* SQPTR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2431 /* Size varies with number of Tx queues */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2432 ugeth->send_q_mem_reg_offset =
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2433 qe_muram_alloc(ucc_geth_tx_queues(ug_info) *
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2434 sizeof(struct ucc_geth_send_queue_qd),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2435 UCC_GETH_SEND_QUEUE_QUEUE_DESCRIPTOR_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2436 if (IS_ERR_VALUE(ugeth->send_q_mem_reg_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2437 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2438 pr_err("Can not allocate DPRAM memory for p_send_q_mem_reg\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2439 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2440 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2441
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2442 ugeth->p_send_q_mem_reg =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2443 (struct ucc_geth_send_queue_mem_region __iomem *) qe_muram_addr(ugeth->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2444 send_q_mem_reg_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2445 out_be32(&ugeth->p_tx_glbl_pram->sqptr, ugeth->send_q_mem_reg_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2446
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2447 /* Setup the table */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2448 /* Assume BD rings are already established */
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2449 for (i = 0; i < ucc_geth_tx_queues(ug_info); i++) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2450 endOfRing =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2451 ugeth->p_tx_bd_ring[i] + (ug_info->bdRingLenTx[i] -
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2452 1) * sizeof(struct qe_bd);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2453 out_be32(&ugeth->p_send_q_mem_reg->sqqd[i].bd_ring_base,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 @2454 (u32) virt_to_phys(ugeth->p_tx_bd_ring[i]));
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2455 out_be32(&ugeth->p_send_q_mem_reg->sqqd[i].
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2456 last_bd_completed_address,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 @2457 (u32) virt_to_phys(endOfRing));
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2458 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2459
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2460 /* schedulerbasepointer */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2461
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2462 if (ucc_geth_tx_queues(ug_info) > 1) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2463 /* scheduler exists only if more than 1 tx queue */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2464 ugeth->scheduler_offset =
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2465 qe_muram_alloc(sizeof(struct ucc_geth_scheduler),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2466 UCC_GETH_SCHEDULER_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2467 if (IS_ERR_VALUE(ugeth->scheduler_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2468 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2469 pr_err("Can not allocate DPRAM memory for p_scheduler\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2470 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2471 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2472
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2473 ugeth->p_scheduler =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2474 (struct ucc_geth_scheduler __iomem *) qe_muram_addr(ugeth->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2475 scheduler_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2476 out_be32(&ugeth->p_tx_glbl_pram->schedulerbasepointer,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2477 ugeth->scheduler_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2478
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2479 /* Set values in scheduler */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2480 out_be32(&ugeth->p_scheduler->mblinterval,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2481 ug_info->mblinterval);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2482 out_be16(&ugeth->p_scheduler->nortsrbytetime,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2483 ug_info->nortsrbytetime);
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2484 out_8(&ugeth->p_scheduler->fracsiz, ug_info->fracsiz);
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2485 out_8(&ugeth->p_scheduler->strictpriorityq,
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2486 ug_info->strictpriorityq);
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2487 out_8(&ugeth->p_scheduler->txasap, ug_info->txasap);
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2488 out_8(&ugeth->p_scheduler->extrabw, ug_info->extrabw);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2489 for (i = 0; i < NUM_TX_QUEUES; i++)
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2490 out_8(&ugeth->p_scheduler->weightfactor[i],
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2491 ug_info->weightfactor[i]);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2492
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2493 /* Set pointers to cpucount registers in scheduler */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2494 ugeth->p_cpucount[0] = &(ugeth->p_scheduler->cpucount0);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2495 ugeth->p_cpucount[1] = &(ugeth->p_scheduler->cpucount1);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2496 ugeth->p_cpucount[2] = &(ugeth->p_scheduler->cpucount2);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2497 ugeth->p_cpucount[3] = &(ugeth->p_scheduler->cpucount3);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2498 ugeth->p_cpucount[4] = &(ugeth->p_scheduler->cpucount4);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2499 ugeth->p_cpucount[5] = &(ugeth->p_scheduler->cpucount5);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2500 ugeth->p_cpucount[6] = &(ugeth->p_scheduler->cpucount6);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2501 ugeth->p_cpucount[7] = &(ugeth->p_scheduler->cpucount7);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2502 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2503
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2504 /* schedulerbasepointer */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2505 /* TxRMON_PTR (statistics) */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2506 if (ug_info->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2507 statisticsMode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_TX) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2508 ugeth->tx_fw_statistics_pram_offset =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2509 qe_muram_alloc(sizeof
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2510 (struct ucc_geth_tx_firmware_statistics_pram),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2511 UCC_GETH_TX_STATISTICS_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2512 if (IS_ERR_VALUE(ugeth->tx_fw_statistics_pram_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2513 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2514 pr_err("Can not allocate DPRAM memory for p_tx_fw_statistics_pram\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2515 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2516 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2517 ugeth->p_tx_fw_statistics_pram =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2518 (struct ucc_geth_tx_firmware_statistics_pram __iomem *)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2519 qe_muram_addr(ugeth->tx_fw_statistics_pram_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2520 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2521
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2522 /* temoder */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2523 /* Already has speed set */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2524
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2525 if (ucc_geth_tx_queues(ug_info) > 1)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2526 temoder |= TEMODER_SCHEDULER_ENABLE;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2527 if (ug_info->ipCheckSumGenerate)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2528 temoder |= TEMODER_IP_CHECKSUM_GENERATE;
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2529 temoder |= ((ucc_geth_tx_queues(ug_info) - 1) << TEMODER_NUM_OF_QUEUES_SHIFT);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2530 out_be16(&ugeth->p_tx_glbl_pram->temoder, temoder);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2531
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2532 /* Function code register value to be used later */
6b0b594bb81f86 drivers/net/ucc_geth.c Timur Tabi 2007-10-03 2533 function_code = UCC_BMR_BO_BE | UCC_BMR_GBL;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2534 /* Required for QE */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2535
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2536 /* function code register */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2537 out_be32(&ugeth->p_tx_glbl_pram->tstate, ((u32) function_code) << 24);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2538
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2539 /* Rx global PRAM */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2540 /* Allocate global rx parameter RAM page */
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2541 rx_glbl_pram_offset =
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2542 qe_muram_alloc(sizeof(struct ucc_geth_rx_global_pram),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2543 UCC_GETH_RX_GLOBAL_PRAM_ALIGNMENT);
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2544 if (rx_glbl_pram_offset < 0) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2545 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2546 pr_err("Can not allocate DPRAM memory for p_rx_glbl_pram\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2547 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2548 }
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2549 ugeth->p_rx_glbl_pram = qe_muram_addr(rx_glbl_pram_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2550 /* Fill global PRAM */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2551
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2552 /* RQPTR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2553 /* Size varies with number of Rx threads */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2554 ugeth->thread_dat_rx_offset =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2555 qe_muram_alloc(numThreadsRxNumerical *
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2556 sizeof(struct ucc_geth_thread_data_rx),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2557 UCC_GETH_THREAD_DATA_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2558 if (IS_ERR_VALUE(ugeth->thread_dat_rx_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2559 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2560 pr_err("Can not allocate DPRAM memory for p_thread_data_rx\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2561 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2562 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2563
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2564 ugeth->p_thread_data_rx =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2565 (struct ucc_geth_thread_data_rx __iomem *) qe_muram_addr(ugeth->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2566 thread_dat_rx_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2567 out_be32(&ugeth->p_rx_glbl_pram->rqptr, ugeth->thread_dat_rx_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2568
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2569 /* typeorlen */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2570 out_be16(&ugeth->p_rx_glbl_pram->typeorlen, ug_info->typeorlen);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2571
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2572 /* rxrmonbaseptr (statistics) */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2573 if (ug_info->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2574 statisticsMode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_RX) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2575 ugeth->rx_fw_statistics_pram_offset =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2576 qe_muram_alloc(sizeof
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2577 (struct ucc_geth_rx_firmware_statistics_pram),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2578 UCC_GETH_RX_STATISTICS_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2579 if (IS_ERR_VALUE(ugeth->rx_fw_statistics_pram_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2580 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2581 pr_err("Can not allocate DPRAM memory for p_rx_fw_statistics_pram\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2582 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2583 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2584 ugeth->p_rx_fw_statistics_pram =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2585 (struct ucc_geth_rx_firmware_statistics_pram __iomem *)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2586 qe_muram_addr(ugeth->rx_fw_statistics_pram_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2587 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2588
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2589 /* intCoalescingPtr */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2590
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2591 /* Size varies with number of Rx queues */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2592 ugeth->rx_irq_coalescing_tbl_offset =
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2593 qe_muram_alloc(ucc_geth_rx_queues(ug_info) *
7563907eb8aad8 drivers/net/ucc_geth.c Michael Barkowski 2007-04-13 2594 sizeof(struct ucc_geth_rx_interrupt_coalescing_entry)
7563907eb8aad8 drivers/net/ucc_geth.c Michael Barkowski 2007-04-13 2595 + 4, UCC_GETH_RX_INTERRUPT_COALESCING_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2596 if (IS_ERR_VALUE(ugeth->rx_irq_coalescing_tbl_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2597 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2598 pr_err("Can not allocate DPRAM memory for p_rx_irq_coalescing_tbl\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2599 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2600 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2601
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2602 ugeth->p_rx_irq_coalescing_tbl =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2603 (struct ucc_geth_rx_interrupt_coalescing_table __iomem *)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2604 qe_muram_addr(ugeth->rx_irq_coalescing_tbl_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2605 out_be32(&ugeth->p_rx_glbl_pram->intcoalescingptr,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2606 ugeth->rx_irq_coalescing_tbl_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2607
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2608 /* Fill interrupt coalescing table */
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2609 for (i = 0; i < ucc_geth_rx_queues(ug_info); i++) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2610 out_be32(&ugeth->p_rx_irq_coalescing_tbl->coalescingentry[i].
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2611 interruptcoalescingmaxvalue,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2612 ug_info->interruptcoalescingmaxvalue[i]);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2613 out_be32(&ugeth->p_rx_irq_coalescing_tbl->coalescingentry[i].
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2614 interruptcoalescingcounter,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2615 ug_info->interruptcoalescingmaxvalue[i]);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2616 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2617
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2618 /* MRBLR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2619 init_max_rx_buff_len(uf_info->max_rx_buf_length,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2620 &ugeth->p_rx_glbl_pram->mrblr);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2621 /* MFLR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2622 out_be16(&ugeth->p_rx_glbl_pram->mflr, ug_info->maxFrameLength);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2623 /* MINFLR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2624 init_min_frame_len(ug_info->minFrameLength,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2625 &ugeth->p_rx_glbl_pram->minflr,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2626 &ugeth->p_rx_glbl_pram->mrblr);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2627 /* MAXD1 */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2628 out_be16(&ugeth->p_rx_glbl_pram->maxd1, ug_info->maxD1Length);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2629 /* MAXD2 */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2630 out_be16(&ugeth->p_rx_glbl_pram->maxd2, ug_info->maxD2Length);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2631
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2632 /* l2qt */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2633 l2qt = 0;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2634 for (i = 0; i < UCC_GETH_VLAN_PRIORITY_MAX; i++)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2635 l2qt |= (ug_info->l2qt[i] << (28 - 4 * i));
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2636 out_be32(&ugeth->p_rx_glbl_pram->l2qt, l2qt);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2637
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2638 /* l3qt */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2639 for (j = 0; j < UCC_GETH_IP_PRIORITY_MAX; j += 8) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2640 l3qt = 0;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2641 for (i = 0; i < 8; i++)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2642 l3qt |= (ug_info->l3qt[j + i] << (28 - 4 * i));
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2643 out_be32(&ugeth->p_rx_glbl_pram->l3qt[j/8], l3qt);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2644 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2645
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2646 /* vlantype */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2647 out_be16(&ugeth->p_rx_glbl_pram->vlantype, ug_info->vlantype);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2648
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2649 /* vlantci */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2650 out_be16(&ugeth->p_rx_glbl_pram->vlantci, ug_info->vlantci);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2651
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2652 /* ecamptr */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2653 out_be32(&ugeth->p_rx_glbl_pram->ecamptr, ug_info->ecamptr);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2654
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2655 /* RBDQPTR */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2656 /* Size varies with number of Rx queues */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2657 ugeth->rx_bd_qs_tbl_offset =
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2658 qe_muram_alloc(ucc_geth_rx_queues(ug_info) *
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2659 (sizeof(struct ucc_geth_rx_bd_queues_entry) +
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2660 sizeof(struct ucc_geth_rx_prefetched_bds)),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2661 UCC_GETH_RX_BD_QUEUES_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2662 if (IS_ERR_VALUE(ugeth->rx_bd_qs_tbl_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2663 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2664 pr_err("Can not allocate DPRAM memory for p_rx_bd_qs_tbl\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2665 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2666 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2667
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2668 ugeth->p_rx_bd_qs_tbl =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2669 (struct ucc_geth_rx_bd_queues_entry __iomem *) qe_muram_addr(ugeth->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2670 rx_bd_qs_tbl_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2671 out_be32(&ugeth->p_rx_glbl_pram->rbdqptr, ugeth->rx_bd_qs_tbl_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2672
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2673 /* Setup the table */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2674 /* Assume BD rings are already established */
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2675 for (i = 0; i < ucc_geth_rx_queues(ug_info); i++) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2676 out_be32(&ugeth->p_rx_bd_qs_tbl[i].externalbdbaseptr,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2677 (u32) virt_to_phys(ugeth->p_rx_bd_ring[i]));
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2678 /* rest of fields handled by QE */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2679 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2680
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2681 /* remoder */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2682 /* Already has speed set */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2683
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2684 if (ugeth->rx_extended_features)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2685 remoder |= REMODER_RX_EXTENDED_FEATURES;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2686 if (ug_info->rxExtendedFiltering)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2687 remoder |= REMODER_RX_EXTENDED_FILTERING;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2688 if (ug_info->dynamicMaxFrameLength)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2689 remoder |= REMODER_DYNAMIC_MAX_FRAME_LENGTH;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2690 if (ug_info->dynamicMinFrameLength)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2691 remoder |= REMODER_DYNAMIC_MIN_FRAME_LENGTH;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2692 remoder |=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2693 ug_info->vlanOperationTagged << REMODER_VLAN_OPERATION_TAGGED_SHIFT;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2694 remoder |=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2695 ug_info->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2696 vlanOperationNonTagged << REMODER_VLAN_OPERATION_NON_TAGGED_SHIFT;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2697 remoder |= ug_info->rxQoSMode << REMODER_RX_QOS_MODE_SHIFT;
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2698 remoder |= ((ucc_geth_rx_queues(ug_info) - 1) << REMODER_NUM_OF_QUEUES_SHIFT);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2699 if (ug_info->ipCheckSumCheck)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2700 remoder |= REMODER_IP_CHECKSUM_CHECK;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2701 if (ug_info->ipAddressAlignment)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2702 remoder |= REMODER_IP_ADDRESS_ALIGNMENT;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2703 out_be32(&ugeth->p_rx_glbl_pram->remoder, remoder);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2704
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2705 /* Note that this function must be called */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2706 /* ONLY AFTER p_tx_fw_statistics_pram */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2707 /* andp_UccGethRxFirmwareStatisticsPram are allocated ! */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2708 init_firmware_statistics_gathering_mode((ug_info->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2709 statisticsMode &
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2710 UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_TX),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2711 (ug_info->statisticsMode &
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2712 UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_RX),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2713 &ugeth->p_tx_glbl_pram->txrmonbaseptr,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2714 ugeth->tx_fw_statistics_pram_offset,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2715 &ugeth->p_rx_glbl_pram->rxrmonbaseptr,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2716 ugeth->rx_fw_statistics_pram_offset,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2717 &ugeth->p_tx_glbl_pram->temoder,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2718 &ugeth->p_rx_glbl_pram->remoder);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2719
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2720 /* function code register */
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2721 out_8(&ugeth->p_rx_glbl_pram->rstate, function_code);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2722
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2723 /* initialize extended filtering */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2724 if (ug_info->rxExtendedFiltering) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2725 if (!ug_info->extendedFilteringChainPointer) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2726 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2727 pr_err("Null Extended Filtering Chain Pointer\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2728 return -EINVAL;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2729 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2730
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2731 /* Allocate memory for extended filtering Mode Global
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2732 Parameters */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2733 ugeth->exf_glbl_param_offset =
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2734 qe_muram_alloc(sizeof(struct ucc_geth_exf_global_pram),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2735 UCC_GETH_RX_EXTENDED_FILTERING_GLOBAL_PARAMETERS_ALIGNMENT);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2736 if (IS_ERR_VALUE(ugeth->exf_glbl_param_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2737 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2738 pr_err("Can not allocate DPRAM memory for p_exf_glbl_param\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2739 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2740 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2741
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2742 ugeth->p_exf_glbl_param =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2743 (struct ucc_geth_exf_global_pram __iomem *) qe_muram_addr(ugeth->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2744 exf_glbl_param_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2745 out_be32(&ugeth->p_rx_glbl_pram->exfGlobalParam,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2746 ugeth->exf_glbl_param_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2747 out_be32(&ugeth->p_exf_glbl_param->l2pcdptr,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2748 (u32) ug_info->extendedFilteringChainPointer);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2749
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2750 } else { /* initialize 82xx style address filtering */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2751
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2752 /* Init individual address recognition registers to disabled */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2753
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2754 for (j = 0; j < NUM_OF_PADDRS; j++)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2755 ugeth_82xx_filtering_clear_addr_in_paddr(ugeth, (u8) j);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2756
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2757 p_82xx_addr_filt =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2758 (struct ucc_geth_82xx_address_filtering_pram __iomem *) ugeth->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2759 p_rx_glbl_pram->addressfiltering;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2760
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2761 ugeth_82xx_filtering_clear_all_addr_in_hash(ugeth,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2762 ENET_ADDR_TYPE_GROUP);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2763 ugeth_82xx_filtering_clear_all_addr_in_hash(ugeth,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2764 ENET_ADDR_TYPE_INDIVIDUAL);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2765 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2766
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2767 /*
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2768 * Initialize UCC at QE level
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2769 */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2770
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2771 command = QE_INIT_TX_RX;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2772
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2773 /* Allocate shadow InitEnet command parameter structure.
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2774 * This is needed because after the InitEnet command is executed,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2775 * the structure in DPRAM is released, because DPRAM is a premium
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2776 * resource.
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2777 * This shadow structure keeps a copy of what was done so that the
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2778 * allocated resources can be released when the channel is freed.
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2779 */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2780 if (!(ugeth->p_init_enet_param_shadow =
830c8ddc66df50 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2781 kzalloc(sizeof(struct ucc_geth_init_pram), GFP_KERNEL))) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2782 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2783 pr_err("Can not allocate memory for p_UccInitEnetParamShadows\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2784 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2785 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2786
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2787 /* Fill shadow InitEnet command parameter structure */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2788
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2789 ugeth->p_init_enet_param_shadow->resinit1 =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2790 ENET_INIT_PARAM_MAGIC_RES_INIT1;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2791 ugeth->p_init_enet_param_shadow->resinit2 =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2792 ENET_INIT_PARAM_MAGIC_RES_INIT2;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2793 ugeth->p_init_enet_param_shadow->resinit3 =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2794 ENET_INIT_PARAM_MAGIC_RES_INIT3;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2795 ugeth->p_init_enet_param_shadow->resinit4 =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2796 ENET_INIT_PARAM_MAGIC_RES_INIT4;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2797 ugeth->p_init_enet_param_shadow->resinit5 =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2798 ENET_INIT_PARAM_MAGIC_RES_INIT5;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2799 ugeth->p_init_enet_param_shadow->rgftgfrxglobal |=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2800 ((u32) ug_info->numThreadsRx) << ENET_INIT_PARAM_RGF_SHIFT;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2801 ugeth->p_init_enet_param_shadow->rgftgfrxglobal |=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2802 ((u32) ug_info->numThreadsTx) << ENET_INIT_PARAM_TGF_SHIFT;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2803
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2804 ugeth->p_init_enet_param_shadow->rgftgfrxglobal |=
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2805 rx_glbl_pram_offset | ug_info->riscRx;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2806 if ((ug_info->largestexternallookupkeysize !=
8e95a2026f3b43 drivers/net/ucc_geth.c Joe Perches 2009-12-03 2807 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_NONE) &&
8e95a2026f3b43 drivers/net/ucc_geth.c Joe Perches 2009-12-03 2808 (ug_info->largestexternallookupkeysize !=
8e95a2026f3b43 drivers/net/ucc_geth.c Joe Perches 2009-12-03 2809 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_8_BYTES) &&
8e95a2026f3b43 drivers/net/ucc_geth.c Joe Perches 2009-12-03 2810 (ug_info->largestexternallookupkeysize !=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2811 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_16_BYTES)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2812 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2813 pr_err("Invalid largest External Lookup Key Size\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2814 return -EINVAL;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2815 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2816 ugeth->p_init_enet_param_shadow->largestexternallookupkeysize =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2817 ug_info->largestexternallookupkeysize;
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2818 size = sizeof(struct ucc_geth_thread_rx_pram);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2819 if (ug_info->rxExtendedFiltering) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2820 size += THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2821 if (ug_info->largestexternallookupkeysize ==
8844a00626c78c drivers/net/ethernet/freescale/ucc_geth.c Zhao Qiang 2014-07-01 2822 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_8_BYTES)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2823 size +=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2824 THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING_8;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2825 if (ug_info->largestexternallookupkeysize ==
8844a00626c78c drivers/net/ethernet/freescale/ucc_geth.c Zhao Qiang 2014-07-01 2826 QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_16_BYTES)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2827 size +=
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2828 THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING_16;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2829 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2830
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2831 if ((ret_val = fill_init_enet_entries(ugeth, &(ugeth->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2832 p_init_enet_param_shadow->rxthread[0]),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2833 (u8) (numThreadsRxNumerical + 1)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2834 /* Rx needs one extra for terminator */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2835 , size, UCC_GETH_THREAD_RX_PRAM_ALIGNMENT,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2836 ug_info->riscRx, 1)) != 0) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2837 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2838 pr_err("Can not fill p_init_enet_param_shadow\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2839 return ret_val;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2840 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2841
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2842 ugeth->p_init_enet_param_shadow->txglobal =
7d9fe90036f75a drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2843 tx_glbl_pram_offset | ug_info->riscTx;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2844 if ((ret_val =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2845 fill_init_enet_entries(ugeth,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2846 &(ugeth->p_init_enet_param_shadow->
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2847 txthread[0]), numThreadsTxNumerical,
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2848 sizeof(struct ucc_geth_thread_tx_pram),
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2849 UCC_GETH_THREAD_TX_PRAM_ALIGNMENT,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2850 ug_info->riscTx, 0)) != 0) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2851 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2852 pr_err("Can not fill p_init_enet_param_shadow\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2853 return ret_val;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2854 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2855
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2856 /* Load Rx bds with buffers */
53f49d86ea2108 drivers/net/ethernet/freescale/ucc_geth.c Rasmus Villemoes 2021-01-19 2857 for (i = 0; i < ucc_geth_rx_queues(ug_info); i++) {
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2858 if ((ret_val = rx_bd_buffer_set(ugeth, (u8) i)) != 0) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2859 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2860 pr_err("Can not fill Rx bds with buffers\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2861 return ret_val;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2862 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2863 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2864
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2865 /* Allocate InitEnet command parameter structure */
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2866 init_enet_pram_offset = qe_muram_alloc(sizeof(struct ucc_geth_init_pram), 4);
4c35630ccda56e drivers/net/ucc_geth.c Timur Tabi 2007-05-08 2867 if (IS_ERR_VALUE(init_enet_pram_offset)) {
890de95e8fe617 drivers/net/ucc_geth.c Li Yang 2007-07-19 2868 if (netif_msg_ifup(ugeth))
c84d8055e0c997 drivers/net/ethernet/freescale/ucc_geth.c Joe Perches 2013-04-13 2869 pr_err("Can not allocate DPRAM memory for p_init_enet_pram\n");
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2870 return -ENOMEM;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2871 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2872 p_init_enet_pram =
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2873 (struct ucc_geth_init_pram __iomem *) qe_muram_addr(init_enet_pram_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2874
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2875 /* Copy shadow InitEnet command parameter structure into PRAM */
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2876 out_8(&p_init_enet_pram->resinit1,
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2877 ugeth->p_init_enet_param_shadow->resinit1);
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2878 out_8(&p_init_enet_pram->resinit2,
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2879 ugeth->p_init_enet_param_shadow->resinit2);
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2880 out_8(&p_init_enet_pram->resinit3,
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2881 ugeth->p_init_enet_param_shadow->resinit3);
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2882 out_8(&p_init_enet_pram->resinit4,
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2883 ugeth->p_init_enet_param_shadow->resinit4);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2884 out_be16(&p_init_enet_pram->resinit5,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2885 ugeth->p_init_enet_param_shadow->resinit5);
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2886 out_8(&p_init_enet_pram->largestexternallookupkeysize,
6fee40e9b8155a drivers/net/ucc_geth.c Andy Fleming 2008-05-02 2887 ugeth->p_init_enet_param_shadow->largestexternallookupkeysize);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2888 out_be32(&p_init_enet_pram->rgftgfrxglobal,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2889 ugeth->p_init_enet_param_shadow->rgftgfrxglobal);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2890 for (i = 0; i < ENET_INIT_PARAM_MAX_ENTRIES_RX; i++)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2891 out_be32(&p_init_enet_pram->rxthread[i],
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2892 ugeth->p_init_enet_param_shadow->rxthread[i]);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2893 out_be32(&p_init_enet_pram->txglobal,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2894 ugeth->p_init_enet_param_shadow->txglobal);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2895 for (i = 0; i < ENET_INIT_PARAM_MAX_ENTRIES_TX; i++)
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2896 out_be32(&p_init_enet_pram->txthread[i],
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2897 ugeth->p_init_enet_param_shadow->txthread[i]);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2898
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2899 /* Issue QE command */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2900 cecr_subblock =
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2901 ucc_fast_get_qe_cr_subblock(ugeth->ug_info->uf_info.ucc_num);
18a8e8649d2687 drivers/net/ucc_geth.c Li Yang 2006-10-19 2902 qe_issue_cmd(command, cecr_subblock, QE_CR_PROTOCOL_ETHERNET,
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2903 init_enet_pram_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2904
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2905 /* Free InitEnet command parameter */
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2906 qe_muram_free(init_enet_pram_offset);
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2907
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2908 return 0;
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2909 }
ce973b141dfac4 drivers/net/ucc_geth.c Li Yang 2006-08-14 2910
:::::: The code at line 2454 was first introduced by commit
:::::: ce973b141dfac4a0f160c7435d65e3ea47753ce8 [PATCH] Freescale QE UCC gigabit ethernet driver
:::::: TO: Li Yang <leoli@freescale.com>
:::::: CC: Jeff Garzik <jeff@garzik.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-10-30 7:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-30 7:04 kernel test robot [this message]
2024-11-08 8:18 ` drivers/net/ethernet/freescale/ucc_geth.c:2454:64: sparse: sparse: incorrect type in argument 1 (different address spaces) Linus Walleij
2024-11-08 10:30 ` Christophe Leroy
2024-11-08 11:17 ` Christophe Leroy
2024-11-08 11:41 ` Linus Walleij
-- strict thread matches above, loose matches on Subject: below --
2024-09-07 13:57 kernel test robot
2023-11-24 7:56 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202410301531.7Vr9UkCn-lkp@intel.com \
--to=lkp@intel.com \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpe@ellerman.id.au \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=stanislav.kinsburskii@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.