|
@@ -18,6 +18,8 @@
|
|
|
|
|
|
#include "ich.h"
|
|
|
|
|
|
+DECLARE_GLOBAL_DATA_PTR;
|
|
|
+
|
|
|
#ifdef DEBUG_TRACE
|
|
|
#define debug_trace(fmt, args...) debug(fmt, ##args)
|
|
|
#else
|
|
@@ -594,9 +596,6 @@ static int ich_spi_probe(struct udevice *dev)
|
|
|
uint8_t bios_cntl;
|
|
|
int ret;
|
|
|
|
|
|
- /* Check the ICH version */
|
|
|
- plat->ich_version = pch_get_version(dev->parent);
|
|
|
-
|
|
|
ret = ich_init_controller(dev, plat, priv);
|
|
|
if (ret)
|
|
|
return ret;
|
|
@@ -658,6 +657,25 @@ static int ich_spi_child_pre_probe(struct udevice *dev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int ich_spi_ofdata_to_platdata(struct udevice *dev)
|
|
|
+{
|
|
|
+ struct ich_spi_platdata *plat = dev_get_platdata(dev);
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = fdt_node_check_compatible(gd->fdt_blob, dev->of_offset,
|
|
|
+ "intel,ich7-spi");
|
|
|
+ if (ret == 0) {
|
|
|
+ plat->ich_version = PCHV_7;
|
|
|
+ } else {
|
|
|
+ ret = fdt_node_check_compatible(gd->fdt_blob, dev->of_offset,
|
|
|
+ "intel,ich9-spi");
|
|
|
+ if (ret == 0)
|
|
|
+ plat->ich_version = PCHV_9;
|
|
|
+ }
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
static const struct dm_spi_ops ich_spi_ops = {
|
|
|
.xfer = ich_spi_xfer,
|
|
|
.set_speed = ich_spi_set_speed,
|
|
@@ -669,7 +687,8 @@ static const struct dm_spi_ops ich_spi_ops = {
|
|
|
};
|
|
|
|
|
|
static const struct udevice_id ich_spi_ids[] = {
|
|
|
- { .compatible = "intel,ich-spi" },
|
|
|
+ { .compatible = "intel,ich7-spi" },
|
|
|
+ { .compatible = "intel,ich9-spi" },
|
|
|
{ }
|
|
|
};
|
|
|
|
|
@@ -678,6 +697,7 @@ U_BOOT_DRIVER(ich_spi) = {
|
|
|
.id = UCLASS_SPI,
|
|
|
.of_match = ich_spi_ids,
|
|
|
.ops = &ich_spi_ops,
|
|
|
+ .ofdata_to_platdata = ich_spi_ofdata_to_platdata,
|
|
|
.platdata_auto_alloc_size = sizeof(struct ich_spi_platdata),
|
|
|
.priv_auto_alloc_size = sizeof(struct ich_spi_priv),
|
|
|
.child_pre_probe = ich_spi_child_pre_probe,
|