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