xref: /rk3399_rockchip-uboot/drivers/pch/pch9.c (revision 81afac123896cdd560411f78f673d5bdccbcafbb)
1*81afac12SSimon Glass /*
2*81afac12SSimon Glass  * Copyright (C) 2014 Google, Inc
3*81afac12SSimon Glass  *
4*81afac12SSimon Glass  * SPDX-License-Identifier:	GPL-2.0+
5*81afac12SSimon Glass  */
6*81afac12SSimon Glass 
7*81afac12SSimon Glass #include <common.h>
8*81afac12SSimon Glass #include <dm.h>
9*81afac12SSimon Glass #include <pch.h>
10*81afac12SSimon Glass 
11*81afac12SSimon Glass #define SBASE_ADDR	0x54
12*81afac12SSimon Glass 
13*81afac12SSimon Glass static int pch9_get_sbase(struct udevice *dev, ulong *sbasep)
14*81afac12SSimon Glass {
15*81afac12SSimon Glass 	uint32_t sbase_addr;
16*81afac12SSimon Glass 
17*81afac12SSimon Glass 	dm_pci_read_config32(dev, SBASE_ADDR, &sbase_addr);
18*81afac12SSimon Glass 	*sbasep = sbase_addr & 0xfffffe00;
19*81afac12SSimon Glass 
20*81afac12SSimon Glass 	return 0;
21*81afac12SSimon Glass }
22*81afac12SSimon Glass 
23*81afac12SSimon Glass static enum pch_version pch9_get_version(struct udevice *dev)
24*81afac12SSimon Glass {
25*81afac12SSimon Glass 	return PCHV_9;
26*81afac12SSimon Glass }
27*81afac12SSimon Glass 
28*81afac12SSimon Glass static const struct pch_ops pch9_ops = {
29*81afac12SSimon Glass 	.get_sbase	= pch9_get_sbase,
30*81afac12SSimon Glass 	.get_version	= pch9_get_version,
31*81afac12SSimon Glass };
32*81afac12SSimon Glass 
33*81afac12SSimon Glass static const struct udevice_id pch9_ids[] = {
34*81afac12SSimon Glass 	{ .compatible = "intel,pch9" },
35*81afac12SSimon Glass 	{ }
36*81afac12SSimon Glass };
37*81afac12SSimon Glass 
38*81afac12SSimon Glass U_BOOT_DRIVER(pch9_drv) = {
39*81afac12SSimon Glass 	.name		= "intel-pch9",
40*81afac12SSimon Glass 	.id		= UCLASS_PCH,
41*81afac12SSimon Glass 	.of_match	= pch9_ids,
42*81afac12SSimon Glass 	.ops		= &pch9_ops,
43*81afac12SSimon Glass };
44