1*a2a55e51SPrabhakar Kushwaha /* 2*a2a55e51SPrabhakar Kushwaha * Copyright (C) 2013-2015 Freescale Semiconductor 3*a2a55e51SPrabhakar Kushwaha * 4*a2a55e51SPrabhakar Kushwaha * SPDX-License-Identifier: GPL-2.0+ 5*a2a55e51SPrabhakar Kushwaha */ 6*a2a55e51SPrabhakar Kushwaha 7*a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_sys.h> 8*a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_cmd.h> 9*a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_dpio.h> 10*a2a55e51SPrabhakar Kushwaha 11*a2a55e51SPrabhakar Kushwaha int dpio_open(struct fsl_mc_io *mc_io, int dpio_id, uint16_t *token) 12*a2a55e51SPrabhakar Kushwaha { 13*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 14*a2a55e51SPrabhakar Kushwaha int err; 15*a2a55e51SPrabhakar Kushwaha 16*a2a55e51SPrabhakar Kushwaha /* prepare command */ 17*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_OPEN, 18*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, 0); 19*a2a55e51SPrabhakar Kushwaha DPIO_CMD_OPEN(cmd, dpio_id); 20*a2a55e51SPrabhakar Kushwaha 21*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 22*a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd); 23*a2a55e51SPrabhakar Kushwaha if (err) 24*a2a55e51SPrabhakar Kushwaha return err; 25*a2a55e51SPrabhakar Kushwaha 26*a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */ 27*a2a55e51SPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header); 28*a2a55e51SPrabhakar Kushwaha 29*a2a55e51SPrabhakar Kushwaha return 0; 30*a2a55e51SPrabhakar Kushwaha } 31*a2a55e51SPrabhakar Kushwaha 32*a2a55e51SPrabhakar Kushwaha int dpio_close(struct fsl_mc_io *mc_io, uint16_t token) 33*a2a55e51SPrabhakar Kushwaha { 34*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 35*a2a55e51SPrabhakar Kushwaha 36*a2a55e51SPrabhakar Kushwaha /* prepare command */ 37*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_CLOSE, 38*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_HIGH, token); 39*a2a55e51SPrabhakar Kushwaha 40*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 41*a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 42*a2a55e51SPrabhakar Kushwaha } 43*a2a55e51SPrabhakar Kushwaha 44*a2a55e51SPrabhakar Kushwaha int dpio_enable(struct fsl_mc_io *mc_io, uint16_t token) 45*a2a55e51SPrabhakar Kushwaha { 46*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 47*a2a55e51SPrabhakar Kushwaha 48*a2a55e51SPrabhakar Kushwaha /* prepare command */ 49*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_ENABLE, 50*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, token); 51*a2a55e51SPrabhakar Kushwaha 52*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 53*a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 54*a2a55e51SPrabhakar Kushwaha } 55*a2a55e51SPrabhakar Kushwaha 56*a2a55e51SPrabhakar Kushwaha int dpio_disable(struct fsl_mc_io *mc_io, uint16_t token) 57*a2a55e51SPrabhakar Kushwaha { 58*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 59*a2a55e51SPrabhakar Kushwaha 60*a2a55e51SPrabhakar Kushwaha /* prepare command */ 61*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_DISABLE, 62*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, 63*a2a55e51SPrabhakar Kushwaha token); 64*a2a55e51SPrabhakar Kushwaha 65*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 66*a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 67*a2a55e51SPrabhakar Kushwaha } 68*a2a55e51SPrabhakar Kushwaha 69*a2a55e51SPrabhakar Kushwaha int dpio_reset(struct fsl_mc_io *mc_io, uint16_t token) 70*a2a55e51SPrabhakar Kushwaha { 71*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 72*a2a55e51SPrabhakar Kushwaha 73*a2a55e51SPrabhakar Kushwaha /* prepare command */ 74*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_RESET, 75*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, token); 76*a2a55e51SPrabhakar Kushwaha 77*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 78*a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 79*a2a55e51SPrabhakar Kushwaha } 80*a2a55e51SPrabhakar Kushwaha 81*a2a55e51SPrabhakar Kushwaha int dpio_get_attributes(struct fsl_mc_io *mc_io, 82*a2a55e51SPrabhakar Kushwaha uint16_t token, 83*a2a55e51SPrabhakar Kushwaha struct dpio_attr *attr) 84*a2a55e51SPrabhakar Kushwaha { 85*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 86*a2a55e51SPrabhakar Kushwaha int err; 87*a2a55e51SPrabhakar Kushwaha 88*a2a55e51SPrabhakar Kushwaha /* prepare command */ 89*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPIO_CMDID_GET_ATTR, 90*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, 91*a2a55e51SPrabhakar Kushwaha token); 92*a2a55e51SPrabhakar Kushwaha 93*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 94*a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd); 95*a2a55e51SPrabhakar Kushwaha if (err) 96*a2a55e51SPrabhakar Kushwaha return err; 97*a2a55e51SPrabhakar Kushwaha 98*a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */ 99*a2a55e51SPrabhakar Kushwaha DPIO_RSP_GET_ATTR(cmd, attr); 100*a2a55e51SPrabhakar Kushwaha 101*a2a55e51SPrabhakar Kushwaha return 0; 102*a2a55e51SPrabhakar Kushwaha } 103