Message ID | SEYPR01MB4221019943A7F5361957811FD7902@SEYPR01MB4221.apcprd01.prod.exchangelabs.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
Series | Add clock controller support for Spacemit K1 | expand |
On Sat, 31 Aug 2024 15:47:12 +0000, Haylen Chu wrote: > Add definition for the clock controllers of Spacemit K1 SoC. The clock > tree is managed by several SoC parts, thus different compatible strings > are added for each. > > Signed-off-by: Haylen Chu <heylenay@outlook.com> > --- > .../bindings/clock/spacemit,ccu.yaml | 116 +++++++++++ > include/dt-bindings/clock/spacemit,ccu.h | 197 ++++++++++++++++++ > 2 files changed, 313 insertions(+) > create mode 100644 Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > create mode 100644 include/dt-bindings/clock/spacemit,ccu.h > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/clock/spacemit,ccu.example.dtb: system-control@d4090000: reg: [[0, 3557359616], [0, 4096]] is too long from schema $id: http://devicetree.org/schemas/mfd/syscon-common.yaml# Documentation/devicetree/bindings/clock/spacemit,ccu.example.dtb: /example-0/system-control@d4090000: failed to match any schema with compatible: ['spacemit,mpmu-syscon', 'syscon', 'simple-mfd'] /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/clock/spacemit,ccu.example.dtb: clock-controller: 'spacemit,mpmu' does not match any of the regexes: '^#.*', '^(at25|bm|devbus|dmacap|dsa|exynos|fsi[ab]|gpio-fan|gpio-key|gpio|gpmc|hdmi|i2c-gpio),.*', '^(keypad|m25p|max8952|max8997|max8998|mpmc),.*', '^(pinctrl-single|#pinctrl-single|PowerPC),.*', '^(pl022|pxa-mmc|rcar_sound|rotary-encoder|s5m8767|sdhci),.*', '^(simple-audio-card|st-plgpio|st-spics|ts),.*', '^100ask,.*', '^70mai,.*', '^8dev,.*', '^GEFanuc,.*', '^IBM,.*', '^ORCL,.*', '^SUNW,.*', '^[a-zA-Z0-9#_][a-zA-Z0-9+\\-._@]{0,63}$', '^[a-zA-Z0-9+\\-._]*@[0-9a-zA-Z,]*$', '^abb,.*', '^abilis,.*', '^abracon,.*', '^abt,.*', '^acbel,.*', '^acelink,.*', '^acer,.*', '^acme,.*', '^actions,.*', '^active-semi,.*', '^ad,.*', '^adafruit,.*', '^adapteva,.*', '^adaptrum,.*', '^adh,.*', '^adi,.*', '^adieng,.*', '^admatec,.*', '^advantech,.*', '^aeroflexgaisler,.*', '^aesop,.*', '^airoha,.*', '^al,.*', '^alcatel,.*', '^aldec,.*', '^alfa-network,.*', '^allegro,.*', '^alliedvision,.*', '^allo,.*', '^allwinner,.*', '^alphascale,.*', '^alps,.*', '^alt,.*', '^altr,.*', '^amarula,.*', '^amazon,.*', '^amcc,.*', '^amd,.*', '^amediatech,.*', '^amlogic,.*', '^ampere,.*', '^amphenol,.*', '^ampire,.*', '^ams,.*', '^amstaos,.*', '^analogix,.*', '^anbernic,.*', '^andestech,.*', '^anvo,.*', '^aosong,.*', '^apm,.*', '^apple,.*', '^aptina,.*', '^arasan,.*', '^archermind,.*', '^arcom,.*', '^arctic,.*', '^arcx,.*', '^aries,.*', '^arm,.*', '^armadeus,.*', '^armsom,.*', '^arrow,.*', '^artesyn,.*', '^asahi-kasei,.*', '^asc,.*', '^asix,.*', '^aspeed,.*', '^asrock,.*', '^asteralabs,.*', '^asus,.*', '^atheros,.*', '^atlas,.*', '^atmel,.*', '^auo,.*', '^auvidea,.*', '^avago,.*', '^avia,.*', '^avic,.*', '^avnet,.*', '^awinic,.*', '^axentia,.*', '^axis,.*', '^azoteq,.*', '^azw,.*', '^baikal,.*', '^bananapi,.*', '^beacon,.*', '^beagle,.*', '^belling,.*', '^bhf,.*', '^bigtreetech,.*', '^bitmain,.*', '^blutek,.*', '^boe,.*', '^bosch,.*', '^boundary,.*', '^brcm,.*', '^broadmobi,.*', '^bsh,.*', '^bticino,.*', '^buffalo,.*', '^bur,.*', '^bytedance,.*', '^calamp,.*', '^calao,.*', '^calaosystems,.*', '^calxeda,.*', '^cameo,.*', '^canaan,.*', '^caninos,.*', '^capella,.*', '^cascoda,.*', '^catalyst,.*', '^cavium,.*', '^cct,.*', '^cdns,.*', '^cdtech,.*', '^cellwise,.*', '^ceva,.*', '^chargebyte,.*', '^checkpoint,.*', '^chefree,.*', '^chipidea,.*', '^chipone,.*', '^chipspark,.*', '^chongzhou,.*', '^chrontel,.*', '^chrp,.*', '^chunghwa,.*', '^chuwi,.*', '^ciaa,.*', '^cirrus,.*', '^cisco,.*', '^clockwork,.*', '^cloos,.*', '^cloudengines,.*', '^cnm,.*', '^cnxt,.*', '^colorfly,.*', '^compulab,.*', '^congatec,.*', '^coolpi,.*', '^coreriver,.*', '^corpro,.*', '^cortina,.*', '^cosmic,.*', '^crane,.*', '^creative,.*', '^crystalfontz,.*', '^csky,.*', '^csq,.*', '^ctera,.*', '^ctu,.*', '^cubietech,.*', '^cudy,.*', '^cui,.*', '^cypress,.*', '^cyx,.*', '^cznic,.*', '^dallas,.*', '^dataimage,.*', '^davicom,.*', '^dell,.*', '^delta,.*', '^densitron,.*', '^denx,.*', '^devantech,.*', '^dfi,.*', '^dh,.*', '^difrnce,.*', '^digi,.*', '^digilent,.*', '^dimonoff,.*', '^diodes,.*', '^dioo,.*', '^dlc,.*', '^dlg,.*', '^dlink,.*', '^dmo,.*', '^domintech,.*', '^dongwoon,.*', '^dptechnics,.*', '^dragino,.*', '^dream,.*', '^ds,.*', '^dserve,.*', '^dynaimage,.*', '^ea,.*', '^ebang,.*', '^ebbg,.*', '^ebs-systart,.*', '^ebv,.*', '^eckelmann,.*', '^edgeble,.*', '^edimax,.*', '^edt,.*', '^ees,.*', '^eeti,.*', '^einfochips,.*', '^eink,.*', '^elan,.*', '^element14,.*', '^elgin,.*', '^elida,.*', '^elimo,.*', '^elpida,.*', '^embedfire,.*', '^embest,.*', '^emcraft,.*', '^emlid,.*', '^emmicro,.*', '^empire-electronix,.*', '^emtrion,.*', '^enclustra,.*', '^endless,.*', '^ene,.*', '^energymicro,.*', '^engicam,.*', '^engleder,.*', '^epcos,.*', '^epfl,.*', '^epson,.*', '^esp,.*', '^est,.*', '^ettus,.*', '^eukrea,.*', '^everest,.*', '^everspin,.*', '^evervision,.*', '^exar,.*', '^excito,.*', '^exegin,.*', '^ezchip,.*', '^facebook,.*', '^fairchild,.*', '^fairphone,.*', '^faraday,.*', '^fascontek,.*', '^fastrax,.*', '^fcs,.*', '^feixin,.*', '^feiyang,.*', '^fii,.*', '^firefly,.*', '^focaltech,.*', '^forlinx,.*', '^freebox,.*', '^freecom,.*', '^frida,.*', '^friendlyarm,.*', '^fsl,.*', '^fujitsu,.*', '^fxtec,.*', '^galaxycore,.*', '^gameforce,.*', '^gardena,.*', '^gateway,.*', '^gateworks,.*', '^gcw,.*', '^ge,.*', '^geekbuying,.*', '^gef,.*', '^gemei,.*', '^gemtek,.*', '^genesys,.*', '^geniatech,.*', '^giantec,.*', '^giantplus,.*', '^glinet,.*', '^globalscale,.*', '^globaltop,.*', '^gmt,.*', '^goldelico,.*', '^goodix,.*', '^google,.*', '^goramo,.*', '^gplus,.*', '^grinn,.*', '^grmn,.*', '^gumstix,.*', '^gw,.*', '^hannstar,.*', '^haochuangyi,.*', '^haoyu,.*', '^hardkernel,.*', '^hechuang,.*', '^hideep,.*', '^himax,.*', '^hirschmann,.*', '^hisi,.*', '^hisilicon,.*', '^hit,.*', '^hitex,.*', '^holt,.*', '^holtek,.*', '^honestar,.*', '^honeywell,.*', '^hoperf,.*', '^hoperun,.*', '^hp,.*', '^hpe,.*', '^hsg,.*', '^htc,.*', '^huawei,.*', '^hugsun,.*', '^hwacom,.*', '^hxt,.*', '^hycon,.*', '^hydis,.*', '^hynitron,.*', '^hynix,.*', '^hyundai,.*', '^i2se,.*', '^ibm,.*', '^icplus,.*', '^idt,.*', '^iei,.*', '^ifi,.*', '^ilitek,.*', '^imagis,.*', '^img,.*', '^imi,.*', '^inanbo,.*', '^incircuit,.*', '^indiedroid,.*', '^inet-tek,.*', '^infineon,.*', '^inforce,.*', '^ingenic,.*', '^ingrasys,.*', '^injoinic,.*', '^innocomm,.*', '^innolux,.*', '^inside-secure,.*', '^insignal,.*', '^inspur,.*', '^intel,.*', '^intercontrol,.*', '^invensense,.*', '^inventec,.*', '^inversepath,.*', '^iom,.*', '^irondevice,.*', '^isee,.*', '^isil,.*', '^issi,.*', '^ite,.*', '^itead,.*', '^itian,.*', '^ivo,.*', '^iwave,.*', '^jadard,.*', '^jasonic,.*', '^jdi,.*', '^jedec,.*', '^jesurun,.*', '^jethome,.*', '^jianda,.*', '^jide,.*', '^joz,.*', '^kam,.*', '^karo,.*', '^keithkoep,.*', '^keymile,.*', '^khadas,.*', '^kiebackpeter,.*', '^kinetic,.*', '^kingdisplay,.*', '^kingnovel,.*', '^kionix,.*', '^kobo,.*', '^kobol,.*', '^koe,.*', '^kontron,.*', '^kosagi,.*', '^kvg,.*', '^kyo,.*', '^lacie,.*', '^laird,.*', '^lamobo,.*', '^lantiq,.*', '^lattice,.*', '^lctech,.*', '^leadtek,.*', '^leez,.*', '^lego,.*', '^lemaker,.*', '^lenovo,.*', '^lg,.*', '^lgphilips,.*', '^libretech,.*', '^licheepi,.*', '^linaro,.*', '^lincolntech,.*', '^lineartechnology,.*', '^linksprite,.*', '^linksys,.*', '^linutronix,.*', '^linux,.*', '^linx,.*', '^liteon,.*', '^litex,.*', '^lltc,.*', '^logicpd,.*', '^logictechno,.*', '^longcheer,.*', '^lontium,.*', '^loongmasses,.*', '^loongson,.*', '^lsi,.*', '^lunzn,.*', '^luxul,.*', '^lwn,.*', '^lxa,.*', '^m5stack,.*', '^macnica,.*', '^mantix,.*', '^mapleboard,.*', '^marantec,.*', '^marvell,.*', '^maxbotix,.*', '^maxim,.*', '^maxlinear,.*', '^mbvl,.*', '^mcube,.*', '^meas,.*', '^mecer,.*', '^mediatek,.*', '^megachips,.*', '^mele,.*', '^melexis,.*', '^melfas,.*', '^mellanox,.*', '^memsensing,.*', '^memsic,.*', '^menlo,.*', '^mentor,.*', '^meraki,.*', '^merrii,.*', '^methode,.*', '^micrel,.*', '^microchip,.*', '^microcrystal,.*', '^micron,.*', '^microsoft,.*', '^microsys,.*', '^microtips,.*', '^mikroe,.*', '^mikrotik,.*', '^milkv,.*', '^miniand,.*', '^minix,.*', '^mips,.*', '^miramems,.*', '^mitsubishi,.*', '^mitsumi,.*', '^mixel,.*', '^miyoo,.*', '^mntre,.*', '^mobileye,.*', '^modtronix,.*', '^moortec,.*', '^mosaixtech,.*', '^motorcomm,.*', '^motorola,.*', '^moxa,.*', '^mpl,.*', '^mps,.*', '^mqmaker,.*', '^mrvl,.*', '^mscc,.*', '^msi,.*', '^mstar,.*', '^mti,.*', '^multi-inno,.*', '^mundoreader,.*', '^murata,.*', '^mxic,.*', '^mxicy,.*', '^myir,.*', '^national,.*', '^neardi,.*', '^nec,.*', '^neonode,.*', '^netgear,.*', '^netlogic,.*', '^netron-dy,.*', '^netronix,.*', '^netxeon,.*', '^neweast,.*', '^newhaven,.*', '^newvision,.*', '^nexbox,.*', '^nextthing,.*', '^ni,.*', '^nintendo,.*', '^nlt,.*', '^nokia,.*', '^nordic,.*', '^novatek,.*', '^novtech,.*', '^numonyx,.*', '^nutsboard,.*', '^nuvoton,.*', '^nvd,.*', '^nvidia,.*', '^nxp,.*', '^oceanic,.*', '^ocs,.*', '^oct,.*', '^okaya,.*', '^oki,.*', '^olimex,.*', '^olpc,.*', '^oneplus,.*', '^onie,.*', '^onion,.*', '^onnn,.*', '^ontat,.*', '^opalkelly,.*', '^openailab,.*', '^opencores,.*', '^openembed,.*', '^openpandora,.*', '^openrisc,.*', '^openwrt,.*', '^option,.*', '^oranth,.*', '^orisetech,.*', '^ortustech,.*', '^osddisplays,.*', '^osmc,.*', '^ouya,.*', '^overkiz,.*', '^ovti,.*', '^oxsemi,.*', '^ozzmaker,.*', '^panasonic,.*', '^parade,.*', '^parallax,.*', '^pda,.*', '^pericom,.*', '^pervasive,.*', '^phicomm,.*', '^phytec,.*', '^picochip,.*', '^pine64,.*', '^pineriver,.*', '^pixcir,.*', '^plantower,.*', '^plathome,.*', '^plda,.*', '^plx,.*', '^ply,.*', '^pni,.*', '^pocketbook,.*', '^polaroid,.*', '^polyhex,.*', '^portwell,.*', '^poslab,.*', '^pov,.*', '^powertip,.*', '^powervr,.*', '^powkiddy,.*', '^primeview,.*', '^primux,.*', '^probox2,.*', '^prt,.*', '^pulsedlight,.*', '^purism,.*', '^qca,.*', '^qcom,.*', '^qemu,.*', '^qi,.*', '^qiaodian,.*', '^qihua,.*', '^qishenglong,.*', '^qnap,.*', '^quanta,.*', '^radxa,.*', '^raidsonic,.*', '^ralink,.*', '^ramtron,.*', '^raspberrypi,.*', '^raydium,.*', '^rda,.*', '^realtek,.*', '^remarkable,.*', '^renesas,.*', '^rervision,.*', '^revotics,.*', '^rex,.*', '^richtek,.*', '^ricoh,.*', '^rikomagic,.*', '^riot,.*', '^riscv,.*', '^rockchip,.*', '^rocktech,.*', '^rohm,.*', '^ronbo,.*', '^roofull,.*', '^roseapplepi,.*', '^rve,.*', '^saef,.*', '^samsung,.*', '^samtec,.*', '^sancloud,.*', '^sandisk,.*', '^satoz,.*', '^sbs,.*', '^schindler,.*', '^schneider,.*', '^sciosense,.*', '^seagate,.*', '^seeed,.*', '^seirobotics,.*', '^semtech,.*', '^senseair,.*', '^sensirion,.*', '^sensortek,.*', '^sercomm,.*', '^sff,.*', '^sgd,.*', '^sgmicro,.*', '^sgx,.*', '^sharp,.*', '^shift,.*', '^shimafuji,.*', '^shineworld,.*', '^shiratech,.*', '^si-en,.*', '^si-linux,.*', '^siemens,.*', '^sifive,.*', '^sigma,.*', '^sii,.*', '^sil,.*', '^silabs,.*', '^silan,.*', '^silead,.*', '^silergy,.*', '^silex-insight,.*', '^siliconfile,.*', '^siliconmitus,.*', '^silvaco,.*', '^simtek,.*', '^sinlinx,.*', '^sinovoip,.*', '^sinowealth,.*', '^sipeed,.*', '^sirf,.*', '^sis,.*', '^sitronix,.*', '^skov,.*', '^skyworks,.*', '^smartlabs,.*', '^smartrg,.*', '^smi,.*', '^smsc,.*', '^snps,.*', '^sochip,.*', '^socionext,.*', '^solidrun,.*', '^solomon,.*', '^sony,.*', '^sophgo,.*', '^sourceparts,.*', '^spansion,.*', '^sparkfun,.*', '^spinalhdl,.*', '^sprd,.*', '^square,.*', '^ssi,.*', '^sst,.*', '^sstar,.*', '^st,.*', '^st-ericsson,.*', '^starfive,.*', '^starry,.*', '^startek,.*', '^starterkit,.*', '^ste,.*', '^stericsson,.*', '^storlink,.*', '^storm,.*', '^storopack,.*', '^summit,.*', '^sunchip,.*', '^sundance,.*', '^sunplus,.*', '^supermicro,.*', '^swir,.*', '^syna,.*', '^synology,.*', '^synopsys,.*', '^tbs,.*', '^tbs-biometrics,.*', '^tcg,.*', '^tcl,.*', '^tcs,.*', '^tdo,.*', '^team-source-display,.*', '^technexion,.*', '^technologic,.*', '^techstar,.*', '^techwell,.*', '^teejet,.*', '^teltonika,.*', '^tempo,.*', '^terasic,.*', '^tesla,.*', '^tfc,.*', '^thead,.*', '^thine,.*', '^thingyjp,.*', '^thundercomm,.*', '^thwc,.*', '^ti,.*', '^tianma,.*', '^tlm,.*', '^tmt,.*', '^topeet,.*', '^topic,.*', '^toppoly,.*', '^topwise,.*', '^toradex,.*', '^toshiba,.*', '^toumaz,.*', '^tpk,.*', '^tplink,.*', '^tpo,.*', '^tq,.*', '^transpeed,.*', '^traverse,.*', '^tronfy,.*', '^tronsmart,.*', '^truly,.*', '^tsd,.*', '^turing,.*', '^tyan,.*', '^u-blox,.*', '^u-boot,.*', '^ubnt,.*', '^ucrobotics,.*', '^udoo,.*', '^ufispace,.*', '^ugoos,.*', '^uni-t,.*', '^uniwest,.*', '^upisemi,.*', '^urt,.*', '^usi,.*', '^usr,.*', '^utoo,.*', '^v3,.*', '^vaisala,.*', '^vamrs,.*', '^variscite,.*', '^vdl,.*', '^vertexcom,.*', '^via,.*', '^vialab,.*', '^vicor,.*', '^videostrong,.*', '^virtio,.*', '^virtual,.*', '^vishay,.*', '^visionox,.*', '^vitesse,.*', '^vivante,.*', '^vivax,.*', '^vocore,.*', '^voipac,.*', '^voltafield,.*', '^vot,.*', '^vscom,.*', '^vxt,.*', '^wacom,.*', '^wanchanglong,.*', '^wand,.*', '^waveshare,.*', '^wd,.*', '^we,.*', '^welltech,.*', '^wetek,.*', '^wexler,.*', '^whwave,.*', '^wi2wi,.*', '^widora,.*', '^wiligear,.*', '^willsemi,.*', '^winbond,.*', '^wingtech,.*', '^winlink,.*', '^winstar,.*', '^wirelesstag,.*', '^wits,.*', '^wlf,.*', '^wm,.*', '^wobo,.*', '^wolfvision,.*', '^x-powers,.*', '^xen,.*', '^xes,.*', '^xiaomi,.*', '^xillybus,.*', '^xingbangda,.*', '^xinpeng,.*', '^xiphera,.*', '^xlnx,.*', '^xnano,.*', '^xunlong,.*', '^xylon,.*', '^yadro,.*', '^yamaha,.*', '^yes-optoelectronics,.*', '^yic,.*', '^yiming,.*', '^ylm,.*', '^yna,.*', '^yones-toptech,.*', '^ys,.*', '^ysoft,.*', '^zarlink,.*', '^zealz,.*', '^zeitec,.*', '^zidoo,.*', '^zii,.*', '^zinitix,.*', '^zkmagic,.*', '^zte,.*', '^zyxel,.*', 'pinctrl-[0-9]+' from schema $id: http://devicetree.org/schemas/vendor-prefixes.yaml# doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/SEYPR01MB4221019943A7F5361957811FD7902@SEYPR01MB4221.apcprd01.prod.exchangelabs.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.
On Sat, Aug 31, 2024 at 03:47:12PM +0000, Haylen Chu wrote: > Add definition for the clock controllers of Spacemit K1 SoC. The clock > tree is managed by several SoC parts, thus different compatible strings > are added for each. > > Signed-off-by: Haylen Chu <heylenay@outlook.com> > --- This wasn't ever tested... > .../bindings/clock/spacemit,ccu.yaml | 116 +++++++++++ > include/dt-bindings/clock/spacemit,ccu.h | 197 ++++++++++++++++++ > 2 files changed, 313 insertions(+) > create mode 100644 Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > create mode 100644 include/dt-bindings/clock/spacemit,ccu.h > > diff --git a/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > new file mode 100644 > index 000000000000..90ddfc5e2a2f > --- /dev/null > +++ b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > @@ -0,0 +1,116 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/clock/spacemit,ccu.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Spacemit SoC Clock Controller What's the SoC name? > + > +maintainers: > + - Haylen Chu <heylenay@outlook.com> > + > +properties: > + compatible: > + enum: > + - spacemit,ccu-apbs > + - spacemit,ccu-mpmu > + - spacemit,ccu-apbc > + - spacemit,ccu-apmu > + > + clocks: true No, this must be specific. min/maxItems > + > + clock-names: true No, this must be specific. min/maxItems > + > + spacemit,mpmu: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + Phandle to the syscon managing "Main PMU (MPMU)" registers Explain what for. > + > + "#clock-cells": > + const: 1 > + description: > + See <dt-bindings/clock/spacemit,ccu.h> for valid indices. > + > +required: > + - compatible > + - "#clock-cells" > + > +additionalProperties: false This goes after allOf block. > + > +allOf: > + - if: > + properties: > + compatible: > + contains: > + const: spacemit,ccu-apbs > + then: > + properties: > + clocks: > + maxItems: 1 > + > + clock-names: > + const: pll1_2457p6_vco Don't use some weird, fake names. That's pll or vco or whatever the input is called. > + > + required: > + - compatible > + - clocks > + - clock-names > + - "#clock-cells" > + - spacemit,mpmu > + - if: > + properties: > + compatible: > + contains: > + const: spacemit,ccu-apbc > + then: > + properties: > + clocks: > + maxItems: 4 > + > + clock-names: > + items: > + - const: clk_32k > + - const: vctcxo_1 > + - const: vctcxo_24 > + - const: vctcxo_3 > + > + required: > + - compatible > + - clocks > + - clock-names > + - "#clock-cells" > + > + - if: > + properties: > + compatible: > + contains: > + const: spacemit,ccu-apmu > + then: > + properties: > + clocks: > + maxItems: 1 > + > + clock-names: > + const: vctcxo_24 > + > + required: > + - compatible > + - clocks > + - clock-names > + - "#clock-cells" > + > +examples: > + - | > + syscon_apbs: system-control@d4090000 { > + compatible = "spacemit,mpmu-syscon", "syscon", > + "simple-mfd"; Messed indentation. Anyway, parent device nodes should have complete example. > + reg = <0x0 0xd4090000 0x0 0x1000>; > + > + clk_apbs: clock-controller { > + compatible = "spacemit,ccu-apbs"; > + clocks = <&pll1_2457p6_vco>; > + clock-names = "pll1_2457p6_vco"; > + #clock-cells = <1>; > + spacemit,mpmu = <&syscon_mpmu>; > + }; > + }; > diff --git a/include/dt-bindings/clock/spacemit,ccu.h b/include/dt-bindings/clock/spacemit,ccu.h > new file mode 100644 > index 000000000000..ce84690684ff > --- /dev/null > +++ b/include/dt-bindings/clock/spacemit,ccu.h > @@ -0,0 +1,197 @@ > +/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */ Use the same license. (one pointed out by checkpatch) Best regards, Krzysztof
On Sat, Aug 31, 2024 at 03:47:12PM GMT, Haylen Chu wrote: > Add definition for the clock controllers of Spacemit K1 SoC. The clock > tree is managed by several SoC parts, thus different compatible strings > are added for each. > > Signed-off-by: Haylen Chu <heylenay@outlook.com> > --- > .../bindings/clock/spacemit,ccu.yaml | 116 +++++++++++ > include/dt-bindings/clock/spacemit,ccu.h | 197 ++++++++++++++++++ > 2 files changed, 313 insertions(+) > create mode 100644 Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > create mode 100644 include/dt-bindings/clock/spacemit,ccu.h > > diff --git a/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > new file mode 100644 > index 000000000000..90ddfc5e2a2f > --- /dev/null > +++ b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > @@ -0,0 +1,116 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/clock/spacemit,ccu.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Spacemit SoC Clock Controller > + > +maintainers: > + - Haylen Chu <heylenay@outlook.com> > + > +properties: > + compatible: > + enum: > + - spacemit,ccu-apbs > + - spacemit,ccu-mpmu > + - spacemit,ccu-apbc > + - spacemit,ccu-apmu > + Add K1 prefix. > + clocks: true > + > + clock-names: true > + > + spacemit,mpmu: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + Phandle to the syscon managing "Main PMU (MPMU)" registers > + > + "#clock-cells": > + const: 1 > + description: > + See <dt-bindings/clock/spacemit,ccu.h> for valid indices. > + > +required: > + - compatible > + - "#clock-cells" > + > +additionalProperties: false > + > +allOf: > + - if: > + properties: > + compatible: > + contains: > + const: spacemit,ccu-apbs > + then: > + properties: > + clocks: > + maxItems: 1 > + > + clock-names: > + const: pll1_2457p6_vco > + > + required: > + - compatible > + - clocks > + - clock-names > + - "#clock-cells" > + - spacemit,mpmu > + - if: > + properties: > + compatible: > + contains: > + const: spacemit,ccu-apbc > + then: > + properties: > + clocks: > + maxItems: 4 > + > + clock-names: > + items: > + - const: clk_32k > + - const: vctcxo_1 > + - const: vctcxo_24 > + - const: vctcxo_3 > + > + required: > + - compatible > + - clocks > + - clock-names > + - "#clock-cells" > + > + - if: > + properties: > + compatible: > + contains: > + const: spacemit,ccu-apmu > + then: > + properties: > + clocks: > + maxItems: 1 > + > + clock-names: > + const: vctcxo_24 > + > + required: > + - compatible > + - clocks > + - clock-names > + - "#clock-cells" > + Do not use this weird allOf, split this binding into multiple ones. This also apply to the binding header if necessary. > +examples: > + - | > + syscon_apbs: system-control@d4090000 { > + compatible = "spacemit,mpmu-syscon", "syscon", > + "simple-mfd"; syscon also needs binding. > + reg = <0x0 0xd4090000 0x0 0x1000>; > + > + clk_apbs: clock-controller { > + compatible = "spacemit,ccu-apbs"; > + clocks = <&pll1_2457p6_vco>; > + clock-names = "pll1_2457p6_vco"; > + #clock-cells = <1>; > + spacemit,mpmu = <&syscon_mpmu>; > + }; > + }; > diff --git a/include/dt-bindings/clock/spacemit,ccu.h b/include/dt-bindings/clock/spacemit,ccu.h > new file mode 100644 > index 000000000000..ce84690684ff > --- /dev/null > +++ b/include/dt-bindings/clock/spacemit,ccu.h > @@ -0,0 +1,197 @@ > +/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */ > +/* > + * Copyright (C) 2024 Haylen Chu <heylenay@outlook.com> > + */ > + > +#ifndef _DT_BINDINGS_SPACEMIT_CCU_H_ > +#define _DT_BINDINGS_SPACEMIT_CCU_H_ > + > +/* APBS clocks */ > +#define CLK_PLL2 0 > +#define CLK_PLL3 1 > +#define CLK_PLL1_D2 2 > +#define CLK_PLL1_D3 3 > +#define CLK_PLL1_D4 4 > +#define CLK_PLL1_D5 5 > +#define CLK_PLL1_D6 6 > +#define CLK_PLL1_D7 7 > +#define CLK_PLL1_D8 8 > +#define CLK_PLL1_D11 9 > +#define CLK_PLL1_D13 10 > +#define CLK_PLL1_D23 11 > +#define CLK_PLL1_D64 12 > +#define CLK_PLL1_D10_AUD 13 > +#define CLK_PLL1_D100_AUD 14 > +#define CLK_PLL2_D1 15 > +#define CLK_PLL2_D2 16 > +#define CLK_PLL2_D3 17 > +#define CLK_PLL2_D4 18 > +#define CLK_PLL2_D5 19 > +#define CLK_PLL2_D6 20 > +#define CLK_PLL2_D7 21 > +#define CLK_PLL2_D8 22 > +#define CLK_PLL3_D1 23 > +#define CLK_PLL3_D2 24 > +#define CLK_PLL3_D3 25 > +#define CLK_PLL3_D4 26 > +#define CLK_PLL3_D5 27 > +#define CLK_PLL3_D6 28 > +#define CLK_PLL3_D7 29 > +#define CLK_PLL3_D8 30 > +#define CLK_PLL3_80 31 > +#define CLK_PLL3_40 32 > +#define CLK_PLL3_20 33 > +#define CLK_APBS_NUM 34 > + > +/* MPMU clocks */ > +#define CLK_PLL1_307P2 0 > +#define CLK_PLL1_76P8 1 > +#define CLK_PLL1_61P44 2 > +#define CLK_PLL1_153P6 3 > +#define CLK_PLL1_102P4 4 > +#define CLK_PLL1_51P2 5 > +#define CLK_PLL1_51P2_AP 6 > +#define CLK_PLL1_57P6 7 > +#define CLK_PLL1_25P6 8 > +#define CLK_PLL1_12P8 9 > +#define CLK_PLL1_12P8_WDT 10 > +#define CLK_PLL1_6P4 11 > +#define CLK_PLL1_3P2 12 > +#define CLK_PLL1_1P6 13 > +#define CLK_PLL1_0P8 14 > +#define CLK_PLL1_351 15 > +#define CLK_PLL1_409P6 16 > +#define CLK_PLL1_204P8 17 > +#define CLK_PLL1_491 18 > +#define CLK_PLL1_245P76 19 > +#define CLK_PLL1_614 20 > +#define CLK_PLL1_47P26 21 > +#define CLK_PLL1_31P5 22 > +#define CLK_PLL1_819 23 > +#define CLK_PLL1_1228 24 > +#define CLK_SLOW_UART 25 > +#define CLK_SLOW_UART1 26 > +#define CLK_SLOW_UART2 27 > +#define CLK_WDT 28 > +#define CLK_RIPC 29 > +#define CLK_I2S_SySCLK 30 > +#define CLK_I2S_BCLK 31 > +#define CLK_APB 32 > +#define CLK_MPMU_NUM 33 > + > +/* APBC clocks */ > +#define CLK_UART0 0 > +#define CLK_UART2 1 > +#define CLK_UART3 2 > +#define CLK_UART4 3 > +#define CLK_UART5 4 > +#define CLK_UART6 5 > +#define CLK_UART7 6 > +#define CLK_UART8 7 > +#define CLK_UART9 8 > +#define CLK_GPIO 9 > +#define CLK_PWM0 10 > +#define CLK_PWM1 11 > +#define CLK_PWM2 12 > +#define CLK_PWM3 13 > +#define CLK_PWM4 14 > +#define CLK_PWM5 15 > +#define CLK_PWM6 16 > +#define CLK_PWM7 17 > +#define CLK_PWM8 18 > +#define CLK_PWM9 19 > +#define CLK_PWM10 20 > +#define CLK_PWM11 21 > +#define CLK_PWM12 22 > +#define CLK_PWM13 23 > +#define CLK_PWM14 24 > +#define CLK_PWM15 25 > +#define CLK_PWM16 26 > +#define CLK_PWM17 27 > +#define CLK_PWM18 28 > +#define CLK_PWM19 29 > +#define CLK_SSP3 30 > +#define CLK_RTC 31 > +#define CLK_TWSI0 32 > +#define CLK_TWSI1 33 > +#define CLK_TWSI2 34 > +#define CLK_TWSI4 35 > +#define CLK_TWSI5 36 > +#define CLK_TWSI6 37 > +#define CLK_TWSI7 38 > +#define CLK_TWSI8 39 > +#define CLK_TIMERS1 40 > +#define CLK_TIMERS2 41 > +#define CLK_AIB 42 > +#define CLK_ONEWIRE 43 > +#define CLK_SSPA0 44 > +#define CLK_SSPA1 45 > +#define CLK_DRO 46 > +#define CLK_IR 47 > +#define CLK_TSEN 48 > +#define CLK_IPC_AP2AUD 49 > +#define CLK_CAN0 50 > +#define CLK_CAN0_BUS 51 > +#define CLK_APBC_NUM 52 > + > +/* APMU clocks */ > +#define CLK_CCI550 0 > +#define CLK_CPU_C0_HI 1 > +#define CLK_CPU_C0_CORE 2 > +#define CLK_CPU_C0_ACE 3 > +#define CLK_CPU_C0_TCM 4 > +#define CLK_CPU_C1_HI 5 > +#define CLK_CPU_C1_CORE 6 > +#define CLK_CPU_C1_ACE 7 > +#define CLK_CCIC_4X 8 > +#define CLK_CCIC1PHY 9 > +#define CLK_SDH_AXI 10 > +#define CLK_SDH0 11 > +#define CLK_SDH1 12 > +#define CLK_SDH2 13 > +#define CLK_USB_P1 14 > +#define CLK_USB_AXI 15 > +#define CLK_USB30 16 > +#define CLK_QSPI 17 > +#define CLK_QSPI_BUS 18 > +#define CLK_DMA 19 > +#define CLK_AES 20 > +#define CLK_VPU 21 > +#define CLK_GPU 22 > +#define CLK_EMMC 23 > +#define CLK_EMMC_X 24 > +#define CLK_AUDIO 25 > +#define CLK_HDMI 26 > +#define CLK_PMUA_ACLK 27 > +#define CLK_PCIE0 28 > +#define CLK_PCIE1 29 > +#define CLK_PCIE2 30 > +#define CLK_EMAC0_BUS 31 > +#define CLK_EMAC0_PTP 32 > +#define CLK_EMAC1_BUS 33 > +#define CLK_EMAC1_PTP 34 > +#define CLK_JPG 35 > +#define CLK_JPF_4KAFBC 36 > +#define CLK_JPF_2KAFBC 37 > +#define CLK_CCIC2PHY 38 > +#define CLK_CCIC3PHY 39 > +#define CLK_CSI 40 > +#define CLK_CAMM0 41 > +#define CLK_CAMM1 42 > +#define CLK_CAMM2 43 > +#define CLK_ISP_CPP 44 > +#define CLK_ISP_BUS 45 > +#define CLK_ISP 46 > +#define CLK_DPU_MCL 47 > +#define CLK_DPU_ESC 48 > +#define CLK_DPU_BIT 49 > +#define CLK_DPU_PXCLK 50 > +#define CLK_DPU_HCLK 51 > +#define CLK_DPU_SPI 52 > +#define CLK_DPU_SPI_HBUS 53 > +#define CLK_DPU_SPIBUS 54 > +#define CLK_DPU_SPI_ACLK 55 > +#define CLK_V2D 56 > +#define CLK_APMU_NUM 57 > + > +#endif /* _DT_BINDINGS_SPACEMIT_CCU_H_ */ > -- > 2.46.0 >
On Sun, Sep 01, 2024 at 12:55:21PM +0200, Krzysztof Kozlowski wrote: > On Sat, Aug 31, 2024 at 03:47:12PM +0000, Haylen Chu wrote: > > Add definition for the clock controllers of Spacemit K1 SoC. The clock > > tree is managed by several SoC parts, thus different compatible strings > > are added for each. > > > > Signed-off-by: Haylen Chu <heylenay@outlook.com> > > --- > > This wasn't ever tested... > > > .../bindings/clock/spacemit,ccu.yaml | 116 +++++++++++ > > include/dt-bindings/clock/spacemit,ccu.h | 197 ++++++++++++++++++ > > 2 files changed, 313 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > > create mode 100644 include/dt-bindings/clock/spacemit,ccu.h > > > > diff --git a/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > > new file mode 100644 > > index 000000000000..90ddfc5e2a2f > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > > @@ -0,0 +1,116 @@ > > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/clock/spacemit,ccu.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Spacemit SoC Clock Controller > > What's the SoC name? > > > + > > +maintainers: > > + - Haylen Chu <heylenay@outlook.com> > > + > > +properties: > > + compatible: > > + enum: > > + - spacemit,ccu-apbs > > + - spacemit,ccu-mpmu > > + - spacemit,ccu-apbc > > + - spacemit,ccu-apmu > > + > > + clocks: true > > No, this must be specific. min/maxItems > > > + > > + clock-names: true > > No, this must be specific. min/maxItems > > > + > > + spacemit,mpmu: > > + $ref: /schemas/types.yaml#/definitions/phandle > > + description: > > + Phandle to the syscon managing "Main PMU (MPMU)" registers > > Explain what for. > > > + > > + "#clock-cells": > > + const: 1 > > + description: > > + See <dt-bindings/clock/spacemit,ccu.h> for valid indices. > > + > > +required: > > + - compatible > > + - "#clock-cells" > > + > > +additionalProperties: false > > This goes after allOf block. > > > + > > +allOf: > > + - if: > > + properties: > > + compatible: > > + contains: > > + const: spacemit,ccu-apbs > > + then: > > + properties: > > + clocks: > > + maxItems: 1 > > + > > + clock-names: > > + const: pll1_2457p6_vco > > Don't use some weird, fake names. That's pll or vco or whatever the > input is called. > > > + > > + required: > > + - compatible > > + - clocks > > + - clock-names > > + - "#clock-cells" > > + - spacemit,mpmu > > + - if: > > + properties: > > + compatible: > > + contains: > > + const: spacemit,ccu-apbc > > + then: > > + properties: > > + clocks: > > + maxItems: 4 > > + > > + clock-names: > > + items: > > + - const: clk_32k > > + - const: vctcxo_1 > > + - const: vctcxo_24 > > + - const: vctcxo_3 > > + > > + required: > > + - compatible > > + - clocks > > + - clock-names > > + - "#clock-cells" > > + > > + - if: > > + properties: > > + compatible: > > + contains: > > + const: spacemit,ccu-apmu > > + then: > > + properties: > > + clocks: > > + maxItems: 1 > > + > > + clock-names: > > + const: vctcxo_24 > > + > > + required: > > + - compatible > > + - clocks > > + - clock-names > > + - "#clock-cells" > > + > > +examples: > > + - | > > + syscon_apbs: system-control@d4090000 { > > + compatible = "spacemit,mpmu-syscon", "syscon", > > + "simple-mfd"; > > Messed indentation. > > Anyway, parent device nodes should have complete example. > > > + reg = <0x0 0xd4090000 0x0 0x1000>; > > + > > + clk_apbs: clock-controller { > > + compatible = "spacemit,ccu-apbs"; > > + clocks = <&pll1_2457p6_vco>; > > + clock-names = "pll1_2457p6_vco"; > > + #clock-cells = <1>; > > + spacemit,mpmu = <&syscon_mpmu>; > > + }; > > + }; > > diff --git a/include/dt-bindings/clock/spacemit,ccu.h b/include/dt-bindings/clock/spacemit,ccu.h > > new file mode 100644 > > index 000000000000..ce84690684ff > > --- /dev/null > > +++ b/include/dt-bindings/clock/spacemit,ccu.h > > @@ -0,0 +1,197 @@ > > +/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */ > > Use the same license. (one pointed out by checkpatch) > > Best regards, > Krzysztof > Thansk for your time and review, I realized it is better to split out multiple bindings instead of writing these messy "allOf" block. Will also adapt your suggestions in v2. Best regards, Haylen Chu
On 2024/8/31 23:47, Haylen Chu wrote: > Add definition for the clock controllers of Spacemit K1 SoC. The clock > tree is managed by several SoC parts, thus different compatible strings > are added for each. > > Signed-off-by: Haylen Chu <heylenay@outlook.com> > --- > .../bindings/clock/spacemit,ccu.yaml | 116 +++++++++++ > include/dt-bindings/clock/spacemit,ccu.h | 197 ++++++++++++++++++ > 2 files changed, 313 insertions(+) > create mode 100644 Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > create mode 100644 include/dt-bindings/clock/spacemit,ccu.h Suggest to use format: <vendor name>,<soc name>-<clk name>, look at the files under Documentation/devicetree/bindings/clock For example: starfive,jh7110-pll For your case: spacemit,k1-xxx BTW, What's "CCU"? > diff --git a/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > new file mode 100644 > index 000000000000..90ddfc5e2a2f > --- /dev/null > +++ b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > @@ -0,0 +1,116 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/clock/spacemit,ccu.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Spacemit SoC Clock Controller > + > +maintainers: > + - Haylen Chu <heylenay@outlook.com> > + > +properties: > + compatible: > + enum: > + - spacemit,ccu-apbs > + - spacemit,ccu-mpmu > + - spacemit,ccu-apbc > + - spacemit,ccu-apmu Same as filename, compatible string should contain soc codename to differ from other soc of spacemit. [......]
On Fri, Sep 06, 2024 at 05:51:44PM +0800, Chen Wang wrote: > > On 2024/8/31 23:47, Haylen Chu wrote: > > Add definition for the clock controllers of Spacemit K1 SoC. The clock > > tree is managed by several SoC parts, thus different compatible strings > > are added for each. > > > > Signed-off-by: Haylen Chu <heylenay@outlook.com> > > --- > > .../bindings/clock/spacemit,ccu.yaml | 116 +++++++++++ > > include/dt-bindings/clock/spacemit,ccu.h | 197 ++++++++++++++++++ > > 2 files changed, 313 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > > create mode 100644 include/dt-bindings/clock/spacemit,ccu.h > > Suggest to use format: <vendor name>,<soc name>-<clk name>, look at the > files under Documentation/devicetree/bindings/clock > > For example: > > starfive,jh7110-pll > > For your case: > > spacemit,k1-xxx Thanks for your advice. > BTW, What's "CCU"? The name is taken from vendor code and I think it should be "clock control unit". > > diff --git a/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > > new file mode 100644 > > index 000000000000..90ddfc5e2a2f > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml > > @@ -0,0 +1,116 @@ > > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/clock/spacemit,ccu.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Spacemit SoC Clock Controller > > + > > +maintainers: > > + - Haylen Chu <heylenay@outlook.com> > > + > > +properties: > > + compatible: > > + enum: > > + - spacemit,ccu-apbs > > + - spacemit,ccu-mpmu > > + - spacemit,ccu-apbc > > + - spacemit,ccu-apmu > > Same as filename, compatible string should contain soc codename to differ > from other soc of spacemit.
diff --git a/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml new file mode 100644 index 000000000000..90ddfc5e2a2f --- /dev/null +++ b/Documentation/devicetree/bindings/clock/spacemit,ccu.yaml @@ -0,0 +1,116 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/spacemit,ccu.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Spacemit SoC Clock Controller + +maintainers: + - Haylen Chu <heylenay@outlook.com> + +properties: + compatible: + enum: + - spacemit,ccu-apbs + - spacemit,ccu-mpmu + - spacemit,ccu-apbc + - spacemit,ccu-apmu + + clocks: true + + clock-names: true + + spacemit,mpmu: + $ref: /schemas/types.yaml#/definitions/phandle + description: + Phandle to the syscon managing "Main PMU (MPMU)" registers + + "#clock-cells": + const: 1 + description: + See <dt-bindings/clock/spacemit,ccu.h> for valid indices. + +required: + - compatible + - "#clock-cells" + +additionalProperties: false + +allOf: + - if: + properties: + compatible: + contains: + const: spacemit,ccu-apbs + then: + properties: + clocks: + maxItems: 1 + + clock-names: + const: pll1_2457p6_vco + + required: + - compatible + - clocks + - clock-names + - "#clock-cells" + - spacemit,mpmu + - if: + properties: + compatible: + contains: + const: spacemit,ccu-apbc + then: + properties: + clocks: + maxItems: 4 + + clock-names: + items: + - const: clk_32k + - const: vctcxo_1 + - const: vctcxo_24 + - const: vctcxo_3 + + required: + - compatible + - clocks + - clock-names + - "#clock-cells" + + - if: + properties: + compatible: + contains: + const: spacemit,ccu-apmu + then: + properties: + clocks: + maxItems: 1 + + clock-names: + const: vctcxo_24 + + required: + - compatible + - clocks + - clock-names + - "#clock-cells" + +examples: + - | + syscon_apbs: system-control@d4090000 { + compatible = "spacemit,mpmu-syscon", "syscon", + "simple-mfd"; + reg = <0x0 0xd4090000 0x0 0x1000>; + + clk_apbs: clock-controller { + compatible = "spacemit,ccu-apbs"; + clocks = <&pll1_2457p6_vco>; + clock-names = "pll1_2457p6_vco"; + #clock-cells = <1>; + spacemit,mpmu = <&syscon_mpmu>; + }; + }; diff --git a/include/dt-bindings/clock/spacemit,ccu.h b/include/dt-bindings/clock/spacemit,ccu.h new file mode 100644 index 000000000000..ce84690684ff --- /dev/null +++ b/include/dt-bindings/clock/spacemit,ccu.h @@ -0,0 +1,197 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */ +/* + * Copyright (C) 2024 Haylen Chu <heylenay@outlook.com> + */ + +#ifndef _DT_BINDINGS_SPACEMIT_CCU_H_ +#define _DT_BINDINGS_SPACEMIT_CCU_H_ + +/* APBS clocks */ +#define CLK_PLL2 0 +#define CLK_PLL3 1 +#define CLK_PLL1_D2 2 +#define CLK_PLL1_D3 3 +#define CLK_PLL1_D4 4 +#define CLK_PLL1_D5 5 +#define CLK_PLL1_D6 6 +#define CLK_PLL1_D7 7 +#define CLK_PLL1_D8 8 +#define CLK_PLL1_D11 9 +#define CLK_PLL1_D13 10 +#define CLK_PLL1_D23 11 +#define CLK_PLL1_D64 12 +#define CLK_PLL1_D10_AUD 13 +#define CLK_PLL1_D100_AUD 14 +#define CLK_PLL2_D1 15 +#define CLK_PLL2_D2 16 +#define CLK_PLL2_D3 17 +#define CLK_PLL2_D4 18 +#define CLK_PLL2_D5 19 +#define CLK_PLL2_D6 20 +#define CLK_PLL2_D7 21 +#define CLK_PLL2_D8 22 +#define CLK_PLL3_D1 23 +#define CLK_PLL3_D2 24 +#define CLK_PLL3_D3 25 +#define CLK_PLL3_D4 26 +#define CLK_PLL3_D5 27 +#define CLK_PLL3_D6 28 +#define CLK_PLL3_D7 29 +#define CLK_PLL3_D8 30 +#define CLK_PLL3_80 31 +#define CLK_PLL3_40 32 +#define CLK_PLL3_20 33 +#define CLK_APBS_NUM 34 + +/* MPMU clocks */ +#define CLK_PLL1_307P2 0 +#define CLK_PLL1_76P8 1 +#define CLK_PLL1_61P44 2 +#define CLK_PLL1_153P6 3 +#define CLK_PLL1_102P4 4 +#define CLK_PLL1_51P2 5 +#define CLK_PLL1_51P2_AP 6 +#define CLK_PLL1_57P6 7 +#define CLK_PLL1_25P6 8 +#define CLK_PLL1_12P8 9 +#define CLK_PLL1_12P8_WDT 10 +#define CLK_PLL1_6P4 11 +#define CLK_PLL1_3P2 12 +#define CLK_PLL1_1P6 13 +#define CLK_PLL1_0P8 14 +#define CLK_PLL1_351 15 +#define CLK_PLL1_409P6 16 +#define CLK_PLL1_204P8 17 +#define CLK_PLL1_491 18 +#define CLK_PLL1_245P76 19 +#define CLK_PLL1_614 20 +#define CLK_PLL1_47P26 21 +#define CLK_PLL1_31P5 22 +#define CLK_PLL1_819 23 +#define CLK_PLL1_1228 24 +#define CLK_SLOW_UART 25 +#define CLK_SLOW_UART1 26 +#define CLK_SLOW_UART2 27 +#define CLK_WDT 28 +#define CLK_RIPC 29 +#define CLK_I2S_SySCLK 30 +#define CLK_I2S_BCLK 31 +#define CLK_APB 32 +#define CLK_MPMU_NUM 33 + +/* APBC clocks */ +#define CLK_UART0 0 +#define CLK_UART2 1 +#define CLK_UART3 2 +#define CLK_UART4 3 +#define CLK_UART5 4 +#define CLK_UART6 5 +#define CLK_UART7 6 +#define CLK_UART8 7 +#define CLK_UART9 8 +#define CLK_GPIO 9 +#define CLK_PWM0 10 +#define CLK_PWM1 11 +#define CLK_PWM2 12 +#define CLK_PWM3 13 +#define CLK_PWM4 14 +#define CLK_PWM5 15 +#define CLK_PWM6 16 +#define CLK_PWM7 17 +#define CLK_PWM8 18 +#define CLK_PWM9 19 +#define CLK_PWM10 20 +#define CLK_PWM11 21 +#define CLK_PWM12 22 +#define CLK_PWM13 23 +#define CLK_PWM14 24 +#define CLK_PWM15 25 +#define CLK_PWM16 26 +#define CLK_PWM17 27 +#define CLK_PWM18 28 +#define CLK_PWM19 29 +#define CLK_SSP3 30 +#define CLK_RTC 31 +#define CLK_TWSI0 32 +#define CLK_TWSI1 33 +#define CLK_TWSI2 34 +#define CLK_TWSI4 35 +#define CLK_TWSI5 36 +#define CLK_TWSI6 37 +#define CLK_TWSI7 38 +#define CLK_TWSI8 39 +#define CLK_TIMERS1 40 +#define CLK_TIMERS2 41 +#define CLK_AIB 42 +#define CLK_ONEWIRE 43 +#define CLK_SSPA0 44 +#define CLK_SSPA1 45 +#define CLK_DRO 46 +#define CLK_IR 47 +#define CLK_TSEN 48 +#define CLK_IPC_AP2AUD 49 +#define CLK_CAN0 50 +#define CLK_CAN0_BUS 51 +#define CLK_APBC_NUM 52 + +/* APMU clocks */ +#define CLK_CCI550 0 +#define CLK_CPU_C0_HI 1 +#define CLK_CPU_C0_CORE 2 +#define CLK_CPU_C0_ACE 3 +#define CLK_CPU_C0_TCM 4 +#define CLK_CPU_C1_HI 5 +#define CLK_CPU_C1_CORE 6 +#define CLK_CPU_C1_ACE 7 +#define CLK_CCIC_4X 8 +#define CLK_CCIC1PHY 9 +#define CLK_SDH_AXI 10 +#define CLK_SDH0 11 +#define CLK_SDH1 12 +#define CLK_SDH2 13 +#define CLK_USB_P1 14 +#define CLK_USB_AXI 15 +#define CLK_USB30 16 +#define CLK_QSPI 17 +#define CLK_QSPI_BUS 18 +#define CLK_DMA 19 +#define CLK_AES 20 +#define CLK_VPU 21 +#define CLK_GPU 22 +#define CLK_EMMC 23 +#define CLK_EMMC_X 24 +#define CLK_AUDIO 25 +#define CLK_HDMI 26 +#define CLK_PMUA_ACLK 27 +#define CLK_PCIE0 28 +#define CLK_PCIE1 29 +#define CLK_PCIE2 30 +#define CLK_EMAC0_BUS 31 +#define CLK_EMAC0_PTP 32 +#define CLK_EMAC1_BUS 33 +#define CLK_EMAC1_PTP 34 +#define CLK_JPG 35 +#define CLK_JPF_4KAFBC 36 +#define CLK_JPF_2KAFBC 37 +#define CLK_CCIC2PHY 38 +#define CLK_CCIC3PHY 39 +#define CLK_CSI 40 +#define CLK_CAMM0 41 +#define CLK_CAMM1 42 +#define CLK_CAMM2 43 +#define CLK_ISP_CPP 44 +#define CLK_ISP_BUS 45 +#define CLK_ISP 46 +#define CLK_DPU_MCL 47 +#define CLK_DPU_ESC 48 +#define CLK_DPU_BIT 49 +#define CLK_DPU_PXCLK 50 +#define CLK_DPU_HCLK 51 +#define CLK_DPU_SPI 52 +#define CLK_DPU_SPI_HBUS 53 +#define CLK_DPU_SPIBUS 54 +#define CLK_DPU_SPI_ACLK 55 +#define CLK_V2D 56 +#define CLK_APMU_NUM 57 + +#endif /* _DT_BINDINGS_SPACEMIT_CCU_H_ */
Add definition for the clock controllers of Spacemit K1 SoC. The clock tree is managed by several SoC parts, thus different compatible strings are added for each. Signed-off-by: Haylen Chu <heylenay@outlook.com> --- .../bindings/clock/spacemit,ccu.yaml | 116 +++++++++++ include/dt-bindings/clock/spacemit,ccu.h | 197 ++++++++++++++++++ 2 files changed, 313 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/spacemit,ccu.yaml create mode 100644 include/dt-bindings/clock/spacemit,ccu.h