Skip to content

Commit

Permalink
x86: chromebook_link: dts: Add PCH and LPC devices
Browse files Browse the repository at this point in the history
The PCH (Platform Controller Hub) is on the PCI bus, so show it as such.
The LPC (Low Pin Count) and SPI bus are inside the PCH, so put these in the
right place also.

Rename the compatible strings to be more descriptive since this board is the
only user. Once we are using driver model fully on x86, these will be
dropped.

Signed-off-by: Simon Glass <[email protected]>
  • Loading branch information
sjg20 committed Apr 18, 2015
1 parent a274e9c commit 90b16d1
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 34 deletions.
2 changes: 1 addition & 1 deletion arch/x86/cpu/ivybridge/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ int arch_cpu_init_dm(void)
/* TODO([email protected]): Get rid of gd->hose */
gd->hose = hose;

node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_LPC);
node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_PCH);
if (node < 0)
return -ENOENT;
ret = lpc_early_init(gd->fdt_blob, node, PCH_LPC_DEV);
Expand Down
13 changes: 12 additions & 1 deletion arch/x86/cpu/ivybridge/lpc.c
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@ int lpc_init(struct pci_controller *hose, pci_dev_t dev)
pci_write_bar32(hose, dev, 3, 0x800);
pci_write_bar32(hose, dev, 4, 0x900);

node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_LPC);
node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_PCH);
if (node < 0)
return -ENOENT;

Expand Down Expand Up @@ -568,3 +568,14 @@ void lpc_enable(pci_dev_t dev)
writew(0x0010, RCB_REG(DISPBDF));
setbits_le32(RCB_REG(FD2), PCH_ENABLE_DBDF);
}

static const struct udevice_id bd82x6x_lpc_ids[] = {
{ .compatible = "intel,bd82x6x-lpc" },
{ }
};

U_BOOT_DRIVER(bd82x6x_lpc_drv) = {
.name = "lpc",
.id = UCLASS_LPC,
.of_match = bd82x6x_lpc_ids,
};
70 changes: 39 additions & 31 deletions arch/x86/dts/chromebook_link.dts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
compatible = "google,link", "intel,celeron-ivybridge";

aliases {
spi0 = "/spi";
spi0 = "/pci/pch/spi";
};

config {
Expand Down Expand Up @@ -151,26 +151,6 @@
};
};

spi {
#address-cells = <1>;
#size-cells = <0>;
compatible = "intel,ich-spi";
spi-flash@0 {
#size-cells = <1>;
#address-cells = <1>;
reg = <0>;
compatible = "winbond,w25q64", "spi-flash";
memory-map = <0xff800000 0x00800000>;
rw-mrc-cache {
label = "rw-mrc-cache";
/* Alignment: 4k (for updating) */
reg = <0x003e0000 0x00010000>;
type = "wiped";
wipe-value = [ff];
};
};
};

pci {
compatible = "intel,pci-ivybridge", "pci-x86";
#address-cells = <3>;
Expand Down Expand Up @@ -199,9 +179,10 @@
intel,pch-backlight = <0x04000000>;
};

lpc {
pch {
reg = <0x0000f800 0 0 0 0>;
compatible = "intel,bd82x6x";
u-boot,dm-pre-reloc;
#address-cells = <1>;
#size-cells = <1>;
gen-dec = <0x800 0xfc 0x900 0xfc>;
Expand All @@ -212,17 +193,44 @@
1 0 0 0 0 0 0 0>;
/* Enable EC SMI source */
intel,alt-gp-smi-enable = <0x0100>;
spi {
#address-cells = <1>;
#size-cells = <0>;
compatible = "intel,ich-spi";
spi-flash@0 {
#size-cells = <1>;
#address-cells = <1>;
reg = <0>;
compatible = "winbond,w25q64",
"spi-flash";
memory-map = <0xff800000 0x00800000>;
rw-mrc-cache {
label = "rw-mrc-cache";
reg = <0x003e0000 0x00010000>;
type = "wiped";
wipe-value = [ff];
};
};
};

cros-ec@200 {
compatible = "google,cros-ec";
reg = <0x204 1 0x200 1 0x880 0x80>;

/* Describes the flash memory within the EC */
lpc {
compatible = "intel,bd82x6x-lpc";
#address-cells = <1>;
#size-cells = <1>;
flash@8000000 {
reg = <0x08000000 0x20000>;
erase-value = <0xff>;
#size-cells = <0>;
cros-ec@200 {
compatible = "google,cros-ec";
reg = <0x204 1 0x200 1 0x880 0x80>;

/*
* Describes the flash memory within
* the EC
*/
#address-cells = <1>;
#size-cells = <1>;
flash@8000000 {
reg = <0x08000000 0x20000>;
erase-value = <0xff>;
};
};
};
};
Expand Down
1 change: 1 addition & 0 deletions include/fdtdec.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ enum fdt_compat_id {
COMPAT_INTEL_ICH_SPI, /* Intel ICH7/9 SPI controller */
COMPAT_INTEL_QRK_MRC, /* Intel Quark MRC */
COMPAT_SOCIONEXT_XHCI, /* Socionext UniPhier xHCI */
COMPAT_INTEL_PCH, /* Intel PCH */

COMPAT_COUNT,
};
Expand Down
3 changes: 2 additions & 1 deletion lib/fdtdec.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ static const char * const compat_names[COMPAT_COUNT] = {
COMPAT(COMPAT_NXP_PTN3460, "nxp,ptn3460"),
COMPAT(SAMSUNG_EXYNOS_SYSMMU, "samsung,sysmmu-v3.3"),
COMPAT(PARADE_PS8625, "parade,ps8625"),
COMPAT(COMPAT_INTEL_LPC, "intel,bd82x6x"),
COMPAT(COMPAT_INTEL_LPC, "intel,bd82x6x-lpc"),
COMPAT(INTEL_MICROCODE, "intel,microcode"),
COMPAT(MEMORY_SPD, "memory-spd"),
COMPAT(INTEL_PANTHERPOINT_AHCI, "intel,pantherpoint-ahci"),
Expand All @@ -77,6 +77,7 @@ static const char * const compat_names[COMPAT_COUNT] = {
COMPAT(INTEL_ICH_SPI, "intel,ich-spi"),
COMPAT(INTEL_QRK_MRC, "intel,quark-mrc"),
COMPAT(SOCIONEXT_XHCI, "socionext,uniphier-xhci"),
COMPAT(COMPAT_INTEL_PCH, "intel,bd82x6x"),
};

const char *fdtdec_get_compatible(enum fdt_compat_id id)
Expand Down

0 comments on commit 90b16d1

Please sign in to comment.