Commit 965bda4d authored by Bryan O'Donoghue's avatar Bryan O'Donoghue
Browse files

imx: imx_io_mux: Define an IO-mux layer



This patch defines:

- The full range of IO-mux register offsets relative to the base address of
  the IO-mux block base address.

- The bits for muxing the UART1 TX/RX lines.

- The bits for muxing the UART6 TX/RX lines.

- The pad control pad bits for the UART

Two functions are provided to configure pad muxes:

- void io_muxc_set_pad_alt_function(pad_mux_offset, alt_function)
  Takes a pad_mux_offset and sets the alt_function bit-mask supplied.
  This will have the effect of switching the pad into one of its defined
  peripheral functions. These peripheral function modes are defined in the
  NXP documentation and need to be referred to in order to correctly
  configure a new alternative-function.

- void io_muxc_set_pad_features(pad_feature_offset, pad_features)
  Takes a pad_feature_offset and applies a pad_features bit-mask to the
  indicated pad.
  This function allows the setting of PAD drive-strength, pull-up values,
  hysteresis glitch filters and slew-rate settings.
Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
parent ddfb773f
/*
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <mmio.h>
#include <imx_regs.h>
#include <imx_io_mux.h>
void imx_io_muxc_set_pad_alt_function(uint32_t pad_mux_offset, uint32_t alt_function)
{
uintptr_t addr = (uintptr_t)(MXC_IO_MUXC_BASE + pad_mux_offset);
mmio_write_32(addr, alt_function);
}
void imx_io_muxc_set_pad_features(uint32_t pad_feature_offset, uint32_t pad_features)
{
uintptr_t addr = (uintptr_t)(MXC_IO_MUXC_BASE + pad_feature_offset);
mmio_write_32(addr, pad_features);
}
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment