1*a2a55e51SPrabhakar Kushwaha /* 2*a2a55e51SPrabhakar Kushwaha * Freescale Layerscape MC I/O wrapper 3*a2a55e51SPrabhakar Kushwaha * 4*a2a55e51SPrabhakar Kushwaha * Copyright (C) 2013-2015 Freescale Semiconductor, Inc. 5*a2a55e51SPrabhakar Kushwaha * Author: German Rivera <German.Rivera@freescale.com> 6*a2a55e51SPrabhakar Kushwaha * 7*a2a55e51SPrabhakar Kushwaha * SPDX-License-Identifier: GPL-2.0+ 8*a2a55e51SPrabhakar Kushwaha */ 9*a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_sys.h> 10*a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_cmd.h> 11*a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_dpbp.h> 12*a2a55e51SPrabhakar Kushwaha 13*a2a55e51SPrabhakar Kushwaha int dpbp_open(struct fsl_mc_io *mc_io, int dpbp_id, uint16_t *token) 14*a2a55e51SPrabhakar Kushwaha { 15*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 16*a2a55e51SPrabhakar Kushwaha int err; 17*a2a55e51SPrabhakar Kushwaha 18*a2a55e51SPrabhakar Kushwaha /* prepare command */ 19*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_OPEN, 20*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, 0); 21*a2a55e51SPrabhakar Kushwaha DPBP_CMD_OPEN(cmd, dpbp_id); 22*a2a55e51SPrabhakar Kushwaha 23*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 24*a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd); 25*a2a55e51SPrabhakar Kushwaha if (err) 26*a2a55e51SPrabhakar Kushwaha return err; 27*a2a55e51SPrabhakar Kushwaha 28*a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */ 29*a2a55e51SPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header); 30*a2a55e51SPrabhakar Kushwaha 31*a2a55e51SPrabhakar Kushwaha return err; 32*a2a55e51SPrabhakar Kushwaha } 33*a2a55e51SPrabhakar Kushwaha 34*a2a55e51SPrabhakar Kushwaha int dpbp_close(struct fsl_mc_io *mc_io, uint16_t token) 35*a2a55e51SPrabhakar Kushwaha { 36*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 37*a2a55e51SPrabhakar Kushwaha 38*a2a55e51SPrabhakar Kushwaha /* prepare command */ 39*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_CLOSE, MC_CMD_PRI_HIGH, 40*a2a55e51SPrabhakar Kushwaha token); 41*a2a55e51SPrabhakar Kushwaha 42*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 43*a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 44*a2a55e51SPrabhakar Kushwaha } 45*a2a55e51SPrabhakar Kushwaha 46*a2a55e51SPrabhakar Kushwaha int dpbp_enable(struct fsl_mc_io *mc_io, uint16_t token) 47*a2a55e51SPrabhakar Kushwaha { 48*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 49*a2a55e51SPrabhakar Kushwaha 50*a2a55e51SPrabhakar Kushwaha /* prepare command */ 51*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_ENABLE, MC_CMD_PRI_LOW, 52*a2a55e51SPrabhakar Kushwaha token); 53*a2a55e51SPrabhakar Kushwaha 54*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 55*a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 56*a2a55e51SPrabhakar Kushwaha } 57*a2a55e51SPrabhakar Kushwaha 58*a2a55e51SPrabhakar Kushwaha int dpbp_disable(struct fsl_mc_io *mc_io, uint16_t token) 59*a2a55e51SPrabhakar Kushwaha { 60*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 61*a2a55e51SPrabhakar Kushwaha 62*a2a55e51SPrabhakar Kushwaha /* prepare command */ 63*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_DISABLE, 64*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, token); 65*a2a55e51SPrabhakar Kushwaha 66*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 67*a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 68*a2a55e51SPrabhakar Kushwaha } 69*a2a55e51SPrabhakar Kushwaha 70*a2a55e51SPrabhakar Kushwaha int dpbp_reset(struct fsl_mc_io *mc_io, uint16_t token) 71*a2a55e51SPrabhakar Kushwaha { 72*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 73*a2a55e51SPrabhakar Kushwaha 74*a2a55e51SPrabhakar Kushwaha /* prepare command */ 75*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_RESET, 76*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, token); 77*a2a55e51SPrabhakar Kushwaha 78*a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 79*a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 80*a2a55e51SPrabhakar Kushwaha } 81*a2a55e51SPrabhakar Kushwaha 82*a2a55e51SPrabhakar Kushwaha int dpbp_get_attributes(struct fsl_mc_io *mc_io, 83*a2a55e51SPrabhakar Kushwaha uint16_t token, 84*a2a55e51SPrabhakar Kushwaha struct dpbp_attr *attr) 85*a2a55e51SPrabhakar Kushwaha { 86*a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 87*a2a55e51SPrabhakar Kushwaha int err; 88*a2a55e51SPrabhakar Kushwaha 89*a2a55e51SPrabhakar Kushwaha /* prepare command */ 90*a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_ATTR, 91*a2a55e51SPrabhakar Kushwaha MC_CMD_PRI_LOW, 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 DPBP_RSP_GET_ATTRIBUTES(cmd, attr); 100*a2a55e51SPrabhakar Kushwaha 101*a2a55e51SPrabhakar Kushwaha return 0; 102*a2a55e51SPrabhakar Kushwaha } 103