Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit373014b

Browse files
committed
Merge tag 'mailbox-v5.10' of git://git.linaro.org/landing-teams/working/fujitsu/integration
Pull mailbox updates from Jassi Brar: - arm: implementation of mhu as a doorbell driver and conversion of dt-bindings to json-schema - mediatek: fix platform_get_irq error handling - bcm: convert tasklets to use new tasklet_setup api - core: fix race cause by hrtimer starting inappropriately* tag 'mailbox-v5.10' of git://git.linaro.org/landing-teams/working/fujitsu/integration: mailbox: avoid timer start from callback maiblox: mediatek: Fix handling of platform_get_irq() error mailbox: arm_mhu: Add ARM MHU doorbell driver mailbox: arm_mhu: Match only if compatible is "arm,mhu" dt-bindings: mailbox: add doorbell support to ARM MHU dt-bindings: mailbox : arm,mhu: Convert to Json-schema mailbox: bcm: convert tasklets to use new tasklet_setup() API
2 parentsf66179c +c7dacf5 commit373014b

File tree

8 files changed

+506
-57
lines changed

8 files changed

+506
-57
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id:http://devicetree.org/schemas/mailbox/arm,mhu.yaml#
5+
$schema:http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title:ARM MHU Mailbox Controller
8+
9+
maintainers:
10+
-Jassi Brar <jaswinder.singh@linaro.org>
11+
12+
description:|
13+
The ARM's Message-Handling-Unit (MHU) is a mailbox controller that has 3
14+
independent channels/links to communicate with remote processor(s). MHU links
15+
are hardwired on a platform. A link raises interrupt for any received data.
16+
However, there is no specified way of knowing if the sent data has been read
17+
by the remote. This driver assumes the sender polls STAT register and the
18+
remote clears it after having read the data. The last channel is specified to
19+
be a 'Secure' resource, hence can't be used by Linux running NS.
20+
21+
The MHU hardware also allows operations in doorbell mode. The MHU drives the
22+
interrupt signal using a 32-bit register, with all 32-bits logically ORed
23+
together. It provides a set of registers to enable software to set, clear and
24+
check the status of each of the bits of this register independently. The use
25+
of 32 bits per interrupt line enables software to provide more information
26+
about the source of the interrupt. For example, each bit of the register can
27+
be associated with a type of event that can contribute to raising the
28+
interrupt. Each of the 32-bits can be used as "doorbell" to alert the remote
29+
processor.
30+
31+
# We need a select here so we don't match all nodes with 'arm,primecell'
32+
select:
33+
properties:
34+
compatible:
35+
contains:
36+
enum:
37+
-arm,mhu
38+
-arm,mhu-doorbell
39+
required:
40+
-compatible
41+
42+
properties:
43+
compatible:
44+
oneOf:
45+
-description:Data transfer mode
46+
items:
47+
-const:arm,mhu
48+
-const:arm,primecell
49+
50+
-description:Doorbell mode
51+
items:
52+
-const:arm,mhu-doorbell
53+
-const:arm,primecell
54+
55+
56+
reg:
57+
maxItems:1
58+
59+
interrupts:
60+
items:
61+
-description:low-priority non-secure
62+
-description:high-priority non-secure
63+
-description:Secure
64+
maxItems:3
65+
66+
clocks:
67+
maxItems:1
68+
69+
clock-names:
70+
items:
71+
-const:apb_pclk
72+
73+
'#mbox-cells':
74+
description:|
75+
Set to 1 in data transfer mode and represents index of the channel.
76+
Set to 2 in doorbell mode and represents index of the channel and doorbell
77+
number.
78+
enum:[ 1, 2 ]
79+
80+
required:
81+
-compatible
82+
-reg
83+
-interrupts
84+
-'#mbox-cells'
85+
86+
additionalProperties:false
87+
88+
examples:
89+
# Data transfer mode.
90+
-|
91+
soc {
92+
#address-cells = <2>;
93+
#size-cells = <2>;
94+
95+
mhuA: mailbox@2b1f0000 {
96+
#mbox-cells = <1>;
97+
compatible = "arm,mhu", "arm,primecell";
98+
reg = <0 0x2b1f0000 0 0x1000>;
99+
interrupts = <0 36 4>, /* LP-NonSecure */
100+
<0 35 4>, /* HP-NonSecure */
101+
<0 37 4>; /* Secure */
102+
clocks = <&clock 0 2 1>;
103+
clock-names = "apb_pclk";
104+
};
105+
106+
mhu_client_scb: scb@2e000000 {
107+
compatible = "fujitsu,mb86s70-scb-1.0";
108+
reg = <0 0x2e000000 0 0x4000>;
109+
mboxes = <&mhuA 1>; /* HP-NonSecure */
110+
};
111+
};
112+
113+
# Doorbell mode.
114+
-|
115+
soc {
116+
#address-cells = <2>;
117+
#size-cells = <2>;
118+
119+
mhuB: mailbox@2b2f0000 {
120+
#mbox-cells = <2>;
121+
compatible = "arm,mhu-doorbell", "arm,primecell";
122+
reg = <0 0x2b2f0000 0 0x1000>;
123+
interrupts = <0 36 4>, /* LP-NonSecure */
124+
<0 35 4>, /* HP-NonSecure */
125+
<0 37 4>; /* Secure */
126+
clocks = <&clock 0 2 1>;
127+
clock-names = "apb_pclk";
128+
};
129+
130+
mhu_client_scpi: scpi@2f000000 {
131+
compatible = "arm,scpi";
132+
reg = <0 0x2f000000 0 0x200>;
133+
mboxes = <&mhuB 1 4>; /* HP-NonSecure, 5th doorbell */
134+
};
135+
};

‎Documentation/devicetree/bindings/mailbox/arm-mhu.txt‎

Lines changed: 0 additions & 43 deletions
This file was deleted.

‎drivers/mailbox/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ obj-$(CONFIG_MAILBOX)+= mailbox.o
55

66
obj-$(CONFIG_MAILBOX_TEST)+= mailbox-test.o
77

8-
obj-$(CONFIG_ARM_MHU)+= arm_mhu.o
8+
obj-$(CONFIG_ARM_MHU)+= arm_mhu.o arm_mhu_db.o
99

1010
obj-$(CONFIG_IMX_MBOX)+= imx-mailbox.o
1111

‎drivers/mailbox/arm_mhu.c‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ static int mhu_probe(struct amba_device *adev, const struct amba_id *id)
113113
structdevice*dev=&adev->dev;
114114
intmhu_reg[MHU_CHANS]= {MHU_LP_OFFSET,MHU_HP_OFFSET,MHU_SEC_OFFSET};
115115

116+
if (!of_device_is_compatible(dev->of_node,"arm,mhu"))
117+
return-ENODEV;
118+
116119
/* Allocate memory for device */
117120
mhu=devm_kzalloc(dev,sizeof(*mhu),GFP_KERNEL);
118121
if (!mhu)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp