ppc64 iSeries: use device_node instead of iSeries_Device_node
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / asm-ppc64 / iSeries / iSeries_pci.h
CommitLineData
1da177e4
LT
1#ifndef _ISERIES_64_PCI_H
2#define _ISERIES_64_PCI_H
3
fcee3895
SR
4/*
5 * File iSeries_pci.h created by Allan Trautman on Tue Feb 20, 2001.
6 *
7 * Define some useful macros for the iSeries pci routines.
8 * Copyright (C) 2001 Allan H Trautman, IBM Corporation
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the:
22 * Free Software Foundation, Inc.,
23 * 59 Temple Place, Suite 330,
24 * Boston, MA 02111-1307 USA
25 *
26 * Change Activity:
27 * Created Feb 20, 2001
28 * Added device reset, March 22, 2001
29 * Ported to ppc64, May 25, 2001
30 * End Change Activity
31 */
1da177e4 32
1da177e4 33#include <asm/abs_addr.h>
252e75a5
SR
34#include <asm/prom.h>
35#include <asm/pci-bridge.h>
1da177e4 36
fcee3895 37struct pci_dev; /* For Forward Reference */
1da177e4 38
fcee3895 39/*
252e75a5 40 * Gets iSeries Bus, SubBus, DevFn using device_node structure
fcee3895 41 */
1da177e4 42
252e75a5
SR
43#define ISERIES_BUS(DevPtr) PCI_DN(DevPtr)->DsaAddr.Dsa.busNumber
44#define ISERIES_SUBBUS(DevPtr) PCI_DN(DevPtr)->DsaAddr.Dsa.subBusNumber
45#define ISERIES_DEVNODE(PciDev) ((struct device_node *)PciDev->sysdata)
1da177e4
LT
46
47#define EADsMaxAgents 7
48
fcee3895
SR
49/*
50 * Decodes Linux DevFn to iSeries DevFn, bridge device, or function.
51 * For Linux, see PCI_SLOT and PCI_FUNC in include/linux/pci.h
52 */
1da177e4 53
fcee3895 54#define ISERIES_PCI_AGENTID(idsel, func) \
6b7feecb 55 (((idsel & 0x0F) << 4) | (func & 0x07))
fcee3895
SR
56#define ISERIES_ENCODE_DEVICE(agentid) \
57 ((0x10) | ((agentid & 0x20) >> 2) | (agentid & 0x07))
1da177e4 58
fcee3895
SR
59#define ISERIES_GET_DEVICE_FROM_SUBBUS(subbus) ((subbus >> 5) & 0x7)
60#define ISERIES_GET_FUNCTION_FROM_SUBBUS(subbus) ((subbus >> 2) & 0x7)
1da177e4 61
fcee3895
SR
62/*
63 * Converts Virtual Address to Real Address for Hypervisor calls
64 */
65#define ISERIES_HV_ADDR(virtaddr) \
66 (0x8000000000000000 | virt_to_abs(virtaddr))
1da177e4 67
061c063e 68extern void iSeries_Device_Information(struct pci_dev*, int);
1da177e4
LT
69
70#endif /* _ISERIES_64_PCI_H */