Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
/******************************************************************************
 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
 *
 * Based on the r8180 driver, which is:
 * Copyright 2004-2005 Andrea Merello <andrea.merello@gmail.com>, et al.
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
 *
 * The full GNU General Public License is included in this distribution in the
 * file called LICENSE.
 *
 * Contact Information:
 * wlanfae <wlanfae@realtek.com>
 ******************************************************************************/
#ifndef _RTL_PCI_H
#define _RTL_PCI_H

#include <linux/types.h>
#include <linux/pci.h>

static inline void NdisRawWritePortUlong(u32 port,  u32 val)
{
	outl(val, port);
}

static inline void NdisRawWritePortUchar(u32 port,  u8 val)
{
	outb(val, port);
}

static inline void NdisRawReadPortUchar(u32 port, u8 *pval)
{
	*pval = inb(port);
}

static inline void NdisRawReadPortUshort(u32 port, u16 *pval)
{
	*pval = inw(port);
}

static inline void NdisRawReadPortUlong(u32 port, u32 *pval)
{
	*pval = inl(port);
}

struct mp_adapter {
	u8		LinkCtrlReg;

	u8		BusNumber;
	u8		DevNumber;
	u8		FuncNumber;

	u8		PciBridgeBusNum;
	u8		PciBridgeDevNum;
	u8		PciBridgeFuncNum;
	u8		PciBridgeVendor;
	u16		PciBridgeVendorId;
	u16		PciBridgeDeviceId;
	u8		PciBridgePCIeHdrOffset;
	u8		PciBridgeLinkCtrlReg;
};

struct rt_pci_capab_header {
	unsigned char   CapabilityID;
	unsigned char   Next;
};

#define PCI_MAX_BRIDGE_NUMBER				255
#define PCI_MAX_DEVICES						32
#define PCI_MAX_FUNCTION					8

#define PCI_CONF_ADDRESS					0x0CF8
#define PCI_CONF_DATA						0x0CFC

#define	PCI_CLASS_BRIDGE_DEV				0x06
#define	PCI_SUBCLASS_BR_PCI_TO_PCI		0x04

#define	U1DONTCARE						0xFF
#define	U2DONTCARE						0xFFFF
#define	U4DONTCARE						0xFFFFFFFF

#define	INTEL_VENDOR_ID					0x8086
#define	SIS_VENDOR_ID						0x1039
#define	ATI_VENDOR_ID						0x1002
#define	ATI_DEVICE_ID						0x7914
#define	AMD_VENDOR_ID						0x1022

#define PCI_CAPABILITY_ID_PCI_EXPRESS		0x10

struct net_device;
bool rtl8192_pci_findadapter(struct pci_dev *pdev, struct net_device *dev);

#endif