Bruce Losure | e1e1974 | 2005-04-25 13:09:41 -0700 | [diff] [blame] | 1 | /* |
| 2 | * This file is subject to the terms and conditions of the GNU General Public |
| 3 | * License. See the file "COPYING" in the main directory of this archive |
| 4 | * for more details. |
| 5 | * |
| 6 | * Copyright (c) 2005 Silicon Graphics, Inc. All rights reserved. |
| 7 | */ |
| 8 | |
| 9 | #ifndef _ASM_IA64_SN_TIO_TIOCX_H |
| 10 | #define _ASM_IA64_SN_TIO_TIOCX_H |
| 11 | |
| 12 | #ifdef __KERNEL__ |
| 13 | |
| 14 | struct cx_id_s { |
| 15 | unsigned int part_num; |
| 16 | unsigned int mfg_num; |
| 17 | int nasid; |
| 18 | }; |
| 19 | |
| 20 | struct cx_dev { |
| 21 | struct cx_id_s cx_id; |
Bruce Losure | 25732ad | 2005-09-02 15:16:35 -0500 | [diff] [blame] | 22 | int bt; /* board/blade type */ |
Bruce Losure | e1e1974 | 2005-04-25 13:09:41 -0700 | [diff] [blame] | 23 | void *soft; /* driver specific */ |
| 24 | struct hubdev_info *hubdev; |
| 25 | struct device dev; |
| 26 | struct cx_drv *driver; |
| 27 | }; |
| 28 | |
| 29 | struct cx_device_id { |
| 30 | unsigned int part_num; |
| 31 | unsigned int mfg_num; |
| 32 | }; |
| 33 | |
| 34 | struct cx_drv { |
| 35 | char *name; |
| 36 | const struct cx_device_id *id_table; |
| 37 | struct device_driver driver; |
| 38 | int (*probe) (struct cx_dev * dev, const struct cx_device_id * id); |
| 39 | int (*remove) (struct cx_dev * dev); |
| 40 | }; |
| 41 | |
| 42 | /* create DMA address by stripping AS bits */ |
Prarit Bhargava | 53493dc | 2006-01-16 19:54:40 -0800 | [diff] [blame] | 43 | #define TIOCX_DMA_ADDR(a) (u64)((u64)(a) & 0xffffcfffffffffUL) |
Bruce Losure | e1e1974 | 2005-04-25 13:09:41 -0700 | [diff] [blame] | 44 | |
Prarit Bhargava | 53493dc | 2006-01-16 19:54:40 -0800 | [diff] [blame] | 45 | #define TIOCX_TO_TIOCX_DMA_ADDR(a) (u64)(((u64)(a) & 0xfffffffff) | \ |
| 46 | ((((u64)(a)) & 0xffffc000000000UL) <<2)) |
Bruce Losure | e1e1974 | 2005-04-25 13:09:41 -0700 | [diff] [blame] | 47 | |
| 48 | #define TIO_CE_ASIC_PARTNUM 0xce00 |
| 49 | #define TIOCX_CORELET 3 |
| 50 | |
| 51 | /* These are taken from tio_mmr_as.h */ |
| 52 | #define TIO_ICE_FRZ_CFG TIO_MMR_ADDR_MOD(0x00000000b0008100UL) |
| 53 | #define TIO_ICE_PMI_TX_CFG TIO_MMR_ADDR_MOD(0x00000000b000b100UL) |
| 54 | #define TIO_ICE_PMI_TX_DYN_CREDIT_STAT_CB3 TIO_MMR_ADDR_MOD(0x00000000b000be18UL) |
| 55 | #define TIO_ICE_PMI_TX_DYN_CREDIT_STAT_CB3_CREDIT_CNT_MASK 0x000000000000000fUL |
| 56 | |
| 57 | #define to_cx_dev(n) container_of(n, struct cx_dev, dev) |
| 58 | #define to_cx_driver(drv) container_of(drv, struct cx_drv, driver) |
| 59 | |
| 60 | extern struct sn_irq_info *tiocx_irq_alloc(nasid_t, int, int, nasid_t, int); |
| 61 | extern void tiocx_irq_free(struct sn_irq_info *); |
| 62 | extern int cx_device_unregister(struct cx_dev *); |
Bruce Losure | 25732ad | 2005-09-02 15:16:35 -0500 | [diff] [blame] | 63 | extern int cx_device_register(nasid_t, int, int, struct hubdev_info *, int); |
Bruce Losure | e1e1974 | 2005-04-25 13:09:41 -0700 | [diff] [blame] | 64 | extern int cx_driver_unregister(struct cx_drv *); |
| 65 | extern int cx_driver_register(struct cx_drv *); |
Prarit Bhargava | 53493dc | 2006-01-16 19:54:40 -0800 | [diff] [blame] | 66 | extern u64 tiocx_dma_addr(u64 addr); |
| 67 | extern u64 tiocx_swin_base(int nasid); |
| 68 | extern void tiocx_mmr_store(int nasid, u64 offset, u64 value); |
| 69 | extern u64 tiocx_mmr_load(int nasid, u64 offset); |
Bruce Losure | e1e1974 | 2005-04-25 13:09:41 -0700 | [diff] [blame] | 70 | |
| 71 | #endif // __KERNEL__ |
| 72 | #endif // _ASM_IA64_SN_TIO_TIOCX__ |