162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci======================================
462306a36Sopenharmony_ciUltraSoc - HW Assisted Tracing on SoC
562306a36Sopenharmony_ci======================================
662306a36Sopenharmony_ci   :Author:   Qi Liu <liuqi115@huawei.com>
762306a36Sopenharmony_ci   :Date:     January 2023
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciIntroduction
1062306a36Sopenharmony_ci------------
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciUltraSoc SMB is a per SCCL (Super CPU Cluster) hardware. It provides a
1362306a36Sopenharmony_ciway to buffer and store CPU trace messages in a region of shared system
1462306a36Sopenharmony_cimemory. The device acts as a coresight sink device and the
1562306a36Sopenharmony_cicorresponding trace generators (ETM) are attached as source devices.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciSysfs files and directories
1862306a36Sopenharmony_ci---------------------------
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciThe SMB devices appear on the existing coresight bus alongside other
2162306a36Sopenharmony_cidevices::
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	$# ls /sys/bus/coresight/devices/
2462306a36Sopenharmony_ci	ultra_smb0   ultra_smb1   ultra_smb2   ultra_smb3
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciThe ``ultra_smb<N>`` names SMB device associated with SCCL.::
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	$# ls /sys/bus/coresight/devices/ultra_smb0
2962306a36Sopenharmony_ci	enable_sink   mgmt
3062306a36Sopenharmony_ci	$# ls /sys/bus/coresight/devices/ultra_smb0/mgmt
3162306a36Sopenharmony_ci	buf_size  buf_status  read_pos  write_pos
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciKey file items are:
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci   * ``read_pos``: Shows the value on the read pointer register.
3662306a36Sopenharmony_ci   * ``write_pos``: Shows the value on the write pointer register.
3762306a36Sopenharmony_ci   * ``buf_status``: Shows the value on the status register.
3862306a36Sopenharmony_ci     BIT(0) is zero value which means the buffer is empty.
3962306a36Sopenharmony_ci   * ``buf_size``: Shows the buffer size of each device.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciFirmware Bindings
4262306a36Sopenharmony_ci-----------------
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciThe device is only supported with ACPI. Its binding describes device
4562306a36Sopenharmony_ciidentifier, resource information and graph structure.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciThe device is identified as ACPI HID "HISI03A1". Device resources are allocated
4862306a36Sopenharmony_ciusing the _CRS method. Each device must present two base address; the first one
4962306a36Sopenharmony_ciis the configuration base address of the device, the second one is the 32-bit
5062306a36Sopenharmony_cibase address of shared system memory.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciExample::
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci    Device(USMB) {                                               \
5562306a36Sopenharmony_ci      Name(_HID, "HISI03A1")                                     \
5662306a36Sopenharmony_ci      Name(_CRS, ResourceTemplate() {                            \
5762306a36Sopenharmony_ci          QWordMemory (ResourceConsumer, , MinFixed, MaxFixed, NonCacheable, \
5862306a36Sopenharmony_ci		       ReadWrite, 0x0, 0x95100000, 0x951FFFFF, 0x0, 0x100000) \
5962306a36Sopenharmony_ci          QWordMemory (ResourceConsumer, , MinFixed, MaxFixed, Cacheable, \
6062306a36Sopenharmony_ci		       ReadWrite, 0x0, 0x50000000, 0x53FFFFFF, 0x0, 0x4000000) \
6162306a36Sopenharmony_ci      })                                                         \
6262306a36Sopenharmony_ci      Name(_DSD, Package() {                                     \
6362306a36Sopenharmony_ci        ToUUID("ab02a46b-74c7-45a2-bd68-f7d344ef2153"),          \
6462306a36Sopenharmony_ci	/* Use CoreSight Graph ACPI bindings to describe connections topology */
6562306a36Sopenharmony_ci        Package() {                                              \
6662306a36Sopenharmony_ci          0,                                                     \
6762306a36Sopenharmony_ci          1,                                                     \
6862306a36Sopenharmony_ci          Package() {                                            \
6962306a36Sopenharmony_ci            1,                                                   \
7062306a36Sopenharmony_ci            ToUUID("3ecbc8b6-1d0e-4fb3-8107-e627f805c6cd"),      \
7162306a36Sopenharmony_ci            8,                                                   \
7262306a36Sopenharmony_ci            Package() {0x8, 0, \_SB.S00.SL11.CL28.F008, 0},       \
7362306a36Sopenharmony_ci            Package() {0x9, 0, \_SB.S00.SL11.CL29.F009, 0},       \
7462306a36Sopenharmony_ci            Package() {0xa, 0, \_SB.S00.SL11.CL2A.F010, 0},       \
7562306a36Sopenharmony_ci            Package() {0xb, 0, \_SB.S00.SL11.CL2B.F011, 0},       \
7662306a36Sopenharmony_ci            Package() {0xc, 0, \_SB.S00.SL11.CL2C.F012, 0},       \
7762306a36Sopenharmony_ci            Package() {0xd, 0, \_SB.S00.SL11.CL2D.F013, 0},       \
7862306a36Sopenharmony_ci            Package() {0xe, 0, \_SB.S00.SL11.CL2E.F014, 0},       \
7962306a36Sopenharmony_ci            Package() {0xf, 0, \_SB.S00.SL11.CL2F.F015, 0},       \
8062306a36Sopenharmony_ci          }                                                      \
8162306a36Sopenharmony_ci        }                                                        \
8262306a36Sopenharmony_ci      })                                                         \
8362306a36Sopenharmony_ci    }
84