1114402Sru/* 2151497Sru * Copyright 2017, Data61 3114402Sru * Commonwealth Scientific and Industrial Research Organisation (CSIRO) 4114402Sru * ABN 41 687 119 230. 5114402Sru * 6114402Sru * This software may be distributed and modified according to the terms of 7114402Sru * the BSD 2-Clause license. Note that NO WARRANTY is provided. 8114402Sru * See "LICENSE_BSD2.txt" for details. 9114402Sru * 10114402Sru * @TAG(DATA61_BSD) 11114402Sru */ 12114402Sru#include <stdint.h> 13114402Sru#include <utils/attribute.h> 14114402Sru#include <platsupport/mux.h> 15114402Sru#include "../../services.h" 16114402Sru 17114402Srustruct imx31_mux_regs { 18114402Sru int dummy; 19114402Sru}; 20151497Sru 21114402Srustatic struct imx31_mux { 22114402Sru volatile struct imx31_mux_regs* mux; 23114402Sru} _mux; 24114402Sru 25114402Srustatic inline struct imx31_mux* get_mux_priv(mux_sys_t* mux) { 26114402Sru return (struct imx31_mux*)mux->priv; 27114402Sru} 28114402Sru 29114402Srustatic inline void set_mux_priv(mux_sys_t* mux, struct imx31_mux* imx31_mux) 30114402Sru{ 31114402Sru assert(mux != NULL); 32114402Sru assert(imx31_mux != NULL); 33114402Sru mux->priv = imx31_mux; 34114402Sru} 35114402Sru 36151497Srustatic int 37151497Sruimx31_mux_feature_enable(mux_sys_t* mux, mux_feature_t mux_feature, UNUSED enum mux_gpio_dir mgd) 38151497Sru{ 39151497Sru struct imx31_mux* m; 40151497Sru if (mux == NULL || mux->priv == NULL) { 41151497Sru return -1; 42151497Sru } 43114402Sru m = get_mux_priv(mux); 44114402Sru 45114402Sru switch (mux_feature) { 46114402Sru default: 47114402Sru (void)m; 48114402Sru return -1; 49114402Sru } 50114402Sru} 51114402Sru 52114402Srustatic int 53114402Sruimx31_mux_init_common(mux_sys_t* mux) 54114402Sru{ 55114402Sru set_mux_priv(mux, &_mux); 56114402Sru mux->feature_enable = &imx31_mux_feature_enable; 57114402Sru return 0; 58114402Sru} 59114402Sru 60114402Sruint 61114402Sruimx31_mux_init(void* bank1, 62114402Sru mux_sys_t* mux) 63114402Sru{ 64114402Sru (void)bank1; 65151497Sru return imx31_mux_init_common(mux); 66151497Sru} 67151497Sru 68151497Sruint 69151497Srumux_sys_init(ps_io_ops_t* io_ops, UNUSED void *dependencies, mux_sys_t* mux) 70151497Sru{ 71151497Sru (void)io_ops; 72151497Sru return imx31_mux_init_common(mux); 73151497Sru} 74151497Sru