1 /* Copyright (c) 2019-2025 Allwinner Technology Co., Ltd. ALL rights reserved. 2 3 * Allwinner is a trademark of Allwinner Technology Co.,Ltd., registered in 4 * the the People's Republic of China and other countries. 5 * All Allwinner Technology Co.,Ltd. trademarks are used with permission. 6 7 * DISCLAIMER 8 * THIRD PARTY LICENCES MAY BE REQUIRED TO IMPLEMENT THE SOLUTION/PRODUCT. 9 * IF YOU NEED TO INTEGRATE THIRD PARTY’S TECHNOLOGY (SONY, DTS, DOLBY, AVS OR MPEGLA, ETC.) 10 * IN ALLWINNERS’SDK OR PRODUCTS, YOU SHALL BE SOLELY RESPONSIBLE TO OBTAIN 11 * ALL APPROPRIATELY REQUIRED THIRD PARTY LICENCES. 12 * ALLWINNER SHALL HAVE NO WARRANTY, INDEMNITY OR OTHER OBLIGATIONS WITH RESPECT TO MATTERS 13 * COVERED UNDER ANY REQUIRED THIRD PARTY LICENSE. 14 * YOU ARE SOLELY RESPONSIBLE FOR YOUR USAGE OF THIRD PARTY’S TECHNOLOGY. 15 16 17 * THIS SOFTWARE IS PROVIDED BY ALLWINNER"AS IS" AND TO THE MAXIMUM EXTENT 18 * PERMITTED BY LAW, ALLWINNER EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND, 19 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION REGARDING 20 * THE TITLE, NON-INFRINGEMENT, ACCURACY, CONDITION, COMPLETENESS, PERFORMANCE 21 * OR MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 22 * IN NO EVENT SHALL ALLWINNER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 * LOSS OF USE, DATA, OR PROFITS, OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 27 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 29 * OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 #ifndef __HAL_MBUS_H 33 #define __HAL_MBUS_H 34 35 #include <stdio.h> 36 37 #define mbus_err(fmt, args...) printf("%s()%d - "fmt, __func__, __LINE__, ##args) 38 39 /* MBUS PMU ids */ 40 enum mbus_pmu { 41 MBUS_PMU_CPU = 0, /* CPU bandwidth */ 42 MBUS_PMU_GPU, /* GPU bandwidth */ 43 MBUS_PMU_VE, /* VE */ 44 MBUS_PMU_DISP, /* DISPLAY */ 45 MBUS_PMU_OTH, /* other masters */ 46 MBUS_PMU_TOTAL, /* total masters */ 47 MBUS_PMU_RV_SYS, /* RV_SYS */ 48 MBUS_PMU_DE, /* DE */ 49 MBUS_PMU_G2D, /* G2D */ 50 MBUS_PMU_TVD, /* TVD */ 51 MBUS_PMU_CSI, /* CSI */ 52 MBUS_PMU_DSP_SYS, /* DSP_SYS */ 53 MBUS_PMU_DI, /* DI */ 54 MBUS_PMU_IOMMU, /* IOMMU */ 55 }; 56 57 typedef enum{ 58 HAL_MBUS_STATUS_ERROR_PARAMETER = -3, 59 HAL_MBUS_STATUS_ERROR_CHANNEL = -2, 60 HAL_MBUS_STATUS_ERROR = -1, 61 HAL_MBUS_STATUS_OK = 0 62 }hal_mbus_status_t; 63 64 hal_mbus_status_t hal_mbus_pmu_get_value(enum mbus_pmu type, unsigned int *value); 65 hal_mbus_status_t hal_mbus_pmu_enable(void); 66 67 68 #endif 69