| /* |
| * Copyright (c) 2013, The Linux Foundation. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are |
| * met: |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * 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. |
| * * Neither the name of The Linux Foundation 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 "AS IS" AND ANY EXPRESS OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 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. |
| */ |
| |
| #ifndef __MSM_BUS_TEST__ |
| #define __MSM_BUS_TEST__ |
| |
| #include <linux/ioctl.h> |
| #define MSM_BUS_IOC_MAGIC 0x80 |
| #define TEST_SLAVE_ID_KEY 512 |
| #define NUM_USECASES 10 |
| #define NUM_VECTORS 5 |
| |
| /** |
| * The test enums do not contain the gateway master/slave IDs. Hence, they |
| * differ from the enums used in boards file. |
| * This is done so that random master/slave pairs can be created for |
| * testing. |
| */ |
| enum msm_bus_test_fabric_master_type { |
| MSM_BUS_TEST_MASTER_FIRST = 1, |
| MSM_BUS_TEST_MASTER_AMPSS_M0 = 1, |
| |
| MSM_BUS_TEST_MASTER_SPS = 6, |
| MSM_BUS_TEST_MASTER_ADM0_PORT0, |
| MSM_BUS_TEST_MASTER_ADM0_PORT1, |
| MSM_BUS_TEST_MASTER_LPASS_PROC = 11, |
| MSM_BUS_TEST_MASTER_LPASS = 15, |
| MSM_BUS_TEST_MASTER_MDP_PORT0 = 22, |
| MSM_BUS_TEST_MASTER_HD_CODEC_PORT0 = 34, |
| |
| MSM_BUS_TEST_MASTER_QDSS_BAM = 53, |
| MSM_BUS_TEST_MASTER_CRYPTO_CORE0 = 55, |
| MSM_BUS_TEST_MASTER_SDCC_1 = 78, |
| }; |
| |
| enum msm_bus_test_fabric_slave_type { |
| MSM_BUS_TEST_SLAVE_FIRST = TEST_SLAVE_ID_KEY, |
| MSM_BUS_TEST_SLAVE_EBI_CH0 = TEST_SLAVE_ID_KEY, |
| }; |
| |
| |
| struct msm_bus_test_vectors { |
| int src; /* Master */ |
| int dst; /* Slave */ |
| unsigned int ab; /* Arbitrated bandwidth */ |
| unsigned int ib; /* Instantaneous bandwidth */ |
| }; |
| |
| struct msm_bus_test_paths { |
| int num_paths; |
| struct msm_bus_test_vectors vectors[NUM_VECTORS]; |
| }; |
| |
| struct msm_bus_test_scale_pdata { |
| struct msm_bus_test_paths usecase[NUM_USECASES]; |
| int num_usecases; |
| const char *name; |
| unsigned int active_only; |
| }; |
| |
| struct msm_bus_test_cldata { |
| struct msm_bus_test_scale_pdata pdata; |
| uint32_t clid; |
| uint32_t pdatah; |
| }; |
| |
| struct msm_bus_test_update_req_data { |
| uint32_t clid; |
| uint32_t index; |
| }; |
| #define MSM_BUS_TEST_IOC_MAGIC 0x80 |
| |
| #define MSM_BUS_TEST_REG_CL _IOWR(MSM_BUS_TEST_IOC_MAGIC, 2, \ |
| struct msm_bus_test_cldata) |
| |
| #define MSM_BUS_TEST_UNREG_CL _IOWR(MSM_BUS_TEST_IOC_MAGIC, 3, \ |
| struct msm_bus_test_cldata) |
| |
| #define MSM_BUS_TEST_UPDATE_REQ _IOWR(MSM_BUS_TEST_IOC_MAGIC, 4, \ |
| struct msm_bus_test_update_req_data) |
| |
| #define MSM_BUS_TEST_GET_CLID _IOWR(MSM_BUS_TEST_IOC_MAGIC, 5, uint32_t) |
| #define MSM_BUS_TEST_GET_RET _IOWR(MSM_BUS_TEST_IOC_MAGIC, 6, int) |
| |
| |
| #endif /*__MSM_BUS_TEST__*/ |