Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
949cfe1a
Commit
949cfe1a
authored
Apr 22, 2022
by
Matthias Brugger
Browse files
Options
Browse Files
Download
Plain Diff
Merge tag 'v5.18-next-vdso0-stable-tag' into v5.18-next/soc
parents
5252c1c5
4e8988c6
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
625 additions
and
26 deletions
+625
-26
drivers/soc/mediatek/mt8167-mmsys.h
drivers/soc/mediatek/mt8167-mmsys.h
+1
-1
drivers/soc/mediatek/mt8183-mmsys.h
drivers/soc/mediatek/mt8183-mmsys.h
+1
-1
drivers/soc/mediatek/mt8186-mmsys.h
drivers/soc/mediatek/mt8186-mmsys.h
+2
-2
drivers/soc/mediatek/mt8192-mmsys.h
drivers/soc/mediatek/mt8192-mmsys.h
+2
-2
drivers/soc/mediatek/mt8195-mmsys.h
drivers/soc/mediatek/mt8195-mmsys.h
+370
-0
drivers/soc/mediatek/mt8365-mmsys.h
drivers/soc/mediatek/mt8365-mmsys.h
+2
-2
drivers/soc/mediatek/mtk-mmsys.c
drivers/soc/mediatek/mtk-mmsys.c
+141
-11
drivers/soc/mediatek/mtk-mmsys.h
drivers/soc/mediatek/mtk-mmsys.h
+6
-0
drivers/soc/mediatek/mtk-mutex.c
drivers/soc/mediatek/mtk-mutex.c
+88
-7
include/linux/soc/mediatek/mtk-mmsys.h
include/linux/soc/mediatek/mtk-mmsys.h
+12
-0
No files found.
drivers/soc/mediatek/mt8167-mmsys.h
View file @
949cfe1a
...
...
@@ -18,7 +18,7 @@ static const struct mtk_mmsys_routes mt8167_mmsys_routing_table[] = {
DDP_COMPONENT_OVL0
,
DDP_COMPONENT_COLOR0
,
MT8167_DISP_REG_CONFIG_DISP_OVL0_MOUT_EN
,
OVL0_MOUT_EN_COLOR0
,
},
{
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_RDMA0
,
DDP_COMPONENT_DITHER
0
,
DDP_COMPONENT_RDMA0
,
MT8167_DISP_REG_CONFIG_DISP_DITHER_MOUT_EN
,
MT8167_DITHER_MOUT_EN_RDMA0
},
{
DDP_COMPONENT_OVL0
,
DDP_COMPONENT_COLOR0
,
...
...
drivers/soc/mediatek/mt8183-mmsys.h
View file @
949cfe1a
...
...
@@ -41,7 +41,7 @@ static const struct mtk_mmsys_routes mmsys_mt8183_routing_table[] = {
MT8183_DISP_OVL1_2L_MOUT_EN
,
MT8183_OVL1_2L_MOUT_EN_RDMA1
,
MT8183_OVL1_2L_MOUT_EN_RDMA1
},
{
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DSI0
,
DDP_COMPONENT_DITHER
0
,
DDP_COMPONENT_DSI0
,
MT8183_DISP_DITHER0_MOUT_EN
,
MT8183_DITHER0_MOUT_IN_DSI0
,
MT8183_DITHER0_MOUT_IN_DSI0
},
{
...
...
drivers/soc/mediatek/mt8186-mmsys.h
View file @
949cfe1a
...
...
@@ -76,12 +76,12 @@ static const struct mtk_mmsys_routes mmsys_mt8186_routing_table[] = {
MT8186_RDMA0_SOUT_TO_COLOR0
},
{
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DSI0
,
DDP_COMPONENT_DITHER
0
,
DDP_COMPONENT_DSI0
,
MT8186_DISP_DITHER0_MOUT_EN
,
MT8186_DITHER0_MOUT_EN_MASK
,
MT8186_DITHER0_MOUT_TO_DSI0
,
},
{
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DSI0
,
DDP_COMPONENT_DITHER
0
,
DDP_COMPONENT_DSI0
,
MT8186_DISP_DSI0_SEL_IN
,
MT8186_DSI0_SEL_IN_MASK
,
MT8186_DSI0_FROM_DITHER0
},
...
...
drivers/soc/mediatek/mt8192-mmsys.h
View file @
949cfe1a
...
...
@@ -40,7 +40,7 @@ static const struct mtk_mmsys_routes mmsys_mt8192_routing_table[] = {
MT8192_DISP_OVL2_2L_MOUT_EN
,
MT8192_OVL2_2L_MOUT_EN_RDMA4
,
MT8192_OVL2_2L_MOUT_EN_RDMA4
},
{
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DSI0
,
DDP_COMPONENT_DITHER
0
,
DDP_COMPONENT_DSI0
,
MT8192_DISP_DITHER0_MOUT_EN
,
MT8192_DITHER0_MOUT_IN_DSI0
,
MT8192_DITHER0_MOUT_IN_DSI0
},
{
...
...
@@ -52,7 +52,7 @@ static const struct mtk_mmsys_routes mmsys_mt8192_routing_table[] = {
MT8192_DISP_AAL0_SEL_IN
,
MT8192_AAL0_SEL_IN_CCORR0
,
MT8192_AAL0_SEL_IN_CCORR0
},
{
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DSI0
,
DDP_COMPONENT_DITHER
0
,
DDP_COMPONENT_DSI0
,
MT8192_DISP_DSI0_SEL_IN
,
MT8192_DSI0_SEL_IN_DITHER0
,
MT8192_DSI0_SEL_IN_DITHER0
},
{
...
...
drivers/soc/mediatek/mt8195-mmsys.h
0 → 100644
View file @
949cfe1a
This diff is collapsed.
Click to expand it.
drivers/soc/mediatek/mt8365-mmsys.h
View file @
949cfe1a
...
...
@@ -41,12 +41,12 @@ static const struct mtk_mmsys_routes mt8365_mmsys_routing_table[] = {
MT8365_DISP_COLOR_SEL_IN_COLOR0
,
MT8365_DISP_COLOR_SEL_IN_COLOR0
},
{
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DSI0
,
DDP_COMPONENT_DITHER
0
,
DDP_COMPONENT_DSI0
,
MT8365_DISP_REG_CONFIG_DISP_DITHER0_MOUT_EN
,
MT8365_DITHER_MOUT_EN_DSI0
,
MT8365_DITHER_MOUT_EN_DSI0
},
{
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DSI0
,
DDP_COMPONENT_DITHER
0
,
DDP_COMPONENT_DSI0
,
MT8365_DISP_REG_CONFIG_DISP_DSI0_SEL_IN
,
MT8365_DSI0_SEL_IN_DITHER
,
MT8365_DSI0_SEL_IN_DITHER
},
...
...
drivers/soc/mediatek/mtk-mmsys.c
View file @
949cfe1a
...
...
@@ -17,6 +17,7 @@
#include "mt8183-mmsys.h"
#include "mt8186-mmsys.h"
#include "mt8192-mmsys.h"
#include "mt8195-mmsys.h"
#include "mt8365-mmsys.h"
static
const
struct
mtk_mmsys_driver_data
mt2701_mmsys_driver_data
=
{
...
...
@@ -25,26 +26,61 @@ static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = {
.
num_routes
=
ARRAY_SIZE
(
mmsys_default_routing_table
),
};
static
const
struct
mtk_mmsys_match_data
mt2701_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt2701_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt2712_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt2712-mm"
,
.
routes
=
mmsys_default_routing_table
,
.
num_routes
=
ARRAY_SIZE
(
mmsys_default_routing_table
),
};
static
const
struct
mtk_mmsys_match_data
mt2712_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt2712_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt6779_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt6779-mm"
,
};
static
const
struct
mtk_mmsys_match_data
mt6779_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt6779_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt6797_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt6797-mm"
,
};
static
const
struct
mtk_mmsys_match_data
mt6797_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt6797_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt8167_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt8167-mm"
,
.
routes
=
mt8167_mmsys_routing_table
,
.
num_routes
=
ARRAY_SIZE
(
mt8167_mmsys_routing_table
),
};
static
const
struct
mtk_mmsys_match_data
mt8167_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt8167_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt8173_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt8173-mm"
,
.
routes
=
mmsys_default_routing_table
,
...
...
@@ -52,6 +88,13 @@ static const struct mtk_mmsys_driver_data mt8173_mmsys_driver_data = {
.
sw0_rst_offset
=
MT8183_MMSYS_SW0_RST_B
,
};
static
const
struct
mtk_mmsys_match_data
mt8173_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt8173_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt8183_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt8183-mm"
,
.
routes
=
mmsys_mt8183_routing_table
,
...
...
@@ -59,6 +102,13 @@ static const struct mtk_mmsys_driver_data mt8183_mmsys_driver_data = {
.
sw0_rst_offset
=
MT8183_MMSYS_SW0_RST_B
,
};
static
const
struct
mtk_mmsys_match_data
mt8183_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt8183_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt8186_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt8186-mm"
,
.
routes
=
mmsys_mt8186_routing_table
,
...
...
@@ -66,6 +116,13 @@ static const struct mtk_mmsys_driver_data mt8186_mmsys_driver_data = {
.
sw0_rst_offset
=
MT8186_MMSYS_SW0_RST_B
,
};
static
const
struct
mtk_mmsys_match_data
mt8186_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt8186_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt8192_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt8192-mm"
,
.
routes
=
mmsys_mt8192_routing_table
,
...
...
@@ -73,19 +130,66 @@ static const struct mtk_mmsys_driver_data mt8192_mmsys_driver_data = {
.
sw0_rst_offset
=
MT8186_MMSYS_SW0_RST_B
,
};
static
const
struct
mtk_mmsys_match_data
mt8192_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt8192_mmsys_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt8195_vdosys0_driver_data
=
{
.
io_start
=
0x1c01a000
,
.
clk_driver
=
"clk-mt8195-vdo0"
,
.
routes
=
mmsys_mt8195_routing_table
,
.
num_routes
=
ARRAY_SIZE
(
mmsys_mt8195_routing_table
),
};
static
const
struct
mtk_mmsys_driver_data
mt8195_vdosys1_driver_data
=
{
.
io_start
=
0x1c100000
,
.
clk_driver
=
"clk-mt8195-vdo1"
,
};
static
const
struct
mtk_mmsys_match_data
mt8195_mmsys_match_data
=
{
.
num_drv_data
=
2
,
.
drv_data
=
{
&
mt8195_vdosys0_driver_data
,
&
mt8195_vdosys1_driver_data
,
},
};
static
const
struct
mtk_mmsys_driver_data
mt8365_mmsys_driver_data
=
{
.
clk_driver
=
"clk-mt8365-mm"
,
.
routes
=
mt8365_mmsys_routing_table
,
.
num_routes
=
ARRAY_SIZE
(
mt8365_mmsys_routing_table
),
};
static
const
struct
mtk_mmsys_match_data
mt8365_mmsys_match_data
=
{
.
num_drv_data
=
1
,
.
drv_data
=
{
&
mt8365_mmsys_driver_data
,
},
};
struct
mtk_mmsys
{
void
__iomem
*
regs
;
const
struct
mtk_mmsys_driver_data
*
data
;
spinlock_t
lock
;
/* protects mmsys_sw_rst_b reg */
struct
reset_controller_dev
rcdev
;
phys_addr_t
io_start
;
};
static
int
mtk_mmsys_find_match_drvdata
(
struct
mtk_mmsys
*
mmsys
,
const
struct
mtk_mmsys_match_data
*
match
)
{
int
i
;
for
(
i
=
0
;
i
<
match
->
num_drv_data
;
i
++
)
if
(
mmsys
->
io_start
==
match
->
drv_data
[
i
]
->
io_start
)
return
i
;
return
-
EINVAL
;
}
void
mtk_mmsys_ddp_connect
(
struct
device
*
dev
,
enum
mtk_ddp_comp_id
cur
,
enum
mtk_ddp_comp_id
next
)
...
...
@@ -180,7 +284,9 @@ static int mtk_mmsys_probe(struct platform_device *pdev)
struct
device
*
dev
=
&
pdev
->
dev
;
struct
platform_device
*
clks
;
struct
platform_device
*
drm
;
const
struct
mtk_mmsys_match_data
*
match_data
;
struct
mtk_mmsys
*
mmsys
;
struct
resource
*
res
;
int
ret
;
mmsys
=
devm_kzalloc
(
dev
,
sizeof
(
*
mmsys
),
GFP_KERNEL
);
...
...
@@ -206,7 +312,27 @@ static int mtk_mmsys_probe(struct platform_device *pdev)
return
ret
;
}
mmsys
->
data
=
of_device_get_match_data
(
&
pdev
->
dev
);
res
=
platform_get_resource
(
pdev
,
IORESOURCE_MEM
,
0
);
if
(
!
res
)
{
dev_err
(
dev
,
"Couldn't get mmsys resource
\n
"
);
return
-
EINVAL
;
}
mmsys
->
io_start
=
res
->
start
;
match_data
=
of_device_get_match_data
(
dev
);
if
(
match_data
->
num_drv_data
>
1
)
{
/* This SoC has multiple mmsys channels */
ret
=
mtk_mmsys_find_match_drvdata
(
mmsys
,
match_data
);
if
(
ret
<
0
)
{
dev_err
(
dev
,
"Couldn't get match driver data
\n
"
);
return
ret
;
}
mmsys
->
data
=
match_data
->
drv_data
[
ret
];
}
else
{
dev_dbg
(
dev
,
"Using single mmsys channel
\n
"
);
mmsys
->
data
=
match_data
->
drv_data
[
0
];
}
platform_set_drvdata
(
pdev
,
mmsys
);
clks
=
platform_device_register_data
(
&
pdev
->
dev
,
mmsys
->
data
->
clk_driver
,
...
...
@@ -227,43 +353,47 @@ static int mtk_mmsys_probe(struct platform_device *pdev)
static
const
struct
of_device_id
of_match_mtk_mmsys
[]
=
{
{
.
compatible
=
"mediatek,mt2701-mmsys"
,
.
data
=
&
mt2701_mmsys_
driver
_data
,
.
data
=
&
mt2701_mmsys_
match
_data
,
},
{
.
compatible
=
"mediatek,mt2712-mmsys"
,
.
data
=
&
mt2712_mmsys_
driver
_data
,
.
data
=
&
mt2712_mmsys_
match
_data
,
},
{
.
compatible
=
"mediatek,mt6779-mmsys"
,
.
data
=
&
mt6779_mmsys_
driver
_data
,
.
data
=
&
mt6779_mmsys_
match
_data
,
},
{
.
compatible
=
"mediatek,mt6797-mmsys"
,
.
data
=
&
mt6797_mmsys_
driver
_data
,
.
data
=
&
mt6797_mmsys_
match
_data
,
},
{
.
compatible
=
"mediatek,mt8167-mmsys"
,
.
data
=
&
mt8167_mmsys_
driver
_data
,
.
data
=
&
mt8167_mmsys_
match
_data
,
},
{
.
compatible
=
"mediatek,mt8173-mmsys"
,
.
data
=
&
mt8173_mmsys_
driver
_data
,
.
data
=
&
mt8173_mmsys_
match
_data
,
},
{
.
compatible
=
"mediatek,mt8183-mmsys"
,
.
data
=
&
mt8183_mmsys_
driver
_data
,
.
data
=
&
mt8183_mmsys_
match
_data
,
},
{
.
compatible
=
"mediatek,mt8186-mmsys"
,
.
data
=
&
mt8186_mmsys_
driver
_data
,
.
data
=
&
mt8186_mmsys_
match
_data
,
},
{
.
compatible
=
"mediatek,mt8192-mmsys"
,
.
data
=
&
mt8192_mmsys_driver_data
,
.
data
=
&
mt8192_mmsys_match_data
,
},
{
.
compatible
=
"mediatek,mt8195-mmsys"
,
.
data
=
&
mt8195_mmsys_match_data
,
},
{
.
compatible
=
"mediatek,mt8365-mmsys"
,
.
data
=
&
mt8365_mmsys_
driver
_data
,
.
data
=
&
mt8365_mmsys_
match
_data
,
},
{
}
};
...
...
drivers/soc/mediatek/mtk-mmsys.h
View file @
949cfe1a
...
...
@@ -87,12 +87,18 @@ struct mtk_mmsys_routes {
};
struct
mtk_mmsys_driver_data
{
const
resource_size_t
io_start
;
const
char
*
clk_driver
;
const
struct
mtk_mmsys_routes
*
routes
;
const
unsigned
int
num_routes
;
const
u16
sw0_rst_offset
;
};
struct
mtk_mmsys_match_data
{
unsigned
short
num_drv_data
;
const
struct
mtk_mmsys_driver_data
*
drv_data
[];
};
/*
* Routes in mt8173, mt2701, mt2712 are different. That means
* in the same register address, it controls different input/output
...
...
drivers/soc/mediatek/mtk-mutex.c
View file @
949cfe1a
...
...
@@ -17,6 +17,9 @@
#define MT8183_MUTEX0_MOD0 0x30
#define MT8183_MUTEX0_SOF0 0x2c
#define MT8195_DISP_MUTEX0_MOD0 0x30
#define MT8195_DISP_MUTEX0_SOF 0x2c
#define DISP_REG_MUTEX_EN(n) (0x20 + 0x20 * (n))
#define DISP_REG_MUTEX(n) (0x24 + 0x20 * (n))
#define DISP_REG_MUTEX_RST(n) (0x28 + 0x20 * (n))
...
...
@@ -96,6 +99,20 @@
#define MT8173_MUTEX_MOD_DISP_PWM1 24
#define MT8173_MUTEX_MOD_DISP_OD 25
#define MT8195_MUTEX_MOD_DISP_OVL0 0
#define MT8195_MUTEX_MOD_DISP_WDMA0 1
#define MT8195_MUTEX_MOD_DISP_RDMA0 2
#define MT8195_MUTEX_MOD_DISP_COLOR0 3
#define MT8195_MUTEX_MOD_DISP_CCORR0 4
#define MT8195_MUTEX_MOD_DISP_AAL0 5
#define MT8195_MUTEX_MOD_DISP_GAMMA0 6
#define MT8195_MUTEX_MOD_DISP_DITHER0 7
#define MT8195_MUTEX_MOD_DISP_DSI0 8
#define MT8195_MUTEX_MOD_DISP_DSC_WRAP0_CORE0 9
#define MT8195_MUTEX_MOD_DISP_VPP_MERGE 20
#define MT8195_MUTEX_MOD_DISP_DP_INTF0 21
#define MT8195_MUTEX_MOD_DISP_PWM0 27
#define MT2712_MUTEX_MOD_DISP_PWM2 10
#define MT2712_MUTEX_MOD_DISP_OVL0 11
#define MT2712_MUTEX_MOD_DISP_OVL1 12
...
...
@@ -132,9 +149,21 @@
#define MT8167_MUTEX_SOF_DPI1 3
#define MT8183_MUTEX_SOF_DSI0 1
#define MT8183_MUTEX_SOF_DPI0 2
#define MT8195_MUTEX_SOF_DSI0 1
#define MT8195_MUTEX_SOF_DSI1 2
#define MT8195_MUTEX_SOF_DP_INTF0 3
#define MT8195_MUTEX_SOF_DP_INTF1 4
#define MT8195_MUTEX_SOF_DPI0 6
/* for HDMI_TX */
#define MT8195_MUTEX_SOF_DPI1 5
/* for digital video out */
#define MT8183_MUTEX_EOF_DSI0 (MT8183_MUTEX_SOF_DSI0 << 6)
#define MT8183_MUTEX_EOF_DPI0 (MT8183_MUTEX_SOF_DPI0 << 6)
#define MT8195_MUTEX_EOF_DSI0 (MT8195_MUTEX_SOF_DSI0 << 7)
#define MT8195_MUTEX_EOF_DSI1 (MT8195_MUTEX_SOF_DSI1 << 7)
#define MT8195_MUTEX_EOF_DP_INTF0 (MT8195_MUTEX_SOF_DP_INTF0 << 7)
#define MT8195_MUTEX_EOF_DP_INTF1 (MT8195_MUTEX_SOF_DP_INTF1 << 7)
#define MT8195_MUTEX_EOF_DPI0 (MT8195_MUTEX_SOF_DPI0 << 7)
#define MT8195_MUTEX_EOF_DPI1 (MT8195_MUTEX_SOF_DPI1 << 7)
struct
mtk_mutex
{
int
id
;
...
...
@@ -149,6 +178,9 @@ enum mtk_mutex_sof_id {
MUTEX_SOF_DPI1
,
MUTEX_SOF_DSI2
,
MUTEX_SOF_DSI3
,
MUTEX_SOF_DP_INTF0
,
MUTEX_SOF_DP_INTF1
,
DDP_MUTEX_SOF_MAX
,
};
struct
mtk_mutex_data
{
...
...
@@ -200,7 +232,7 @@ static const unsigned int mt8167_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[
DDP_COMPONENT_AAL0
]
=
MT8167_MUTEX_MOD_DISP_AAL
,
[
DDP_COMPONENT_CCORR
]
=
MT8167_MUTEX_MOD_DISP_CCORR
,
[
DDP_COMPONENT_COLOR0
]
=
MT8167_MUTEX_MOD_DISP_COLOR
,
[
DDP_COMPONENT_DITHER
]
=
MT8167_MUTEX_MOD_DISP_DITHER
,
[
DDP_COMPONENT_DITHER
0
]
=
MT8167_MUTEX_MOD_DISP_DITHER
,
[
DDP_COMPONENT_GAMMA
]
=
MT8167_MUTEX_MOD_DISP_GAMMA
,
[
DDP_COMPONENT_OVL0
]
=
MT8167_MUTEX_MOD_DISP_OVL0
,
[
DDP_COMPONENT_OVL1
]
=
MT8167_MUTEX_MOD_DISP_OVL1
,
...
...
@@ -233,7 +265,7 @@ static const unsigned int mt8183_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[
DDP_COMPONENT_AAL0
]
=
MT8183_MUTEX_MOD_DISP_AAL0
,
[
DDP_COMPONENT_CCORR
]
=
MT8183_MUTEX_MOD_DISP_CCORR0
,
[
DDP_COMPONENT_COLOR0
]
=
MT8183_MUTEX_MOD_DISP_COLOR0
,
[
DDP_COMPONENT_DITHER
]
=
MT8183_MUTEX_MOD_DISP_DITHER0
,
[
DDP_COMPONENT_DITHER
0
]
=
MT8183_MUTEX_MOD_DISP_DITHER0
,
[
DDP_COMPONENT_GAMMA
]
=
MT8183_MUTEX_MOD_DISP_GAMMA0
,
[
DDP_COMPONENT_OVL0
]
=
MT8183_MUTEX_MOD_DISP_OVL0
,
[
DDP_COMPONENT_OVL_2L0
]
=
MT8183_MUTEX_MOD_DISP_OVL0_2L
,
...
...
@@ -247,7 +279,7 @@ static const unsigned int mt8186_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[
DDP_COMPONENT_AAL0
]
=
MT8186_MUTEX_MOD_DISP_AAL0
,
[
DDP_COMPONENT_CCORR
]
=
MT8186_MUTEX_MOD_DISP_CCORR0
,
[
DDP_COMPONENT_COLOR0
]
=
MT8186_MUTEX_MOD_DISP_COLOR0
,
[
DDP_COMPONENT_DITHER
]
=
MT8186_MUTEX_MOD_DISP_DITHER0
,
[
DDP_COMPONENT_DITHER
0
]
=
MT8186_MUTEX_MOD_DISP_DITHER0
,
[
DDP_COMPONENT_GAMMA
]
=
MT8186_MUTEX_MOD_DISP_GAMMA0
,
[
DDP_COMPONENT_OVL0
]
=
MT8186_MUTEX_MOD_DISP_OVL0
,
[
DDP_COMPONENT_OVL_2L0
]
=
MT8186_MUTEX_MOD_DISP_OVL0_2L
,
...
...
@@ -260,7 +292,7 @@ static const unsigned int mt8192_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[
DDP_COMPONENT_AAL0
]
=
MT8192_MUTEX_MOD_DISP_AAL0
,
[
DDP_COMPONENT_CCORR
]
=
MT8192_MUTEX_MOD_DISP_CCORR0
,
[
DDP_COMPONENT_COLOR0
]
=
MT8192_MUTEX_MOD_DISP_COLOR0
,
[
DDP_COMPONENT_DITHER
]
=
MT8192_MUTEX_MOD_DISP_DITHER0
,
[
DDP_COMPONENT_DITHER
0
]
=
MT8192_MUTEX_MOD_DISP_DITHER0
,
[
DDP_COMPONENT_GAMMA
]
=
MT8192_MUTEX_MOD_DISP_GAMMA0
,
[
DDP_COMPONENT_POSTMASK0
]
=
MT8192_MUTEX_MOD_DISP_POSTMASK0
,
[
DDP_COMPONENT_OVL0
]
=
MT8192_MUTEX_MOD_DISP_OVL0
,
...
...
@@ -270,7 +302,23 @@ static const unsigned int mt8192_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[
DDP_COMPONENT_RDMA4
]
=
MT8192_MUTEX_MOD_DISP_RDMA4
,
};
static
const
unsigned
int
mt2712_mutex_sof
[
MUTEX_SOF_DSI3
+
1
]
=
{
static
const
unsigned
int
mt8195_mutex_mod
[
DDP_COMPONENT_ID_MAX
]
=
{
[
DDP_COMPONENT_OVL0
]
=
MT8195_MUTEX_MOD_DISP_OVL0
,
[
DDP_COMPONENT_WDMA0
]
=
MT8195_MUTEX_MOD_DISP_WDMA0
,
[
DDP_COMPONENT_RDMA0
]
=
MT8195_MUTEX_MOD_DISP_RDMA0
,
[
DDP_COMPONENT_COLOR0
]
=
MT8195_MUTEX_MOD_DISP_COLOR0
,
[
DDP_COMPONENT_CCORR
]
=
MT8195_MUTEX_MOD_DISP_CCORR0
,
[
DDP_COMPONENT_AAL0
]
=
MT8195_MUTEX_MOD_DISP_AAL0
,
[
DDP_COMPONENT_GAMMA
]
=
MT8195_MUTEX_MOD_DISP_GAMMA0
,
[
DDP_COMPONENT_DITHER0
]
=
MT8195_MUTEX_MOD_DISP_DITHER0
,
[
DDP_COMPONENT_MERGE0
]
=
MT8195_MUTEX_MOD_DISP_VPP_MERGE
,
[
DDP_COMPONENT_DSC0
]
=
MT8195_MUTEX_MOD_DISP_DSC_WRAP0_CORE0
,
[
DDP_COMPONENT_DSI0
]
=
MT8195_MUTEX_MOD_DISP_DSI0
,
[
DDP_COMPONENT_PWM0
]
=
MT8195_MUTEX_MOD_DISP_PWM0
,
[
DDP_COMPONENT_DP_INTF0
]
=
MT8195_MUTEX_MOD_DISP_DP_INTF0
,
};
static
const
unsigned
int
mt2712_mutex_sof
[
DDP_MUTEX_SOF_MAX
]
=
{
[
MUTEX_SOF_SINGLE_MODE
]
=
MUTEX_SOF_SINGLE_MODE
,
[
MUTEX_SOF_DSI0
]
=
MUTEX_SOF_DSI0
,
[
MUTEX_SOF_DSI1
]
=
MUTEX_SOF_DSI1
,
...
...
@@ -280,7 +328,7 @@ static const unsigned int mt2712_mutex_sof[MUTEX_SOF_DSI3 + 1] = {
[
MUTEX_SOF_DSI3
]
=
MUTEX_SOF_DSI3
,
};
static
const
unsigned
int
mt8167_mutex_sof
[
MUTEX_SOF_DSI3
+
1
]
=
{
static
const
unsigned
int
mt8167_mutex_sof
[
DDP_MUTEX_SOF_MAX
]
=
{
[
MUTEX_SOF_SINGLE_MODE
]
=
MUTEX_SOF_SINGLE_MODE
,
[
MUTEX_SOF_DSI0
]
=
MUTEX_SOF_DSI0
,
[
MUTEX_SOF_DPI0
]
=
MT8167_MUTEX_SOF_DPI0
,
...
...
@@ -288,7 +336,7 @@ static const unsigned int mt8167_mutex_sof[MUTEX_SOF_DSI3 + 1] = {
};
/* Add EOF setting so overlay hardware can receive frame done irq */
static
const
unsigned
int
mt8183_mutex_sof
[
MUTEX_SOF_DSI3
+
1
]
=
{
static
const
unsigned
int
mt8183_mutex_sof
[
DDP_MUTEX_SOF_MAX
]
=
{
[
MUTEX_SOF_SINGLE_MODE
]
=
MUTEX_SOF_SINGLE_MODE
,
[
MUTEX_SOF_DSI0
]
=
MUTEX_SOF_DSI0
|
MT8183_MUTEX_EOF_DSI0
,
[
MUTEX_SOF_DPI0
]
=
MT8183_MUTEX_SOF_DPI0
|
MT8183_MUTEX_EOF_DPI0
,
...
...
@@ -300,6 +348,26 @@ static const unsigned int mt8186_mutex_sof[MUTEX_SOF_DSI3 + 1] = {
[
MUTEX_SOF_DPI0
]
=
MT8186_MUTEX_SOF_DPI0
|
MT8186_MUTEX_EOF_DPI0
,
};
/*
* To support refresh mode(video mode), DISP_REG_MUTEX_SOF should
* select the EOF source and configure the EOF plus timing from the
* module that provides the timing signal.
* So that MUTEX can not only send a STREAM_DONE event to GCE
* but also detect the error at end of frame(EAEOF) when EOF signal
* arrives.
*/
static
const
unsigned
int
mt8195_mutex_sof
[
DDP_MUTEX_SOF_MAX
]
=
{
[
MUTEX_SOF_SINGLE_MODE
]
=
MUTEX_SOF_SINGLE_MODE
,
[
MUTEX_SOF_DSI0
]
=
MT8195_MUTEX_SOF_DSI0
|
MT8195_MUTEX_EOF_DSI0
,
[
MUTEX_SOF_DSI1
]
=
MT8195_MUTEX_SOF_DSI1
|
MT8195_MUTEX_EOF_DSI1
,
[
MUTEX_SOF_DPI0
]
=
MT8195_MUTEX_SOF_DPI0
|
MT8195_MUTEX_EOF_DPI0
,
[
MUTEX_SOF_DPI1
]
=
MT8195_MUTEX_SOF_DPI1
|
MT8195_MUTEX_EOF_DPI1
,
[
MUTEX_SOF_DP_INTF0
]
=
MT8195_MUTEX_SOF_DP_INTF0
|
MT8195_MUTEX_EOF_DP_INTF0
,
[
MUTEX_SOF_DP_INTF1
]
=
MT8195_MUTEX_SOF_DP_INTF1
|
MT8195_MUTEX_EOF_DP_INTF1
,
};
static
const
struct
mtk_mutex_data
mt2701_mutex_driver_data
=
{
.
mutex_mod
=
mt2701_mutex_mod
,
.
mutex_sof
=
mt2712_mutex_sof
,
...
...
@@ -351,6 +419,13 @@ static const struct mtk_mutex_data mt8192_mutex_driver_data = {
.
mutex_sof_reg
=
MT8183_MUTEX0_SOF0
,
};
static
const
struct
mtk_mutex_data
mt8195_mutex_driver_data
=
{
.
mutex_mod
=
mt8195_mutex_mod
,
.
mutex_sof
=
mt8195_mutex_sof
,
.
mutex_mod_reg
=
MT8195_DISP_MUTEX0_MOD0
,
.
mutex_sof_reg
=
MT8195_DISP_MUTEX0_SOF
,
};
struct
mtk_mutex
*
mtk_mutex_get
(
struct
device
*
dev
)
{
struct
mtk_mutex_ctx
*
mtx
=
dev_get_drvdata
(
dev
);
...
...
@@ -423,6 +498,9 @@ void mtk_mutex_add_comp(struct mtk_mutex *mutex,
case
DDP_COMPONENT_DPI1
:
sof_id
=
MUTEX_SOF_DPI1
;
break
;
case
DDP_COMPONENT_DP_INTF0
:
sof_id
=
MUTEX_SOF_DP_INTF0
;
break
;
default:
if
(
mtx
->
data
->
mutex_mod
[
id
]
<
32
)
{
offset
=
DISP_REG_MUTEX_MOD
(
mtx
->
data
->
mutex_mod_reg
,
...
...
@@ -462,6 +540,7 @@ void mtk_mutex_remove_comp(struct mtk_mutex *mutex,
case
DDP_COMPONENT_DSI3
:
case
DDP_COMPONENT_DPI0
:
case
DDP_COMPONENT_DPI1
:
case
DDP_COMPONENT_DP_INTF0
:
writel_relaxed
(
MUTEX_SOF_SINGLE_MODE
,
mtx
->
regs
+
DISP_REG_MUTEX_SOF
(
mtx
->
data
->
mutex_sof_reg
,
...
...
@@ -587,6 +666,8 @@ static const struct of_device_id mutex_driver_dt_match[] = {
.
data
=
&
mt8186_mutex_driver_data
},
{
.
compatible
=
"mediatek,mt8192-disp-mutex"
,
.
data
=
&
mt8192_mutex_driver_data
},
{
.
compatible
=
"mediatek,mt8195-disp-mutex"
,
.
data
=
&
mt8195_mutex_driver_data
},
{},
};
MODULE_DEVICE_TABLE
(
of
,
mutex_driver_dt_match
);
...
...
include/linux/soc/mediatek/mtk-mmsys.h
View file @
949cfe1a
...
...
@@ -17,13 +17,25 @@ enum mtk_ddp_comp_id {
DDP_COMPONENT_COLOR0
,
DDP_COMPONENT_COLOR1
,
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DITHER0
=
DDP_COMPONENT_DITHER
,
DDP_COMPONENT_DITHER1
,
DDP_COMPONENT_DP_INTF0
,
DDP_COMPONENT_DP_INTF1
,
DDP_COMPONENT_DPI0
,
DDP_COMPONENT_DPI1
,
DDP_COMPONENT_DSC0
,
DDP_COMPONENT_DSC1
,
DDP_COMPONENT_DSI0
,
DDP_COMPONENT_DSI1
,
DDP_COMPONENT_DSI2
,
DDP_COMPONENT_DSI3
,
DDP_COMPONENT_GAMMA
,
DDP_COMPONENT_MERGE0
,
DDP_COMPONENT_MERGE1
,
DDP_COMPONENT_MERGE2
,
DDP_COMPONENT_MERGE3
,
DDP_COMPONENT_MERGE4
,
DDP_COMPONENT_MERGE5
,
DDP_COMPONENT_OD0
,
DDP_COMPONENT_OD1
,
DDP_COMPONENT_OVL0
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment