Part 1
요약·해설
공식 원문 602줄과 property 50행을 전수 대조해 required target clock·optional lane/rate/phases·PSRAM XIP and CE-break controls 제약을 보존했습니다.
mspi-aps6404l
Generic or vendor-independent
50 rows
MSPI PSRAM transaction + mapped-memory controls
Part 2
접을 수 있는 영어 원문 전체
영어 원문 전체 펼치기
2E4672C5BBF0DA5EC0406351AE3BF492A068768B0B11C95FA5586512FB805844
:orphan:
.. raw:: html
<!--
FIXME: do not limit page width until content uses another representation
format other than tables
-->
<style>.wy-nav-content { max-width: none; !important }</style>
.. dtcompatible:: mspi-aps6404l
.. _dtbinding_mspi_aps6404l:
mspi-aps6404l (on mspi bus)
###########################
Vendor: :ref:`Generic or vendor-independent <dt_no_vendor>`
Description
***********
.. code-block:: none
AP Memory APS6404L pSRAM on MSPI bus
Properties
**********
.. tabs::
.. group-tab:: Node specific properties
Properties not inherited from the base binding file.
.. list-table::
:widths: 1 1 4
:header-rows: 1
* - Name
- Type
- Details
* - ``supply-gpios``
- ``phandle-array``
- .. code-block:: none
GPIO specifier that controls power to the device.
This property should be provided when the device has a dedicated
switch that controls power to the device. The supply state is
entirely the responsibility of the device driver.
Contrast with vin-supply.
* - ``vin-supply``
- ``phandle``
- .. code-block:: none
Reference to the regulator that controls power to the device.
The referenced devicetree node must have a regulator compatible.
This property should be provided when device power is supplied
by a shared regulator. The supply state is dependent on the
request status of all devices fed by the regulator.
Contrast with supply-gpios. If both properties are provided
then the regulator must be requested before the supply GPIOS is
set to an active state, and the supply GPIOS must be set to an
inactive state before releasing the regulator.
* - ``mspi-max-frequency``
- ``int``
- .. code-block:: none
Maximum clock frequency of device to configure in Hz.
In device tree, it is normally the target operating
frequency after initialization.
This property is **required**.
* - ``mspi-io-mode``
- ``string``
- .. code-block:: none
MSPI I/O mode setting.
In device tree, it is normally the target io mode
after initialization.
Legal values: ``'MSPI_IO_MODE_SINGLE'``, ``'MSPI_IO_MODE_DUAL'``, ``'MSPI_IO_MODE_DUAL_1_1_2'``, ``'MSPI_IO_MODE_DUAL_1_2_2'``, ``'MSPI_IO_MODE_QUAD'``, ``'MSPI_IO_MODE_QUAD_1_1_4'``, ``'MSPI_IO_MODE_QUAD_1_4_4'``, ``'MSPI_IO_MODE_OCTAL'``, ``'MSPI_IO_MODE_OCTAL_1_1_8'``, ``'MSPI_IO_MODE_OCTAL_1_8_8'``, ``'MSPI_IO_MODE_HEX'``, ``'MSPI_IO_MODE_HEX_8_8_16'``, ``'MSPI_IO_MODE_HEX_8_16_16'``
* - ``mspi-data-rate``
- ``string``
- .. code-block:: none
MSPI data rate setting. In device tree, it is normally the target data rate after initialization.
Legal values: ``'MSPI_DATA_RATE_SINGLE'``, ``'MSPI_DATA_RATE_S_S_D'``, ``'MSPI_DATA_RATE_S_D_D'``, ``'MSPI_DATA_RATE_DUAL'``
* - ``mspi-hardware-ce-num``
- ``int``
- .. code-block:: none
MSPI hardware CE number.
MSPI controller may natively support multiple peripheral devices
on the same MSPI instance by assigning designated CE numbers.
* - ``mspi-cpp-mode``
- ``string``
- .. code-block:: none
MSPI clock polarity setting.
MSPI_CPP_MODE_0: CPOL=0, CPHA=0
MSPI_CPP_MODE_1: CPOL=0, CPHA=1
MSPI_CPP_MODE_2: CPOL=1, CPHA=0
MSPI_CPP_MODE_3: CPOL=1, CPHA=1
Legal values: ``'MSPI_CPP_MODE_0'``, ``'MSPI_CPP_MODE_1'``, ``'MSPI_CPP_MODE_2'``, ``'MSPI_CPP_MODE_3'``
* - ``mspi-endian``
- ``string``
- .. code-block:: none
MSPI transfer MSB or LSB first.
Legal values: ``'MSPI_LITTLE_ENDIAN'``, ``'MSPI_BIG_ENDIAN'``
* - ``mspi-ce-polarity``
- ``string``
- .. code-block:: none
MSPI CE polarity. In most cases, it is active low.
Legal values: ``'MSPI_CE_ACTIVE_LOW'``, ``'MSPI_CE_ACTIVE_HIGH'``
* - ``mspi-dqs-enable``
- ``boolean``
- .. code-block:: none
Enable DQS mode for a device which supports it.
This will be checked against dqs-support and configure
the MSPI hardware if it supports DQS mode.
* - ``mspi-hold-ce``
- ``boolean``
- .. code-block:: none
In some cases, it is necessary for the controller to manage
MSPI chip enable (under software control), so that multiple
mspi transactions can be performed without releasing CE.
A typical use case is variable length MSPI packets where
the first mspi transaction reads the length and the second
mspi transaction reads length bytes.
* - ``rx-dummy``
- ``int``
- .. code-block:: none
The number of data or clock cycles between addr and data
in RX direction.
0 means the RX dummy phase is disabled.
* - ``tx-dummy``
- ``int``
- .. code-block:: none
The number of data or clock cycles between addr and data
in TX direction.
0 means the TX dummy phase is disabled.
* - ``read-command``
- ``int``
- .. code-block:: none
Read command to be sent in RX direction.
* - ``write-command``
- ``int``
- .. code-block:: none
Write command to be sent in RX direction.
* - ``command-length``
- ``string``
- .. code-block:: none
Length in bytes of the write and read commands.
Legal values: ``'INSTR_DISABLED'``, ``'INSTR_1_BYTE'``, ``'INSTR_2_BYTE'``
* - ``address-length``
- ``string``
- .. code-block:: none
Length in bytes of address to be sent in address phase.
Legal values: ``'ADDR_DISABLED'``, ``'ADDR_1_BYTE'``, ``'ADDR_2_BYTE'``, ``'ADDR_3_BYTE'``, ``'ADDR_4_BYTE'``
* - ``xip-config``
- ``array``
- .. code-block:: none
Array of parameters to configure the xip feature.
enable: whether XIP feature is enabled.
address_offset: The offset in bytes to the start of the
platform specific XIP address region.
size: The size in bytes of the XIP address region one
wish to enable or disable.
permission: The permission granted to the region. (RW/RO)
For controller that support this feature. One may map the device
memory into Soc system memory map. i.e. XIP address region
So that the device may be used as an external RAM and execute code.
default =
<
.enable = false;
.address_offset = 0;
.size = 0;
.permission = 0;
>
* - ``scramble-config``
- ``array``
- .. code-block:: none
Array of parameters to configure the scrambling feature.
enable: whether scrambling feature is enabled.
address_offset: The offset in bytes to the start address which
can be the offset to the start of the platform
specific XIP address region or phyiscal device address.
size: The size in bytes of the region one wish to enable or disable.
For controller that support hardware scrambling, one may use it for
additional security to protect data or code stored in external devices.
default =
<
.enable = false;
.address_offset = 0;
.size = 0;
>
* - ``ce-break-config``
- ``array``
- .. code-block:: none
Array of parameters to configure the auto CE break feature.
mem_boundary: Memory boundary in bytes of a device that a transfer
should't cross.
time_to_break: The maximum time of a transfer should't exceed for
a device in micro seconds(us).
This is typically used with devices that has memory boundaries or
requires periodic internal refresh. e.g. psram
default =
<
.mem_boundary = 0;
.time_to_break = 0;
>
* - ``jedec-id``
- ``uint8-array``
- .. code-block:: none
JEDEC ID as manufacturer ID, memory type, memory density
* - ``size``
- ``int``
- .. code-block:: none
flash capacity in bits
* - ``sfdp-bfp``
- ``uint8-array``
- .. code-block:: none
Contains the 32-bit words in little-endian byte order from the
JESD216 Serial Flash Discoverable Parameters Basic Flash
Parameters table. This provides flash-specific configuration
information in cases were runtime retrieval of SFDP data
is not desired.
* - ``quad-enable-requirements``
- ``string``
- .. code-block:: none
Quad Enable Requirements value from JESD216 BFP DW15.
Use NONE if the device detects 1-1-4 and 1-4-4 modes by the
instruction. Use S1B6 if QE is bit 6 of the first status register
byte, and can be configured by reading then writing one byte with
RDSR and WRSR. For other fields see the specification.
Legal values: ``'NONE'``, ``'S2B1v1'``, ``'S1B6'``, ``'S2B7'``, ``'S2B1v4'``, ``'S2B1v5'``, ``'S2B1v6'``
* - ``enter-4byte-addr``
- ``int``
- .. code-block:: none
Enter 4-Byte Addressing value from JESD216 BFP DW16
This property is ignored if the device is configured to use SFDP data
from the sfdp-bfp property (CONFIG_SPI_NOR_SFDP_DEVICETREE) or to read
SFDP properties at runtime (CONFIG_SPI_NOR_SFDP_RUNTIME).
For CONFIG_SPI_NOR_SFDP_MINIMAL this is the 8-bit value from bits 31:24
of DW16 identifying ways a device can be placed into 4-byte addressing
mode. If provided as a non-zero value the driver assumes that 4-byte
addressing is require to access the full address range, and
automatically puts the device into 4-byte address mode when the device
is initialized.
* - ``page-size``
- ``int``
- .. code-block:: none
Number of bytes in a page from JESD216 BFP DW11
This property is only used in the CONFIG_SPI_NOR_SFDP_MINIMAL configuration.
It is ignored if the device is configured to use SFDP data
from the sfdp-bfp property (CONFIG_SPI_NOR_SFDP_DEVICETREE) or
if the SFDP parameters are read from the device at
runtime (CONFIG_SPI_NOR_SFDP_RUNTIME).
The default value is 256 bytes if the value is not specified.
.. group-tab:: Deprecated node specific properties
Deprecated properties not inherited from the base binding file.
(None)
.. group-tab:: Base properties
Properties inherited from the base binding file, which defines
common properties that may be set on many nodes. Not all of these
may apply to the "mspi-aps6404l" compatible.
.. list-table::
:widths: 1 1 4
:header-rows: 1
* - Name
- Type
- Details
* - ``wakeup-source``
- ``boolean``
- .. code-block:: none
Property to identify that a device can be used as wake up source.
When this property is provided a specific flag is set into the
device that tells the system that the device is capable of
wake up the system.
Wake up capable devices are disabled (interruptions will not wake up
the system) by default but they can be enabled at runtime if necessary.
* - ``power-domain``
- ``phandle``
- .. code-block:: none
Power domain the device belongs to.
The device will be notified when the power domain it belongs to is either
suspended or resumed.
* - ``zephyr,pm-device-runtime-auto``
- ``boolean``
- .. code-block:: none
Automatically configure the device for runtime power management after the
init function runs.
* - ``zephyr,disabling-power-states``
- ``phandles``
- .. code-block:: none
List of power states that will disable this device power.
* - ``status``
- ``string``
- .. code-block:: none
indicates the operational status of a device
Legal values: ``'ok'``, ``'okay'``, ``'disabled'``, ``'reserved'``, ``'fail'``, ``'fail-sss'``
See :ref:`dt-important-props` for more information.
* - ``compatible``
- ``string-array``
- .. code-block:: none
compatible strings
This property is **required**.
See :ref:`dt-important-props` for more information.
* - ``reg``
- ``array``
- .. code-block:: none
register space
This property is **required**.
See :ref:`dt-important-props` for more information.
* - ``reg-names``
- ``string-array``
- .. code-block:: none
name of each register space
* - ``interrupts``
- ``array``
- .. code-block:: none
interrupts for device
See :ref:`dt-important-props` for more information.
* - ``interrupts-extended``
- ``compound``
- .. code-block:: none
extended interrupt specifier for device
* - ``interrupt-names``
- ``string-array``
- .. code-block:: none
name of each interrupt
* - ``interrupt-parent``
- ``phandle``
- .. code-block:: none
phandle to interrupt controller node
* - ``label``
- ``string``
- .. code-block:: none
Human readable string describing the device (used as device_get_binding() argument)
See :ref:`dt-important-props` for more information.
This property is **deprecated**.
* - ``clocks``
- ``phandle-array``
- .. code-block:: none
Clock gate information
* - ``clock-names``
- ``string-array``
- .. code-block:: none
name of each clock
* - ``#address-cells``
- ``int``
- .. code-block:: none
number of address cells in reg property
* - ``#size-cells``
- ``int``
- .. code-block:: none
number of size cells in reg property
* - ``dmas``
- ``phandle-array``
- .. code-block:: none
DMA channels specifiers
* - ``dma-names``
- ``string-array``
- .. code-block:: none
Provided names of DMA channel specifiers
* - ``io-channels``
- ``phandle-array``
- .. code-block:: none
IO channels specifiers
* - ``io-channel-names``
- ``string-array``
- .. code-block:: none
Provided names of IO channel specifiers
* - ``mboxes``
- ``phandle-array``
- .. code-block:: none
mailbox / IPM channels specifiers
* - ``mbox-names``
- ``string-array``
- .. code-block:: none
Provided names of mailbox / IPM channel specifiers
* - ``zephyr,deferred-init``
- ``boolean``
- .. code-block:: none
Do not initialize device automatically on boot. Device should be manually
initialized using device_init().
Part 3
한국어 전문 번역
mspi-aps6404l
Vendor: Generic or vendor-independent
공식 설명
MSPI bus에 연결된 AP Memory APS6404L pSRAM휘발성 PSRAM을 MSPI address space에 연결
mspi-max-frequency와 base compatible·reg가 필수입니다. I/O lane mode, single/dual-edge data rate, CPP mode, endian, CE polarity, DQS와 CE hold는 초기화 뒤 목표 bus 상태를 기술합니다.
Frequency · lane mode · data rate
Command · address · dummy cycles
Volatile pseudo-SRAM
XIP · scrambling · CE break
Command·address 길이와 RX/TX dummy cycle은 선택입니다. xip-config는 system address map, scramble-config는 hardware scrambling 범위, ce-break-config는 transfer boundary와 microsecond 제한을 설정합니다. PSRAM은 refresh와 CE timing에 민감하므로 CE break 값은 controller와 device datasheet를 함께 확인합니다.
공통 schema가 JEDEC ID·SFDP·quad-enable 같은 serial-flash 항목도 선택값으로 상속하지만, 공식 APS6404L page에서 필수로 강제하지는 않습니다.
속성 전체 번역
공식 node 26개와 base 24개 property를 모두 번역했습니다.
노드 전용 속성 · 26개
| 이름 | 형식 | 설명과 제약 |
|---|---|---|
supply-gpios | phandle-array | Device 전원을 직접 제어하는 GPIO specifier입니다. Regulator와 함께 사용하면 regulator를 먼저 켠 뒤 GPIO를 active로 해야 합니다. |
vin-supply | phandle | Device 입력 전원 regulator의 phandle입니다. supply-gpios와 함께 사용하면 GPIO를 inactive로 한 뒤 regulator를 해제합니다. |
mspi-max-frequency | int | Device를 구성할 최대 MSPI clock frequency이며 Hz 단위입니다. 일반적으로 초기화 뒤 목표 operating frequency입니다. 필수 |
mspi-io-mode | string | 초기화 뒤 사용할 목표 MSPI I/O lane mode입니다. Single·dual·quad·octal·hex 계열의 command/address/data lane 조합 중 선택합니다. 허용값: 'MSPI_IO_MODE_SINGLE', 'MSPI_IO_MODE_DUAL', 'MSPI_IO_MODE_DUAL_1_1_2', 'MSPI_IO_MODE_DUAL_1_2_2', 'MSPI_IO_MODE_QUAD', 'MSPI_IO_MODE_QUAD_1_1_4', 'MSPI_IO_MODE_QUAD_1_4_4', 'MSPI_IO_MODE_OCTAL', 'MSPI_IO_MODE_OCTAL_1_1_8', 'MSPI_IO_MODE_OCTAL_1_8_8', 'MSPI_IO_MODE_HEX', 'MSPI_IO_MODE_HEX_8_8_16', 'MSPI_IO_MODE_HEX_8_16_16' |
mspi-data-rate | string | 초기화 뒤 사용할 목표 MSPI data-rate 조합입니다. Single/dual-edge 단계 조합을 공식 허용값에서 선택합니다. 허용값: 'MSPI_DATA_RATE_SINGLE', 'MSPI_DATA_RATE_S_S_D', 'MSPI_DATA_RATE_S_D_D', 'MSPI_DATA_RATE_DUAL' |
mspi-hardware-ce-num | int | Controller hardware CE 번호입니다. CE0 또는 CE1이며 controller에 같은 번호의 CE가 여러 개 있을 수 있습니다. |
mspi-cpp-mode | string | MSPI clock polarity와 phase 조합입니다. Mode 0~3이 CPOL/CPHA 00·01·10·11에 대응합니다. 허용값: 'MSPI_CPP_MODE_0', 'MSPI_CPP_MODE_1', 'MSPI_CPP_MODE_2', 'MSPI_CPP_MODE_3' |
mspi-endian | string | MSPI transfer에서 MSB와 LSB 중 어느 bit를 먼저 보낼지 선택합니다. 허용값: 'MSPI_LITTLE_ENDIAN', 'MSPI_BIG_ENDIAN' |
mspi-ce-polarity | string | Device chip-enable polarity입니다. 대부분 active-low지만 공식 허용값에서 active-high도 선택할 수 있습니다. 허용값: 'MSPI_CE_ACTIVE_LOW', 'MSPI_CE_ACTIVE_HIGH' |
mspi-dqs-enable | boolean | Device의 DQS mode를 활성화합니다. Controller의 dqs-support와 대조한 뒤 hardware를 구성합니다. |
mspi-hold-ce | boolean | 여러 MSPI transaction 사이에 CE를 해제하지 않고 software control로 유지합니다. 길이를 먼저 읽고 이어서 payload를 읽는 variable-length packet 등에 사용합니다. |
rx-dummy | int | RX address phase와 data phase 사이의 data 또는 clock cycle 수입니다. 0이면 RX dummy phase를 끕니다. |
tx-dummy | int | TX address phase와 data phase 사이의 data 또는 clock cycle 수입니다. 0이면 TX dummy phase를 끕니다. |
read-command | int | RX 방향에서 보낼 read command 값입니다. |
write-command | int | Write command 값입니다. 공식 3.7.0 원문은 이를 RX 방향에서 보낸다고 적으므로 그 표현을 자동 교정하지 않았습니다. |
command-length | string | Read/write command 길이입니다. Instruction 없음, 1 byte, 2 byte 중 선택합니다. 허용값: 'INSTR_DISABLED', 'INSTR_1_BYTE', 'INSTR_2_BYTE' |
address-length | string | Address phase에서 보낼 주소 길이입니다. Address 없음 또는 1~4 byte 중 선택합니다. 허용값: 'ADDR_DISABLED', 'ADDR_1_BYTE', 'ADDR_2_BYTE', 'ADDR_3_BYTE', 'ADDR_4_BYTE' |
xip-config | array | XIP 설정 배열입니다. Enable, platform XIP region 시작 offset, byte 크기, RW/RO permission을 담아 external memory를 system map에 연결합니다. 기본 field 값은 모두 0/false입니다. |
scramble-config | array | Hardware scrambling 설정 배열입니다. Enable, XIP 또는 physical-device 기준 address offset, byte 크기를 담으며 external code/data 보호에 사용합니다. 기본 field 값은 모두 0/false입니다. |
ce-break-config | array | 자동 CE break 설정 배열입니다. Transfer가 넘지 말아야 할 byte boundary와 microsecond 단위 최대 시간을 담으며 PSRAM boundary·refresh 조건 등에 사용합니다. 기본값은 둘 다 0입니다. |
jedec-id | uint8-array | Manufacturer ID·memory type·memory density 순서의 JEDEC ID byte 배열입니다. |
size | int | Device 전체 용량이며 bit 단위입니다. APS6404L에서는 PSRAM, ATXP032에서는 NOR flash 용량입니다. |
sfdp-bfp | uint8-array | JESD216 SFDP Basic Flash Parameters table의 32-bit word를 little-endian byte 순서로 담습니다. Runtime SFDP 조회를 원하지 않을 때 device별 정보를 제공합니다. |
quad-enable-requirements | string | JESD216 BFP DW15의 Quad Enable Requirements 값입니다. Instruction 자체가 1-1-4/1-4-4를 구분하면 NONE을 사용하고 나머지는 QE bit 위치·쓰기 절차에 맞는 값을 선택합니다. 허용값: 'NONE', 'S2B1v1', 'S1B6', 'S2B7', 'S2B1v4', 'S2B1v5', 'S2B1v6' |
enter-4byte-addr | int | JESD216 BFP DW16의 4-byte addressing 진입 방식 값입니다. SFDP를 devicetree 또는 runtime에서 얻는 구성에서는 무시되고 minimal 구성에서 사용됩니다. |
page-size | int | JESD216 BFP DW11의 page byte 수입니다. SFDP minimal 구성에서만 사용하며 생략 시 기본값은 256 byte입니다. |
Base binding property · 24개
공통 기본 바인딩에서 상속한 속성입니다. 이 compatible에서 사용하지 않는 속성도 공식 참조 문서에 실려 있으면 함께 표시합니다.
| 이름 | 형식 | 설명과 제약 |
|---|---|---|
wakeup-source | boolean | 이 장치를 시스템 깨우기에 사용할 수 있음을 나타냅니다. 이 속성이 있으면 깨우기 지원 플래그가 설정됩니다. 기본 상태에서는 장치의 인터럽트로 시스템을 깨우지 않으며, 실행 중에 깨우기 기능을 활성화할 수 있습니다. |
power-domain | phandle | 장치가 속한 전원 도메인의 phandle입니다. 해당 전원 도메인이 일시 중단되거나 다시 동작하면 장치에 알림이 전달됩니다. |
zephyr,pm-device-runtime-auto | boolean | 초기화 함수 실행 후 장치의 런타임 전원 관리를 자동으로 설정합니다. |
zephyr,disabling-power-states | phandles | 이 장치의 전원이 꺼지는 전원 상태 목록입니다. |
status | string | 장치의 동작 상태를 나타냅니다. 허용값: 'ok', 'okay', 'disabled', 'reserved', 'fail', 'fail-sss' |
compatible | string-array | 이 노드에 적용할 바인딩과 드라이버를 식별하는 compatible 문자열 목록입니다. 필수 |
reg | array | 장치 레지스터의 주소 범위를 지정합니다. 필수 |
reg-names | string-array | 각 register space의 이름입니다. |
interrupts | array | 장치에서 사용하는 인터럽트를 지정하는 목록입니다. |
interrupts-extended | compound | 인터럽트 컨트롤러의 phandle을 함께 지정하는 확장 형식의 인터럽트 명세입니다. |
interrupt-names | string-array | 각 interrupt의 이름입니다. |
interrupt-parent | phandle | 인터럽트 컨트롤러 노드를 가리키는 phandle입니다. |
label | string | 사람이 장치를 알아볼 수 있도록 붙이는 이름입니다. 과거에는 device_get_binding()의 인자로 사용했습니다. 사용 중단됨 |
clocks | phandle-array | 클록 게이트 또는 클록 공급원을 지정하는 phandle 배열입니다. |
clock-names | string-array | 각 clock의 이름입니다. |
#address-cells | int | 하위 노드의 reg 속성에서 주소를 나타내는 데 쓰는 셀 수입니다. |
#size-cells | int | 하위 노드의 reg 속성에서 크기를 나타내는 데 쓰는 셀 수입니다. |
dmas | phandle-array | DMA 채널을 지정하는 phandle 배열입니다. |
dma-names | string-array | 지정한 DMA 채널의 이름입니다. |
io-channels | phandle-array | I/O 채널을 지정하는 phandle 배열입니다. |
io-channel-names | string-array | 지정한 I/O 채널의 이름입니다. |
mboxes | phandle-array | 메일박스/IPM 채널을 지정하는 phandle 배열입니다. |
mbox-names | string-array | 지정한 메일박스/IPM 채널의 이름입니다. |
zephyr,deferred-init | boolean | 부팅할 때 장치를 자동으로 초기화하지 않습니다. 이후 device_init()를 호출해 직접 초기화해야 합니다. |
Source
출처
영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.