| # Copyright 2023 NXP |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| description: | |
| NXP S32 Enhanced Modular IO SubSystem (eMIOS) node for S32 SoCs. |
| eMIOS provides independent unified channels (UCs), some of channels |
| have internal counter that either can be used independently or used |
| as a reference timebase (master bus) for other channels. |
| |
| compatible: "nxp,s32-emios" |
| |
| include: [base.yaml] |
| |
| properties: |
| reg: |
| required: true |
| |
| interrupts: |
| required: true |
| |
| interrupt-names: |
| required: true |
| |
| clocks: |
| required: true |
| |
| clock-divider: |
| type: int |
| required: true |
| description: | |
| Clock divider value for the global prescaler. Could be in range [1 ... 256] |
| |
| internal-cnt: |
| type: int |
| required: true |
| description: | |
| A mask for channels that have internal counter, lsb is channel 0. |
| |
| child-binding: |
| child-binding: |
| description: | |
| Node for eMIOS master bus. Each channel is capable to become a master bus has |
| a node defined in root devicetree but is disabled by default. To allow using |
| the master bus, the devicetree node should be enabled and dts properties |
| should be configured as required by application. |
| |
| For example, to enable bus A of eMIOS instance 0 that can be used as timebase |
| for channels from 0 to 22, freezed in debug mode: |
| master_bus { |
| emios0_bus_a: emios0_bus_a { |
| channel = <23>; |
| bus-type = "BUS_A"; |
| channel-mask = <0x07FFFFF>; |
| prescaler = <1>; |
| period = <65535>; |
| mode = <MCB_UP_COUNTER>; |
| freeze; |
| status = "okay"; |
| }; |
| }; |
| |
| properties: |
| channel: |
| type: int |
| required: true |
| description: | |
| Channel identifier for the master bus. |
| |
| channel-mask: |
| type: int |
| required: true |
| description: | |
| A channel mask for channels that by hardware design can use this master bus |
| as timebase for the operation, lsb is channel 0. The mask bit for this master bus |
| must always 0 because a master bus should not do other thing than a base timer. |
| |
| prescaler: |
| type: int |
| required: true |
| description: | |
| Clock divider value for internal UC prescaler. |
| Clock for internal counter = (eMIOS clock / global prescaler) / internal prescaler. |
| enum: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] |
| |
| bus-type: |
| type: string |
| required: true |
| description: | |
| Master bus type. |
| enum: |
| - "BUS_A" |
| - "BUS_B" |
| - "BUS_C" |
| - "BUS_D" |
| - "BUS_E" |
| - "BUS_F" |
| |
| mode: |
| type: string |
| required: true |
| description: | |
| Master bus mode. |
| enum: |
| - "MCB_UP_COUNTER" |
| - "MCB_UP_DOWN_COUNTER" |
| |
| period: |
| type: int |
| required: true |
| description: | |
| Default period (in ticks) for master bus at boot time. This determines PWM period |
| for channels use this bus as reference timebase. Could be in range [2 ... 65535] |
| |
| freeze: |
| type: boolean |
| description: Freeze internal counter when the chip enters Debug mode. |