mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-28 23:23:55 +08:00
1a59d1b8e0
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version 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 59 temple place suite 330 boston ma 02111 1307 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 1334 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Richard Fontana <rfontana@redhat.com> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070033.113240726@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
58 lines
1.7 KiB
C
58 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Derived from include/asm-powerpc/iommu.h
|
|
*
|
|
* Copyright IBM Corporation, 2006-2007
|
|
*
|
|
* Author: Jon Mason <jdmason@us.ibm.com>
|
|
* Author: Muli Ben-Yehuda <muli@il.ibm.com>
|
|
*/
|
|
|
|
#ifndef _ASM_X86_CALGARY_H
|
|
#define _ASM_X86_CALGARY_H
|
|
|
|
#include <linux/spinlock.h>
|
|
#include <linux/device.h>
|
|
#include <linux/dma-mapping.h>
|
|
#include <linux/timer.h>
|
|
#include <asm/types.h>
|
|
|
|
struct iommu_table {
|
|
const struct cal_chipset_ops *chip_ops; /* chipset specific funcs */
|
|
unsigned long it_base; /* mapped address of tce table */
|
|
unsigned long it_hint; /* Hint for next alloc */
|
|
unsigned long *it_map; /* A simple allocation bitmap for now */
|
|
void __iomem *bbar; /* Bridge BAR */
|
|
u64 tar_val; /* Table Address Register */
|
|
struct timer_list watchdog_timer;
|
|
spinlock_t it_lock; /* Protects it_map */
|
|
unsigned int it_size; /* Size of iommu table in entries */
|
|
unsigned char it_busno; /* Bus number this table belongs to */
|
|
};
|
|
|
|
struct cal_chipset_ops {
|
|
void (*handle_quirks)(struct iommu_table *tbl, struct pci_dev *dev);
|
|
void (*tce_cache_blast)(struct iommu_table *tbl);
|
|
void (*dump_error_regs)(struct iommu_table *tbl);
|
|
};
|
|
|
|
#define TCE_TABLE_SIZE_UNSPECIFIED ~0
|
|
#define TCE_TABLE_SIZE_64K 0
|
|
#define TCE_TABLE_SIZE_128K 1
|
|
#define TCE_TABLE_SIZE_256K 2
|
|
#define TCE_TABLE_SIZE_512K 3
|
|
#define TCE_TABLE_SIZE_1M 4
|
|
#define TCE_TABLE_SIZE_2M 5
|
|
#define TCE_TABLE_SIZE_4M 6
|
|
#define TCE_TABLE_SIZE_8M 7
|
|
|
|
extern int use_calgary;
|
|
|
|
#ifdef CONFIG_CALGARY_IOMMU
|
|
extern int detect_calgary(void);
|
|
#else
|
|
static inline int detect_calgary(void) { return -ENODEV; }
|
|
#endif
|
|
|
|
#endif /* _ASM_X86_CALGARY_H */
|