Home | History | Annotate | Download | only in ntxn
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License (the "License").
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets "[]" replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 
     22 /*
     23  * Copyright 2008 NetXen, Inc.  All rights reserved.
     24  * Use is subject to license terms.
     25  */
     26 
     27 #ifndef _UNM_NIC_HW_
     28 #define	_UNM_NIC_HW_
     29 
     30 #ifdef __cplusplus
     31 extern "C" {
     32 #endif
     33 
     34 #include "unm_inc.h"
     35 
     36 /* Hardware memory size of 128 meg */
     37 #define	BAR0_SIZE (128 * 1024 * 1024)
     38 /*
     39  * It can be calculated by looking at the first 1 bit of the BAR0 addr after
     40  * bit 4 For us lets assume that BAR0 is D8000008, then the size is 0x8000000,
     41  * 8 represents first bit containing 1.   FSL temp notes....pg 162 of PCI
     42  * systems arch...
     43  */
     44 
     45 #define	UNM_NIC_HW_BLOCK_WRITE_64(DATA_PTR, ADDR, NUM_WORDS)        \
     46 {                                                           \
     47 	int i;                                              \
     48 	u64 *a = (u64 *) (DATA_PTR);                        \
     49 	u64 *b = (u64 *) (ADDR);                            \
     50 	u64 tmp;					    \
     51 	for (i = 0; i < (NUM_WORDS); i++, a++, b++) {       \
     52 		tmp = UNM_NIC_PCI_READ_64(a);		    \
     53 		UNM_NIC_PCI_WRITE_64(tmp, b);		    \
     54 	}						    \
     55 }
     56 
     57 #define	UNM_NIC_HW_BLOCK_READ_64(DATA_PTR, ADDR, NUM_WORDS)           \
     58 {                                                             \
     59 	int i;                                                \
     60 	u64 *a = (u64 *) (DATA_PTR);                          \
     61 	u64 *b = (u64 *) (ADDR);                              \
     62 	u64 tmp;					      \
     63 	for (i = 0; i < (NUM_WORDS); i++, a++, b++) {            \
     64 		tmp = UNM_NIC_PCI_READ_64(b);		      \
     65 		UNM_NIC_PCI_WRITE_64(tmp, a);		      \
     66 	}                                                     \
     67 }
     68 
     69 #define	UNM_PCI_MAPSIZE_BYTES  (UNM_PCI_MAPSIZE << 20)
     70 
     71 #define	UNM_NIC_LOCKED_READ_REG(X, Y)   \
     72 	addr = (void *)(pci_base_offset(adapter, (X)));     \
     73 	*(uint32_t *)(Y) = UNM_NIC_PCI_READ_32(addr);
     74 
     75 #define	UNM_NIC_LOCKED_WRITE_REG(X, Y)   \
     76 	addr = (void *)(pci_base_offset(adapter, (X))); \
     77 	UNM_NIC_PCI_WRITE_32(*(uint32_t *)(Y), addr);
     78 
     79 /* For Multicard support */
     80 #define	UNM_CRB_READ_VAL_ADAPTER(ADDR, ADAPTER) \
     81 	unm_crb_read_val_adapter((ADDR), (struct unm_adapter_s *)ADAPTER)
     82 
     83 #define	UNM_CRB_READ_CHECK_ADAPTER(ADDR, VALUE, ADAPTER)		\
     84 	{								\
     85 		if (unm_crb_read_adapter(ADDR, VALUE,			\
     86 		    (struct unm_adapter_s *)ADAPTER)) return -1;	\
     87 	}
     88 
     89 #define	UNM_CRB_WRITELIT_ADAPTER(ADDR, VALUE, ADAPTER)			\
     90 	{								\
     91 		adapter->unm_crb_writelit_adapter(			\
     92 		    (struct unm_adapter_s *)ADAPTER,			\
     93 		    (unsigned long)ADDR, (int)VALUE);			\
     94 	}
     95 
     96 struct unm_adapter_s;
     97 void unm_nic_set_link_parameters(struct unm_adapter_s *adapter);
     98 long xge_mdio_init(struct unm_adapter_s *adapter);
     99 void unm_nic_flash_print(struct unm_adapter_s *adapter);
    100 void unm_nic_get_serial_num(struct unm_adapter_s *adapter);
    101 
    102 typedef struct {
    103 	unsigned valid;
    104 	unsigned start_128M;
    105 	unsigned end_128M;
    106 	unsigned start_2M;
    107 } crb_128M_2M_sub_block_map_t;
    108 
    109 typedef struct {
    110 	crb_128M_2M_sub_block_map_t sub_block[16];
    111 } crb_128M_2M_block_map_t;
    112 
    113 #ifdef __cplusplus
    114 }
    115 #endif
    116 
    117 #endif /* _UNM_NIC_HW_ */
    118