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
6 * Copyright (C) 2003 Silicon Graphics, Inc. All rights reserved.
9 #include <asm/sn/sgi.h>
10 #include <asm/sn/sn_sal.h>
11 #include <asm/sn/pci/pci_bus_cvlink.h>
12 #include <asm/sn/simulator.h>
14 extern pciio_provider_t
*pciio_to_provider_fns(vertex_hdl_t dev
);
17 snia_badaddr_val(volatile void *addr
, int len
, volatile void *ptr
)
20 volatile void *new_addr
;
24 new_addr
= (void *) addr
;
25 ret
= ia64_sn_probe_io_slot((long) new_addr
, len
, (void *) ptr
);
29 "snia_badaddr_val given len %x but supports len of 4 only\n",
34 panic("snia_badaddr_val: unexpected status (%d) in probing",
41 snia_get_console_nasid(void)
43 extern nasid_t console_nasid
;
44 extern nasid_t master_baseio_nasid
;
46 if (console_nasid
< 0) {
47 console_nasid
= ia64_sn_get_console_nasid();
48 if (console_nasid
< 0) {
49 // ZZZ What do we do if we don't get a console nasid on the hardware????
50 if (IS_RUNNING_ON_SIMULATOR())
51 console_nasid
= master_baseio_nasid
;
58 snia_get_master_baseio_nasid(void)
60 extern nasid_t master_baseio_nasid
;
61 extern char master_baseio_wid
;
63 if (master_baseio_nasid
< 0) {
64 master_baseio_nasid
= ia64_sn_get_master_baseio_nasid();
66 if (master_baseio_nasid
>= 0) {
68 WIDGETID_GET(KL_CONFIG_CH_CONS_INFO
69 (master_baseio_nasid
)->memory_base
);
72 return master_baseio_nasid
;
76 * XXX: should probably be called __sn2_pci_rrb_alloc
81 snia_pcibr_rrb_alloc(struct pci_dev
*pci_dev
,
82 int *count_vchan0
, int *count_vchan1
)
84 vertex_hdl_t dev
= PCIDEV_VERTEX(pci_dev
);
86 return pcibr_rrb_alloc(dev
, count_vchan0
, count_vchan1
);
90 * XXX: interface should be more like
92 * int __sn2_pci_enable_bwswap(struct pci_dev *dev);
93 * void __sn2_pci_disable_bswap(struct pci_dev *dev);
95 /* used by ioc4 ide */
98 snia_pciio_endian_set(struct pci_dev
* pci_dev
,
99 pciio_endian_t device_end
, pciio_endian_t desired_end
)
101 vertex_hdl_t dev
= PCIDEV_VERTEX(pci_dev
);
103 return ((pciio_to_provider_fns(dev
))->endian_set
)
104 (dev
, device_end
, desired_end
);
107 EXPORT_SYMBOL(snia_pciio_endian_set
);
108 EXPORT_SYMBOL(snia_pcibr_rrb_alloc
);