[PATCH 0/9] arm64: introduce Black Sesame Technologies C1200 SoC and CDCU1.0 board

Albert Yang
2025-09-23T06:15:40Z

This patch series introduces comprehensive support for Black Sesame Technologies
(BST) C1200 SoC and CDCU1.0 ADAS 4C2G board. BST is a leading automotive-grade
computing SoC provider focusing on intelligent driving, computer vision, and AI
capabilities for ADAS and autonomous driving applications. You can find more information
about the SoC and related boards at: https://bst.ai

The series includes complete platform enablement from device tree bindings to
drivers and board-level support:

Patch 1: dt-bindings: vendor-prefixes: Add Black Sesame Technologies Co., Ltd.
- Adds BST vendor prefix to device tree vendor prefixes
- Provides company information and website link

Patch 2: dt-bindings: arm: add Black Sesame Technologies (bst) SoC
- Adds device tree bindings for BST ARM SoC family
- Defines compatible strings for C1200 SoC and CDCU1.0 board

Patch 3: arm64: Kconfig: add ARCH_BST for Black Sesame Technologies SoCs
- Adds ARCH_BST configuration option for BST SoC family
- Enables platform-specific features and driver dependencies

Patch 4: dt-bindings: mmc: add binding for BST DWCMSHC SDHCI controller
- Adds device tree binding for BST's DWCMSHC SDHCI controller
- Defines register layout, clocks, and controller-specific properties

Patch 5: mmc: sdhci: add Black Sesame Technologies BST C1200 controller driver
- Comprehensive SDHCI driver for BST C1200 SoC
- Addresses specific hardware constraints with 32-bit DMA limitations
- Implements custom clock management, power management, and tuning
- Uses SRAM-based bounce buffer for DMA operations

Patch 6: mmc: sdhci: allow drivers to pre-allocate bounce buffer
- SDHCI core enhancement to support driver-allocated bounce buffers
- Enables platforms with specific DMA constraints to pre-allocate buffers
- Suggested by Adrian Hunter for better platform integration

Patch 7: arm64: dts: bst: add support for Black Sesame Technologies C1200 CDCU1.0 board
- Complete device tree support for BST C1200 CDCU1.0 ADAS 4C2G board
- Includes SoC dtsi and board-specific dts files
- Defines CPU, memory, peripherals, and platform-specific configurations

Patch 8: arm64: defconfig: enable BST platform and SDHCI controller support
- Enables ARCH_BST and MMC_SDHCI_BST in ARM64 defconfig
- Provides out-of-box support for BST platforms

Patch 9: MAINTAINERS: add Black Sesame Technologies (BST) ARM SoC support
- Adds maintainer entry for BST ARM SoC support
- Covers device tree bindings, drivers, and board files

Changes for v4:
- rebase to 6.17-rc5
- Patch 1 (dt-bindings: vendor-prefixes):
- Adjust ^bst to the correct alphabetical order
- Adjust Acked-by order
- Patch 2 (dt-bindings: arm):
- Remove Signed-off-by: Ge Gordon
- Add Reviewed-by Krzysztof Kozlowski info
- Patch 3 (arm64: Kconfig):
- Remove Signed-off-by: Ge Gordon
- Patch 4 (dt-bindings: mmc):
- Remove Signed-off-by line for Ge Gordon
- Change `$ref: mmc-controller.yaml#` to `$ref: sdhci-common.yaml#`
- Change compatible string from `bst,c1200-dwcmshc-sdhci` to `bst,c1200-sdhci`
- Patch 5 (mmc: sdhci driver):
- Rename all functions from bst_* to sdhci_bst_* for better namespace consistency
- Rename driver file from sdhci-of-bst-c1200.c to sdhci-of-bst.c
- Rename dwcmshc_priv structure to sdhci_bst_priv for clarity
- Update driver name from "sdhci-dwcmshc" to "sdhci-bst" throughout
- Add comprehensive register bit mask definitions and named constants
- Replace manual polling loops with read_poll_timeout() for clock stability
- Add dedicated sdhci_bst_wait_int_clk() function for internal clock management
- Completely rewrite power management with proper power-off handling
- Enhance clock control with read-modify-write operations to avoid clobbering
- Add MBIU burst mode configuration based on power state
- Improve error handling and cleanup in probe/remove functions
- Simplify bounce buffer allocation and remove redundant MMC parameter adjustments
- Add SDHCI_QUIRK_BROKEN_ADMA quirk for hardware limitation
- Replace ioread32/iowrite32 with readl/writel for consistency
- Update copyright year and simplify license text
- Improve tuning algorithm with clearer variable naming
- Enhance register access patterns with proper bit field manipulation
- Add power-off clock management to reduce idle power consumption
- Add Acked-by: Arnd Bergmann
- Patch 6 (mmc: sdhci bounce buffer):
- Add new patch by suggestion from Adrian Hunter
- Patch 7 (arm64: dts):
- Remove Signed-off-by line for Ge Gordon
- Reorder device tree node properties for better consistency
- CPU nodes: move `device_type` before `compatible`, add explicit `reg` values
- MMC node: change compatible from `bst,c1200-dwcmshc-sdhci` to `bst,c1200-sdhci`
- MMC node: remove `bus-width` and `non-removable` from SoC dtsi, move to board dts
- SoC node: reorder properties (`ranges` before address/size cells)
- UART node: reorder properties (clock-frequency before interrupts)
- GIC node: reorder properties for better readability
- Timer node: reorder properties (always-on before interrupt-parent)
- Board DTS: add `bus-width = <8>` and `non-removable` to MMC node
- Board DTS: reorder MMC and UART node references
- Patch 8 (arm64: defconfig):
- move CONFIG_MMC_SDHCI_BST before CONFIG_MMC_SDHCI_F_SDH30
- Remove Signed-off-by line for Ge Gordon
- Simplify commit message (remove detailed description about eMMC/SD functionality)
- Patch 9 (MAINTAINERS):
- Changed file name: sdhci-of-bst-c1200.c to sdhci-of-bst.c
- Change title from "add and consolidate" to just "add"
- Simplify commit message description
- Remove Signed-off-by line for Ge Gordon

Changes for v3:
- Patch 2: Add Signed-off-by: Ge Gordon
- Patch 3: Reword subject from "for bst silicons" to "for Black Sesame Technologies SoCs"
and drop unrelated whitespace hunk
- Patch 4: Switch reg schema from maxItems to explicit items with per-entry descriptions,
improve example with irq.h include and bus node wrapper, add Signed-off-by: Ge Gordon
- Patch 5: Simplify dwcmshc_priv structure, improve helper functions, use
devm_platform_ioremap_resource(), clarify hardware limitations documentation
- Patch 6: Split defconfig enablement out into dedicated patch, refine memory description,
adjust node ordering, remove gic mask
- Patch 7: Also enable CONFIG_ARCH_BST in arm64 defconfig

Changes for v2:
- Patch 2: Remove unnecessary pipe in description, drop invalid compatible entry,
remove root node definition
- Patch 3: Place configuration entry in correct alphabetical order, use generic family name,
follow upstream naming conventions
- Patch 4: Simplify description, update $schema reference, correct compatible string,
remove redundant properties, clean up required properties, standardize example format
- Patch 5: Remove COMMON_CLK dependency, add ARCH_BST || COMPILE_TEST dependency,
replace temporary ioremap with persistent mapping, refactor bounce buffer allocation,
prune unused headers, fix register access macros, improve error handling
- Patch 6: Reorganize memory map, update MMC controller definition, remove deprecated
properties, standardize interrupt definitions, add root compatible string

Signed-off-by: Albert Yang <yangzh0906@thundersoft.com>
---
Albert Yang (9):
dt-bindings: vendor-prefixes: Add Black Sesame Technologies Co., Ltd.
dt-bindings: arm: add Black Sesame Technologies (bst) SoC
arm64: Kconfig: add ARCH_BST for Black Sesame Technologies SoCs
dt-bindings: mmc: add binding for BST DWCMSHC SDHCI controller
mmc: sdhci: add Black Sesame Technologies BST C1200 controller driver
mmc: sdhci: allow drivers to pre-allocate bounce buffer
arm64: dts: bst: add support for Black Sesame Technologies C1200 CDCU1.0 board
arm64: defconfig: enable BST platform and SDHCI controller support
MAINTAINERS: add Black Sesame Technologies (BST) ARM SoC support

Documentation/devicetree/bindings/arm/bst.yaml | 31 ++
.../devicetree/bindings/mmc/bst,dwcmshc-sdhci.yaml | 70 +++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
MAINTAINERS | 10 +
arch/arm64/Kconfig.platforms | 8 +
arch/arm64/boot/dts/Makefile | 1 +
arch/arm64/boot/dts/bst/Makefile | 2 +
.../boot/dts/bst/bstc1200-cdcu1.0-adas_4c2g.dts | 43 ++
arch/arm64/boot/dts/bst/bstc1200.dtsi | 115 +++++
arch/arm64/configs/defconfig | 2 +
drivers/mmc/host/Kconfig | 14 +
drivers/mmc/host/Makefile | 1 +
drivers/mmc/host/sdhci-of-bst.c | 544 +++++++++++++++++++++
drivers/mmc/host/sdhci.c | 7 +
14 files changed, 850 insertions(+)
---
base-commit: 76eeb9b8de9880ca38696b2fb56ac45ac0a25c6c
change-id: 20250923-v4-patch-final-dccd6f8f6092

Best regards,
--
Albert Yang <yangzh0906@thundersoft.com>