19a5557fdSlucy wang - Sun Microsystems - Beijing China /* 29a5557fdSlucy wang - Sun Microsystems - Beijing China * CDDL HEADER START 39a5557fdSlucy wang - Sun Microsystems - Beijing China * 49a5557fdSlucy wang - Sun Microsystems - Beijing China * The contents of this file are subject to the terms of the 59a5557fdSlucy wang - Sun Microsystems - Beijing China * Common Development and Distribution License (the "License"). 69a5557fdSlucy wang - Sun Microsystems - Beijing China * You may not use this file except in compliance with the License. 79a5557fdSlucy wang - Sun Microsystems - Beijing China * 89a5557fdSlucy wang - Sun Microsystems - Beijing China * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 99a5557fdSlucy wang - Sun Microsystems - Beijing China * or http://www.opensolaris.org/os/licensing. 109a5557fdSlucy wang - Sun Microsystems - Beijing China * See the License for the specific language governing permissions 119a5557fdSlucy wang - Sun Microsystems - Beijing China * and limitations under the License. 129a5557fdSlucy wang - Sun Microsystems - Beijing China * 139a5557fdSlucy wang - Sun Microsystems - Beijing China * When distributing Covered Code, include this CDDL HEADER in each 149a5557fdSlucy wang - Sun Microsystems - Beijing China * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 159a5557fdSlucy wang - Sun Microsystems - Beijing China * If applicable, add the following below this CDDL HEADER, with the 169a5557fdSlucy wang - Sun Microsystems - Beijing China * fields enclosed by brackets "[]" replaced with your own identifying 179a5557fdSlucy wang - Sun Microsystems - Beijing China * information: Portions Copyright [yyyy] [name of copyright owner] 189a5557fdSlucy wang - Sun Microsystems - Beijing China * 199a5557fdSlucy wang - Sun Microsystems - Beijing China * CDDL HEADER END 209a5557fdSlucy wang - Sun Microsystems - Beijing China */ 21*93833965Sjing xiong ERI-SUN 229a5557fdSlucy wang - Sun Microsystems - Beijing China /* 239a5557fdSlucy wang - Sun Microsystems - Beijing China * Copyright 2008 NetXen, Inc. All rights reserved. 249a5557fdSlucy wang - Sun Microsystems - Beijing China * Use is subject to license terms. 259a5557fdSlucy wang - Sun Microsystems - Beijing China */ 26*93833965Sjing xiong ERI-SUN 279a5557fdSlucy wang - Sun Microsystems - Beijing China #ifndef _UNM_NIC_HW_ 289a5557fdSlucy wang - Sun Microsystems - Beijing China #define _UNM_NIC_HW_ 299a5557fdSlucy wang - Sun Microsystems - Beijing China 30*93833965Sjing xiong ERI-SUN #ifdef __cplusplus 31*93833965Sjing xiong ERI-SUN extern "C" { 32*93833965Sjing xiong ERI-SUN #endif 33*93833965Sjing xiong ERI-SUN 349a5557fdSlucy wang - Sun Microsystems - Beijing China #include "unm_inc.h" 359a5557fdSlucy wang - Sun Microsystems - Beijing China 369a5557fdSlucy wang - Sun Microsystems - Beijing China /* Hardware memory size of 128 meg */ 379a5557fdSlucy wang - Sun Microsystems - Beijing China #define BAR0_SIZE (128 * 1024 * 1024) 389a5557fdSlucy wang - Sun Microsystems - Beijing China /* 399a5557fdSlucy wang - Sun Microsystems - Beijing China * It can be calculated by looking at the first 1 bit of the BAR0 addr after 409a5557fdSlucy wang - Sun Microsystems - Beijing China * bit 4 For us lets assume that BAR0 is D8000008, then the size is 0x8000000, 419a5557fdSlucy wang - Sun Microsystems - Beijing China * 8 represents first bit containing 1. FSL temp notes....pg 162 of PCI 429a5557fdSlucy wang - Sun Microsystems - Beijing China * systems arch... 439a5557fdSlucy wang - Sun Microsystems - Beijing China */ 449a5557fdSlucy wang - Sun Microsystems - Beijing China 459a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_HW_BLOCK_WRITE_64(DATA_PTR, ADDR, NUM_WORDS) \ 469a5557fdSlucy wang - Sun Microsystems - Beijing China { \ 479a5557fdSlucy wang - Sun Microsystems - Beijing China int i; \ 489a5557fdSlucy wang - Sun Microsystems - Beijing China u64 *a = (u64 *) (DATA_PTR); \ 499a5557fdSlucy wang - Sun Microsystems - Beijing China u64 *b = (u64 *) (ADDR); \ 509a5557fdSlucy wang - Sun Microsystems - Beijing China u64 tmp; \ 519a5557fdSlucy wang - Sun Microsystems - Beijing China for (i = 0; i < (NUM_WORDS); i++, a++, b++) { \ 529a5557fdSlucy wang - Sun Microsystems - Beijing China tmp = UNM_NIC_PCI_READ_64(a); \ 539a5557fdSlucy wang - Sun Microsystems - Beijing China UNM_NIC_PCI_WRITE_64(tmp, b); \ 549a5557fdSlucy wang - Sun Microsystems - Beijing China } \ 559a5557fdSlucy wang - Sun Microsystems - Beijing China } 569a5557fdSlucy wang - Sun Microsystems - Beijing China 579a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_HW_BLOCK_READ_64(DATA_PTR, ADDR, NUM_WORDS) \ 589a5557fdSlucy wang - Sun Microsystems - Beijing China { \ 599a5557fdSlucy wang - Sun Microsystems - Beijing China int i; \ 609a5557fdSlucy wang - Sun Microsystems - Beijing China u64 *a = (u64 *) (DATA_PTR); \ 619a5557fdSlucy wang - Sun Microsystems - Beijing China u64 *b = (u64 *) (ADDR); \ 629a5557fdSlucy wang - Sun Microsystems - Beijing China u64 tmp; \ 639a5557fdSlucy wang - Sun Microsystems - Beijing China for (i = 0; i < (NUM_WORDS); i++, a++, b++) { \ 649a5557fdSlucy wang - Sun Microsystems - Beijing China tmp = UNM_NIC_PCI_READ_64(b); \ 659a5557fdSlucy wang - Sun Microsystems - Beijing China UNM_NIC_PCI_WRITE_64(tmp, a); \ 669a5557fdSlucy wang - Sun Microsystems - Beijing China } \ 679a5557fdSlucy wang - Sun Microsystems - Beijing China } 689a5557fdSlucy wang - Sun Microsystems - Beijing China 699a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_PCI_MAPSIZE_BYTES (UNM_PCI_MAPSIZE << 20) 709a5557fdSlucy wang - Sun Microsystems - Beijing China 719a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_LOCKED_READ_REG(X, Y) \ 729a5557fdSlucy wang - Sun Microsystems - Beijing China addr = (void *)(pci_base_offset(adapter, (X))); \ 739a5557fdSlucy wang - Sun Microsystems - Beijing China *(uint32_t *)(Y) = UNM_NIC_PCI_READ_32(addr); 749a5557fdSlucy wang - Sun Microsystems - Beijing China 759a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_LOCKED_WRITE_REG(X, Y) \ 769a5557fdSlucy wang - Sun Microsystems - Beijing China addr = (void *)(pci_base_offset(adapter, (X))); \ 779a5557fdSlucy wang - Sun Microsystems - Beijing China UNM_NIC_PCI_WRITE_32(*(uint32_t *)(Y), addr); 789a5557fdSlucy wang - Sun Microsystems - Beijing China 799a5557fdSlucy wang - Sun Microsystems - Beijing China /* For Multicard support */ 809a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_CRB_READ_VAL_ADAPTER(ADDR, ADAPTER) \ 819a5557fdSlucy wang - Sun Microsystems - Beijing China unm_crb_read_val_adapter((ADDR), (struct unm_adapter_s *)ADAPTER) 829a5557fdSlucy wang - Sun Microsystems - Beijing China 839a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_CRB_READ_CHECK_ADAPTER(ADDR, VALUE, ADAPTER) \ 849a5557fdSlucy wang - Sun Microsystems - Beijing China { \ 859a5557fdSlucy wang - Sun Microsystems - Beijing China if (unm_crb_read_adapter(ADDR, VALUE, \ 869a5557fdSlucy wang - Sun Microsystems - Beijing China (struct unm_adapter_s *)ADAPTER)) return -1; \ 879a5557fdSlucy wang - Sun Microsystems - Beijing China } 889a5557fdSlucy wang - Sun Microsystems - Beijing China 899a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_CRB_WRITELIT_ADAPTER(ADDR, VALUE, ADAPTER) \ 909a5557fdSlucy wang - Sun Microsystems - Beijing China { \ 919a5557fdSlucy wang - Sun Microsystems - Beijing China adapter->unm_crb_writelit_adapter( \ 929a5557fdSlucy wang - Sun Microsystems - Beijing China (struct unm_adapter_s *)ADAPTER, \ 939a5557fdSlucy wang - Sun Microsystems - Beijing China (unsigned long)ADDR, (int)VALUE); \ 949a5557fdSlucy wang - Sun Microsystems - Beijing China } 959a5557fdSlucy wang - Sun Microsystems - Beijing China 969a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_adapter_s; 979a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_set_link_parameters(struct unm_adapter_s *adapter); 989a5557fdSlucy wang - Sun Microsystems - Beijing China long xge_mdio_init(struct unm_adapter_s *adapter); 999a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_flash_print(struct unm_adapter_s *adapter); 1009a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_get_serial_num(struct unm_adapter_s *adapter); 1019a5557fdSlucy wang - Sun Microsystems - Beijing China 1029a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct { 1039a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned valid; 1049a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned start_128M; 1059a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned end_128M; 1069a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned start_2M; 1079a5557fdSlucy wang - Sun Microsystems - Beijing China } crb_128M_2M_sub_block_map_t; 1089a5557fdSlucy wang - Sun Microsystems - Beijing China 1099a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct { 1109a5557fdSlucy wang - Sun Microsystems - Beijing China crb_128M_2M_sub_block_map_t sub_block[16]; 1119a5557fdSlucy wang - Sun Microsystems - Beijing China } crb_128M_2M_block_map_t; 1129a5557fdSlucy wang - Sun Microsystems - Beijing China 113*93833965Sjing xiong ERI-SUN #ifdef __cplusplus 114*93833965Sjing xiong ERI-SUN } 115*93833965Sjing xiong ERI-SUN #endif 116*93833965Sjing xiong ERI-SUN 1179a5557fdSlucy wang - Sun Microsystems - Beijing China #endif /* _UNM_NIC_HW_ */ 118