board: add CONFIG_ARM64_A32 and CONFIG_COMPAT

PD#169652: add CONFIG_ARM64_A32 and CONFIG_COMPAT

add CONFIG_ARM64_A32 support and add missing
CONFIG_COMPAT

Change-Id: Id041292cccd39618ba9932d123a219f0583fd4c5
Signed-off-by: Ao Xu <ao.xu@amlogic.com>
This commit is contained in:
Ao Xu
2018-08-01 19:56:37 +08:00
committed by Jianxin Pan
parent dc01b66891
commit 2d5f3dc464
16 changed files with 53 additions and 23 deletions

View File

@@ -14,8 +14,6 @@
* See the GNU General Public License for more details.
*/
#include <asm/irq.h>
#include <linux/version.h>
#include <linux/module.h>
#include <linux/irq.h>

View File

@@ -22,7 +22,7 @@
#include "securekey.h"
#include <linux/arm-smccc.h>
#ifdef CONFIG_ARM64
#if (defined CONFIG_ARM64) || (defined CONFIG_ARM64_A32)
int aml_is_secure_set(void)
{

View File

@@ -15,7 +15,7 @@
*
*/
#ifdef CONFIG_ARM64
#if (defined CONFIG_ARM64) || (defined CONFIG_ARM64_A32)
#define AML_D_P_UPGRADE_CHECK (0x80)
#define AML_D_P_IMG_DECRYPT (0x40)
#define AML_DATA_PROCESS (0x820000FF)

View File

@@ -3354,7 +3354,9 @@ static int delsys_confirm(struct dvb_frontend *fe)
case SYS_DAB:
case SYS_TURBO:
case SYS_UNDEFINED:
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
case SYS_ANALOG:
#endif
mode = AM_FE_UNKNOWN_N;
PR_INFO("delsys not support!%d=\n", cdelsys);
return 0;
@@ -3486,7 +3488,9 @@ static int delsys_set(struct dvb_frontend *fe, unsigned int delsys)
case SYS_DAB:
case SYS_TURBO:
case SYS_UNDEFINED:
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
case SYS_ANALOG:
#endif
mode = AM_FE_UNKNOWN_N;
if (get_dtvpll_init_flag()) {
PR_INFO("delsys not support!%d=\n", cdelsys);
@@ -4104,8 +4108,12 @@ static struct dvb_frontend_ops aml_dtvdm_txl_ops = {
};
static struct dvb_frontend_ops aml_dtvdm_txlx_ops = {
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B, SYS_DVBC_ANNEX_A, SYS_DVBT,
SYS_ANALOG},
#else
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B, SYS_DVBC_ANNEX_A, SYS_DVBT},
#endif
.info = {
/*in aml_fe, it is 'amlogic dvb frontend' */
.name = "amlogic dtv demod txlx",

View File

@@ -1075,10 +1075,7 @@ void apb_write_reg(unsigned int addr, unsigned int data)
unsigned long apb_read_reg_high(unsigned long addr)
{
unsigned long tmp;
tmp = 0;
return (tmp >> 32) & 0xffffffff;
return 0;
}
unsigned long apb_read_reg(unsigned long addr)

View File

@@ -67,7 +67,7 @@ void dtmb_clk_set(unsigned int adc_clk)
unsigned int fe_modify = 0x4d6a;
if (adc_clk)
fe_modify = 3963617280 / (adc_clk << 3);
fe_modify = 3963617280UL / (adc_clk << 3);
dtmb_set_fe_config_modify(fe_modify);

View File

@@ -40,7 +40,9 @@ void tuner_set_params(struct dvb_frontend *fe)
int tuner_get_ch_power(struct dvb_frontend *fe)
{
int strength = 0;
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
s16 strengtha = 0;
#endif
if (fe != NULL) {
#if 0
@@ -49,12 +51,14 @@ int tuner_get_ch_power(struct dvb_frontend *fe)
else
PR_INFO("no tuner get_strength\n");
#endif
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
if (fe->ops.tuner_ops.get_strength) {
fe->ops.tuner_ops.get_strength(fe, &strengtha);
strength = (int)strengtha;
} else {
PR_INFO("no tuner get_strength\n");
}
#endif
}
@@ -65,12 +69,14 @@ int tuner_get_ch_power2(void)
{
int strength = 0;
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
s16 strengtha = 0;
#endif
struct dvb_frontend *fe;
fe = aml_get_fe();
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
if (fe != NULL) {
if (fe->ops.tuner_ops.get_strength) {
fe->ops.tuner_ops.get_strength(fe, &strengtha);
//strength = strengtha - 256;
@@ -79,7 +85,7 @@ int tuner_get_ch_power2(void)
PR_INFO("no tuner get_strength\n");
}
}
#endif
return strength;
}
@@ -88,10 +94,13 @@ u16 tuner_get_ch_power3(void)
{
u16 strength = 0;
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
s16 strengtha = 0;
#endif
struct dvb_frontend *fe;
fe = aml_get_fe();
#ifdef CONFIG_AMLOGIC_DVB_COMPAT
if (fe != NULL) {
if (fe->ops.tuner_ops.get_strength) {
@@ -106,7 +115,7 @@ u16 tuner_get_ch_power3(void)
PR_INFO("no tuner get_strength\n");
}
}
#endif
return strength;
}

View File

@@ -85,9 +85,11 @@ static unsigned int vsync_irq_count;
static bool osd_rdma_done;
static int osd_rdma_handle = -1;
static struct rdma_table_item *rdma_temp_tbl;
void *memcpy(void *dest, const void *src, size_t len);
static int osd_rdma_init(void);
#ifdef CONFIG_ARM64
static inline void osd_rdma_mem_cpy(struct rdma_table_item *dst,
struct rdma_table_item *src, u32 len)
{
@@ -106,6 +108,13 @@ static inline void osd_rdma_mem_cpy(struct rdma_table_item *dst,
: "r" (src), "r" (dst), "r" (len)
: "x5", "x6");
}
#else
inline void osd_rdma_mem_cpy(struct rdma_table_item *dst,
struct rdma_table_item *src, u32 len)
{
memcpy(dst, src, len);
}
#endif
static inline void reset_rdma_table(void)
{
@@ -132,7 +141,7 @@ static inline void reset_rdma_table(void)
if ((item_count * (sizeof(struct rdma_table_item))) >
RDMA_TEMP_TBL_SIZE) {
pr_info("more memory: allocate(%x), expect(%lx)\n",
pr_info("more memory: allocate(%x), expect(%zu)\n",
(unsigned int) RDMA_TEMP_TBL_SIZE,
sizeof(struct rdma_table_item) *
item_count);

View File

@@ -1384,6 +1384,7 @@ static long picdec_ioctl(struct file *filp, unsigned int cmd,
context = (struct ge2d_context_s *) filp->private_data;
argp = (void __user *)args;
switch (cmd) {
#ifdef CONFIG_COMPAT
case PICDEC_IOC_FRAME_RENDER32:
aml_pr_info(1, "PICDEC_IOC_FRAME_RENDER32\n");
{
@@ -1404,6 +1405,7 @@ static long picdec_ioctl(struct file *filp, unsigned int cmd,
render_frame_block();
}
break;
#endif
case PICDEC_IOC_FRAME_RENDER:
aml_pr_info(1, "PICDEC_IOC_FRAME_RENDER\n");
if (copy_from_user

View File

@@ -83,6 +83,7 @@ struct source_input_s {
int rotate;
};
#ifdef CONFIG_COMPAT
struct compat_source_input_s {
compat_uptr_t input;
int frame_width;
@@ -91,15 +92,17 @@ struct compat_source_input_s {
int rotate;
};
#define PICDEC_IOC_FRAME_RENDER32 _IOW(PICDEC_IOC_MAGIC, 0x00, \
struct compat_source_input_s)
#endif
#define PICDEC_IOC_MAGIC 'P'
#define PICDEC_IOC_FRAME_RENDER _IOW(PICDEC_IOC_MAGIC, 0x00, \
struct source_input_s)
#define PICDEC_IOC_FRAME_POST _IOW(PICDEC_IOC_MAGIC, 0X01, unsigned int)
#define PICDEC_IOC_CONFIG_FRAME _IOW(PICDEC_IOC_MAGIC, 0X02, unsigned int)
#define PICDEC_IOC_FRAME_RENDER32 _IOW(PICDEC_IOC_MAGIC, 0x00, \
struct compat_source_input_s)
void stop_picdec_task(void);
int picdec_buffer_init(void);
void get_picdec_buf_info(resource_size_t *start, unsigned int *size,

View File

@@ -332,7 +332,7 @@ static void bl_gpio_set(int index, int value)
static inline unsigned int bl_do_div(unsigned long num, unsigned int den)
{
unsigned long ret = num;
unsigned long long ret = num;
do_div(ret, den);
return (unsigned int)ret;

View File

@@ -453,8 +453,10 @@ unsigned long find_back_trace(void)
frame.fp = (unsigned long)__builtin_frame_address(0);
frame.sp = current_stack_pointer;
frame.pc = _RET_IP_;
#ifdef CONFIG_ARM64
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
frame.graph = current->curr_ret_stack;
#endif
#endif
while (1) {
#ifdef CONFIG_ARM64

View File

@@ -19,32 +19,32 @@ config AMLOGIC_PINCTRL_MESON8B
config AMLOGIC_PINCTRL_MESON_GXL
bool "Meson gxl SoC pinctrl driver"
depends on ARM64
depends on ARM64 || ARM64_A32
select AMLOGIC_PINCTRL_MESON8_PMX
default n
config AMLOGIC_PINCTRL_MESON_AXG
bool "Meson axg SoC pinctrl driver"
depends on ARM64
depends on ARM64 || ARM64_A32
select AMLOGIC_PINCTRL_MESON_AXG_PMX
default n
config AMLOGIC_PINCTRL_MESON_TXLX
bool "Meson txlx SoC pinctrl driver"
depends on ARM64
depends on ARM64 || ARM64_A32
select AMLOGIC_PINCTRL_MESON8_PMX
default n
config AMLOGIC_PINCTRL_MESON_G12A
bool "Meson g12a SoC pinctrl driver"
depends on ARM64
depends on ARM64 || ARM64_A32
select AMLOGIC_PINCTRL_MESON_AXG_PMX
select AMLOGIC_PINCONF_MESON_G12A
default n
config AMLOGIC_PINCTRL_MESON_TXL
bool "Meson txl SoC pinctrl driver"
depends on ARM64
depends on ARM64 || ARM64_A32
select AMLOGIC_PINCTRL_MESON8_PMX
default n

View File

@@ -18,7 +18,7 @@ config AMLOGIC_GX_SUSPEND
depends on CPU_IDLE
depends on PM_WAKELOCKS
depends on PM
depends on ARM64
depends on ARM64 || ARM64_A32
default n
help
This is the Amlogic suspend driver for 64bit family chips

View File

@@ -34,6 +34,7 @@
#include <asm/suspend.h>
#include <linux/of_address.h>
#include <linux/input.h>
#include <linux/cpuidle.h>
#include <asm/cpuidle.h>
#include <uapi/linux/psci.h>
#include <linux/arm-smccc.h>

View File

@@ -198,6 +198,7 @@ config FRAME_WARN
int "Warn for stack frames larger than (needs gcc 4.4)"
range 0 8192
default 2048 if GCC_PLUGIN_LATENT_ENTROPY
default 2048 if ARM64_A32
default 1024 if !64BIT
default 2048 if 64BIT
help