summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2020-03-05 07:51:12 -0500
committerTom Rini <[email protected]>2020-03-05 07:51:12 -0500
commit9f976bac2b4a81a13de8124a896a198cbeabb634 (patch)
tree30d0db0155174797c61f57d8125988dd8725dd4f /drivers
parentd16e18ca6c4d81ac142acd529b1acb55b0c96dfc (diff)
parent2c64d11e3239b5b3cf29c911fd9cdb6ebb3880d6 (diff)
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-x86
- Revert "x86: use invd instead of wbinvd in real mode start code" - Convert toradex boards README to reST - serial: ns16550: Move PCI access from ofdata_to_platdata() to probe() - x86: apl: Use cpu_x86_get_count() for cpu_ops.get_count
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/intel/clk_intel.c4
-rw-r--r--drivers/serial/ns16550.c40
2 files changed, 28 insertions, 16 deletions
diff --git a/drivers/clk/intel/clk_intel.c b/drivers/clk/intel/clk_intel.c
index d2e15491a3d..b633934d90a 100644
--- a/drivers/clk/intel/clk_intel.c
+++ b/drivers/clk/intel/clk_intel.c
@@ -11,8 +11,6 @@
static ulong intel_clk_get_rate(struct clk *clk)
{
- ulong rate;
-
switch (clk->id) {
case CLK_I2C:
/* Hard-coded to 133MHz on current platforms */
@@ -20,8 +18,6 @@ static ulong intel_clk_get_rate(struct clk *clk)
default:
return -ENODEV;
}
-
- return rate;
}
static struct clk_ops intel_clk_ops = {
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 1fcbc350154..c1b303ffcba 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -479,12 +479,40 @@ static int ns16550_serial_getinfo(struct udevice *dev,
return 0;
}
+#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
+static int ns1655_serial_set_base_addr(struct udevice *dev)
+{
+ fdt_addr_t addr;
+ struct ns16550_platdata *plat;
+
+ plat = dev_get_platdata(dev);
+
+ addr = dev_read_addr_pci(dev);
+ if (addr == FDT_ADDR_T_NONE)
+ return -EINVAL;
+
+#ifdef CONFIG_SYS_NS16550_PORT_MAPPED
+ plat->base = addr;
+#else
+ plat->base = (unsigned long)map_physmem(addr, 0, MAP_NOCACHE);
+#endif
+
+ return 0;
+}
+#endif
+
int ns16550_serial_probe(struct udevice *dev)
{
struct NS16550 *const com_port = dev_get_priv(dev);
struct reset_ctl_bulk reset_bulk;
int ret;
+#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
+ ret = ns1655_serial_set_base_addr(dev);
+ if (ret)
+ return ret;
+#endif
+
ret = reset_get_bulk(dev, &reset_bulk);
if (!ret)
reset_deassert_bulk(&reset_bulk);
@@ -507,21 +535,9 @@ int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
{
struct ns16550_platdata *plat = dev->platdata;
const u32 port_type = dev_get_driver_data(dev);
- fdt_addr_t addr;
struct clk clk;
int err;
- /* try Processor Local Bus device first */
- addr = dev_read_addr_pci(dev);
- if (addr == FDT_ADDR_T_NONE)
- return -EINVAL;
-
-#ifdef CONFIG_SYS_NS16550_PORT_MAPPED
- plat->base = addr;
-#else
- plat->base = (unsigned long)map_physmem(addr, 0, MAP_NOCACHE);
-#endif
-
plat->reg_offset = dev_read_u32_default(dev, "reg-offset", 0);
plat->reg_shift = dev_read_u32_default(dev, "reg-shift", 0);
plat->reg_width = dev_read_u32_default(dev, "reg-io-width", 1);