| /* ------------------------------------------ |
| * Copyright (c) 2016, Synopsys, Inc. All rights reserved. |
| |
| * Redistribution and use in source and binary forms, with or without modification, |
| * are permitted provided that the following conditions are met: |
| |
| * 1) Redistributions of source code must retain the above copyright notice, this |
| * list of conditions and the following disclaimer. |
| |
| * 2) Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation and/or |
| * other materials provided with the distribution. |
| |
| * 3) Neither the name of the Synopsys, Inc., nor the names of its contributors may |
| * be used to endorse or promote products derived from this software without |
| * specific prior written permission. |
| |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
| * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| * \version 2016.05 |
| * \date 2014-07-07 |
| * \author Huaqi Fang(Huaqi.Fang@synopsys.com) |
| --------------------------------------------- */ |
| /** |
| * \defgroup BOARD_EMSK_DRV_MUX EMSK Mux Driver |
| * \ingroup BOARD_EMSK_DRIVER |
| * \brief EMSK Mux Controller Driver |
| * \details |
| * Mux controller is the hardware external PMOD port pin connection |
| * controller, it can distribute the external port pins into different |
| * functions like general input/output, spi, iic, uart and so on. |
| */ |
| |
| /** |
| * \file |
| * \ingroup BOARD_EMSK_DRV_MUX |
| * \brief emsk mux controller driver |
| */ |
| |
| /** |
| * \addtogroup BOARD_EMSK_DRV_MUX |
| * @{ |
| */ |
| #include "board/emsk/common/mux_hal.h" |
| #include "board/emsk/common/mux.h" |
| |
| static MUX_REG *mux_ctrl_regs = (MUX_REG *)0; |
| |
| /** initialize i2c controller and set slave device address */ |
| void mux_init(MUX_REG *mux_regs) |
| { |
| // Initialize Mux controller registers by default values |
| mux_regs[PMOD_MUX_CTRL] = PMOD_MUX_CTRL_DEFAULT; |
| mux_regs[SPI_MAP_CTRL] = SPI_MAP_CTRL_DEFAULT; |
| mux_regs[UART_MAP_CTRL] = UART_MAP_CTRL_DEFAULT; |
| mux_ctrl_regs = mux_regs; |
| } |
| |
| /** Get mux ctrl register pointer, only valid after mux_init */ |
| MUX_REG *get_mux_regs(void) |
| { |
| return mux_ctrl_regs; |
| } |
| |
| /** set PMOD muxer scheme */ |
| void set_pmod_mux(MUX_REG *mux_regs, uint32_t val) |
| { |
| mux_regs[PMOD_MUX_CTRL] = val; |
| } |
| |
| /** get PMOD muxer scheme */ |
| uint32_t get_pmod_mux(MUX_REG *mux_regs) |
| { |
| return (uint32_t) mux_regs[PMOD_MUX_CTRL]; |
| } |
| |
| /** set PMOD muxer scheme */ |
| void change_pmod_mux(MUX_REG *mux_regs, uint32_t val, uint32_t change_bits) |
| { |
| mux_regs[PMOD_MUX_CTRL] = ((mux_regs[PMOD_MUX_CTRL] & ~change_bits) | val); |
| } |
| |
| /** set SPI connection scheme */ |
| void set_spi_map(MUX_REG *mux_regs, uint32_t val) |
| { |
| mux_regs[SPI_MAP_CTRL] = val; |
| } |
| |
| /** get SPI connection scheme */ |
| uint32_t get_spi_map(MUX_REG *mux_regs) |
| { |
| return (uint32_t) mux_regs[SPI_MAP_CTRL]; |
| } |
| |
| /** set UART connection scheme */ |
| void set_uart_map(MUX_REG *mux_regs, uint32_t val) |
| { |
| mux_regs[UART_MAP_CTRL] = val; |
| } |
| |
| /** get UART connection scheme */ |
| uint32_t get_uart_map(MUX_REG *mux_regs) |
| { |
| return (uint32_t) mux_regs[UART_MAP_CTRL]; |
| } |
| /** @} end of group BOARD_EMSK_DRV_MUX */ |
| |