1a2a55e51SPrabhakar Kushwaha /* 2a2a55e51SPrabhakar Kushwaha * Freescale Layerscape MC I/O wrapper 3a2a55e51SPrabhakar Kushwaha * 4a2a55e51SPrabhakar Kushwaha * Copyright (C) 2013-2015 Freescale Semiconductor, Inc. 5a2a55e51SPrabhakar Kushwaha * Author: German Rivera <German.Rivera@freescale.com> 6a2a55e51SPrabhakar Kushwaha * 7a2a55e51SPrabhakar Kushwaha * SPDX-License-Identifier: GPL-2.0+ 8a2a55e51SPrabhakar Kushwaha */ 9a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_sys.h> 10a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_cmd.h> 11a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_dpbp.h> 12a2a55e51SPrabhakar Kushwaha 1387457d11SPrabhakar Kushwaha int dpbp_open(struct fsl_mc_io *mc_io, 1487457d11SPrabhakar Kushwaha uint32_t cmd_flags, 1587457d11SPrabhakar Kushwaha int dpbp_id, 1687457d11SPrabhakar Kushwaha uint16_t *token) 17a2a55e51SPrabhakar Kushwaha { 18a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 19a2a55e51SPrabhakar Kushwaha int err; 20a2a55e51SPrabhakar Kushwaha 21a2a55e51SPrabhakar Kushwaha /* prepare command */ 22a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_OPEN, 2387457d11SPrabhakar Kushwaha cmd_flags, 2487457d11SPrabhakar Kushwaha 0); 25a2a55e51SPrabhakar Kushwaha DPBP_CMD_OPEN(cmd, dpbp_id); 26a2a55e51SPrabhakar Kushwaha 27a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 28a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd); 29a2a55e51SPrabhakar Kushwaha if (err) 30a2a55e51SPrabhakar Kushwaha return err; 31a2a55e51SPrabhakar Kushwaha 32a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */ 33a2a55e51SPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header); 34a2a55e51SPrabhakar Kushwaha 35a2a55e51SPrabhakar Kushwaha return err; 36a2a55e51SPrabhakar Kushwaha } 37a2a55e51SPrabhakar Kushwaha 3887457d11SPrabhakar Kushwaha int dpbp_close(struct fsl_mc_io *mc_io, 3987457d11SPrabhakar Kushwaha uint32_t cmd_flags, 4087457d11SPrabhakar Kushwaha uint16_t token) 41a2a55e51SPrabhakar Kushwaha { 42a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 43a2a55e51SPrabhakar Kushwaha 44a2a55e51SPrabhakar Kushwaha /* prepare command */ 4587457d11SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_CLOSE, cmd_flags, 46a2a55e51SPrabhakar Kushwaha token); 47a2a55e51SPrabhakar Kushwaha 48a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 49a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 50a2a55e51SPrabhakar Kushwaha } 51a2a55e51SPrabhakar Kushwaha 52*1ebbe4fcSPrabhakar Kushwaha int dpbp_create(struct fsl_mc_io *mc_io, 53*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags, 54*1ebbe4fcSPrabhakar Kushwaha const struct dpbp_cfg *cfg, 55*1ebbe4fcSPrabhakar Kushwaha uint16_t *token) 56*1ebbe4fcSPrabhakar Kushwaha { 57*1ebbe4fcSPrabhakar Kushwaha struct mc_command cmd = { 0 }; 58*1ebbe4fcSPrabhakar Kushwaha int err; 59*1ebbe4fcSPrabhakar Kushwaha 60*1ebbe4fcSPrabhakar Kushwaha (void)(cfg); /* unused */ 61*1ebbe4fcSPrabhakar Kushwaha 62*1ebbe4fcSPrabhakar Kushwaha /* prepare command */ 63*1ebbe4fcSPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_CREATE, 64*1ebbe4fcSPrabhakar Kushwaha cmd_flags, 65*1ebbe4fcSPrabhakar Kushwaha 0); 66*1ebbe4fcSPrabhakar Kushwaha 67*1ebbe4fcSPrabhakar Kushwaha /* send command to mc*/ 68*1ebbe4fcSPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd); 69*1ebbe4fcSPrabhakar Kushwaha if (err) 70*1ebbe4fcSPrabhakar Kushwaha return err; 71*1ebbe4fcSPrabhakar Kushwaha 72*1ebbe4fcSPrabhakar Kushwaha /* retrieve response parameters */ 73*1ebbe4fcSPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header); 74*1ebbe4fcSPrabhakar Kushwaha 75*1ebbe4fcSPrabhakar Kushwaha return 0; 76*1ebbe4fcSPrabhakar Kushwaha } 77*1ebbe4fcSPrabhakar Kushwaha 78*1ebbe4fcSPrabhakar Kushwaha int dpbp_destroy(struct fsl_mc_io *mc_io, 79*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags, 80*1ebbe4fcSPrabhakar Kushwaha uint16_t token) 81*1ebbe4fcSPrabhakar Kushwaha { 82*1ebbe4fcSPrabhakar Kushwaha struct mc_command cmd = { 0 }; 83*1ebbe4fcSPrabhakar Kushwaha 84*1ebbe4fcSPrabhakar Kushwaha /* prepare command */ 85*1ebbe4fcSPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_DESTROY, 86*1ebbe4fcSPrabhakar Kushwaha cmd_flags, 87*1ebbe4fcSPrabhakar Kushwaha token); 88*1ebbe4fcSPrabhakar Kushwaha 89*1ebbe4fcSPrabhakar Kushwaha /* send command to mc*/ 90*1ebbe4fcSPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 91*1ebbe4fcSPrabhakar Kushwaha } 92*1ebbe4fcSPrabhakar Kushwaha 9387457d11SPrabhakar Kushwaha int dpbp_enable(struct fsl_mc_io *mc_io, 9487457d11SPrabhakar Kushwaha uint32_t cmd_flags, 9587457d11SPrabhakar Kushwaha uint16_t token) 96a2a55e51SPrabhakar Kushwaha { 97a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 98a2a55e51SPrabhakar Kushwaha 99a2a55e51SPrabhakar Kushwaha /* prepare command */ 10087457d11SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_ENABLE, cmd_flags, 101a2a55e51SPrabhakar Kushwaha token); 102a2a55e51SPrabhakar Kushwaha 103a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 104a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 105a2a55e51SPrabhakar Kushwaha } 106a2a55e51SPrabhakar Kushwaha 10787457d11SPrabhakar Kushwaha int dpbp_disable(struct fsl_mc_io *mc_io, 10887457d11SPrabhakar Kushwaha uint32_t cmd_flags, 10987457d11SPrabhakar Kushwaha uint16_t token) 110a2a55e51SPrabhakar Kushwaha { 111a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 112a2a55e51SPrabhakar Kushwaha 113a2a55e51SPrabhakar Kushwaha /* prepare command */ 114a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_DISABLE, 11587457d11SPrabhakar Kushwaha cmd_flags, 11687457d11SPrabhakar Kushwaha token); 117a2a55e51SPrabhakar Kushwaha 118a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 119a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 120a2a55e51SPrabhakar Kushwaha } 121a2a55e51SPrabhakar Kushwaha 12287457d11SPrabhakar Kushwaha int dpbp_reset(struct fsl_mc_io *mc_io, 12387457d11SPrabhakar Kushwaha uint32_t cmd_flags, 12487457d11SPrabhakar Kushwaha uint16_t token) 125a2a55e51SPrabhakar Kushwaha { 126a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 127a2a55e51SPrabhakar Kushwaha 128a2a55e51SPrabhakar Kushwaha /* prepare command */ 129a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_RESET, 13087457d11SPrabhakar Kushwaha cmd_flags, 13187457d11SPrabhakar Kushwaha token); 132a2a55e51SPrabhakar Kushwaha 133a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 134a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd); 135a2a55e51SPrabhakar Kushwaha } 136a2a55e51SPrabhakar Kushwaha 137a2a55e51SPrabhakar Kushwaha int dpbp_get_attributes(struct fsl_mc_io *mc_io, 13887457d11SPrabhakar Kushwaha uint32_t cmd_flags, 139a2a55e51SPrabhakar Kushwaha uint16_t token, 140a2a55e51SPrabhakar Kushwaha struct dpbp_attr *attr) 141a2a55e51SPrabhakar Kushwaha { 142a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 }; 143a2a55e51SPrabhakar Kushwaha int err; 144a2a55e51SPrabhakar Kushwaha 145a2a55e51SPrabhakar Kushwaha /* prepare command */ 146a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_ATTR, 14787457d11SPrabhakar Kushwaha cmd_flags, 14887457d11SPrabhakar Kushwaha token); 149a2a55e51SPrabhakar Kushwaha 150a2a55e51SPrabhakar Kushwaha /* send command to mc*/ 151a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd); 152a2a55e51SPrabhakar Kushwaha if (err) 153a2a55e51SPrabhakar Kushwaha return err; 154a2a55e51SPrabhakar Kushwaha 155a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */ 156a2a55e51SPrabhakar Kushwaha DPBP_RSP_GET_ATTRIBUTES(cmd, attr); 157a2a55e51SPrabhakar Kushwaha 158a2a55e51SPrabhakar Kushwaha return 0; 159a2a55e51SPrabhakar Kushwaha } 160