* [PATCH 0/4] ipmi: bt-bmc: Add configurable LPC host interface
@ 2026-06-29 6:48 Yu-Che Hsieh via B4 Relay
2026-06-29 6:48 ` [PATCH 1/4] ipmi: bt-bmc: Use bitfield helpers for register definitions Yu-Che Hsieh via B4 Relay
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Yu-Che Hsieh via B4 Relay @ 2026-06-29 6:48 UTC (permalink / raw)
To: Corey Minyard, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery
Cc: openipmi-developer, linux-kernel, devicetree, linux-arm-kernel,
linux-aspeed, Yu-Che Hsieh
The Aspeed BT BMC driver currently programs a fixed LPC IO address and
SerIRQ value for the host-facing BT interface. That matches the original
single-interface setup, but newer systems may need the host interface
parameters to be described by firmware.
The Aspeed KCS BMC and VUART bindings already use aspeed,lpc-io-reg and
aspeed,lpc-interrupts for this purpose. Reuse the same properties for
the BT BMC binding and teach the driver to consume them while preserving
the existing default LPC IO address and level-low SerIRQ configuration
when the properties are absent.
The first two patches are small preparation patches. The register
definitions are converted to bitfield helpers so BT_CR0 fields can be
programmed by name, and the open state is moved from a global variable
to the device instance so multiple BT devices are not blocked by a
single shared open count.
---
Yu-Che Hsieh (4):
ipmi: bt-bmc: Use bitfield helpers for register definitions
ipmi: bt-bmc: Track open state per device
dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices
ipmi: bt-bmc: Read LPC address and SerIRQ from device tree
.../bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml | 21 ++++
drivers/char/ipmi/bt-bmc.c | 118 ++++++++++++++-------
2 files changed, 99 insertions(+), 40 deletions(-)
---
base-commit: 493181e2f2f1bdfd4f09a988008653ae73b30688
change-id: 20260625-aspeed-bt-bmc-multichannel-b44a10ff407c
Best regards,
--
Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/4] ipmi: bt-bmc: Use bitfield helpers for register definitions
2026-06-29 6:48 [PATCH 0/4] ipmi: bt-bmc: Add configurable LPC host interface Yu-Che Hsieh via B4 Relay
@ 2026-06-29 6:48 ` Yu-Che Hsieh via B4 Relay
2026-06-29 6:48 ` [PATCH 2/4] ipmi: bt-bmc: Track open state per device Yu-Che Hsieh via B4 Relay
` (2 subsequent siblings)
3 siblings, 0 replies; 10+ messages in thread
From: Yu-Che Hsieh via B4 Relay @ 2026-06-29 6:48 UTC (permalink / raw)
To: Corey Minyard, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery
Cc: openipmi-developer, linux-kernel, devicetree, linux-arm-kernel,
linux-aspeed, Yu-Che Hsieh
From: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
Use BIT(), GENMASK(), and FIELD_PREP() for the BT register definitions
and register field programming.
This makes the register layout easier to read and prepares the driver
for later changes that need to program the BT_CR0 fields from device
configuration.
Signed-off-by: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
---
drivers/char/ipmi/bt-bmc.c | 72 ++++++++++++++++++++++++----------------------
1 file changed, 37 insertions(+), 35 deletions(-)
diff --git a/drivers/char/ipmi/bt-bmc.c b/drivers/char/ipmi/bt-bmc.c
index a179d4797011..f3c67272502f 100644
--- a/drivers/char/ipmi/bt-bmc.c
+++ b/drivers/char/ipmi/bt-bmc.c
@@ -15,6 +15,7 @@
#include <linux/poll.h>
#include <linux/sched.h>
#include <linux/timer.h>
+#include <linux/bitfield.h>
/*
* This is a BMC device used to communicate to the host
@@ -24,33 +25,34 @@
#define BT_IO_BASE 0xe4
#define BT_IRQ 10
-#define BT_CR0 0x0
-#define BT_CR0_IO_BASE 16
-#define BT_CR0_IRQ 12
-#define BT_CR0_EN_CLR_SLV_RDP 0x8
-#define BT_CR0_EN_CLR_SLV_WRP 0x4
-#define BT_CR0_ENABLE_IBT 0x1
-#define BT_CR1 0x4
-#define BT_CR1_IRQ_H2B 0x01
-#define BT_CR1_IRQ_HBUSY 0x40
-#define BT_CR2 0x8
-#define BT_CR2_IRQ_H2B 0x01
-#define BT_CR2_IRQ_HBUSY 0x40
-#define BT_CR3 0xc
-#define BT_CTRL 0x10
-#define BT_CTRL_B_BUSY 0x80
-#define BT_CTRL_H_BUSY 0x40
-#define BT_CTRL_OEM0 0x20
-#define BT_CTRL_SMS_ATN 0x10
-#define BT_CTRL_B2H_ATN 0x08
-#define BT_CTRL_H2B_ATN 0x04
-#define BT_CTRL_CLR_RD_PTR 0x02
-#define BT_CTRL_CLR_WR_PTR 0x01
-#define BT_BMC2HOST 0x14
-#define BT_INTMASK 0x18
-#define BT_INTMASK_B2H_IRQEN 0x01
-#define BT_INTMASK_B2H_IRQ 0x02
-#define BT_INTMASK_BMC_HWRST 0x80
+#define BT_CR0 0x0
+#define BT_CR0_IO_BASE GENMASK(31, 16)
+#define BT_CR0_SIRQ GENMASK(15, 12)
+#define BT_CR0_SIRQ_TYPE GENMASK(11, 10)
+#define BT_CR0_EN_CLR_SLV_RDP BIT(3)
+#define BT_CR0_EN_CLR_SLV_WRP BIT(2)
+#define BT_CR0_ENABLE_IBT BIT(0)
+#define BT_CR1 0x4
+#define BT_CR1_IRQ_EN_HBUSY BIT(6)
+#define BT_CR1_IRQ_EN_H2B BIT(0)
+#define BT_CR2 0x8
+#define BT_CR2_IRQ_STS_HBUSY BIT(6)
+#define BT_CR2_IRQ_STS_H2B BIT(0)
+#define BT_CR3 0xc
+#define BT_CTRL 0x10
+#define BT_CTRL_B_BUSY BIT(7)
+#define BT_CTRL_H_BUSY BIT(6)
+#define BT_CTRL_OEM0 BIT(5)
+#define BT_CTRL_SMS_ATN BIT(4)
+#define BT_CTRL_B2H_ATN BIT(3)
+#define BT_CTRL_H2B_ATN BIT(2)
+#define BT_CTRL_CLR_RD_PTR BIT(1)
+#define BT_CTRL_CLR_WR_PTR BIT(0)
+#define BT_BMC2HOST 0x14
+#define BT_INTMASK 0x18
+#define BT_INTMASK_BMC_HWRST BIT(7)
+#define BT_INTMASK_B2H_IRQ BIT(1)
+#define BT_INTMASK_B2H_IRQEN BIT(0)
#define BT_BMC_BUFFER_SIZE 256
@@ -361,7 +363,7 @@ static irqreturn_t bt_bmc_irq(int irq, void *arg)
reg = readl(bt_bmc->base + BT_CR2);
- reg &= BT_CR2_IRQ_H2B | BT_CR2_IRQ_HBUSY;
+ reg &= BT_CR2_IRQ_STS_H2B | BT_CR2_IRQ_STS_HBUSY;
if (!reg)
return IRQ_NONE;
@@ -398,7 +400,7 @@ static int bt_bmc_config_irq(struct bt_bmc *bt_bmc,
* message to the BT buffer
*/
reg = readl(bt_bmc->base + BT_CR1);
- reg |= BT_CR1_IRQ_H2B | BT_CR1_IRQ_HBUSY;
+ reg |= BT_CR1_IRQ_EN_H2B | BT_CR1_IRQ_EN_HBUSY;
writel(reg, bt_bmc->base + BT_CR1);
return 0;
@@ -447,12 +449,12 @@ static int bt_bmc_probe(struct platform_device *pdev)
add_timer(&bt_bmc->poll_timer);
}
- writel((BT_IO_BASE << BT_CR0_IO_BASE) |
- (BT_IRQ << BT_CR0_IRQ) |
- BT_CR0_EN_CLR_SLV_RDP |
- BT_CR0_EN_CLR_SLV_WRP |
- BT_CR0_ENABLE_IBT,
- bt_bmc->base + BT_CR0);
+ writel(FIELD_PREP(BT_CR0_IO_BASE, BT_IO_BASE) |
+ FIELD_PREP(BT_CR0_SIRQ, BT_IRQ) |
+ BT_CR0_EN_CLR_SLV_RDP |
+ BT_CR0_EN_CLR_SLV_WRP |
+ BT_CR0_ENABLE_IBT,
+ bt_bmc->base + BT_CR0);
clr_b_busy(bt_bmc);
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/4] ipmi: bt-bmc: Track open state per device
2026-06-29 6:48 [PATCH 0/4] ipmi: bt-bmc: Add configurable LPC host interface Yu-Che Hsieh via B4 Relay
2026-06-29 6:48 ` [PATCH 1/4] ipmi: bt-bmc: Use bitfield helpers for register definitions Yu-Che Hsieh via B4 Relay
@ 2026-06-29 6:48 ` Yu-Che Hsieh via B4 Relay
2026-06-29 6:49 ` [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices Yu-Che Hsieh via B4 Relay
2026-06-29 6:49 ` [PATCH 4/4] ipmi: bt-bmc: Read LPC address and SerIRQ from device tree Yu-Che Hsieh via B4 Relay
3 siblings, 0 replies; 10+ messages in thread
From: Yu-Che Hsieh via B4 Relay @ 2026-06-29 6:48 UTC (permalink / raw)
To: Corey Minyard, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery
Cc: openipmi-developer, linux-kernel, devicetree, linux-arm-kernel,
linux-aspeed, Yu-Che Hsieh
From: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
The driver uses a global open count to allow only one userspace client
to open the BT device at a time. This works for a single device, but
also prevents independent BT device instances from being opened
concurrently.
Move the open count into struct bt_bmc so each device instance tracks
its own open state. This preserves the single-open behavior per device
while allowing multiple BT devices to operate independently.
Signed-off-by: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
---
drivers/char/ipmi/bt-bmc.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/char/ipmi/bt-bmc.c b/drivers/char/ipmi/bt-bmc.c
index f3c67272502f..486ecc0b6815 100644
--- a/drivers/char/ipmi/bt-bmc.c
+++ b/drivers/char/ipmi/bt-bmc.c
@@ -64,10 +64,9 @@ struct bt_bmc {
wait_queue_head_t queue;
struct timer_list poll_timer;
struct mutex mutex;
+ atomic_t open_count;
};
-static atomic_t open_count = ATOMIC_INIT(0);
-
static u8 bt_inb(struct bt_bmc *bt_bmc, int reg)
{
return readb(bt_bmc->base + reg);
@@ -152,12 +151,12 @@ static int bt_bmc_open(struct inode *inode, struct file *file)
{
struct bt_bmc *bt_bmc = file_bt_bmc(file);
- if (atomic_inc_return(&open_count) == 1) {
+ if (atomic_inc_return(&bt_bmc->open_count) == 1) {
clr_b_busy(bt_bmc);
return 0;
}
- atomic_dec(&open_count);
+ atomic_dec(&bt_bmc->open_count);
return -EBUSY;
}
@@ -313,7 +312,7 @@ static int bt_bmc_release(struct inode *inode, struct file *file)
{
struct bt_bmc *bt_bmc = file_bt_bmc(file);
- atomic_dec(&open_count);
+ atomic_dec(&bt_bmc->open_count);
set_b_busy(bt_bmc);
return 0;
}
@@ -425,6 +424,8 @@ static int bt_bmc_probe(struct platform_device *pdev)
if (IS_ERR(bt_bmc->base))
return PTR_ERR(bt_bmc->base);
+ atomic_set(&bt_bmc->open_count, 0);
+
mutex_init(&bt_bmc->mutex);
init_waitqueue_head(&bt_bmc->queue);
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices
2026-06-29 6:48 [PATCH 0/4] ipmi: bt-bmc: Add configurable LPC host interface Yu-Che Hsieh via B4 Relay
2026-06-29 6:48 ` [PATCH 1/4] ipmi: bt-bmc: Use bitfield helpers for register definitions Yu-Che Hsieh via B4 Relay
2026-06-29 6:48 ` [PATCH 2/4] ipmi: bt-bmc: Track open state per device Yu-Che Hsieh via B4 Relay
@ 2026-06-29 6:49 ` Yu-Che Hsieh via B4 Relay
2026-06-29 15:26 ` Conor Dooley
2026-06-30 6:11 ` Krzysztof Kozlowski
2026-06-29 6:49 ` [PATCH 4/4] ipmi: bt-bmc: Read LPC address and SerIRQ from device tree Yu-Che Hsieh via B4 Relay
3 siblings, 2 replies; 10+ messages in thread
From: Yu-Che Hsieh via B4 Relay @ 2026-06-29 6:49 UTC (permalink / raw)
To: Corey Minyard, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery
Cc: openipmi-developer, linux-kernel, devicetree, linux-arm-kernel,
linux-aspeed, Yu-Che Hsieh
From: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
Allocating IO and IRQ resources to LPC devices is in-theory an operation
for the host, however ASPEED systems describe these resources through
BMC-internal configuration, as already supported by the ASPEED KCS BMC
binding.
Add aspeed,lpc-io-reg and aspeed,lpc-interrupts to the ASPEED BT BMC
binding so firmware can describe the host LPC IO address and SerIRQ
configuration using the same properties as KCS devices.
Signed-off-by: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
---
.../bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
index c4f7cdbbe16b..1803c6bbae93 100644
--- a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
+++ b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
@@ -25,6 +25,24 @@ properties:
interrupts:
maxItems: 1
+ aspeed,lpc-io-reg:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ maxItems: 1
+ description: |
+ The host CPU LPC IO address for the BT device.
+
+ aspeed,lpc-interrupts:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 2
+ maxItems: 2
+ description: |
+ A 2-cell property expressing the LPC SerIRQ number and the interrupt
+ level/sense encoding (specified in the standard fashion).
+
+ Note that the generated interrupt is issued from the BMC to the host, and
+ thus the target interrupt controller is not captured by the BMC's
+ devicetree.
+
required:
- compatible
- reg
@@ -35,10 +53,13 @@ additionalProperties: false
examples:
- |
#include <dt-bindings/clock/aspeed-clock.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
bt@1e789140 {
compatible = "aspeed,ast2400-ibt-bmc";
reg = <0x1e789140 0x18>;
interrupts = <8>;
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
+ aspeed,lpc-io-reg = <0xe4>;
+ aspeed,lpc-interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/4] ipmi: bt-bmc: Read LPC address and SerIRQ from device tree
2026-06-29 6:48 [PATCH 0/4] ipmi: bt-bmc: Add configurable LPC host interface Yu-Che Hsieh via B4 Relay
` (2 preceding siblings ...)
2026-06-29 6:49 ` [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices Yu-Che Hsieh via B4 Relay
@ 2026-06-29 6:49 ` Yu-Che Hsieh via B4 Relay
3 siblings, 0 replies; 10+ messages in thread
From: Yu-Che Hsieh via B4 Relay @ 2026-06-29 6:49 UTC (permalink / raw)
To: Corey Minyard, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery
Cc: openipmi-developer, linux-kernel, devicetree, linux-arm-kernel,
linux-aspeed, Yu-Che Hsieh
From: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
The BT interface currently programs a fixed host LPC IO address and
SerIRQ number. This works for the existing single-channel setup, but
does not allow the host interface parameters to be described by firmware.
Read the LPC IO address from aspeed,lpc-io-reg and the SerIRQ number
and interrupt type from aspeed,lpc-interrupts. Keep the existing IO
address, SerIRQ number, and level-low interrupt type as defaults when
the properties are not present.
Signed-off-by: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
---
drivers/char/ipmi/bt-bmc.c | 39 +++++++++++++++++++++++++++++++++++++--
1 file changed, 37 insertions(+), 2 deletions(-)
diff --git a/drivers/char/ipmi/bt-bmc.c b/drivers/char/ipmi/bt-bmc.c
index 486ecc0b6815..6e1f941e63db 100644
--- a/drivers/char/ipmi/bt-bmc.c
+++ b/drivers/char/ipmi/bt-bmc.c
@@ -65,6 +65,12 @@ struct bt_bmc {
struct timer_list poll_timer;
struct mutex mutex;
atomic_t open_count;
+ u32 io_addr;
+
+ struct {
+ u32 id;
+ u32 type;
+ } sirq;
};
static u8 bt_inb(struct bt_bmc *bt_bmc, int reg)
@@ -429,6 +435,33 @@ static int bt_bmc_probe(struct platform_device *pdev)
mutex_init(&bt_bmc->mutex);
init_waitqueue_head(&bt_bmc->queue);
+ rc = of_property_read_u32(dev->of_node, "aspeed,lpc-io-reg",
+ &bt_bmc->io_addr);
+ if (rc) {
+ bt_bmc->io_addr = BT_IO_BASE;
+ } else if (bt_bmc->io_addr > FIELD_MAX(BT_CR0_IO_BASE)) {
+ dev_err(dev, "invalid LPC IO address\n");
+ return -EINVAL;
+ }
+
+ rc = of_property_read_u32_array(dev->of_node, "aspeed,lpc-interrupts",
+ (u32 *)&bt_bmc->sirq, 2);
+ if (rc) {
+ bt_bmc->sirq.id = BT_IRQ;
+ bt_bmc->sirq.type = IRQ_TYPE_LEVEL_LOW;
+ } else {
+ if (bt_bmc->sirq.id > FIELD_MAX(BT_CR0_SIRQ)) {
+ dev_err(dev, "invalid SerIRQ number\n");
+ return -EINVAL;
+ }
+
+ if (bt_bmc->sirq.type != IRQ_TYPE_LEVEL_HIGH &&
+ bt_bmc->sirq.type != IRQ_TYPE_LEVEL_LOW) {
+ dev_err(dev, "invalid SerIRQ type\n");
+ return -EINVAL;
+ }
+ }
+
bt_bmc->miscdev.minor = MISC_DYNAMIC_MINOR;
bt_bmc->miscdev.name = DEVICE_NAME;
bt_bmc->miscdev.fops = &bt_bmc_fops;
@@ -450,8 +483,10 @@ static int bt_bmc_probe(struct platform_device *pdev)
add_timer(&bt_bmc->poll_timer);
}
- writel(FIELD_PREP(BT_CR0_IO_BASE, BT_IO_BASE) |
- FIELD_PREP(BT_CR0_SIRQ, BT_IRQ) |
+ writel(FIELD_PREP(BT_CR0_IO_BASE, bt_bmc->io_addr) |
+ FIELD_PREP(BT_CR0_SIRQ, bt_bmc->sirq.id) |
+ FIELD_PREP(BT_CR0_SIRQ_TYPE,
+ bt_bmc->sirq.type == IRQ_TYPE_LEVEL_LOW ? 0 : 1) |
BT_CR0_EN_CLR_SLV_RDP |
BT_CR0_EN_CLR_SLV_WRP |
BT_CR0_ENABLE_IBT,
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices
2026-06-29 6:49 ` [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices Yu-Che Hsieh via B4 Relay
@ 2026-06-29 15:26 ` Conor Dooley
2026-06-30 2:24 ` YC Hsieh
2026-06-30 6:11 ` Krzysztof Kozlowski
1 sibling, 1 reply; 10+ messages in thread
From: Conor Dooley @ 2026-06-29 15:26 UTC (permalink / raw)
To: yc_hsieh
Cc: Corey Minyard, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery, openipmi-developer, linux-kernel,
devicetree, linux-arm-kernel, linux-aspeed
[-- Attachment #1: Type: text/plain, Size: 2563 bytes --]
On Mon, Jun 29, 2026 at 02:49:00PM +0800, Yu-Che Hsieh via B4 Relay wrote:
> From: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
>
> Allocating IO and IRQ resources to LPC devices is in-theory an operation
>
> for the host, however ASPEED systems describe these resources through
>
> BMC-internal configuration, as already supported by the ASPEED KCS BMC
>
> binding.
>
> Add aspeed,lpc-io-reg and aspeed,lpc-interrupts to the ASPEED BT BMC
>
> binding so firmware can describe the host LPC IO address and SerIRQ
>
> configuration using the same properties as KCS devices.
>
> Signed-off-by: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
> ---
> .../bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
> index c4f7cdbbe16b..1803c6bbae93 100644
> --- a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
> +++ b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
> @@ -25,6 +25,24 @@ properties:
> interrupts:
> maxItems: 1
>
> + aspeed,lpc-io-reg:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + maxItems: 1
> + description: |
> + The host CPU LPC IO address for the BT device.
> +
> + aspeed,lpc-interrupts:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 2
> + maxItems: 2
> + description: |
> + A 2-cell property expressing the LPC SerIRQ number and the interrupt
> + level/sense encoding (specified in the standard fashion).
> +
> + Note that the generated interrupt is issued from the BMC to the host, and
> + thus the target interrupt controller is not captured by the BMC's
> + devicetree.
Why can these two properties not just be an additional reg and
interrupts entry?
Cheers,
Conor.
> +
> required:
> - compatible
> - reg
> @@ -35,10 +53,13 @@ additionalProperties: false
> examples:
> - |
> #include <dt-bindings/clock/aspeed-clock.h>
> + #include <dt-bindings/interrupt-controller/irq.h>
>
> bt@1e789140 {
> compatible = "aspeed,ast2400-ibt-bmc";
> reg = <0x1e789140 0x18>;
> interrupts = <8>;
> clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
> + aspeed,lpc-io-reg = <0xe4>;
> + aspeed,lpc-interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
> };
>
> --
> 2.34.1
>
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices
2026-06-29 15:26 ` Conor Dooley
@ 2026-06-30 2:24 ` YC Hsieh
2026-06-30 17:15 ` Conor Dooley
0 siblings, 1 reply; 10+ messages in thread
From: YC Hsieh @ 2026-06-30 2:24 UTC (permalink / raw)
To: Conor Dooley
Cc: Corey Minyard, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery,
openipmi-developer@lists.sourceforge.net,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-aspeed@lists.ozlabs.org
Hi Conor,
Thanks for the review.
> Why can these two properties not just be an additional reg and
> interrupts entry?
The existing reg and interrupts properties describe BMC-side resources.
For this device, reg is the BMC-visible MMIO register range, and
interrupts is the interrupt from the BT controller to the BMC CPU. The
LPC IO address and SerIRQ described here are host-facing resources: the
LPC IO decode address is in the host LPC IO space, and the SerIRQ is
generated from the BMC toward the host.
There is no host interrupt controller represented in the BMC devicetree
to target with an interrupts entry, and adding another reg entry would
mix the BMC MMIO address space with the host LPC IO address space.
This follows the existing ASPEED KCS BMC bindings, which use
aspeed,lpc-io-reg and aspeed,lpc-interrupts for the same host-facing LPC
configuration.
Regards,
Yu-Che
************* Email Confidentiality Notice ********************
免責聲明:
本信件(或其附件)可能包含機密資訊,並受法律保護。如 台端非指定之收件者,請以電子郵件通知本電子郵件之發送者, 並請立即刪除本電子郵件及其附件和銷毀所有複印件。謝謝您的合作!
信驊科技以誠信正直原則永續經營企業,並已委由第三方公正單位勤業眾信及信驊科技獨立董事來管理匿名舉報系統,如各個利害關係人等有發現任何違法及違反公司從業道德、違反法令法規及專業準則、亦或霸凌及違反性別平等之情事,請直接透過以下可選擇匿名之舉報系統舉報,再次感謝您協助信驊持續邁向永續經營。信驊科技舉報網站連結:https://secure.conductwatch.com/aspeedtech/
DISCLAIMER:
This message (and any attachments) may contain legally privileged and/or other confidential information. If you have received it in error, please notify the sender by reply e-mail and immediately delete the e-mail and any attachments without copying or disclosing the contents. Thank you.
ASPEED Technology is committed to sustainable business practices based on integrity and honesty principles. In order to ensure that all information can be openly and transparently communicated, a third-party independent organization, Deloitte and ASPEED Technology's independent directors, have been entrusted to manage the anonymous reporting system. If any stakeholders discover any illegal activities, violations of the company's professional ethics, infringements of laws and regulations, or incidents of bullying and gender inequality, please directly report through the anonymous reporting system provided below. We thank you for your assistance in helping ASPEED Technology continue its journey towards sustainable operations: https://secure.conductwatch.com/aspeedtech/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices
2026-06-29 6:49 ` [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices Yu-Che Hsieh via B4 Relay
2026-06-29 15:26 ` Conor Dooley
@ 2026-06-30 6:11 ` Krzysztof Kozlowski
2026-06-30 17:51 ` Rob Herring
1 sibling, 1 reply; 10+ messages in thread
From: Krzysztof Kozlowski @ 2026-06-30 6:11 UTC (permalink / raw)
To: yc_hsieh, Corey Minyard, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Joel Stanley, Andrew Jeffery
Cc: openipmi-developer, linux-kernel, devicetree, linux-arm-kernel,
linux-aspeed
On 29/06/2026 08:49, Yu-Che Hsieh via B4 Relay wrote:
> From: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
>
> Allocating IO and IRQ resources to LPC devices is in-theory an operation
>
> for the host, however ASPEED systems describe these resources through
>
> BMC-internal configuration, as already supported by the ASPEED KCS BMC
What
is
with
this
line breaks?
>
> binding.
>
> Add aspeed,lpc-io-reg and aspeed,lpc-interrupts to the ASPEED BT BMC
>
> binding so firmware can describe the host LPC IO address and SerIRQ
>
> configuration using the same properties as KCS devices.
>
> Signed-off-by: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
> ---
> .../bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
> index c4f7cdbbe16b..1803c6bbae93 100644
> --- a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
> +++ b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-ibt-bmc.yaml
> @@ -25,6 +25,24 @@ properties:
> interrupts:
> maxItems: 1
>
> + aspeed,lpc-io-reg:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + maxItems: 1
> + description: |
> + The host CPU LPC IO address for the BT device.
No, you do not get second reg property.
> +
> + aspeed,lpc-interrupts:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 2
> + maxItems: 2
> + description: |
> + A 2-cell property expressing the LPC SerIRQ number and the interrupt
> + level/sense encoding (specified in the standard fashion).
> +
> + Note that the generated interrupt is issued from the BMC to the host, and
> + thus the target interrupt controller is not captured by the BMC's
> + devicetree.
No, you do not get second interrupts property.
>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices
2026-06-30 2:24 ` YC Hsieh
@ 2026-06-30 17:15 ` Conor Dooley
0 siblings, 0 replies; 10+ messages in thread
From: Conor Dooley @ 2026-06-30 17:15 UTC (permalink / raw)
To: YC Hsieh
Cc: Corey Minyard, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery,
openipmi-developer@lists.sourceforge.net,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-aspeed@lists.ozlabs.org
[-- Attachment #1: Type: text/plain, Size: 2057 bytes --]
On Tue, Jun 30, 2026 at 02:24:52AM +0000, YC Hsieh wrote:
> ************* Email Confidentiality Notice ********************
> 免責聲明:
> 本信件(或其附件)可能包含機密資訊,並受法律保護。如 台端非指定之收件者,請以電子郵件通知本電子郵件之發送者, 並請立即刪除本電子郵件及其附件和銷毀所有複印件。謝謝您的合作!
> 信驊科技以誠信正直原則永續經營企業,並已委由第三方公正單位勤業眾信及信驊科技獨立董事來管理匿名舉報系統,如各個利害關係人等有發現任何違法及違反公司從業道德、違反法令法規及專業準則、亦或霸凌及違反性別平等之情事,請直接透過以下可選擇匿名之舉報系統舉報,再次感謝您協助信驊持續邁向永續經營。信驊科技舉報網站連結:https://secure.conductwatch.com/aspeedtech/
>
> DISCLAIMER:
> This message (and any attachments) may contain legally privileged and/or other confidential information. If you have received it in error, please notify the sender by reply e-mail and immediately delete the e-mail and any attachments without copying or disclosing the contents. Thank you.
> ASPEED Technology is committed to sustainable business practices based on integrity and honesty principles. In order to ensure that all information can be openly and transparently communicated, a third-party independent organization, Deloitte and ASPEED Technology's independent directors, have been entrusted to manage the anonymous reporting system. If any stakeholders discover any illegal activities, violations of the company's professional ethics, infringements of laws and regulations, or incidents of bullying and gender inequality, please directly report through the anonymous reporting system provided below. We thank you for your assistance in helping ASPEED Technology continue its journey towards sustainable operations: https://secure.conductwatch.com/aspeedtech/
Sort this out, it's not compatible with mailing lists.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices
2026-06-30 6:11 ` Krzysztof Kozlowski
@ 2026-06-30 17:51 ` Rob Herring
0 siblings, 0 replies; 10+ messages in thread
From: Rob Herring @ 2026-06-30 17:51 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: yc_hsieh, Corey Minyard, Krzysztof Kozlowski, Conor Dooley,
Joel Stanley, Andrew Jeffery, openipmi-developer, linux-kernel,
devicetree, linux-arm-kernel, linux-aspeed
On Tue, Jun 30, 2026 at 08:11:34AM +0200, Krzysztof Kozlowski wrote:
> On 29/06/2026 08:49, Yu-Che Hsieh via B4 Relay wrote:
> > From: Yu-Che Hsieh <yc_hsieh@aspeedtech.com>
> >
> > Allocating IO and IRQ resources to LPC devices is in-theory an operation
> >
> > for the host, however ASPEED systems describe these resources through
> >
> > BMC-internal configuration, as already supported by the ASPEED KCS BMC
>
> What
>
> is
>
> with
>
> this
>
> line breaks?
I've seen Codex do this... It amazes me how hard it is to get it to
write properly formatted commit messages and then not forget how to
write them.
Rob
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-06-30 17:51 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-29 6:48 [PATCH 0/4] ipmi: bt-bmc: Add configurable LPC host interface Yu-Che Hsieh via B4 Relay
2026-06-29 6:48 ` [PATCH 1/4] ipmi: bt-bmc: Use bitfield helpers for register definitions Yu-Che Hsieh via B4 Relay
2026-06-29 6:48 ` [PATCH 2/4] ipmi: bt-bmc: Track open state per device Yu-Che Hsieh via B4 Relay
2026-06-29 6:49 ` [PATCH 3/4] dt-bindings: ipmi: Add optional LPC properties to ASPEED BT devices Yu-Che Hsieh via B4 Relay
2026-06-29 15:26 ` Conor Dooley
2026-06-30 2:24 ` YC Hsieh
2026-06-30 17:15 ` Conor Dooley
2026-06-30 6:11 ` Krzysztof Kozlowski
2026-06-30 17:51 ` Rob Herring
2026-06-29 6:49 ` [PATCH 4/4] ipmi: bt-bmc: Read LPC address and SerIRQ from device tree Yu-Che Hsieh via B4 Relay
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox