blob: 1d9869e495af7fbbfe8edf898e9bc5766a95c0f2 [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#include <linux/version.h>
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/printk.h>
#include <linux/arm-smccc.h>
#include <linux/slab.h>
#include "ddr_port.h"
#include "dmc_monitor.h"
/*
* NOTE:
* Port "DEVICE" is total name for small bandwidth device.
* There are many small bandwidth devices such as nand/arb/parser
* connected to dmc under port "device", for better configure of
* these devices, re-number them with start ID of 32
*
* EXAMPLE:
*
* DMC CONTROLLER
* |
* ---------------------------------
* | | | ..... | | ... |
* arm mali vpu device vdec hevc
* |
* ------------------------
* | | | ... | |
* emmc ge2d usb audio spicc
*/
#ifndef CONFIG_AMLOGIC_REMOVE_OLD
static struct ddr_port_desc ddr_port_desc_m8b[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI0" },
{ .port_id = 2, .port_name = "MALI1" },
{ .port_id = 3, .port_name = "HEVC" },
{ .port_id = 8, .port_name = "VPU1" },
{ .port_id = 9, .port_name = "VPU2" },
{ .port_id = 10, .port_name = "VPU3" },
{ .port_id = 11, .port_name = "VDEC" },
{ .port_id = 12, .port_name = "HCODEC" },
{ .port_id = 14, .port_name = "AUDIO" },
{ .port_id = 15, .port_name = "DEVICE" },
/* start of each device */
{ .port_id = 33, .port_name = "NAND" },
{ .port_id = 34, .port_name = "BLKMV" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "USB0" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "GE2D SOURCE1" },
{ .port_id = 39, .port_name = "GE2D SOURCE2" },
{ .port_id = 40, .port_name = "GE2D DEST" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "SANA" },
{ .port_id = 43, .port_name = "SDIO2" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" }
};
static struct ddr_port_desc ddr_port_desc_gxbb[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI0" },
{ .port_id = 2, .port_name = "MALI1" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "VPU READ1" },
{ .port_id = 9, .port_name = "VPU READ2" },
{ .port_id = 10, .port_name = "VPU READ3" },
{ .port_id = 11, .port_name = "VPU WRITE1" },
{ .port_id = 12, .port_name = "VPU WRITE2" },
{ .port_id = 13, .port_name = "VDEC" },
{ .port_id = 14, .port_name = "HCODEC" },
{ .port_id = 15, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SD_EMMC_A" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "BLKMV" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO OUT" },
{ .port_id = 39, .port_name = "AUDIO IN" },
{ .port_id = 40, .port_name = "AIU" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" }
};
static struct ddr_port_desc ddr_port_desc_gxl[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI0" },
{ .port_id = 2, .port_name = "MALI1" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "VPU READ1" },
{ .port_id = 9, .port_name = "VPU READ2" },
{ .port_id = 10, .port_name = "VPU READ3" },
{ .port_id = 11, .port_name = "VPU WRITE1" },
{ .port_id = 12, .port_name = "VPU WRITE2" },
{ .port_id = 13, .port_name = "VDEC" },
{ .port_id = 14, .port_name = "HCODEC" },
{ .port_id = 15, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SD_EMMC_A" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO OUT" },
{ .port_id = 39, .port_name = "AUDIO IN" },
{ .port_id = 40, .port_name = "AIU" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" }
};
static struct ddr_port_desc ddr_port_desc_gxm[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 2, .port_name = "H265ENC" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "VPU READ1" },
{ .port_id = 9, .port_name = "VPU READ2" },
{ .port_id = 10, .port_name = "VPU READ3" },
{ .port_id = 11, .port_name = "VPU WRITE1" },
{ .port_id = 12, .port_name = "VPU WRITE2" },
{ .port_id = 13, .port_name = "VDEC" },
{ .port_id = 14, .port_name = "HCODEC" },
{ .port_id = 15, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SD_EMMC_A" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO OUT" },
{ .port_id = 39, .port_name = "AUDIO IN" },
{ .port_id = 40, .port_name = "AIU" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" }
};
static struct ddr_port_desc ddr_port_desc_gxlx[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI0" },
{ .port_id = 2, .port_name = "MALI1" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "H265ENC/TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "VPU READ1" },
{ .port_id = 9, .port_name = "VPU READ2" },
{ .port_id = 10, .port_name = "VPU READ3" },
{ .port_id = 11, .port_name = "VPU WRITE1" },
{ .port_id = 12, .port_name = "VPU WRITE2" },
{ .port_id = 13, .port_name = "VDEC" },
{ .port_id = 14, .port_name = "HCODEC" },
{ .port_id = 15, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SD_EMMC_A" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO OUT" },
{ .port_id = 39, .port_name = "AUDIO IN" },
{ .port_id = 40, .port_name = "AIU" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" }
};
static struct ddr_port_desc ddr_port_desc_axg[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "PCIE-A" },
{ .port_id = 2, .port_name = "PCIE-B" },
{ .port_id = 3, .port_name = "GE2D" },
{ .port_id = 4, .port_name = "AUDIO" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "VPU READ0" },
/* start of each device */
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC0" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SPICC1" }
};
static struct ddr_port_desc ddr_port_desc_txl[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI0" },
{ .port_id = 2, .port_name = "MALI1" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "VPU READ1" },
{ .port_id = 9, .port_name = "VPU READ2" },
{ .port_id = 10, .port_name = "VPU READ3" },
{ .port_id = 11, .port_name = "VPU WRITE1" },
{ .port_id = 12, .port_name = "VPU WRITE2" },
{ .port_id = 13, .port_name = "VDEC" },
{ .port_id = 14, .port_name = "HCODEC" },
{ .port_id = 15, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SD_EMMC_A" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO OUT" },
{ .port_id = 39, .port_name = "AUDIO IN" },
{ .port_id = 40, .port_name = "AIU" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" },
{ .port_id = 47, .port_name = "DEMOD" }
};
static struct ddr_port_desc ddr_port_desc_txlx[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI0" },
{ .port_id = 2, .port_name = "MALI1" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "VPU READ1" },
{ .port_id = 9, .port_name = "VPU READ2" },
{ .port_id = 10, .port_name = "VPU READ3" },
{ .port_id = 11, .port_name = "VPU WRITE1" },
{ .port_id = 12, .port_name = "VPU WRITE2" },
{ .port_id = 13, .port_name = "VDEC" },
{ .port_id = 14, .port_name = "HCODEC" },
{ .port_id = 15, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SPICC1" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO OUT" },
{ .port_id = 39, .port_name = "AUDIO IN" },
{ .port_id = 40, .port_name = "AIU" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" },
{ .port_id = 47, .port_name = "DEMOD" }
};
static struct ddr_port_desc ddr_port_desc_txhd[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI0" },
{ .port_id = 2, .port_name = "MALI1" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "VPU READ1" },
{ .port_id = 9, .port_name = "VPU READ2" },
{ .port_id = 10, .port_name = "VPU READ3" },
{ .port_id = 11, .port_name = "VPU WRITE1" },
{ .port_id = 12, .port_name = "VPU WRITE2" },
{ .port_id = 13, .port_name = "VDEC" },
{ .port_id = 14, .port_name = "HCODEC" },
{ .port_id = 15, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO OUT" },
{ .port_id = 39, .port_name = "AUDIO IN" },
{ .port_id = 40, .port_name = "AIU" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" },
{ .port_id = 47, .port_name = "DEMOD" }
};
static struct ddr_port_desc ddr_port_desc_tl1[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI0" },
{ .port_id = 3, .port_name = "HDCP_HDMI" },
{ .port_id = 4, .port_name = "HEVC FRONT" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "HEVC BACK" },
{ .port_id = 16, .port_name = "VPU READ1" },
{ .port_id = 17, .port_name = "VPU READ2" },
{ .port_id = 18, .port_name = "VPU READ3" },
{ .port_id = 19, .port_name = "VPU WRITE1" },
{ .port_id = 20, .port_name = "VPU WRITE2" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 22, .port_name = "HCODEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SPICC1" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO" },
{ .port_id = 39, .port_name = "AIFIFO" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC2" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" },
{ .port_id = 47, .port_name = "DEMOD" }
};
static struct ddr_port_desc ddr_port_desc_a1[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "DSPA" },
{ .port_id = 2, .port_name = "DSPB" },
{ .port_id = 4, .port_name = "DEVICE" },
{ .port_id = 5, .port_name = "USB_AHB" },
{ .port_id = 6, .port_name = "PROD_I2C" },
{ .port_id = 7, .port_name = "USB HOST" },
/* start of each device */
{ .port_id = 33, .port_name = "SPICC" },
{ .port_id = 35, .port_name = "SD_EMMC_A" },
{ .port_id = 37, .port_name = "AUDIO" },
{ .port_id = 38, .port_name = "DMA" }
};
static struct ddr_port_desc ddr_port_desc_c1[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "DSPA" },
{ .port_id = 2, .port_name = "DSPB" },
{ .port_id = 3, .port_name = "WAVE" },
{ .port_id = 4, .port_name = "GDC" },
{ .port_id = 5, .port_name = "GE2D" },
{ .port_id = 6, .port_name = "ISP" },
{ .port_id = 7, .port_name = "NNA" },
{ .port_id = 8, .port_name = "JPEG" },
{ .port_id = 9, .port_name = "ETHERNET" },
{ .port_id = 10, .port_name = "SPICC_A" },
{ .port_id = 11, .port_name = "SPICC_B" },
{ .port_id = 12, .port_name = "SD_EMMCA" },
{ .port_id = 13, .port_name = "SD_EMMCB" },
{ .port_id = 14, .port_name = "AUDIO" },
{ .port_id = 15, .port_name = "DMA" },
{ .port_id = 16, .port_name = "NAND_EMMCC" },
{ .port_id = 17, .port_name = "USB_AHB" },
{ .port_id = 18, .port_name = "USB_AXI" },
{ .port_id = 19, .port_name = "I2C" },
{ .port_id = 20, .port_name = "DMC_TEST" }
};
#endif
static struct ddr_port_desc ddr_port_desc_g12a[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 2, .port_name = "PCIE" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC FRONT" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "HEVC BACK" },
{ .port_id = 9, .port_name = "H265ENC" },
{ .port_id = 16, .port_name = "VPU READ1" },
{ .port_id = 17, .port_name = "VPU READ2" },
{ .port_id = 18, .port_name = "VPU READ3" },
{ .port_id = 19, .port_name = "VPU WRITE1" },
{ .port_id = 20, .port_name = "VPU WRITE2" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 22, .port_name = "HCODEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SPICC1" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO" },
{ .port_id = 39, .port_name = "AIFIFO" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC2" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" }
};
static struct ddr_port_desc ddr_port_desc_g12b[] __initdata = {
{ .port_id = 0, .port_name = "ARM-ADDR-E" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 2, .port_name = "PCIE" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC FRONT" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "HEVC BACK" },
{ .port_id = 9, .port_name = "H265ENC" },
{ .port_id = 10, .port_name = "NNA" },
{ .port_id = 11, .port_name = "GDC" },
{ .port_id = 12, .port_name = "MIPI ISP" },
{ .port_id = 13, .port_name = "ARM-ADDR-F" },
{ .port_id = 16, .port_name = "VPU READ1" },
{ .port_id = 17, .port_name = "VPU READ2" },
{ .port_id = 18, .port_name = "VPU READ3" },
{ .port_id = 19, .port_name = "VPU WRITE1" },
{ .port_id = 20, .port_name = "VPU WRITE2" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 22, .port_name = "HCODEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SPICC1" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO" },
{ .port_id = 39, .port_name = "AIFIFO" },
{ .port_id = 40, .port_name = "SD_EMMC_A" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC2" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" }
};
static struct ddr_port_desc ddr_port_desc_sm1[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 2, .port_name = "PCIE" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC FRONT" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "HEVC BACK" },
{ .port_id = 9, .port_name = "H265ENC" },
{ .port_id = 10, .port_name = "NNA" },
{ .port_id = 16, .port_name = "VPU READ1" },
{ .port_id = 17, .port_name = "VPU READ2" },
{ .port_id = 18, .port_name = "VPU READ3" },
{ .port_id = 19, .port_name = "VPU WRITE1" },
{ .port_id = 20, .port_name = "VPU WRITE2" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 22, .port_name = "HCODEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SPICC1" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO" },
{ .port_id = 39, .port_name = "AIFIFO" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC2" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" }
};
static struct ddr_port_desc ddr_port_desc_tm2[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 2, .port_name = "PCIE" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC FRONT" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "HEVC BACK" },
{ .port_id = 9, .port_name = "DSPA" },
{ .port_id = 10, .port_name = "DSPB" },
{ .port_id = 11, .port_name = "NNA" },
{ .port_id = 12, .port_name = "PCIE1" },
{ .port_id = 16, .port_name = "VPU READ1" },
{ .port_id = 17, .port_name = "VPU READ2" },
{ .port_id = 18, .port_name = "VPU READ3" },
{ .port_id = 19, .port_name = "VPU WRITE1" },
{ .port_id = 20, .port_name = "VPU WRITE2" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 22, .port_name = "HCODEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SPICC1" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO" },
{ .port_id = 39, .port_name = "AIFIFO" },
{ .port_id = 40, .port_name = "PARSER1" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC2" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" },
{ .port_id = 47, .port_name = "DEMODE" }
};
static struct ddr_port_desc ddr_port_desc_t5[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 2, .port_name = "PCIE" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 16, .port_name = "VPU READ1" },
{ .port_id = 17, .port_name = "VPU READ2" },
{ .port_id = 18, .port_name = "VPU READ3" },
{ .port_id = 19, .port_name = "VPU WRITE1" },
{ .port_id = 20, .port_name = "VPU WRITE2" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 35, .port_name = "ARB0" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO" },
{ .port_id = 39, .port_name = "AIFIFO" },
{ .port_id = 40, .port_name = "PARSER1" },
{ .port_id = 41, .port_name = "PARSER" },
{ .port_id = 42, .port_name = "AO CPU" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 46, .port_name = "SANA" },
{ .port_id = 47, .port_name = "DEMODE" }
};
static struct ddr_port_desc ddr_port_desc_t7[] __initdata = {
/* CCI */
{ .port_id = 1, .port_name = "ARM_A53" },
{ .port_id = 2, .port_name = "ARM_A73" },
{ .port_id = 3, .port_name = "MALI0" },
{ .port_id = 4, .port_name = "MALI1" },
{ .port_id = 5, .port_name = "CCI" },
/* NIC1 */
{ .port_id = 8, .port_name = "NNA0" },
{ .port_id = 9, .port_name = "NNA1" },
{ .port_id = 10, .port_name = "NNA2" },
{ .port_id = 11, .port_name = "NNA3" },
/* NIC2 */
{ .port_id = 16, .port_name = "HDMI_RX" },
{ .port_id = 17, .port_name = "USB2" },
{ .port_id = 18, .port_name = "USB3" },
{ .port_id = 19, .port_name = "PCIE" },
{ .port_id = 24, .port_name = "SPICC0" },
{ .port_id = 25, .port_name = "SPICC1" },
{ .port_id = 26, .port_name = "SDEMMCA" },
{ .port_id = 27, .port_name = "SDEMMCB" },
{ .port_id = 28, .port_name = "SDEMMCC" },
{ .port_id = 29, .port_name = "SPICC2" },
{ .port_id = 34, .port_name = "ETHERNET" },
{ .port_id = 35, .port_name = "AFIFO" },
{ .port_id = 36, .port_name = "AUDMA" },
{ .port_id = 37, .port_name = "SPICC3" },
{ .port_id = 38, .port_name = "SPICC4" },
{ .port_id = 39, .port_name = "SPICC5" },
/* NIC3 */
{ .port_id = 48, .port_name = "GE2D" },
{ .port_id = 49, .port_name = "GDC" },
{ .port_id = 50, .port_name = "DEWARP" },
{ .port_id = 51, .port_name = "VDEC" },
{ .port_id = 52, .port_name = "HEVC_F" },
{ .port_id = 53, .port_name = "HEVC_B" },
{ .port_id = 54, .port_name = "HCODEC" },
{ .port_id = 55, .port_name = "WAVE521" },
/* NIC4 */
{ .port_id = 63, .port_name = "DEMUX" },
{ .port_id = 64, .port_name = "ISP0" },
{ .port_id = 65, .port_name = "ISP1" },
{ .port_id = 66, .port_name = "ISP2" },
{ .port_id = 67, .port_name = "ISP3" },
{ .port_id = 68, .port_name = "DSPA" },
{ .port_id = 69, .port_name = "DSPB" },
{ .port_id = 70, .port_name = "AOCPU" },
{ .port_id = 71, .port_name = "JTAG" },
{ .port_id = 72, .port_name = "AUDIO" },
{ .port_id = 73, .port_name = "DMA" },
/* NIC5 */
{ .port_id = 80, .port_name = "VPU0" },
{ .port_id = 81, .port_name = "VPU1" },
{ .port_id = 82, .port_name = "VPU2" }
};
static struct ddr_port_desc ddr_port_desc_t3[] __initdata = {
{ .port_id = 2, .port_name = "ARM_A55" },
{ .port_id = 4, .port_name = "MALI" },
/* NoC_dev */
{ .port_id = 16, .port_name = "HDMI_RX" },
{ .port_id = 17, .port_name = "USB2" },
{ .port_id = 18, .port_name = "USB3" },
{ .port_id = 19, .port_name = "PCIE" },
{ .port_id = 20, .port_name = "TVFE" },
{ .port_id = 21, .port_name = "USB2_DEVICE" },
{ .port_id = 27, .port_name = "SDEMMCB" },
{ .port_id = 28, .port_name = "SDEMMCC" },
{ .port_id = 34, .port_name = "ETHERNET" },
{ .port_id = 35, .port_name = "AFIFO" },
{ .port_id = 36, .port_name = "AUDMA" },
{ .port_id = 37, .port_name = "SPICC0" },
{ .port_id = 38, .port_name = "SPICC1" },
{ .port_id = 39, .port_name = "SPICC2" },
/* NoC_dos */
{ .port_id = 48, .port_name = "GE2D" },
{ .port_id = 51, .port_name = "VDEC" },
{ .port_id = 52, .port_name = "HEVC_F" },
{ .port_id = 53, .port_name = "HEVC_B" },
{ .port_id = 54, .port_name = "HCODEC" },
/* NoC_sys */
{ .port_id = 63, .port_name = "DEMUX" },
{ .port_id = 64, .port_name = "NNA" },
{ .port_id = 68, .port_name = "DSP" },
{ .port_id = 70, .port_name = "AOCPU" },
{ .port_id = 71, .port_name = "JTAG" },
{ .port_id = 72, .port_name = "AUDIO" },
{ .port_id = 73, .port_name = "DMA" },
/* NoC_vpu */
{ .port_id = 80, .port_name = "VPU0" },
{ .port_id = 81, .port_name = "VPU1" },
{ .port_id = 82, .port_name = "VPU2" },
{ .port_id = 83, .port_name = "FRC0" },
{ .port_id = 84, .port_name = "FRC1" },
{ .port_id = 85, .port_name = "FRC2" }
};
static struct ddr_port_desc ddr_port_desc_s4[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 11, .port_name = "DEMUX" },
{ .port_id = 16, .port_name = "VPU READ1" },
{ .port_id = 17, .port_name = "VPU READ2" },
{ .port_id = 18, .port_name = "VPU READ3" },
{ .port_id = 19, .port_name = "VPU WRITE1" },
{ .port_id = 20, .port_name = "VPU WRITE2" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO" },
{ .port_id = 39, .port_name = "AIFIFO" },
{ .port_id = 40, .port_name = "SD_EMMC_A" },
{ .port_id = 42, .port_name = "AUDMA" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC2" },
{ .port_id = 45, .port_name = "ETHERNET" },
{ .port_id = 47, .port_name = "DEMOD" }
};
static struct ddr_port_desc ddr_port_desc_sc2[] __initdata = {
{ .port_id = 0, .port_name = "ARM" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 2, .port_name = "PCIE" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC FRONT" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE" },
{ .port_id = 8, .port_name = "HEVC BACK" },
{ .port_id = 9, .port_name = "H265ENC" },
{ .port_id = 11, .port_name = "DEMUX" },
{ .port_id = 12, .port_name = "DSPA" },
{ .port_id = 16, .port_name = "VPU READ1" },
{ .port_id = 17, .port_name = "VPU READ2" },
{ .port_id = 18, .port_name = "VPU READ3" },
{ .port_id = 19, .port_name = "VPU WRITE1" },
{ .port_id = 20, .port_name = "VPU WRITE2" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 22, .port_name = "HCODEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "SPICC1" },
{ .port_id = 33, .port_name = "USB0" },
{ .port_id = 34, .port_name = "DMA" },
{ .port_id = 36, .port_name = "SD_EMMC_B" },
{ .port_id = 37, .port_name = "USB1" },
{ .port_id = 38, .port_name = "AUDIO" },
{ .port_id = 39, .port_name = "AIFIFO" },
{ .port_id = 40, .port_name = "SD_EMMC_A" },
{ .port_id = 42, .port_name = "AUDMA" },
{ .port_id = 43, .port_name = "SD_EMMC_C" },
{ .port_id = 44, .port_name = "SPICC2" },
{ .port_id = 45, .port_name = "ETHERNET" }
};
static struct ddr_port_desc ddr_port_desc_p1[] __initdata = {
/* TOP*/
{ .port_id = 2, .port_name = "A76/A55_CLUSER"},
{ .port_id = 5, .port_name = "SMMU" },
/* NIC_NNA_0 */
{ .port_id = 8, .port_name = "NNA_A" },
{ .port_id = 9, .port_name = "NNA_B" },
{ .port_id = 10, .port_name = "NNA_C" },
/* NIC_NNA_1 */
{ .port_id = 11, .port_name = "NNA_D" },
{ .port_id = 12, .port_name = "NNA_E" },
{ .port_id = 13, .port_name = "NNA_F" },
/* NIC_ISP */
{ .port_id = 16, .port_name = "ISP_A" },
{ .port_id = 17, .port_name = "ISP_B" },
{ .port_id = 18, .port_name = "ISP_C" },
{ .port_id = 19, .port_name = "ISP_D" },
{ .port_id = 20, .port_name = "ISP_E" },
{ .port_id = 21, .port_name = "ISP_F" },
{ .port_id = 22, .port_name = "ISP_G" },
/* NIC_FDLE*/
{ .port_id = 32, .port_name = "MOP_A" },
{ .port_id = 33, .port_name = "MOP_B" },
{ .port_id = 34, .port_name = "DEP_A" },
{ .port_id = 35, .port_name = "DEP_B" },
/* NIC_VFE*/
{ .port_id = 40, .port_name = "VFE" },
{ .port_id = 41, .port_name = "GE2D" },
{ .port_id = 42, .port_name = "DEWARP_A" },
{ .port_id = 43, .port_name = "DEWARP_B" },
{ .port_id = 44, .port_name = "DEWARP_C" },
/* NIC_SYS*/
{ .port_id = 48, .port_name = "USB3_A" },
{ .port_id = 49, .port_name = "USB3_B" },
{ .port_id = 50, .port_name = "USB3_C" },
{ .port_id = 51, .port_name = "PCIE" },
{ .port_id = 67, .port_name = "M4" },
{ .port_id = 68, .port_name = "DSP_A" },
{ .port_id = 69, .port_name = "DSP_B" },
{ .port_id = 70, .port_name = "AO_CPU" },
{ .port_id = 71, .port_name = "JTAG" },
{ .port_id = 72, .port_name = "SPICC0" },
{ .port_id = 73, .port_name = "SPICC1" },
{ .port_id = 74, .port_name = "SDEMMCA" },
{ .port_id = 75, .port_name = "SDEMMCB" },
{ .port_id = 76, .port_name = "SDEMMCC" },
{ .port_id = 77, .port_name = "SPICC2" },
{ .port_id = 82, .port_name = "ETH" },
{ .port_id = 83, .port_name = "AIFIFO" },
{ .port_id = 84, .port_name = "AUDMA" },
{ .port_id = 85, .port_name = "SPICC3" },
{ .port_id = 86, .port_name = "SPICC4" },
{ .port_id = 87, .port_name = "SPICC5" },
{ .port_id = 88, .port_name = "AUDIO" },
{ .port_id = 96, .port_name = "EMMC" },
{ .port_id = 97, .port_name = "DMA" }
};
static struct ddr_port_desc ddr_port_desc_t5w[] __initdata = {
{ .port_id = 0, .port_name = "CPU/A53" },
{ .port_id = 1, .port_name = "MALI" },
{ .port_id = 2, .port_name = "PCIE" },
{ .port_id = 3, .port_name = "HDCP" },
{ .port_id = 4, .port_name = "HEVC" },
{ .port_id = 5, .port_name = "TEST" },
{ .port_id = 6, .port_name = "USB3.0" },
{ .port_id = 7, .port_name = "DEVICE0" },
{ .port_id = 8, .port_name = "HEVC_B" },
{ .port_id = 9, .port_name = "WAVE" },
{ .port_id = 10, .port_name = "DEVICE1" },
{ .port_id = 16, .port_name = "VPU READ0" },
{ .port_id = 17, .port_name = "VPU READ1" },
{ .port_id = 18, .port_name = "VPU READ2" },
{ .port_id = 19, .port_name = "VPU WRITE0" },
{ .port_id = 20, .port_name = "VPU WRITE1" },
{ .port_id = 21, .port_name = "VDEC" },
{ .port_id = 22, .port_name = "HCODEC" },
{ .port_id = 23, .port_name = "GE2D" },
/* start of each device */
{ .port_id = 32, .port_name = "USB0" },
{ .port_id = 33, .port_name = "DMA" },
{ .port_id = 34, .port_name = "USB1" },
{ .port_id = 35, .port_name = "AUCPU" },
{ .port_id = 36, .port_name = "AO2DDR" },
{ .port_id = 37, .port_name = "ETH" },
{ .port_id = 38, .port_name = "SANA" },
{ .port_id = 39, .port_name = "DEMOD" },
{ .port_id = 40, .port_name = "SPICC1" },
{ .port_id = 41, .port_name = "ARBTODDR" },
{ .port_id = 42, .port_name = "SD_EMMC_B" },
{ .port_id = 43, .port_name = "AUDIO" },
{ .port_id = 44, .port_name = "AIFIFO" },
{ .port_id = 45, .port_name = "SPICC2" },
{ .port_id = 46, .port_name = "SD_EMMC_C" },
{ .port_id = 46, .port_name = "SPICC0" }
};
static struct ddr_port_desc *chip_ddr_port;
static unsigned int chip_ddr_port_num __initdata;
int __init ddr_find_port_desc(int cpu_type, struct ddr_port_desc **desc)
{
int desc_size = -EINVAL;
if (chip_ddr_port) {
*desc = chip_ddr_port;
return chip_ddr_port_num;
}
switch (cpu_type) {
#ifndef CONFIG_AMLOGIC_REMOVE_OLD
case DMC_TYPE_M8B:
*desc = ddr_port_desc_m8b;
desc_size = ARRAY_SIZE(ddr_port_desc_m8b);
break;
case DMC_TYPE_GXBB:
*desc = ddr_port_desc_gxbb;
desc_size = ARRAY_SIZE(ddr_port_desc_gxbb);
break;
case DMC_TYPE_GXL:
*desc = ddr_port_desc_gxl;
desc_size = ARRAY_SIZE(ddr_port_desc_gxl);
break;
case DMC_TYPE_GXM:
*desc = ddr_port_desc_gxm;
desc_size = ARRAY_SIZE(ddr_port_desc_gxm);
break;
case DMC_TYPE_TXL:
*desc = ddr_port_desc_txl;
desc_size = ARRAY_SIZE(ddr_port_desc_txl);
break;
case DMC_TYPE_TXLX:
*desc = ddr_port_desc_txlx;
desc_size = ARRAY_SIZE(ddr_port_desc_txlx);
break;
case DMC_TYPE_AXG:
*desc = ddr_port_desc_axg;
desc_size = ARRAY_SIZE(ddr_port_desc_axg);
break;
case DMC_TYPE_GXLX:
*desc = ddr_port_desc_gxlx;
desc_size = ARRAY_SIZE(ddr_port_desc_gxlx);
break;
case DMC_TYPE_TXHD:
*desc = ddr_port_desc_txhd;
desc_size = ARRAY_SIZE(ddr_port_desc_txhd);
break;
case DMC_TYPE_TL1:
*desc = ddr_port_desc_tl1;
desc_size = ARRAY_SIZE(ddr_port_desc_tl1);
break;
case DMC_TYPE_A1:
*desc = ddr_port_desc_a1;
desc_size = ARRAY_SIZE(ddr_port_desc_a1);
break;
case DMC_TYPE_C1:
*desc = ddr_port_desc_c1;
desc_size = ARRAY_SIZE(ddr_port_desc_c1);
break;
#endif
case DMC_TYPE_G12A:
*desc = ddr_port_desc_g12a;
desc_size = ARRAY_SIZE(ddr_port_desc_g12a);
break;
case DMC_TYPE_G12B:
*desc = ddr_port_desc_g12b;
desc_size = ARRAY_SIZE(ddr_port_desc_g12b);
break;
case DMC_TYPE_SM1:
*desc = ddr_port_desc_sm1;
desc_size = ARRAY_SIZE(ddr_port_desc_sm1);
break;
case DMC_TYPE_TM2:
*desc = ddr_port_desc_tm2;
desc_size = ARRAY_SIZE(ddr_port_desc_tm2);
break;
case DMC_TYPE_T5:
case DMC_TYPE_T5D:
*desc = ddr_port_desc_t5;
desc_size = ARRAY_SIZE(ddr_port_desc_t5);
break;
case DMC_TYPE_T7:
*desc = ddr_port_desc_t7;
desc_size = ARRAY_SIZE(ddr_port_desc_t7);
break;
case DMC_TYPE_T3:
*desc = ddr_port_desc_t3;
desc_size = ARRAY_SIZE(ddr_port_desc_t3);
break;
case DMC_TYPE_S4:
*desc = ddr_port_desc_s4;
desc_size = ARRAY_SIZE(ddr_port_desc_s4);
break;
case DMC_TYPE_SC2:
*desc = ddr_port_desc_sc2;
desc_size = ARRAY_SIZE(ddr_port_desc_sc2);
break;
case DMC_TYPE_P1:
*desc = ddr_port_desc_p1;
desc_size = ARRAY_SIZE(ddr_port_desc_p1);
break;
case DMC_TYPE_T5W:
*desc = ddr_port_desc_t5w;
desc_size = ARRAY_SIZE(ddr_port_desc_t5w);
break;
default:
return -EINVAL;
}
/* using once */
chip_ddr_port = kcalloc(desc_size, sizeof(*chip_ddr_port), GFP_KERNEL);
if (!chip_ddr_port)
return -ENOMEM;
memcpy(chip_ddr_port, *desc, sizeof(struct ddr_port_desc) * desc_size);
chip_ddr_port_num = desc_size;
*desc = chip_ddr_port;
return desc_size;
}
unsigned long dmc_rw(unsigned long addr, unsigned long value, int rw)
{
struct arm_smccc_res smccc;
arm_smccc_smc(DMC_MON_RW, addr, value, rw, 0, 0, 0, 0, &smccc);
return smccc.a0;
}