Commit 88830a3b authored by Jérôme Pouiller's avatar Jérôme Pouiller Committed by Benjamin Cabé
Browse files

uart: ns16550: Enable clock if defined



Currently, ns16550 allows the user to specify a clock attribute in the
Device Tree. This node is use to retrieve the internal frequency of the
hardware block.

However, ns16550 expects the clock is already initialised and it doesn't
try to enable it. Let's fix that issue.

Signed-off-by: default avatarJérôme Pouiller <jerome.pouiller@silabs.com>
parent 52b2a801
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -573,9 +573,7 @@ static int uart_ns16550_configure(const struct device *dev,
	const struct uart_ns16550_dev_config * const dev_cfg = dev->config;
	uint8_t mdc = 0U, c;
	uint32_t pclk = 0U;

	/* temp for return value if error occurs in this locked region */
	int ret = 0;
	int ret;

	k_spinlock_key_t key = k_spin_lock(&dev_data->lock);

@@ -622,6 +620,11 @@ static int uart_ns16550_configure(const struct device *dev,
			goto out;
		}

		ret = clock_control_on(dev_cfg->clock_dev, dev_cfg->clock_subsys);
		if (ret != 0 && ret != -EALREADY) {
			goto out;
		}

		if (clock_control_get_rate(dev_cfg->clock_dev,
					   dev_cfg->clock_subsys,
					   &pclk) != 0) {
@@ -722,6 +725,7 @@ static int uart_ns16550_configure(const struct device *dev,

	/* disable interrupts  */
	ns16550_outbyte(dev_cfg, IER(dev), 0x00);
	ret = 0;

out:
	k_spin_unlock(&dev_data->lock, key);