* [PATCH v2 0/4] ALSA: hda: add CIX IPBLOQ HDA controller support
@ 2025-11-27 9:42 joakim.zhang
2025-11-27 9:42 ` [PATCH v2 1/4] ASoC: dt-bindings: " joakim.zhang
` (3 more replies)
0 siblings, 4 replies; 14+ messages in thread
From: joakim.zhang @ 2025-11-27 9:42 UTC (permalink / raw)
To: lgirdwood, broonie, robh, krzk+dt, conor+dt, perex, tiwai,
linux-sound, devicetree
Cc: cix-kernel-upstream, Joakim Zhang
From: Joakim Zhang <joakim.zhang@cixtech.com>
- add CIX IPBLOQ HDA controller support
--
ChangeLogs:
v1->v2:
- fix dt-binding issues
- remove delayed work for probing
- refine dma address traslation
Joakim Zhang (4):
ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
ALSA: hda: core: add bus ops for dma address translation
ALSA: hda: controller: specifyhdac bus ops from azx_bus_init()
ALSA: hda: add CIX IPBLOQ HDA controller support
.../bindings/sound/cix,ipbloq-hda.yaml | 71 +++
include/sound/hdaudio.h | 4 +
sound/hda/common/controller.c | 17 +-
sound/hda/common/hda_controller.h | 6 +-
sound/hda/controllers/Kconfig | 14 +
sound/hda/controllers/Makefile | 2 +
sound/hda/controllers/acpi.c | 2 +-
sound/hda/controllers/cix-ipbloq.c | 452 ++++++++++++++++++
sound/hda/controllers/intel.c | 2 +-
sound/hda/controllers/tegra.c | 2 +-
sound/hda/core/bus.c | 17 +
sound/hda/core/controller.c | 18 +-
sound/hda/core/stream.c | 11 +-
13 files changed, 599 insertions(+), 19 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
create mode 100644 sound/hda/controllers/cix-ipbloq.c
--
2.49.0
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-27 9:42 [PATCH v2 0/4] ALSA: hda: add CIX IPBLOQ HDA controller support joakim.zhang
@ 2025-11-27 9:42 ` joakim.zhang
2025-11-27 10:14 ` Rob Herring (Arm)
2025-11-28 9:27 ` Krzysztof Kozlowski
2025-11-27 9:42 ` [PATCH v2 2/4] ALSA: hda: core: add bus ops for dma address translation joakim.zhang
` (2 subsequent siblings)
3 siblings, 2 replies; 14+ messages in thread
From: joakim.zhang @ 2025-11-27 9:42 UTC (permalink / raw)
To: lgirdwood, broonie, robh, krzk+dt, conor+dt, perex, tiwai,
linux-sound, devicetree
Cc: cix-kernel-upstream, Joakim Zhang
From: Joakim Zhang <joakim.zhang@cixtech.com>
- add CIX IPBLOQ HDA controller support
Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
---
.../bindings/sound/cix,ipbloq-hda.yaml | 71 +++++++++++++++++++
1 file changed, 71 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
diff --git a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
new file mode 100644
index 000000000000..c9e4015a8174
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: CIX IPBLOQ HDA controller
+
+description:
+ CIX IPBLOQ High Definition Audio (HDA) Controller
+
+maintainers:
+ - Joakim Zhang <joakim.zhang@cixtech.com>
+
+properties:
+ compatible:
+ const: cix,ipbloq-hda
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 2
+
+ clock-names:
+ items:
+ - const: sysclk
+ - const: clk48m
+
+ resets:
+ maxItems: 1
+
+ reset-names:
+ items:
+ - const: hda
+
+ cix,model:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ The user-visible name of this sound complex. If this property is
+ not specified then boards can use default name provided in hda driver.
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - clock-names
+ - resets
+ - reset-names
+
+additionalProperties: false
+
+examples:
+ - |
+ #include<dt-bindings/interrupt-controller/arm-gic.h>
+
+ hda@70c0000 {
+ compatible = "cix,ipbloq-hda";
+ reg = <0x70c0000 0x10000>;
+ interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&audss_clk 7>,
+ <&audss_clk 8>;
+ clock-names = "sysclk", "clk48m";
+ resets = <&audss_rst 14>;
+ reset-names = "hda";
+ cix,model = "CIX EVB HDA";
+ };
--
2.49.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 2/4] ALSA: hda: core: add bus ops for dma address translation
2025-11-27 9:42 [PATCH v2 0/4] ALSA: hda: add CIX IPBLOQ HDA controller support joakim.zhang
2025-11-27 9:42 ` [PATCH v2 1/4] ASoC: dt-bindings: " joakim.zhang
@ 2025-11-27 9:42 ` joakim.zhang
2025-11-27 9:43 ` [PATCH v2 3/4] ALSA: hda: controller: specifyhdac bus ops from azx_bus_init() joakim.zhang
2025-11-27 9:43 ` [PATCH v2 4/4] ALSA: hda: add CIX IPBLOQ HDA controller support joakim.zhang
3 siblings, 0 replies; 14+ messages in thread
From: joakim.zhang @ 2025-11-27 9:42 UTC (permalink / raw)
To: lgirdwood, broonie, robh, krzk+dt, conor+dt, perex, tiwai,
linux-sound, devicetree
Cc: cix-kernel-upstream, Joakim Zhang
From: Joakim Zhang <joakim.zhang@cixtech.com>
- add bus ops for dma address translation, for some SoCs
such as CIX SKY1 which is ARM64 arch, HOST and HDAC has
different memory view, so need to do dma address translation
between HOST and HDAC.
Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
---
include/sound/hdaudio.h | 4 ++++
sound/hda/core/bus.c | 17 +++++++++++++++++
sound/hda/core/controller.c | 18 ++++++++++++------
sound/hda/core/stream.c | 11 ++++++-----
4 files changed, 39 insertions(+), 11 deletions(-)
diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h
index 4e0c1d8af09f..90062dd4ed9b 100644
--- a/include/sound/hdaudio.h
+++ b/include/sound/hdaudio.h
@@ -246,6 +246,8 @@ struct hdac_bus_ops {
/* get a response from the last command */
int (*get_response)(struct hdac_bus *bus, unsigned int addr,
unsigned int *res);
+ /* translate dma address from host to hdac */
+ dma_addr_t (*addr_host_to_hdac)(struct hdac_bus *bus, dma_addr_t addr);
/* notify of codec link power-up/down */
void (*link_power)(struct hdac_device *hdev, bool enable);
};
@@ -385,6 +387,8 @@ struct hdac_bus {
int snd_hdac_bus_init(struct hdac_bus *bus, struct device *dev,
const struct hdac_bus_ops *ops);
void snd_hdac_bus_exit(struct hdac_bus *bus);
+dma_addr_t snd_hdac_bus_addr_host_to_hdac(struct hdac_bus *bus,
+ dma_addr_t addr);
int snd_hdac_bus_exec_verb_unlocked(struct hdac_bus *bus, unsigned int addr,
unsigned int cmd, unsigned int *res);
diff --git a/sound/hda/core/bus.c b/sound/hda/core/bus.c
index 9b196c915f37..419461c7fc61 100644
--- a/sound/hda/core/bus.c
+++ b/sound/hda/core/bus.c
@@ -75,6 +75,23 @@ void snd_hdac_bus_exit(struct hdac_bus *bus)
}
EXPORT_SYMBOL_GPL(snd_hdac_bus_exit);
+/**
+ * snd_hdac_bus_addr_host_to_hdac - translate dma address from host to hdac
+ * @bus: HDA core bus
+ * @addr: dma address which need translate
+ *
+ * Returns dma address which is translated or the original address
+ */
+dma_addr_t snd_hdac_bus_addr_host_to_hdac(struct hdac_bus *bus,
+ dma_addr_t addr)
+{
+ if (bus->ops->addr_host_to_hdac)
+ return bus->ops->addr_host_to_hdac(bus, addr);
+
+ return addr;
+}
+EXPORT_SYMBOL_GPL(snd_hdac_bus_addr_host_to_hdac);
+
/**
* snd_hdac_bus_exec_verb - execute a HD-audio verb on the given bus
* @bus: bus object
diff --git a/sound/hda/core/controller.c b/sound/hda/core/controller.c
index a7c00ad80117..536f03ca13aa 100644
--- a/sound/hda/core/controller.c
+++ b/sound/hda/core/controller.c
@@ -48,8 +48,10 @@ void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus)
/* CORB set up */
bus->corb.addr = bus->rb.addr;
bus->corb.buf = (__le32 *)bus->rb.area;
- snd_hdac_chip_writel(bus, CORBLBASE, (u32)bus->corb.addr);
- snd_hdac_chip_writel(bus, CORBUBASE, upper_32_bits(bus->corb.addr));
+ snd_hdac_chip_writel(bus, CORBLBASE,
+ (u32)snd_hdac_bus_addr_host_to_hdac(bus, bus->corb.addr));
+ snd_hdac_chip_writel(bus, CORBUBASE,
+ upper_32_bits(snd_hdac_bus_addr_host_to_hdac(bus, bus->corb.addr)));
/* set the corb size to 256 entries (ULI requires explicitly) */
snd_hdac_chip_writeb(bus, CORBSIZE, 0x02);
@@ -70,8 +72,10 @@ void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus)
bus->rirb.buf = (__le32 *)(bus->rb.area + 2048);
bus->rirb.wp = bus->rirb.rp = 0;
memset(bus->rirb.cmds, 0, sizeof(bus->rirb.cmds));
- snd_hdac_chip_writel(bus, RIRBLBASE, (u32)bus->rirb.addr);
- snd_hdac_chip_writel(bus, RIRBUBASE, upper_32_bits(bus->rirb.addr));
+ snd_hdac_chip_writel(bus, RIRBLBASE,
+ (u32)snd_hdac_bus_addr_host_to_hdac(bus, bus->rirb.addr));
+ snd_hdac_chip_writel(bus, RIRBUBASE,
+ upper_32_bits(snd_hdac_bus_addr_host_to_hdac(bus, bus->rirb.addr)));
/* set the rirb size to 256 entries (ULI requires explicitly) */
snd_hdac_chip_writeb(bus, RIRBSIZE, 0x02);
@@ -625,8 +629,10 @@ bool snd_hdac_bus_init_chip(struct hdac_bus *bus, bool full_reset)
/* program the position buffer */
if (bus->use_posbuf && bus->posbuf.addr) {
- snd_hdac_chip_writel(bus, DPLBASE, (u32)bus->posbuf.addr);
- snd_hdac_chip_writel(bus, DPUBASE, upper_32_bits(bus->posbuf.addr));
+ snd_hdac_chip_writel(bus, DPLBASE,
+ (u32)snd_hdac_bus_addr_host_to_hdac(bus, bus->posbuf.addr));
+ snd_hdac_chip_writel(bus, DPUBASE,
+ upper_32_bits(snd_hdac_bus_addr_host_to_hdac(bus, bus->posbuf.addr)));
}
bus->chip_init = true;
diff --git a/sound/hda/core/stream.c b/sound/hda/core/stream.c
index 579ec544ef4a..bf6fe7408b2c 100644
--- a/sound/hda/core/stream.c
+++ b/sound/hda/core/stream.c
@@ -288,16 +288,17 @@ int snd_hdac_stream_setup(struct hdac_stream *azx_dev, bool code_loading)
/* program the BDL address */
/* lower BDL address */
- snd_hdac_stream_writel(azx_dev, SD_BDLPL, (u32)azx_dev->bdl.addr);
+ snd_hdac_stream_writel(azx_dev, SD_BDLPL,
+ (u32)snd_hdac_bus_addr_host_to_hdac(bus, azx_dev->bdl.addr));
/* upper BDL address */
snd_hdac_stream_writel(azx_dev, SD_BDLPU,
- upper_32_bits(azx_dev->bdl.addr));
+ upper_32_bits(snd_hdac_bus_addr_host_to_hdac(bus, azx_dev->bdl.addr)));
/* enable the position buffer */
if (bus->use_posbuf && bus->posbuf.addr) {
if (!(snd_hdac_chip_readl(bus, DPLBASE) & AZX_DPLBASE_ENABLE))
snd_hdac_chip_writel(bus, DPLBASE,
- (u32)bus->posbuf.addr | AZX_DPLBASE_ENABLE);
+ (u32)snd_hdac_bus_addr_host_to_hdac(bus, bus->posbuf.addr) | AZX_DPLBASE_ENABLE);
}
/* set the interrupt enable bits in the descriptor control register */
@@ -464,8 +465,8 @@ static int setup_bdle(struct hdac_bus *bus,
addr = snd_sgbuf_get_addr(dmab, ofs);
/* program the address field of the BDL entry */
- bdl[0] = cpu_to_le32((u32)addr);
- bdl[1] = cpu_to_le32(upper_32_bits(addr));
+ bdl[0] = cpu_to_le32((u32)snd_hdac_bus_addr_host_to_hdac(bus, addr));
+ bdl[1] = cpu_to_le32(upper_32_bits(snd_hdac_bus_addr_host_to_hdac(bus, addr)));
/* program the size field of the BDL entry */
chunk = snd_sgbuf_get_chunk_size(dmab, ofs, size);
/* one BDLE cannot cross 4K boundary on CTHDA chips */
--
2.49.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 3/4] ALSA: hda: controller: specifyhdac bus ops from azx_bus_init()
2025-11-27 9:42 [PATCH v2 0/4] ALSA: hda: add CIX IPBLOQ HDA controller support joakim.zhang
2025-11-27 9:42 ` [PATCH v2 1/4] ASoC: dt-bindings: " joakim.zhang
2025-11-27 9:42 ` [PATCH v2 2/4] ALSA: hda: core: add bus ops for dma address translation joakim.zhang
@ 2025-11-27 9:43 ` joakim.zhang
2025-11-27 9:43 ` [PATCH v2 4/4] ALSA: hda: add CIX IPBLOQ HDA controller support joakim.zhang
3 siblings, 0 replies; 14+ messages in thread
From: joakim.zhang @ 2025-11-27 9:43 UTC (permalink / raw)
To: lgirdwood, broonie, robh, krzk+dt, conor+dt, perex, tiwai,
linux-sound, devicetree
Cc: cix-kernel-upstream, Joakim Zhang
From: Joakim Zhang <joakim.zhang@cixtech.com>
- extend azx_bus_init() to support specify the customer hdac
bus ops, such as add addr_host_to_hdac ops to do dma address
translation.
Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
---
sound/hda/common/controller.c | 17 +++++++++++++----
sound/hda/common/hda_controller.h | 6 +++++-
sound/hda/controllers/acpi.c | 2 +-
sound/hda/controllers/intel.c | 2 +-
sound/hda/controllers/tegra.c | 2 +-
5 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/sound/hda/common/controller.c b/sound/hda/common/controller.c
index b1cfd9bd4dcb..1bf2d0662c8f 100644
--- a/sound/hda/common/controller.c
+++ b/sound/hda/common/controller.c
@@ -899,7 +899,7 @@ static int azx_single_get_response(struct hdac_bus *bus, unsigned int addr,
*/
/* send a command */
-static int azx_send_cmd(struct hdac_bus *bus, unsigned int val)
+int azx_send_cmd(struct hdac_bus *bus, unsigned int val)
{
struct azx *chip = bus_to_azx(bus);
@@ -910,9 +910,10 @@ static int azx_send_cmd(struct hdac_bus *bus, unsigned int val)
else
return snd_hdac_bus_send_cmd(bus, val);
}
+EXPORT_SYMBOL_GPL(azx_send_cmd);
/* get a response */
-static int azx_get_response(struct hdac_bus *bus, unsigned int addr,
+int azx_get_response(struct hdac_bus *bus, unsigned int addr,
unsigned int *res)
{
struct azx *chip = bus_to_azx(bus);
@@ -924,6 +925,7 @@ static int azx_get_response(struct hdac_bus *bus, unsigned int addr,
else
return azx_rirb_get_response(bus, addr, res);
}
+EXPORT_SYMBOL_GPL(azx_get_response);
static const struct hdac_bus_ops bus_core_ops = {
.command = azx_send_cmd,
@@ -1147,12 +1149,19 @@ void snd_hda_bus_reset(struct hda_bus *bus)
}
/* HD-audio bus initialization */
-int azx_bus_init(struct azx *chip, const char *model)
+int azx_bus_init(struct azx *chip, const char *model,
+ const struct hdac_bus_ops *ops)
{
+ const struct hdac_bus_ops *bus_ops;
struct hda_bus *bus = &chip->bus;
int err;
- err = snd_hdac_bus_init(&bus->core, chip->card->dev, &bus_core_ops);
+ if (ops)
+ bus_ops = ops;
+ else
+ bus_ops = &bus_core_ops;
+
+ err = snd_hdac_bus_init(&bus->core, chip->card->dev, bus_ops);
if (err < 0)
return err;
diff --git a/sound/hda/common/hda_controller.h b/sound/hda/common/hda_controller.h
index c2d0109866e6..0ba352a8ee05 100644
--- a/sound/hda/common/hda_controller.h
+++ b/sound/hda/common/hda_controller.h
@@ -206,7 +206,11 @@ void azx_stop_chip(struct azx *chip);
irqreturn_t azx_interrupt(int irq, void *dev_id);
/* Codec interface */
-int azx_bus_init(struct azx *chip, const char *model);
+int azx_send_cmd(struct hdac_bus *bus, unsigned int val);
+int azx_get_response(struct hdac_bus *bus, unsigned int addr,
+ unsigned int *res);
+int azx_bus_init(struct azx *chip, const char *model,
+ const struct hdac_bus_ops *ops);
int azx_probe_codecs(struct azx *chip, unsigned int max_slots);
int azx_codec_configure(struct azx *chip);
int azx_init_streams(struct azx *chip);
diff --git a/sound/hda/controllers/acpi.c b/sound/hda/controllers/acpi.c
index 505cc97e0ee9..81a60e3e220d 100644
--- a/sound/hda/controllers/acpi.c
+++ b/sound/hda/controllers/acpi.c
@@ -192,7 +192,7 @@ static int hda_acpi_create(struct hda_acpi *hda)
azx->driver_type = hda->data->flags & 0xff;
azx->codec_probe_mask = -1;
- err = azx_bus_init(azx, NULL);
+ err = azx_bus_init(azx, NULL, NULL);
if (err < 0)
return err;
diff --git a/sound/hda/controllers/intel.c b/sound/hda/controllers/intel.c
index 1e8e3d61291a..b76839401ef5 100644
--- a/sound/hda/controllers/intel.c
+++ b/sound/hda/controllers/intel.c
@@ -1814,7 +1814,7 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,
else
chip->bdl_pos_adj = bdl_pos_adj[dev];
- err = azx_bus_init(chip, model[dev]);
+ err = azx_bus_init(chip, model[dev], NULL);
if (err < 0)
return err;
diff --git a/sound/hda/controllers/tegra.c b/sound/hda/controllers/tegra.c
index 6ab338f37db5..4890425a4e89 100644
--- a/sound/hda/controllers/tegra.c
+++ b/sound/hda/controllers/tegra.c
@@ -435,7 +435,7 @@ static int hda_tegra_create(struct snd_card *card,
INIT_WORK(&hda->probe_work, hda_tegra_probe_work);
- err = azx_bus_init(chip, NULL);
+ err = azx_bus_init(chip, NULL, NULL);
if (err < 0)
return err;
--
2.49.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 4/4] ALSA: hda: add CIX IPBLOQ HDA controller support
2025-11-27 9:42 [PATCH v2 0/4] ALSA: hda: add CIX IPBLOQ HDA controller support joakim.zhang
` (2 preceding siblings ...)
2025-11-27 9:43 ` [PATCH v2 3/4] ALSA: hda: controller: specifyhdac bus ops from azx_bus_init() joakim.zhang
@ 2025-11-27 9:43 ` joakim.zhang
3 siblings, 0 replies; 14+ messages in thread
From: joakim.zhang @ 2025-11-27 9:43 UTC (permalink / raw)
To: lgirdwood, broonie, robh, krzk+dt, conor+dt, perex, tiwai,
linux-sound, devicetree
Cc: cix-kernel-upstream, Joakim Zhang
From: Joakim Zhang <joakim.zhang@cixtech.com>
- add CIX IPBLOQ HDA controller support
Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
---
sound/hda/controllers/Kconfig | 14 +
sound/hda/controllers/Makefile | 2 +
sound/hda/controllers/cix-ipbloq.c | 452 +++++++++++++++++++++++++++++
3 files changed, 468 insertions(+)
create mode 100644 sound/hda/controllers/cix-ipbloq.c
diff --git a/sound/hda/controllers/Kconfig b/sound/hda/controllers/Kconfig
index 34721f50b055..72855f2df451 100644
--- a/sound/hda/controllers/Kconfig
+++ b/sound/hda/controllers/Kconfig
@@ -30,6 +30,20 @@ config SND_HDA_TEGRA
To compile this driver as a module, choose M here: the module
will be called snd-hda-tegra.
+config SND_HDA_CIX_IPBLOQ
+ tristate "CIX IPBLOQ HD Audio"
+ depends on ARCH_CIX || COMPILE_TEST
+ select SND_HDA
+ select SND_HDA_ALIGNED_MMIO
+ help
+ Say Y here to support the HDA controller present in CIX SoCs
+
+ This options enables support for the HD Audio controller
+ present in some CIX SoCs.
+
+ To compile this driver as a module, choose M here: the module
+ will be called snd-hda-cix-ipbloq.
+
config SND_HDA_ACPI
tristate "HD Audio ACPI"
depends on ACPI
diff --git a/sound/hda/controllers/Makefile b/sound/hda/controllers/Makefile
index a4bcd055e9ae..8967b6771d90 100644
--- a/sound/hda/controllers/Makefile
+++ b/sound/hda/controllers/Makefile
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
snd-hda-intel-y := intel.o
snd-hda-tegra-y := tegra.o
+snd-hda-cix-ipbloq-y := cix-ipbloq.o
snd-hda-acpi-y := acpi.o
subdir-ccflags-y += -I$(src)/../common
@@ -10,4 +11,5 @@ CFLAGS_intel.o := -I$(src)
obj-$(CONFIG_SND_HDA_INTEL) += snd-hda-intel.o
obj-$(CONFIG_SND_HDA_TEGRA) += snd-hda-tegra.o
+obj-$(CONFIG_SND_HDA_CIX_IPBLOQ) += snd-hda-cix-ipbloq.o
obj-$(CONFIG_SND_HDA_ACPI) += snd-hda-acpi.o
diff --git a/sound/hda/controllers/cix-ipbloq.c b/sound/hda/controllers/cix-ipbloq.c
new file mode 100644
index 000000000000..1c6b7011f0cd
--- /dev/null
+++ b/sound/hda/controllers/cix-ipbloq.c
@@ -0,0 +1,452 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright 2025 Cix Technology Group Co., Ltd.
+
+#include <linux/clk.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/of.h>
+#include <linux/of_reserved_mem.h>
+#include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
+#include <linux/reset.h>
+#include <linux/string.h>
+
+#include <sound/hda_codec.h>
+#include "hda_controller.h"
+
+#define CIX_IPBLOQ_JACKPOLL_DEFAULT_TIME_MS 1000
+#define CIX_IPBLOQ_POWER_SAVE_DEFAULT_TIME_MS 100
+
+#define CIX_IPBLOQ_SKY1_ADDR_HOST_TO_HDAC_OFFSET 0x90000000
+
+struct cix_ipbloq_hda {
+ struct azx chip;
+ struct device *dev;
+ void __iomem *regs;
+
+ struct reset_control_bulk_data resets[1];
+ struct clk_bulk_data clocks[2];
+ unsigned int nresets;
+ unsigned int nclocks;
+};
+
+static const struct hda_controller_ops cix_ipbloq_hda_ops;
+
+static dma_addr_t cix_ipbloq_hda_addr_host_to_hdac(struct hdac_bus *bus,
+ dma_addr_t addr);
+
+static const struct hdac_bus_ops cix_ipbloq_bus_core_ops = {
+ .command = azx_send_cmd,
+ .get_response = azx_get_response,
+ .addr_host_to_hdac = cix_ipbloq_hda_addr_host_to_hdac,
+};
+
+static dma_addr_t cix_ipbloq_hda_addr_host_to_hdac(struct hdac_bus *bus,
+ dma_addr_t addr)
+{
+ return addr - CIX_IPBLOQ_SKY1_ADDR_HOST_TO_HDAC_OFFSET;
+}
+
+static int cix_ipbloq_hda_dev_disconnect(struct snd_device *device)
+{
+ struct azx *chip = device->device_data;
+
+ chip->bus.shutdown = 1;
+
+ return 0;
+}
+
+static int cix_ipbloq_hda_dev_free(struct snd_device *device)
+{
+ struct azx *chip = device->device_data;
+
+ if (azx_bus(chip)->chip_init) {
+ azx_stop_all_streams(chip);
+ azx_stop_chip(chip);
+ }
+
+ azx_free_stream_pages(chip);
+ azx_free_streams(chip);
+ snd_hdac_bus_exit(azx_bus(chip));
+
+ return 0;
+}
+
+static int cix_ipbloq_hda_probe_codec(struct cix_ipbloq_hda *hda)
+{
+ struct azx *chip = &hda->chip;
+ struct hdac_bus *bus = azx_bus(chip);
+ int err;
+
+ to_hda_bus(bus)->bus_probing = 1;
+
+ /* create codec instances */
+ err = azx_probe_codecs(chip, 8);
+ if (err < 0) {
+ dev_err(hda->dev, "probe codecs failed: %d\n", err);
+ return err;
+ }
+
+ err = azx_codec_configure(chip);
+ if (err < 0) {
+ dev_err(hda->dev, "codec configure failed: %d\n", err);
+ return err;
+ }
+
+ err = snd_card_register(chip->card);
+ if (err < 0) {
+ dev_err(hda->dev, "card register failed: %d\n", err);
+ return err;
+ }
+
+ chip->running = 1;
+
+ to_hda_bus(bus)->bus_probing = 0;
+
+ snd_hda_set_power_save(&chip->bus, CIX_IPBLOQ_POWER_SAVE_DEFAULT_TIME_MS);
+
+ return 0;
+}
+
+static int cix_ipbloq_hda_init(struct cix_ipbloq_hda *hda,
+ struct azx *chip,
+ struct platform_device *pdev)
+{
+ const char *sname = NULL, *drv_name = "cix-ipbloq-hda";
+ struct hdac_bus *bus = azx_bus(chip);
+ struct snd_card *card = chip->card;
+ struct resource *res;
+ unsigned short gcap;
+ int irq_id, err;
+
+ hda->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ if (IS_ERR(hda->regs)) {
+ dev_err(hda->dev, "failed to get and ioremap resource\n");
+ return PTR_ERR(hda->regs);
+ }
+ bus->remap_addr = hda->regs;
+ bus->addr = res->start;
+
+ irq_id = platform_get_irq(pdev, 0);
+ if (irq_id < 0) {
+ dev_err(hda->dev, "failed to get the irq, err = %d\n", irq_id);
+ return irq_id;
+ }
+
+ err = devm_request_irq(hda->dev, irq_id, azx_interrupt,
+ 0, KBUILD_MODNAME, chip);
+ if (err < 0)
+ return dev_err_probe(hda->dev, err,
+ "unable to request IRQ %d : err = %d\n", irq_id, err);
+ bus->irq = irq_id;
+ card->sync_irq = bus->irq;
+
+ gcap = azx_readw(chip, GCAP);
+ chip->capture_streams = (gcap >> 8) & 0x0f;
+ chip->playback_streams = (gcap >> 12) & 0x0f;
+ chip->capture_index_offset = 0;
+ chip->playback_index_offset = chip->capture_streams;
+ chip->num_streams = chip->playback_streams + chip->capture_streams;
+
+ /* initialize streams */
+ err = azx_init_streams(chip);
+ if (err < 0) {
+ dev_err(hda->dev, "failed to initialize streams: %d\n", err);
+ return err;
+ }
+
+ err = azx_alloc_stream_pages(chip);
+ if (err < 0) {
+ dev_err(hda->dev, "failed to allocate stream pages: %d\n", err);
+ return err;
+ }
+
+ /* initialize chip */
+ azx_init_chip(chip, 1);
+
+ /* codec detection */
+ if (!bus->codec_mask) {
+ dev_err(hda->dev, "no codecs found\n");
+ return -ENODEV;
+ }
+ dev_dbg(card->dev, "codec detection mask = 0x%lx\n", bus->codec_mask);
+
+ /* driver name */
+ strscpy(card->driver, drv_name, sizeof(card->driver));
+
+ /* shortname for card */
+ sname = of_get_property(pdev->dev.of_node, "cix,model", NULL);
+ if (!sname)
+ sname = drv_name;
+ if (strlen(sname) > sizeof(card->shortname))
+ dev_dbg(card->dev, "truncating shortname for card\n");
+ strscpy(card->shortname, sname, sizeof(card->shortname));
+
+ /* longname for card */
+ snprintf(card->longname, sizeof(card->longname),
+ "%s at 0x%lx irq %i",
+ card->shortname, bus->addr, bus->irq);
+
+ return 0;
+}
+
+static int cix_ipbloq_hda_create(struct cix_ipbloq_hda *hda,
+ struct snd_card *card,
+ unsigned int driver_caps)
+{
+ static const struct snd_device_ops ops = {
+ .dev_disconnect = cix_ipbloq_hda_dev_disconnect,
+ .dev_free = cix_ipbloq_hda_dev_free,
+ };
+ struct azx *chip;
+ int err;
+
+ chip = &hda->chip;
+ chip->card = card;
+ chip->ops = &cix_ipbloq_hda_ops;
+ chip->driver_caps = driver_caps;
+ chip->driver_type = driver_caps & 0xff;
+ chip->dev_index = 0;
+ chip->single_cmd = 0;
+ chip->codec_probe_mask = -1;
+ chip->align_buffer_size = 1;
+ chip->jackpoll_interval = msecs_to_jiffies(CIX_IPBLOQ_JACKPOLL_DEFAULT_TIME_MS);
+ mutex_init(&chip->open_mutex);
+ INIT_LIST_HEAD(&chip->pcm_list);
+
+ /*
+ * HD-audio controllers appear pretty inaccurate about the update-IRQ timing.
+ * The IRQ is issued before actually the data is processed. So use stream
+ * link position by default instead of dma position buffer.
+ */
+ chip->get_position[0] = chip->get_position[1] = azx_get_pos_lpib;
+
+ err = azx_bus_init(chip, NULL, &cix_ipbloq_bus_core_ops);
+ if (err < 0) {
+ dev_err(hda->dev, "failed to init bus, err = %d\n", err);
+ return err;
+ }
+
+ /* RIRBSTS.RINTFL cannot be cleared, cause interrupt storm */
+ chip->bus.core.polling_mode = 1;
+ chip->bus.core.not_use_interrupts = 1;
+
+ chip->bus.core.aligned_mmio = 1;
+ chip->bus.core.dma_stop_delay = 100;
+
+ chip->bus.jackpoll_in_suspend = 1;
+
+ err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
+ if (err < 0) {
+ dev_err(card->dev, "failed to create device, err = %d\n", err);
+ return err;
+ }
+
+ return 0;
+}
+
+static int cix_ipbloq_hda_probe(struct platform_device *pdev)
+{
+ const unsigned int driver_flags = AZX_DCAPS_PM_RUNTIME;
+ struct cix_ipbloq_hda *hda;
+ struct snd_card *card;
+ struct azx *chip;
+ int err;
+
+ hda = devm_kzalloc(&pdev->dev, sizeof(*hda), GFP_KERNEL);
+ if (!hda)
+ return -ENOMEM;
+ hda->dev = &pdev->dev;
+
+ hda->resets[hda->nresets++].id = "hda";
+ err = devm_reset_control_bulk_get_exclusive(hda->dev, hda->nresets,
+ hda->resets);
+ if (err < 0)
+ return dev_err_probe(hda->dev, err, "failed to get reset, err = %d\n", err);
+
+ hda->clocks[hda->nclocks++].id = "sysclk";
+ hda->clocks[hda->nclocks++].id = "clk48m";
+ err = devm_clk_bulk_get(hda->dev, hda->nclocks, hda->clocks);
+ if (err < 0)
+ return dev_err_probe(hda->dev, err, "failed to get clk, err = %d\n", err);
+
+ dma_set_mask_and_coherent(hda->dev, DMA_BIT_MASK(32));
+
+ err = of_reserved_mem_device_init(hda->dev);
+ if (err < 0 && err != -ENODEV) {
+ dev_err(hda->dev,
+ "failed to init reserved mem for DMA, err = %d\n", err);
+ return err;
+ }
+
+ err = snd_card_new(hda->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
+ THIS_MODULE, 0, &card);
+ if (err < 0)
+ return dev_err_probe(hda->dev, err, "failed to crate card, err = %d\n", err);
+
+ err = cix_ipbloq_hda_create(hda, card, driver_flags);
+ if (err < 0)
+ goto out_free_card;
+
+ chip = &hda->chip;
+ card->private_data = chip;
+ dev_set_drvdata(hda->dev, card);
+
+ pm_runtime_enable(hda->dev);
+ if (!azx_has_pm_runtime(chip))
+ pm_runtime_forbid(hda->dev);
+
+ err = pm_runtime_resume_and_get(hda->dev);
+ if (err < 0) {
+ dev_err(hda->dev, "runtime resume and get failed, err = %d\n", err);
+ goto out_free_device;
+ }
+
+ err = cix_ipbloq_hda_init(hda, chip, pdev);
+ if (err < 0)
+ goto out_free_device;
+
+ err = cix_ipbloq_hda_probe_codec(hda);
+ if (err < 0)
+ goto out_free_device;
+
+ pm_runtime_put(hda->dev);
+
+ return 0;
+
+out_free_device:
+ snd_device_free(card, chip);
+out_free_card:
+ snd_card_free(card);
+
+ return err;
+}
+
+static void cix_ipbloq_hda_remove(struct platform_device *pdev)
+{
+ struct snd_card *card = dev_get_drvdata(&pdev->dev);
+ struct azx *chip = card->private_data;
+
+ snd_device_free(card, chip);
+ snd_card_free(card);
+
+ pm_runtime_disable(&pdev->dev);
+}
+
+static void cix_ipbloq_hda_shutdown(struct platform_device *pdev)
+{
+ struct snd_card *card = dev_get_drvdata(&pdev->dev);
+ struct azx *chip;
+
+ if (!card)
+ return;
+
+ chip = card->private_data;
+ if (chip && chip->running)
+ azx_stop_chip(chip);
+}
+
+static int __maybe_unused cix_ipbloq_hda_suspend(struct device *dev)
+{
+ struct snd_card *card = dev_get_drvdata(dev);
+ int rc;
+
+ rc = pm_runtime_force_suspend(dev);
+ if (rc < 0)
+ return rc;
+ snd_power_change_state(card, SNDRV_CTL_POWER_D3cold);
+
+ return 0;
+}
+
+static int __maybe_unused cix_ipbloq_hda_resume(struct device *dev)
+{
+ struct snd_card *card = dev_get_drvdata(dev);
+ int rc;
+
+ rc = pm_runtime_force_resume(dev);
+ if (rc < 0)
+ return rc;
+ snd_power_change_state(card, SNDRV_CTL_POWER_D0);
+
+ return 0;
+}
+
+static int __maybe_unused cix_ipbloq_hda_runtime_suspend(struct device *dev)
+{
+ struct snd_card *card = dev_get_drvdata(dev);
+ struct azx *chip = card->private_data;
+ struct cix_ipbloq_hda *hda = container_of(chip, struct cix_ipbloq_hda, chip);
+
+ if (chip && chip->running) {
+ azx_stop_chip(chip);
+ azx_enter_link_reset(chip);
+ }
+
+ clk_bulk_disable_unprepare(hda->nclocks, hda->clocks);
+
+ return 0;
+}
+
+static int __maybe_unused cix_ipbloq_hda_runtime_resume(struct device *dev)
+{
+ struct snd_card *card = dev_get_drvdata(dev);
+ struct azx *chip = card->private_data;
+ struct cix_ipbloq_hda *hda = container_of(chip, struct cix_ipbloq_hda, chip);
+ int rc;
+
+ rc = clk_bulk_prepare_enable(hda->nclocks, hda->clocks);
+ if (rc) {
+ dev_err(dev, "failed to enable clk bulk, rc: %d\n", rc);
+ return rc;
+ }
+
+ rc = reset_control_bulk_assert(hda->nresets, hda->resets);
+ if (rc) {
+ dev_err(dev, "failed to assert reset bulk, rc: %d\n", rc);
+ return rc;
+ }
+
+ rc = reset_control_bulk_deassert(hda->nresets, hda->resets);
+ if (rc) {
+ dev_err(dev, "failed to deassert reset bulk, rc: %d\n", rc);
+ return rc;
+ }
+
+ if (chip && chip->running)
+ azx_init_chip(chip, 1);
+
+ return 0;
+}
+
+static const struct dev_pm_ops cix_ipbloq_hda_pm = {
+ SET_SYSTEM_SLEEP_PM_OPS(cix_ipbloq_hda_suspend,
+ cix_ipbloq_hda_resume)
+ SET_RUNTIME_PM_OPS(cix_ipbloq_hda_runtime_suspend,
+ cix_ipbloq_hda_runtime_resume, NULL)
+};
+
+static const struct of_device_id cix_ipbloq_hda_match[] = {
+ { .compatible = "cix,ipbloq-hda" },
+ { /* sentinel */ },
+};
+MODULE_DEVICE_TABLE(of, cix_ipbloq_hda_match);
+
+static struct platform_driver cix_ipbloq_hda_driver = {
+ .driver = {
+ .name = "cix-ipbloq-hda",
+ .pm = &cix_ipbloq_hda_pm,
+ .of_match_table = cix_ipbloq_hda_match,
+ },
+ .probe = cix_ipbloq_hda_probe,
+ .remove = cix_ipbloq_hda_remove,
+ .shutdown = cix_ipbloq_hda_shutdown,
+};
+module_platform_driver(cix_ipbloq_hda_driver);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("CIX IPBLOQ HDA bus driver");
+MODULE_AUTHOR("Joakim Zhang <joakim.zhang@cixtech.com>");
--
2.49.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-27 9:42 ` [PATCH v2 1/4] ASoC: dt-bindings: " joakim.zhang
@ 2025-11-27 10:14 ` Rob Herring (Arm)
2025-11-28 9:27 ` Krzysztof Kozlowski
1 sibling, 0 replies; 14+ messages in thread
From: Rob Herring (Arm) @ 2025-11-27 10:14 UTC (permalink / raw)
To: joakim.zhang
Cc: lgirdwood, devicetree, conor+dt, linux-sound, cix-kernel-upstream,
broonie, krzk+dt, perex, tiwai
On Thu, 27 Nov 2025 17:42:58 +0800, joakim.zhang@cixtech.com wrote:
> From: Joakim Zhang <joakim.zhang@cixtech.com>
>
> - add CIX IPBLOQ HDA controller support
>
> Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
> ---
> .../bindings/sound/cix,ipbloq-hda.yaml | 71 +++++++++++++++++++
> 1 file changed, 71 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/thermal/thermal-zones.example.dtb: /example-0/soc/thermal-sensor@c263000: failed to match any schema with compatible: ['qcom,sdm845-tsens', 'qcom,tsens-v2']
Documentation/devicetree/bindings/thermal/thermal-zones.example.dtb: /example-0/soc/thermal-sensor@c263000: failed to match any schema with compatible: ['qcom,sdm845-tsens', 'qcom,tsens-v2']
Documentation/devicetree/bindings/thermal/thermal-zones.example.dtb: /example-0/soc/thermal-sensor@c265000: failed to match any schema with compatible: ['qcom,sdm845-tsens', 'qcom,tsens-v2']
Documentation/devicetree/bindings/thermal/thermal-zones.example.dtb: /example-0/soc/thermal-sensor@c265000: failed to match any schema with compatible: ['qcom,sdm845-tsens', 'qcom,tsens-v2']
Documentation/devicetree/bindings/thermal/thermal-sensor.example.dtb: /example-0/soc/thermal-sensor@c263000: failed to match any schema with compatible: ['qcom,sdm845-tsens', 'qcom,tsens-v2']
Documentation/devicetree/bindings/thermal/thermal-sensor.example.dtb: /example-0/soc/thermal-sensor@c263000: failed to match any schema with compatible: ['qcom,sdm845-tsens', 'qcom,tsens-v2']
Documentation/devicetree/bindings/thermal/thermal-sensor.example.dtb: /example-0/soc/thermal-sensor@c265000: failed to match any schema with compatible: ['qcom,sdm845-tsens', 'qcom,tsens-v2']
Documentation/devicetree/bindings/thermal/thermal-sensor.example.dtb: /example-0/soc/thermal-sensor@c265000: failed to match any schema with compatible: ['qcom,sdm845-tsens', 'qcom,tsens-v2']
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20251127094301.4107982-2-joakim.zhang@cixtech.com
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-27 9:42 ` [PATCH v2 1/4] ASoC: dt-bindings: " joakim.zhang
2025-11-27 10:14 ` Rob Herring (Arm)
@ 2025-11-28 9:27 ` Krzysztof Kozlowski
2025-11-28 9:54 ` Joakim Zhang
1 sibling, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-28 9:27 UTC (permalink / raw)
To: joakim.zhang
Cc: lgirdwood, broonie, robh, krzk+dt, conor+dt, perex, tiwai,
linux-sound, devicetree, cix-kernel-upstream
On Thu, Nov 27, 2025 at 05:42:58PM +0800, joakim.zhang@cixtech.com wrote:
> From: Joakim Zhang <joakim.zhang@cixtech.com>
>
> - add CIX IPBLOQ HDA controller support
Please write full sentences. Loook how other commits were created, it is
not the first cix commit, right?
>
> Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
> ---
> .../bindings/sound/cix,ipbloq-hda.yaml | 71 +++++++++++++++++++
> 1 file changed, 71 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>
> diff --git a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> new file mode 100644
> index 000000000000..c9e4015a8174
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> @@ -0,0 +1,71 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: CIX IPBLOQ HDA controller
> +
> +description:
> + CIX IPBLOQ High Definition Audio (HDA) Controller
> +
> +maintainers:
> + - Joakim Zhang <joakim.zhang@cixtech.com>
> +
> +properties:
> + compatible:
> + const: cix,ipbloq-hda
What happened here? You miss SoC compatible. I did not ask to change
compatible.
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + maxItems: 2
> +
> + clock-names:
> + items:
> + - const: sysclk
> + - const: clk48m
clk48m is the name of the pin/signal?
> +
> + resets:
> + maxItems: 1
> +
> + reset-names:
> + items:
> + - const: hda
Why this is here still?
> +
> + cix,model:
> + $ref: /schemas/types.yaml#/definitions/string
> + description:
> + The user-visible name of this sound complex. If this property is
> + not specified then boards can use default name provided in hda driver.
You did not respond to several comments and did not implement them.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-28 9:27 ` Krzysztof Kozlowski
@ 2025-11-28 9:54 ` Joakim Zhang
2025-11-28 10:29 ` Krzysztof Kozlowski
0 siblings, 1 reply; 14+ messages in thread
From: Joakim Zhang @ 2025-11-28 9:54 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, perex@perex.cz,
tiwai@suse.com, linux-sound@vger.kernel.org,
devicetree@vger.kernel.org, cix-kernel-upstream
Hello Krzysztof,
Thanks for your review.
> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: Friday, November 28, 2025 5:28 PM
> To: Joakim Zhang <joakim.zhang@cixtech.com>
> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> tiwai@suse.com; linux-sound@vger.kernel.org; devicetree@vger.kernel.org;
> cix-kernel-upstream <cix-kernel-upstream@cixtech.com>
> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller
> support
>
> EXTERNAL EMAIL
>
> On Thu, Nov 27, 2025 at 05:42:58PM +0800, joakim.zhang@cixtech.com
> wrote:
> > From: Joakim Zhang <joakim.zhang@cixtech.com>
> >
> > - add CIX IPBLOQ HDA controller support
>
> Please write full sentences. Loook how other commits were created, it is not
> the first cix commit, right?
Yes, not the first cix commit, I will have a look.
>
> >
> > Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
> > ---
> > .../bindings/sound/cix,ipbloq-hda.yaml | 71 +++++++++++++++++++
> > 1 file changed, 71 insertions(+)
> > create mode 100644
> > Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >
> > diff --git
> > a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> > b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> > new file mode 100644
> > index 000000000000..c9e4015a8174
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> > @@ -0,0 +1,71 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: CIX IPBLOQ HDA controller
> > +
> > +description:
> > + CIX IPBLOQ High Definition Audio (HDA) Controller
> > +
> > +maintainers:
> > + - Joakim Zhang <joakim.zhang@cixtech.com>
> > +
> > +properties:
> > + compatible:
> > + const: cix,ipbloq-hda
>
> What happened here? You miss SoC compatible. I did not ask to change
> compatible.
I used the cix,sky1-ipbloq-hda before, but you ask to use the compatible as the file name, I think it's may not quite suitable, since we may have sky1p, sky2... later, so I add a unified compatible here as a fallback.
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + interrupts:
> > + maxItems: 1
> > +
> > + clocks:
> > + maxItems: 2
> > +
> > + clock-names:
> > + items:
> > + - const: sysclk
> > + - const: clk48m
>
> clk48m is the name of the pin/signal?
Yes, this IP requests a 48M clock.
>
> > +
> > + resets:
> > + maxItems: 1
> > +
> > + reset-names:
> > + items:
> > + - const: hda
>
> Why this is here still?
I am not quite understood, don't need to list the name of the reset-names property?
> > +
> > + cix,model:
> > + $ref: /schemas/types.yaml#/definitions/string
> > + description:
> > + The user-visible name of this sound complex. If this property is
> > + not specified then boards can use default name provided in hda driver.
>
> You did not respond to several comments and did not implement them.
I investigate it seriously, I tried to use the sound-card-common.yaml but it should for ASoC, and this hda controller driver doesn't belong ASoC, so I just refer to the hda driver as they done, such as nvidia,tegra30-hda.yaml.
And the " ASoC: dt-bindings: add CIX IPBLOQ HDA controller support " also not suitable, as mentioned it not the ASoC driver, Can I change to "ALSA: hda: add CIX IPBLOQ HDA controller support "?
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-28 9:54 ` Joakim Zhang
@ 2025-11-28 10:29 ` Krzysztof Kozlowski
2025-11-28 12:15 ` Joakim Zhang
0 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-28 10:29 UTC (permalink / raw)
To: Joakim Zhang
Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, perex@perex.cz,
tiwai@suse.com, linux-sound@vger.kernel.org,
devicetree@vger.kernel.org, cix-kernel-upstream
On 28/11/2025 10:54, Joakim Zhang wrote:
>
> Hello Krzysztof,
>
> Thanks for your review.
>
>> -----Original Message-----
>> From: Krzysztof Kozlowski <krzk@kernel.org>
>> Sent: Friday, November 28, 2025 5:28 PM
>> To: Joakim Zhang <joakim.zhang@cixtech.com>
>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
>> tiwai@suse.com; linux-sound@vger.kernel.org; devicetree@vger.kernel.org;
>> cix-kernel-upstream <cix-kernel-upstream@cixtech.com>
>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller
>> support
>>
>> EXTERNAL EMAIL
>>
>> On Thu, Nov 27, 2025 at 05:42:58PM +0800, joakim.zhang@cixtech.com
>> wrote:
>>> From: Joakim Zhang <joakim.zhang@cixtech.com>
>>>
>>> - add CIX IPBLOQ HDA controller support
>>
>> Please write full sentences. Loook how other commits were created, it is not
>> the first cix commit, right?
>
> Yes, not the first cix commit, I will have a look.
>
>>
>>>
>>> Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
>>> ---
>>> .../bindings/sound/cix,ipbloq-hda.yaml | 71 +++++++++++++++++++
>>> 1 file changed, 71 insertions(+)
>>> create mode 100644
>>> Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>> b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>> new file mode 100644
>>> index 000000000000..c9e4015a8174
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>> @@ -0,0 +1,71 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: CIX IPBLOQ HDA controller
>>> +
>>> +description:
>>> + CIX IPBLOQ High Definition Audio (HDA) Controller
>>> +
>>> +maintainers:
>>> + - Joakim Zhang <joakim.zhang@cixtech.com>
>>> +
>>> +properties:
>>> + compatible:
>>> + const: cix,ipbloq-hda
>>
>> What happened here? You miss SoC compatible. I did not ask to change
>> compatible.
>
> I used the cix,sky1-ipbloq-hda before, but you ask to use the compatible as the file name, I think it's may not quite suitable, since we may have sky1p, sky2... later, so I add a unified compatible here as a fallback.
"Filename must match the compatible.". Your explanation "use compatible
as the filename" is also correct - use what? the compatible? as what? as
the filename so in place of filename. So how could you make it reversed?
filename as the compatible?
Your changelog is very vague and does not describe here anything. It's
really not useful.
>
>>> +
>>> + reg:
>>> + maxItems: 1
>>> +
>>> + interrupts:
>>> + maxItems: 1
>>> +
>>> + clocks:
>>> + maxItems: 2
>>> +
>>> + clock-names:
>>> + items:
>>> + - const: sysclk
>>> + - const: clk48m
>>
>> clk48m is the name of the pin/signal?
>
> Yes, this IP requests a 48M clock.
>
>>
>>> +
>>> + resets:
>>> + maxItems: 1
>>> +
>>> + reset-names:
>>> + items:
>>> + - const: hda
>>
>> Why this is here still?
>
> I am not quite understood, don't need to list the name of the reset-names property?
My bad, I thought you received review to drop it completely.
>
>>> +
>>> + cix,model:
>>> + $ref: /schemas/types.yaml#/definitions/string
>>> + description:
>>> + The user-visible name of this sound complex. If this property is
>>> + not specified then boards can use default name provided in hda driver.
>>
>> You did not respond to several comments and did not implement them.
>
> I investigate it seriously, I tried to use the sound-card-common.yaml but it should for ASoC, and this hda controller driver doesn't belong ASoC, so I just refer to the hda driver as they done, such as nvidia,tegra30-hda.yaml.
You still should use a generic property common for everyone, not come
with own flavor of it.
>
> And the " ASoC: dt-bindings: add CIX IPBLOQ HDA controller support " also not suitable, as mentioned it not the ASoC driver, Can I change to "ALSA: hda: add CIX IPBLOQ HDA controller support "?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-28 10:29 ` Krzysztof Kozlowski
@ 2025-11-28 12:15 ` Joakim Zhang
2025-11-28 12:23 ` Krzysztof Kozlowski
0 siblings, 1 reply; 14+ messages in thread
From: Joakim Zhang @ 2025-11-28 12:15 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, perex@perex.cz,
tiwai@suse.com, linux-sound@vger.kernel.org,
devicetree@vger.kernel.org, cix-kernel-upstream
> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: Friday, November 28, 2025 6:29 PM
> To: Joakim Zhang <joakim.zhang@cixtech.com>
> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> tiwai@suse.com; linux-sound@vger.kernel.org; devicetree@vger.kernel.org;
> cix-kernel-upstream <cix-kernel-upstream@cixtech.com>
> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller
> support
>
> EXTERNAL EMAIL
>
> On 28/11/2025 10:54, Joakim Zhang wrote:
> >
> > Hello Krzysztof,
> >
> > Thanks for your review.
> >
> >> -----Original Message-----
> >> From: Krzysztof Kozlowski <krzk@kernel.org>
> >> Sent: Friday, November 28, 2025 5:28 PM
> >> To: Joakim Zhang <joakim.zhang@cixtech.com>
> >> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> >> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> >> tiwai@suse.com; linux-sound@vger.kernel.org;
> >> devicetree@vger.kernel.org; cix-kernel-upstream
> >> <cix-kernel-upstream@cixtech.com>
> >> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
> >> controller support
> >>
> >> EXTERNAL EMAIL
> >>
> >> On Thu, Nov 27, 2025 at 05:42:58PM +0800, joakim.zhang@cixtech.com
> >> wrote:
> >>> From: Joakim Zhang <joakim.zhang@cixtech.com>
> >>>
> >>> - add CIX IPBLOQ HDA controller support
> >>
> >> Please write full sentences. Loook how other commits were created, it
> >> is not the first cix commit, right?
> >
> > Yes, not the first cix commit, I will have a look.
> >
> >>
> >>>
> >>> Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
> >>> ---
> >>> .../bindings/sound/cix,ipbloq-hda.yaml | 71 +++++++++++++++++++
> >>> 1 file changed, 71 insertions(+)
> >>> create mode 100644
> >>> Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>>
> >>> diff --git
> >>> a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>> b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>> new file mode 100644
> >>> index 000000000000..c9e4015a8174
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>> @@ -0,0 +1,71 @@
> >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> >>> +---
> >>> +$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
> >>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>> +
> >>> +title: CIX IPBLOQ HDA controller
> >>> +
> >>> +description:
> >>> + CIX IPBLOQ High Definition Audio (HDA) Controller
> >>> +
> >>> +maintainers:
> >>> + - Joakim Zhang <joakim.zhang@cixtech.com>
> >>> +
> >>> +properties:
> >>> + compatible:
> >>> + const: cix,ipbloq-hda
> >>
> >> What happened here? You miss SoC compatible. I did not ask to change
> >> compatible.
> >
> > I used the cix,sky1-ipbloq-hda before, but you ask to use the compatible as
> the file name, I think it's may not quite suitable, since we may have sky1p,
> sky2... later, so I add a unified compatible here as a fallback.
>
> "Filename must match the compatible.". Your explanation "use compatible as
> the filename" is also correct - use what? the compatible? as what? as the
> filename so in place of filename. So how could you make it reversed?
> filename as the compatible?
Yes, "Filename must match the compatible." is meaningful, I updated "cix,sky1-ipbloq-hda" to "cix,ipbloq-hda", since here use IP name is more suitable and may for all CIX SoCs later, if there is any difference, we can all other compatibles.
> Your changelog is very vague and does not describe here anything. It's really
> not useful.
Sorry, I will list more details next time.
> >
> >>> +
> >>> + reg:
> >>> + maxItems: 1
> >>> +
> >>> + interrupts:
> >>> + maxItems: 1
> >>> +
> >>> + clocks:
> >>> + maxItems: 2
> >>> +
> >>> + clock-names:
> >>> + items:
> >>> + - const: sysclk
> >>> + - const: clk48m
> >>
> >> clk48m is the name of the pin/signal?
> >
> > Yes, this IP requests a 48M clock.
> >
> >>
> >>> +
> >>> + resets:
> >>> + maxItems: 1
> >>> +
> >>> + reset-names:
> >>> + items:
> >>> + - const: hda
> >>
> >> Why this is here still?
> >
> > I am not quite understood, don't need to list the name of the reset-names
> property?
>
> My bad, I thought you received review to drop it completely.
>
> >
> >>> +
> >>> + cix,model:
> >>> + $ref: /schemas/types.yaml#/definitions/string
> >>> + description:
> >>> + The user-visible name of this sound complex. If this property is
> >>> + not specified then boards can use default name provided in hda
> driver.
> >>
> >> You did not respond to several comments and did not implement them.
> >
> > I investigate it seriously, I tried to use the sound-card-common.yaml but it
> should for ASoC, and this hda controller driver doesn't belong ASoC, so I just
> refer to the hda driver as they done, such as nvidia,tegra30-hda.yaml.
>
> You still should use a generic property common for everyone, not come with
> own flavor of it.
OK, that "model" from sound-card-common.yaml file may a good choice.
> >
> > And the " ASoC: dt-bindings: add CIX IPBLOQ HDA controller support " also
> not suitable, as mentioned it not the ASoC driver, Can I change to "ALSA: hda:
> add CIX IPBLOQ HDA controller support "?
>
>
>
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-28 12:15 ` Joakim Zhang
@ 2025-11-28 12:23 ` Krzysztof Kozlowski
2025-11-28 13:23 ` Joakim Zhang
0 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-28 12:23 UTC (permalink / raw)
To: Joakim Zhang
Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, perex@perex.cz,
tiwai@suse.com, linux-sound@vger.kernel.org,
devicetree@vger.kernel.org, cix-kernel-upstream
On 28/11/2025 13:15, Joakim Zhang wrote:
>
>
>> -----Original Message-----
>> From: Krzysztof Kozlowski <krzk@kernel.org>
>> Sent: Friday, November 28, 2025 6:29 PM
>> To: Joakim Zhang <joakim.zhang@cixtech.com>
>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
>> tiwai@suse.com; linux-sound@vger.kernel.org; devicetree@vger.kernel.org;
>> cix-kernel-upstream <cix-kernel-upstream@cixtech.com>
>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller
>> support
>>
>> EXTERNAL EMAIL
>>
>> On 28/11/2025 10:54, Joakim Zhang wrote:
>>>
>>> Hello Krzysztof,
>>>
>>> Thanks for your review.
>>>
>>>> -----Original Message-----
>>>> From: Krzysztof Kozlowski <krzk@kernel.org>
>>>> Sent: Friday, November 28, 2025 5:28 PM
>>>> To: Joakim Zhang <joakim.zhang@cixtech.com>
>>>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
>>>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
>>>> tiwai@suse.com; linux-sound@vger.kernel.org;
>>>> devicetree@vger.kernel.org; cix-kernel-upstream
>>>> <cix-kernel-upstream@cixtech.com>
>>>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
>>>> controller support
>>>>
>>>> EXTERNAL EMAIL
>>>>
>>>> On Thu, Nov 27, 2025 at 05:42:58PM +0800, joakim.zhang@cixtech.com
>>>> wrote:
>>>>> From: Joakim Zhang <joakim.zhang@cixtech.com>
>>>>>
>>>>> - add CIX IPBLOQ HDA controller support
>>>>
>>>> Please write full sentences. Loook how other commits were created, it
>>>> is not the first cix commit, right?
>>>
>>> Yes, not the first cix commit, I will have a look.
>>>
>>>>
>>>>>
>>>>> Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
>>>>> ---
>>>>> .../bindings/sound/cix,ipbloq-hda.yaml | 71 +++++++++++++++++++
>>>>> 1 file changed, 71 insertions(+)
>>>>> create mode 100644
>>>>> Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>>>
>>>>> diff --git
>>>>> a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>>> b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>>> new file mode 100644
>>>>> index 000000000000..c9e4015a8174
>>>>> --- /dev/null
>>>>> +++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>>> @@ -0,0 +1,71 @@
>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
>>>>> +---
>>>>> +$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>> +
>>>>> +title: CIX IPBLOQ HDA controller
>>>>> +
>>>>> +description:
>>>>> + CIX IPBLOQ High Definition Audio (HDA) Controller
>>>>> +
>>>>> +maintainers:
>>>>> + - Joakim Zhang <joakim.zhang@cixtech.com>
>>>>> +
>>>>> +properties:
>>>>> + compatible:
>>>>> + const: cix,ipbloq-hda
>>>>
>>>> What happened here? You miss SoC compatible. I did not ask to change
>>>> compatible.
>>>
>>> I used the cix,sky1-ipbloq-hda before, but you ask to use the compatible as
>> the file name, I think it's may not quite suitable, since we may have sky1p,
>> sky2... later, so I add a unified compatible here as a fallback.
>>
>> "Filename must match the compatible.". Your explanation "use compatible as
>> the filename" is also correct - use what? the compatible? as what? as the
>> filename so in place of filename. So how could you make it reversed?
>> filename as the compatible?
>
> Yes, "Filename must match the compatible." is meaningful, I updated "cix,sky1-ipbloq-hda" to "cix,ipbloq-hda", since here use IP name is more suitable and may for all CIX SoCs later, if there is any difference, we can all other compatibles.
So why did you reverse the logic? Anyway cix,ipbloq-hda is not correct,
because it is generic. See also writing bindings doc for more explanation.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-28 12:23 ` Krzysztof Kozlowski
@ 2025-11-28 13:23 ` Joakim Zhang
2025-11-28 13:39 ` Krzysztof Kozlowski
0 siblings, 1 reply; 14+ messages in thread
From: Joakim Zhang @ 2025-11-28 13:23 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, perex@perex.cz,
tiwai@suse.com, linux-sound@vger.kernel.org,
devicetree@vger.kernel.org, cix-kernel-upstream
> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: Friday, November 28, 2025 8:24 PM
> To: Joakim Zhang <joakim.zhang@cixtech.com>
> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> tiwai@suse.com; linux-sound@vger.kernel.org; devicetree@vger.kernel.org;
> cix-kernel-upstream <cix-kernel-upstream@cixtech.com>
> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller
> support
>
> EXTERNAL EMAIL
>
> On 28/11/2025 13:15, Joakim Zhang wrote:
> >
> >
> >> -----Original Message-----
> >> From: Krzysztof Kozlowski <krzk@kernel.org>
> >> Sent: Friday, November 28, 2025 6:29 PM
> >> To: Joakim Zhang <joakim.zhang@cixtech.com>
> >> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> >> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> >> tiwai@suse.com; linux-sound@vger.kernel.org;
> >> devicetree@vger.kernel.org; cix-kernel-upstream
> >> <cix-kernel-upstream@cixtech.com>
> >> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
> >> controller support
> >>
> >> EXTERNAL EMAIL
> >>
> >> On 28/11/2025 10:54, Joakim Zhang wrote:
> >>>
> >>> Hello Krzysztof,
> >>>
> >>> Thanks for your review.
> >>>
> >>>> -----Original Message-----
> >>>> From: Krzysztof Kozlowski <krzk@kernel.org>
> >>>> Sent: Friday, November 28, 2025 5:28 PM
> >>>> To: Joakim Zhang <joakim.zhang@cixtech.com>
> >>>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> >>>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> >>>> tiwai@suse.com; linux-sound@vger.kernel.org;
> >>>> devicetree@vger.kernel.org; cix-kernel-upstream
> >>>> <cix-kernel-upstream@cixtech.com>
> >>>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
> >>>> controller support
> >>>>
> >>>> EXTERNAL EMAIL
> >>>>
> >>>> On Thu, Nov 27, 2025 at 05:42:58PM +0800, joakim.zhang@cixtech.com
> >>>> wrote:
> >>>>> From: Joakim Zhang <joakim.zhang@cixtech.com>
> >>>>>
> >>>>> - add CIX IPBLOQ HDA controller support
> >>>>
> >>>> Please write full sentences. Loook how other commits were created,
> >>>> it is not the first cix commit, right?
> >>>
> >>> Yes, not the first cix commit, I will have a look.
> >>>
> >>>>
> >>>>>
> >>>>> Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
> >>>>> ---
> >>>>> .../bindings/sound/cix,ipbloq-hda.yaml | 71
> +++++++++++++++++++
> >>>>> 1 file changed, 71 insertions(+)
> >>>>> create mode 100644
> >>>>> Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>>>>
> >>>>> diff --git
> >>>>> a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>>>> b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>>>> new file mode 100644
> >>>>> index 000000000000..c9e4015a8174
> >>>>> --- /dev/null
> >>>>> +++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>>>> @@ -0,0 +1,71 @@
> >>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML
> >>>>> +1.2
> >>>>> +---
> >>>>> +$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
> >>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>>>> +
> >>>>> +title: CIX IPBLOQ HDA controller
> >>>>> +
> >>>>> +description:
> >>>>> + CIX IPBLOQ High Definition Audio (HDA) Controller
> >>>>> +
> >>>>> +maintainers:
> >>>>> + - Joakim Zhang <joakim.zhang@cixtech.com>
> >>>>> +
> >>>>> +properties:
> >>>>> + compatible:
> >>>>> + const: cix,ipbloq-hda
> >>>>
> >>>> What happened here? You miss SoC compatible. I did not ask to
> >>>> change compatible.
> >>>
> >>> I used the cix,sky1-ipbloq-hda before, but you ask to use the
> >>> compatible as
> >> the file name, I think it's may not quite suitable, since we may have
> >> sky1p, sky2... later, so I add a unified compatible here as a fallback.
> >>
> >> "Filename must match the compatible.". Your explanation "use
> >> compatible as the filename" is also correct - use what? the
> >> compatible? as what? as the filename so in place of filename. So how could
> you make it reversed?
> >> filename as the compatible?
> >
> > Yes, "Filename must match the compatible." is meaningful, I updated
> "cix,sky1-ipbloq-hda" to "cix,ipbloq-hda", since here use IP name is more
> suitable and may for all CIX SoCs later, if there is any difference, we can all
> other compatibles.
>
> So why did you reverse the logic? Anyway cix,ipbloq-hda is not correct,
> because it is generic. See also writing bindings doc for more explanation.
Hello Krzysztof,
For the v1, I know you ask me to update the cix,ipbloq-hda.yaml to cix,sky1-ipbloq-hda.yaml, not to change the compatible. The reason why I went to reverse the logic in v2, since I think it may reasonable.
Documentation/devicetree/bindings/writing-bindings.rst
- Bindings files should be named like compatible: vendor,device.yaml. In case
of multiple compatibles in the binding, use one of the fallbacks or a more
generic name, yet still matching compatible style.
You mean that must list the SoC as the device here , cannot use the IP name?
However, it still mentioned "use one of the fallbacks or a more generic name", since ipbloq is a hda ip which would be integrated into other SoCs, so here I want to use a generic dt-binding name, is there any suggestions? As I found a lot binding use the IP name as the file name, such as fsl,flexcan.yaml, fsl,fec.yaml, fsl,intmux.yaml.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-28 13:23 ` Joakim Zhang
@ 2025-11-28 13:39 ` Krzysztof Kozlowski
2025-11-28 13:46 ` Joakim Zhang
0 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-28 13:39 UTC (permalink / raw)
To: Joakim Zhang
Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, perex@perex.cz,
tiwai@suse.com, linux-sound@vger.kernel.org,
devicetree@vger.kernel.org, cix-kernel-upstream
On 28/11/2025 14:23, Joakim Zhang wrote:
>
>
>> -----Original Message-----
>> From: Krzysztof Kozlowski <krzk@kernel.org>
>> Sent: Friday, November 28, 2025 8:24 PM
>> To: Joakim Zhang <joakim.zhang@cixtech.com>
>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
>> tiwai@suse.com; linux-sound@vger.kernel.org; devicetree@vger.kernel.org;
>> cix-kernel-upstream <cix-kernel-upstream@cixtech.com>
>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller
>> support
>>
>> EXTERNAL EMAIL
>>
>> On 28/11/2025 13:15, Joakim Zhang wrote:
>>>
>>>
>>>> -----Original Message-----
>>>> From: Krzysztof Kozlowski <krzk@kernel.org>
>>>> Sent: Friday, November 28, 2025 6:29 PM
>>>> To: Joakim Zhang <joakim.zhang@cixtech.com>
>>>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
>>>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
>>>> tiwai@suse.com; linux-sound@vger.kernel.org;
>>>> devicetree@vger.kernel.org; cix-kernel-upstream
>>>> <cix-kernel-upstream@cixtech.com>
>>>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
>>>> controller support
>>>>
>>>> EXTERNAL EMAIL
>>>>
>>>> On 28/11/2025 10:54, Joakim Zhang wrote:
>>>>>
>>>>> Hello Krzysztof,
>>>>>
>>>>> Thanks for your review.
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Krzysztof Kozlowski <krzk@kernel.org>
>>>>>> Sent: Friday, November 28, 2025 5:28 PM
>>>>>> To: Joakim Zhang <joakim.zhang@cixtech.com>
>>>>>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
>>>>>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
>>>>>> tiwai@suse.com; linux-sound@vger.kernel.org;
>>>>>> devicetree@vger.kernel.org; cix-kernel-upstream
>>>>>> <cix-kernel-upstream@cixtech.com>
>>>>>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
>>>>>> controller support
>>>>>>
>>>>>> EXTERNAL EMAIL
>>>>>>
>>>>>> On Thu, Nov 27, 2025 at 05:42:58PM +0800, joakim.zhang@cixtech.com
>>>>>> wrote:
>>>>>>> From: Joakim Zhang <joakim.zhang@cixtech.com>
>>>>>>>
>>>>>>> - add CIX IPBLOQ HDA controller support
>>>>>>
>>>>>> Please write full sentences. Loook how other commits were created,
>>>>>> it is not the first cix commit, right?
>>>>>
>>>>> Yes, not the first cix commit, I will have a look.
>>>>>
>>>>>>
>>>>>>>
>>>>>>> Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
>>>>>>> ---
>>>>>>> .../bindings/sound/cix,ipbloq-hda.yaml | 71
>> +++++++++++++++++++
>>>>>>> 1 file changed, 71 insertions(+)
>>>>>>> create mode 100644
>>>>>>> Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>>>>>
>>>>>>> diff --git
>>>>>>> a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>>>>> b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>>>>> new file mode 100644
>>>>>>> index 000000000000..c9e4015a8174
>>>>>>> --- /dev/null
>>>>>>> +++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
>>>>>>> @@ -0,0 +1,71 @@
>>>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML
>>>>>>> +1.2
>>>>>>> +---
>>>>>>> +$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
>>>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>>>> +
>>>>>>> +title: CIX IPBLOQ HDA controller
>>>>>>> +
>>>>>>> +description:
>>>>>>> + CIX IPBLOQ High Definition Audio (HDA) Controller
>>>>>>> +
>>>>>>> +maintainers:
>>>>>>> + - Joakim Zhang <joakim.zhang@cixtech.com>
>>>>>>> +
>>>>>>> +properties:
>>>>>>> + compatible:
>>>>>>> + const: cix,ipbloq-hda
>>>>>>
>>>>>> What happened here? You miss SoC compatible. I did not ask to
>>>>>> change compatible.
>>>>>
>>>>> I used the cix,sky1-ipbloq-hda before, but you ask to use the
>>>>> compatible as
>>>> the file name, I think it's may not quite suitable, since we may have
>>>> sky1p, sky2... later, so I add a unified compatible here as a fallback.
>>>>
>>>> "Filename must match the compatible.". Your explanation "use
>>>> compatible as the filename" is also correct - use what? the
>>>> compatible? as what? as the filename so in place of filename. So how could
>> you make it reversed?
>>>> filename as the compatible?
>>>
>>> Yes, "Filename must match the compatible." is meaningful, I updated
>> "cix,sky1-ipbloq-hda" to "cix,ipbloq-hda", since here use IP name is more
>> suitable and may for all CIX SoCs later, if there is any difference, we can all
>> other compatibles.
>>
>> So why did you reverse the logic? Anyway cix,ipbloq-hda is not correct,
>> because it is generic. See also writing bindings doc for more explanation.
>
> Hello Krzysztof,
>
> For the v1, I know you ask me to update the cix,ipbloq-hda.yaml to cix,sky1-ipbloq-hda.yaml, not to change the compatible. The reason why I went to reverse the logic in v2, since I think it may reasonable.
>
> Documentation/devicetree/bindings/writing-bindings.rst
> - Bindings files should be named like compatible: vendor,device.yaml. In case
> of multiple compatibles in the binding, use one of the fallbacks or a more
> generic name, yet still matching compatible style.
>
> You mean that must list the SoC as the device here , cannot use the IP name?
You are mixing topics. You must rename filename, so it will match the
compatible. You correctly quoted paragraph describing this.
But you missed that your compatible is not correct:
"DO use a SoC-specific compatible for all SoC devices," and further. Or
any of my slides from speeches giving guidelines for basic DT.
Define what is your SoC. Then define what is your device name in that
SoC (IP block). Then your compatible is: vendor,soc-ipblockname.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller support
2025-11-28 13:39 ` Krzysztof Kozlowski
@ 2025-11-28 13:46 ` Joakim Zhang
0 siblings, 0 replies; 14+ messages in thread
From: Joakim Zhang @ 2025-11-28 13:46 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, perex@perex.cz,
tiwai@suse.com, linux-sound@vger.kernel.org,
devicetree@vger.kernel.org, cix-kernel-upstream
> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: Friday, November 28, 2025 9:39 PM
> To: Joakim Zhang <joakim.zhang@cixtech.com>
> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> tiwai@suse.com; linux-sound@vger.kernel.org; devicetree@vger.kernel.org;
> cix-kernel-upstream <cix-kernel-upstream@cixtech.com>
> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA controller
> support
>
> EXTERNAL EMAIL
>
> On 28/11/2025 14:23, Joakim Zhang wrote:
> >
> >
> >> -----Original Message-----
> >> From: Krzysztof Kozlowski <krzk@kernel.org>
> >> Sent: Friday, November 28, 2025 8:24 PM
> >> To: Joakim Zhang <joakim.zhang@cixtech.com>
> >> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> >> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> >> tiwai@suse.com; linux-sound@vger.kernel.org;
> >> devicetree@vger.kernel.org; cix-kernel-upstream
> >> <cix-kernel-upstream@cixtech.com>
> >> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
> >> controller support
> >>
> >> EXTERNAL EMAIL
> >>
> >> On 28/11/2025 13:15, Joakim Zhang wrote:
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: Krzysztof Kozlowski <krzk@kernel.org>
> >>>> Sent: Friday, November 28, 2025 6:29 PM
> >>>> To: Joakim Zhang <joakim.zhang@cixtech.com>
> >>>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> >>>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> >>>> tiwai@suse.com; linux-sound@vger.kernel.org;
> >>>> devicetree@vger.kernel.org; cix-kernel-upstream
> >>>> <cix-kernel-upstream@cixtech.com>
> >>>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
> >>>> controller support
> >>>>
> >>>> EXTERNAL EMAIL
> >>>>
> >>>> On 28/11/2025 10:54, Joakim Zhang wrote:
> >>>>>
> >>>>> Hello Krzysztof,
> >>>>>
> >>>>> Thanks for your review.
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: Krzysztof Kozlowski <krzk@kernel.org>
> >>>>>> Sent: Friday, November 28, 2025 5:28 PM
> >>>>>> To: Joakim Zhang <joakim.zhang@cixtech.com>
> >>>>>> Cc: lgirdwood@gmail.com; broonie@kernel.org; robh@kernel.org;
> >>>>>> krzk+dt@kernel.org; conor+dt@kernel.org; perex@perex.cz;
> >>>>>> tiwai@suse.com; linux-sound@vger.kernel.org;
> >>>>>> devicetree@vger.kernel.org; cix-kernel-upstream
> >>>>>> <cix-kernel-upstream@cixtech.com>
> >>>>>> Subject: Re: [PATCH v2 1/4] ASoC: dt-bindings: add CIX IPBLOQ HDA
> >>>>>> controller support
> >>>>>>
> >>>>>> EXTERNAL EMAIL
> >>>>>>
> >>>>>> On Thu, Nov 27, 2025 at 05:42:58PM +0800,
> >>>>>> joakim.zhang@cixtech.com
> >>>>>> wrote:
> >>>>>>> From: Joakim Zhang <joakim.zhang@cixtech.com>
> >>>>>>>
> >>>>>>> - add CIX IPBLOQ HDA controller support
> >>>>>>
> >>>>>> Please write full sentences. Loook how other commits were
> >>>>>> created, it is not the first cix commit, right?
> >>>>>
> >>>>> Yes, not the first cix commit, I will have a look.
> >>>>>
> >>>>>>
> >>>>>>>
> >>>>>>> Signed-off-by: Joakim Zhang <joakim.zhang@cixtech.com>
> >>>>>>> ---
> >>>>>>> .../bindings/sound/cix,ipbloq-hda.yaml | 71
> >> +++++++++++++++++++
> >>>>>>> 1 file changed, 71 insertions(+) create mode 100644
> >>>>>>> Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>>>>>>
> >>>>>>> diff --git
> >>>>>>> a/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>>>>>> b/Documentation/devicetree/bindings/sound/cix,ipbloq-hda.yaml
> >>>>>>> new file mode 100644
> >>>>>>> index 000000000000..c9e4015a8174
> >>>>>>> --- /dev/null
> >>>>>>> +++ b/Documentation/devicetree/bindings/sound/cix,ipbloq-
> hda.yam
> >>>>>>> +++ l
> >>>>>>> @@ -0,0 +1,71 @@
> >>>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML
> >>>>>>> +1.2
> >>>>>>> +---
> >>>>>>> +$id: http://devicetree.org/schemas/sound/cix,ipbloq-hda.yaml#
> >>>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>>>>>> +
> >>>>>>> +title: CIX IPBLOQ HDA controller
> >>>>>>> +
> >>>>>>> +description:
> >>>>>>> + CIX IPBLOQ High Definition Audio (HDA) Controller
> >>>>>>> +
> >>>>>>> +maintainers:
> >>>>>>> + - Joakim Zhang <joakim.zhang@cixtech.com>
> >>>>>>> +
> >>>>>>> +properties:
> >>>>>>> + compatible:
> >>>>>>> + const: cix,ipbloq-hda
> >>>>>>
> >>>>>> What happened here? You miss SoC compatible. I did not ask to
> >>>>>> change compatible.
> >>>>>
> >>>>> I used the cix,sky1-ipbloq-hda before, but you ask to use the
> >>>>> compatible as
> >>>> the file name, I think it's may not quite suitable, since we may
> >>>> have sky1p, sky2... later, so I add a unified compatible here as a fallback.
> >>>>
> >>>> "Filename must match the compatible.". Your explanation "use
> >>>> compatible as the filename" is also correct - use what? the
> >>>> compatible? as what? as the filename so in place of filename. So
> >>>> how could
> >> you make it reversed?
> >>>> filename as the compatible?
> >>>
> >>> Yes, "Filename must match the compatible." is meaningful, I updated
> >> "cix,sky1-ipbloq-hda" to "cix,ipbloq-hda", since here use IP name is
> >> more suitable and may for all CIX SoCs later, if there is any
> >> difference, we can all other compatibles.
> >>
> >> So why did you reverse the logic? Anyway cix,ipbloq-hda is not
> >> correct, because it is generic. See also writing bindings doc for more
> explanation.
> >
> > Hello Krzysztof,
> >
> > For the v1, I know you ask me to update the cix,ipbloq-hda.yaml to cix,sky1-
> ipbloq-hda.yaml, not to change the compatible. The reason why I went to
> reverse the logic in v2, since I think it may reasonable.
> >
> > Documentation/devicetree/bindings/writing-bindings.rst
> > - Bindings files should be named like compatible: vendor,device.yaml. In case
> > of multiple compatibles in the binding, use one of the fallbacks or a more
> > generic name, yet still matching compatible style.
> >
> > You mean that must list the SoC as the device here , cannot use the IP
> name?
>
> You are mixing topics. You must rename filename, so it will match the
> compatible. You correctly quoted paragraph describing this.
>
> But you missed that your compatible is not correct:
>
> "DO use a SoC-specific compatible for all SoC devices," and further. Or any of
> my slides from speeches giving guidelines for basic DT.
>
> Define what is your SoC. Then define what is your device name in that SoC (IP
> block). Then your compatible is: vendor,soc-ipblockname.
OK, I will update file to cix,sky1-ipbloq-hda.yaml and compatible to cix,sky1-ipbloq-hda
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-11-28 13:46 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-27 9:42 [PATCH v2 0/4] ALSA: hda: add CIX IPBLOQ HDA controller support joakim.zhang
2025-11-27 9:42 ` [PATCH v2 1/4] ASoC: dt-bindings: " joakim.zhang
2025-11-27 10:14 ` Rob Herring (Arm)
2025-11-28 9:27 ` Krzysztof Kozlowski
2025-11-28 9:54 ` Joakim Zhang
2025-11-28 10:29 ` Krzysztof Kozlowski
2025-11-28 12:15 ` Joakim Zhang
2025-11-28 12:23 ` Krzysztof Kozlowski
2025-11-28 13:23 ` Joakim Zhang
2025-11-28 13:39 ` Krzysztof Kozlowski
2025-11-28 13:46 ` Joakim Zhang
2025-11-27 9:42 ` [PATCH v2 2/4] ALSA: hda: core: add bus ops for dma address translation joakim.zhang
2025-11-27 9:43 ` [PATCH v2 3/4] ALSA: hda: controller: specifyhdac bus ops from azx_bus_init() joakim.zhang
2025-11-27 9:43 ` [PATCH v2 4/4] ALSA: hda: add CIX IPBLOQ HDA controller support joakim.zhang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).