117 lines
3.2 KiB
YAML
117 lines
3.2 KiB
YAML
# 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.
|