summaryrefslogtreecommitdiff
path: root/arch/x86/cpu/ivybridge/pci.c
blob: b081469c96e9c551c54c3e6df723fd3c5ce21481 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
 * Copyright (c) 2011 The Chromium OS Authors.
 * (C) Copyright 2008,2009
 * Graeme Russ, <graeme.russ@gmail.com>
 *
 * (C) Copyright 2002
 * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#include <common.h>
#include <dm.h>
#include <pci.h>
#include <asm/pci.h>
#include <asm/post.h>
#include <asm/arch/bd82x6x.h>
#include <asm/arch/pch.h>

static int pci_ivybridge_probe(struct udevice *bus)
{
	if (!(gd->flags & GD_FLG_RELOC))
		return 0;
	post_code(0x50);
	bd82x6x_init_extra();
	post_code(0x51);

	return 0;
}

static const struct dm_pci_ops pci_ivybridge_ops = {
	.read_config	= pci_x86_read_config,
	.write_config	= pci_x86_write_config,
};

static const struct udevice_id pci_ivybridge_ids[] = {
	{ .compatible = "intel,pci-ivybridge" },
	{ }
};

U_BOOT_DRIVER(pci_ivybridge_drv) = {
	.name		= "pci_ivybridge",
	.id		= UCLASS_PCI,
	.of_match	= pci_ivybridge_ids,
	.ops		= &pci_ivybridge_ops,
	.probe		= pci_ivybridge_probe,
};