€•�¨Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ(/translations/zh_CN/misc-devices/amd-sbi”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/zh_TW/misc-devices/amd-sbi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/it_IT/misc-devices/amd-sbi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/ja_JP/misc-devices/amd-sbi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/ko_KR/misc-devices/amd-sbi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/pt_BR/misc-devices/amd-sbi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ(/translations/sp_SP/misc-devices/amd-sbi”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒB/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒAMD SIDE BAND interface”h]”hŒAMD SIDE BAND interface”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXjSome AMD Zen based processors supports system management functionality via side-band interface (SBI) called Advanced Platform Management Link (APML). APML is an I2C/I3C based 2-wire processor target interface. APML is used to communicate with the Remote Management Interface (SB Remote Management Interface (SB-RMI) and SB Temperature Sensor Interface (SB-TSI)).”h]”hXjSome AMD Zen based processors supports system management functionality via side-band interface (SBI) called Advanced Platform Management Link (APML). APML is an I2C/I3C based 2-wire processor target interface. APML is used to communicate with the Remote Management Interface (SB Remote Management Interface (SB-RMI) and SB Temperature Sensor Interface (SB-TSI)).”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒ€More details on the interface can be found in chapter "5 Advanced Platform Management Link (APML)" of the family/model PPR [1]_.”h]”(hŒMore details on the interface can be found in chapter “5 Advanced Platform Management Link (APML)â€� of the family/model PPR ”…”�”}”(hhíh²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[1]_”h]”hŒ1”…”�”}”(hh÷h²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œrefid”Œid2”Œdocname”Œmisc-devices/amd-sbi”uh1hõhhíŒresolved”KubhŒ.”…”�”}”(hhíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒfootnote”“”)�”}”(hŒ2https://docs.amd.com/v/u/en-US/55898_B1_pub_0_50 ”h]”(hŒlabel”“”)�”}”(hŒ1”h]”hŒ1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhÞ)�”}”(hŒ0https://docs.amd.com/v/u/en-US/55898_B1_pub_0_50”h]”hŒ reference”“”)�”}”(hj-h]”hŒ0https://docs.amd.com/v/u/en-US/55898_B1_pub_0_50”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j-uh1j/hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubeh}”(h]”jah ]”h"]”Œ1”ah$]”h&]”jajj uh1jh³hÇh´KhhÊh²hj KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ SBRMI device”h]”hŒ SBRMI device”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjLh²hh³hÇh´KubhÞ)�”}”(hŒ§apml_sbrmi driver under the drivers/misc/amd-sbi creates miscdevice /dev/sbrmi-* to let user space programs run APML mailbox, CPUID, MCAMSR and register xfer commands.”h]”hŒ§apml_sbrmi driver under the drivers/misc/amd-sbi creates miscdevice /dev/sbrmi-* to let user space programs run APML mailbox, CPUID, MCAMSR and register xfer commands.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjLh²hubhÞ)�”}”(hŒŒRegister sets is common across APML protocols. IOCTL is providing synchronization among protocols as transactions may create race condition.”h]”hŒŒRegister sets is common across APML protocols. IOCTL is providing synchronization among protocols as transactions may create race condition.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjLh²hubhŒ literal_block”“”)�”}”(hŒ]$ ls -al /dev/sbrmi-3c crw------- 1 root root 10, 53 Jul 10 11:13 /dev/sbrmi-3c”h]”hŒ]$ ls -al /dev/sbrmi-3c crw------- 1 root root 10, 53 Jul 10 11:13 /dev/sbrmi-3c”…”�”}”hj{sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œbash”Œhighlight_args”}”uh1jyh³hÇh´KhjLh²hubhÞ)�”}”(hŒyapml_sbrmi driver registers hwmon sensors for monitoring power_cap_max, current power consumption and managing power_cap.”h]”hŒyapml_sbrmi driver registers hwmon sensors for monitoring power_cap_max, current power consumption and managing power_cap.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K$hjLh²hubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ‘Characteristics of the dev node: * Differnet xfer protocols are defined: * Mailbox * CPUID * MCA_MSR * Register xfer ”h]”(hŒterm”“”)�”}”(hŒ Characteristics of the dev node:”h]”hŒ Characteristics of the dev node:”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´K,hj£ubhŒ definition”“”)�”}”(hhh]”hŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hŒfDiffernet xfer protocols are defined: * Mailbox * CPUID * MCA_MSR * Register xfer ”h]”j�)�”}”(hhh]”j¢)�”}”(hŒRDiffernet xfer protocols are defined: * Mailbox * CPUID * MCA_MSR * Register xfer ”h]”(j¨)�”}”(hŒ%Differnet xfer protocols are defined:”h]”hŒ%Differnet xfer protocols are defined:”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´K,hjÊubj¸)�”}”(hhh]”j½)�”}”(hhh]”(jÂ)�”}”(hŒMailbox”h]”hÞ)�”}”(hjäh]”hŒMailbox”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjßubjÂ)�”}”(hŒCPUID”h]”hÞ)�”}”(hjûh]”hŒCPUID”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K*hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjßubjÂ)�”}”(hŒMCA_MSR”h]”hÞ)�”}”(hjh]”hŒMCA_MSR”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjßubjÂ)�”}”(hŒRegister xfer ”h]”hÞ)�”}”(hŒ Register xfer”h]”hŒ Register xfer”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K,hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjßubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1j¼h³hÇh´K)hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³hÇh´K,hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¾ubah}”(h]”h ]”h"]”h$]”h&]”jEjFuh1j¼h³hÇh´K(hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³hÇh´K,hjžubj¢)�”}”(hŒ­Access restrictions: * Only root user is allowed to open the file. * APML Mailbox messages and Register xfer access are read-write, * CPUID and MCA_MSR access is read-only. ”h]”(j¨)�”}”(hŒAccess restrictions:”h]”hŒAccess restrictions:”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´K1hjqubj¸)�”}”(hhh]”j½)�”}”(hhh]”(jÂ)�”}”(hŒ+Only root user is allowed to open the file.”h]”hÞ)�”}”(hj‹h]”hŒ+Only root user is allowed to open the file.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj†ubjÂ)�”}”(hŒ>APML Mailbox messages and Register xfer access are read-write,”h]”hÞ)�”}”(hj¢h]”hŒ>APML Mailbox messages and Register xfer access are read-write,”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K0hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj†ubjÂ)�”}”(hŒ'CPUID and MCA_MSR access is read-only. ”h]”hÞ)�”}”(hŒ&CPUID and MCA_MSR access is read-only.”h]”hŒ&CPUID and MCA_MSR access is read-only.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K1hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj†ubeh}”(h]”h ]”h"]”h$]”h&]”jEjFuh1j¼h³hÇh´K/hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³hÇh´K1hjžh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœhjLh²hh³Nh´Nubeh}”(h]”Œ sbrmi-device”ah ]”h"]”Œ sbrmi device”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ SBTSI device”h]”hŒ SBTSI device”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjïh²hh³hÇh´K4ubhÞ)�”}”(hŒ�sbtsi driver under the drivers/misc/amd-sbi creates miscdevice /dev/sbtsi-* to let user space programs run APML TSI register transfer commands.”h]”hŒ�sbtsi driver under the drivers/misc/amd-sbi creates miscdevice /dev/sbtsi-* to let user space programs run APML TSI register transfer commands.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjïh²hubhÞ)�”}”(hŒˆThe driver supports both I2C and I3C transports for SB-TSI targets. The transport is selected by the bus where the device is enumerated.”h]”hŒˆThe driver supports both I2C and I3C transports for SB-TSI targets. The transport is selected by the bus where the device is enumerated.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hjïh²hubj�)�”}”(hhh]”j¢)�”}”(hŒfMisc device: * In 1P socket 0: /dev/sbtsi-4c * In 2P socket 0: /dev/sbtsi-4c, socket 1: /dev/sbtsi-48 ”h]”(j¨)�”}”(hŒ Misc device:”h]”hŒ Misc device:”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´K?hjubj¸)�”}”(hhh]”j½)�”}”(hhh]”(jÂ)�”}”(hŒIn 1P socket 0: /dev/sbtsi-4c”h]”hÞ)�”}”(hj9h]”hŒIn 1P socket 0: /dev/sbtsi-4c”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K>hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj4ubjÂ)�”}”(hŒ7In 2P socket 0: /dev/sbtsi-4c, socket 1: /dev/sbtsi-48 ”h]”hÞ)�”}”(hŒ6In 2P socket 0: /dev/sbtsi-4c, socket 1: /dev/sbtsi-48”h]”hŒ6In 2P socket 0: /dev/sbtsi-4c, socket 1: /dev/sbtsi-48”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K?hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj4ubeh}”(h]”h ]”h"]”h$]”h&]”jEjFuh1j¼h³hÇh´K>hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³hÇh´K?hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjïh²hh³Nh´Nubjz)�”}”(hŒ]$ ls -al /dev/sbtsi-4c crw------- 1 root root 10, 116 Apr 2 05:22 /dev/sbtsi-4c”h]”hŒ]$ ls -al /dev/sbtsi-4c crw------- 1 root root 10, 116 Apr 2 05:22 /dev/sbtsi-4c”…”�”}”hj~sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj‰‰jŠŒbash”jŒ}”uh1jyh³hÇh´KAhjïh²hubj�)�”}”(hhh]”j¢)�”}”(hŒvAccess restrictions: * Only root user is allowed to open the file. * APML TSI Register transfer access is read-write. ”h]”(j¨)�”}”(hŒAccess restrictions:”h]”hŒAccess restrictions:”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j§h³hÇh´KIhj‘ubj¸)�”}”(hhh]”j½)�”}”(hhh]”(jÂ)�”}”(hŒ+Only root user is allowed to open the file.”h]”hÞ)�”}”(hj«h]”hŒ+Only root user is allowed to open the file.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KHhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¦ubjÂ)�”}”(hŒ1APML TSI Register transfer access is read-write. ”h]”hÞ)�”}”(hŒ0APML TSI Register transfer access is read-write.”h]”hŒ0APML TSI Register transfer access is read-write.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KIhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”jEjFuh1j¼h³hÇh´KHhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³hÇh´KIhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjïh²hh³Nh´Nubeh}”(h]”Œ sbtsi-device”ah ]”h"]”Œ sbtsi device”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K4ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSBTSI hwmon interface”h]”hŒSBTSI hwmon interface”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjøh²hh³hÇh´KLubhÞ)�”}”(hXThe sbtsi_temp auxiliary driver binds to the auxiliary device published by the core sbtsi driver on the auxiliary bus. The auxiliary device is named amd-sbtsi.temp-sensor., where is the device's transfer address: the client address for I2C, or the assigned-address for I3C.”h]”hXThe sbtsi_temp auxiliary driver binds to the auxiliary device published by the core sbtsi driver on the auxiliary bus. The auxiliary device is named amd-sbtsi.temp-sensor., where is the device’s transfer address: the client address for I2C, or the assigned-address for I3C.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KNhjøh²hubhÞ)�”}”(hXNote that the auxiliary bus formats in decimal, whereas the /dev/sbtsi-* misc node formats its address in hex. The two therefore differ for the same device: an I2C/I3C sensor at address 0x4c appears as the misc node /dev/sbtsi-4c and the auxiliary device amd-sbtsi.temp-sensor.76.”h]”hXNote that the auxiliary bus formats in decimal, whereas the /dev/sbtsi-* misc node formats its address in hex. The two therefore differ for the same device: an I2C/I3C sensor at address 0x4c appears as the misc node /dev/sbtsi-4c and the auxiliary device amd-sbtsi.temp-sensor.76.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KShjøh²hubhÞ)�”}”(hŒ„It registers a hwmon device, providing a standard Linux hwmon interface for reading CPU temperature and managing temperature limits.”h]”hŒ„It registers a hwmon device, providing a standard Linux hwmon interface for reading CPU temperature and managing temperature limits.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KYhjøh²hubhÞ)�”}”(hŒmThe hwmon device appears under ``/sys/class/hwmon/`` when both ``sbtsi.ko`` and ``sbtsi_temp.ko`` are loaded.”h]”(hŒThe hwmon device appears under ”…”�”}”(hj3h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``/sys/class/hwmon/``”h]”hŒ/sys/class/hwmon/”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj3ubhŒ when both ”…”�”}”(hj3h²hh³Nh´Nubj<)�”}”(hŒ ``sbtsi.ko``”h]”hŒsbtsi.ko”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj3ubhŒ and ”…”�”}”(hj3h²hh³Nh´Nubj<)�”}”(hŒ``sbtsi_temp.ko``”h]”hŒ sbtsi_temp.ko”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj3ubhŒ are loaded.”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K\hjøh²hubhÞ)�”}”(hŒVerify auxiliary bus device::”h]”hŒVerify auxiliary bus device:”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K_hjøh²hubjz)�”}”(hŒdls /sys/bus/auxiliary/devices/ # e.g. amd-sbtsi.temp-sensor.76 for an I2C/I3C sensor at address 0x4c”h]”hŒdls /sys/bus/auxiliary/devices/ # e.g. amd-sbtsi.temp-sensor.76 for an I2C/I3C sensor at address 0x4c”…”�”}”hj‡sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jyh³hÇh´Kahjøh²hubhÞ)�”}”(hŒExample usage::”h]”hŒExample usage:”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kdhjøh²hubjz)�”}”(hŒÏ# Read current temperature cat /sys/class/hwmon/hwmon/temp1_input # Set high temperature limit to 70 °C echo 70000 > /sys/class/hwmon/hwmon/temp1_max # Verify cat /sys/class/hwmon/hwmon/temp1_max”h]”hŒÏ# Read current temperature cat /sys/class/hwmon/hwmon/temp1_input # Set high temperature limit to 70 °C echo 70000 > /sys/class/hwmon/hwmon/temp1_max # Verify cat /sys/class/hwmon/hwmon/temp1_max”…”�”}”hj£sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jyh³hÇh´Kfhjøh²hubeh}”(h]”Œsbtsi-hwmon-interface”ah ]”h"]”Œsbtsi hwmon interface”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KLubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Driver IOCTLs”h]”hŒ Driver IOCTLs”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¹h²hh³hÇh´KpubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”ŒSBRMI_IOCTL_MBOX_CMD (C macro)”Œc.SBRMI_IOCTL_MBOX_CMD”hNt”auh1jÊhj¹h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒSBRMI_IOCTL_MBOX_CMD”h]”hŒdesc_signature_line”“”)�”}”(hŒSBRMI_IOCTL_MBOX_CMD”h]”hŒ desc_name”“”)�”}”(hŒSBRMI_IOCTL_MBOX_CMD”h]”hŒ desc_sig_name”“”)�”}”(hjäh]”hŒSBRMI_IOCTL_MBOX_CMD”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jòhjîubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jìhjèh²hh³hÇh´Krubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jæŒsphinx_line_type”Œ declarator”hjâh²hh³hÇh´Krubah}”(h]”jÙah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jàh³hÇh´KrhjÝh²hubhŒ desc_content”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝh²hh³hÇh´Krubeh}”(h]”h ]”(Œc”Œmacro”eh"]”h$]”h&]”Œdomain”j,Œobjtype”j-Œdesctype”j-Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jÛh²hhj¹h³Nh´NubhÞ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj9h]”hŒ Parameters”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:115: ./include/uapi/misc/amd-apml.h”h´KYhj¹h²hubj�)�”}”(hhh]”j¢)�”}”(hŒ‚**struct** apml_mbox_msg Pointer to the :c:type:`struct apml_mbox_msg ` that will contain the protocol information ”h]”(j¨)�”}”(hŒ**struct** apml_mbox_msg”h]”(j<)�”}”(hŒ **struct**”h]”hŒstruct”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hjXubhŒ apml_mbox_msg”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j§h³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:115: ./include/uapi/misc/amd-apml.h”h´K]hjTubj¸)�”}”(hhh]”hÞ)�”}”(hŒhPointer to the :c:type:`struct apml_mbox_msg ` that will contain the protocol information”h]”(hŒPointer to the ”…”�”}”(hjxh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct apml_mbox_msg `”h]”j<)�”}”(hj‚h]”hŒstruct apml_mbox_msg”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”(Œxref”j,Œc-type”eh"]”h$]”h&]”uh1j;hj€ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j,Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbŒ reftarget”Œ apml_mbox_msg”uh1hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:115: ./include/uapi/misc/amd-apml.h”h´K\hjxubhŒ+ that will contain the protocol information”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j©h´K\hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³jth´K]hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¹h²hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:115: ./include/uapi/misc/amd-apml.h”h´NubhÞ)�”}”(hX**Description** IOCTL command for APML messages using generic _IOWR The IOCTL provides userspace access to AMD sideband mailbox protocol - Mailbox message read/write(0x0~0xFF) - returning "-EFAULT" if none of the above "-EPROTOTYPE" error is returned to provide additional error details”h]”(j<)�”}”(hŒ**Description**”h]”hŒ Description”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hjÇubhX IOCTL command for APML messages using generic _IOWR The IOCTL provides userspace access to AMD sideband mailbox protocol - Mailbox message read/write(0x0~0xFF) - returning “-EFAULTâ€� if none of the above “-EPROTOTYPEâ€� error is returned to provide additional error details”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:115: ./include/uapi/misc/amd-apml.h”h´K_hj¹h²hubjË)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j׌SBRMI_IOCTL_CPUID_CMD (C macro)”Œc.SBRMI_IOCTL_CPUID_CMD”hNt”auh1jÊhj¹h²hh³Nh´NubjÜ)�”}”(hhh]”(já)�”}”(hŒSBRMI_IOCTL_CPUID_CMD”h]”jç)�”}”(hŒSBRMI_IOCTL_CPUID_CMD”h]”jí)�”}”(hŒSBRMI_IOCTL_CPUID_CMD”h]”jó)�”}”(hj÷h]”hŒSBRMI_IOCTL_CPUID_CMD”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jòhjýubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jìhjùh²hh³hÇh´Kuubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jæjjhjõh²hh³hÇh´Kuubah}”(h]”jðah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jàh³hÇh´Kuhjòh²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jhjòh²hh³hÇh´Kuubeh}”(h]”h ]”(j,Œmacro”eh"]”h$]”h&]”j1j,j2j,j3j,j4‰j5‰j6‰uh1jÛh²hhj¹h³Nh´NubhÞ)�”}”(hŒ**Parameters**”h]”j<)�”}”(hj2h]”hŒ Parameters”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:118: ./include/uapi/misc/amd-apml.h”h´Kkhj¹h²hubj�)�”}”(hhh]”j¢)�”}”(hŒ…**struct** apml_cpuid_msg Pointer to the :c:type:`struct apml_cpuid_msg ` that will contain the protocol information ”h]”(j¨)�”}”(hŒ**struct** apml_cpuid_msg”h]”(j<)�”}”(hŒ **struct**”h]”hŒstruct”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hjOubhŒ apml_cpuid_msg”…”�”}”(hjOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j§h³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:118: ./include/uapi/misc/amd-apml.h”h´KohjKubj¸)�”}”(hhh]”hÞ)�”}”(hŒjPointer to the :c:type:`struct apml_cpuid_msg ` that will contain the protocol information”h]”(hŒPointer to the ”…”�”}”(hjoh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct apml_cpuid_msg `”h]”j<)�”}”(hjyh]”hŒstruct apml_cpuid_msg”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”(jŽj,Œc-type”eh"]”h$]”h&]”uh1j;hjwubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j,Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŸj£j§Œapml_cpuid_msg”uh1hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:118: ./include/uapi/misc/amd-apml.h”h´KnhjoubhŒ+ that will contain the protocol information”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j–h´Knhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³jkh´KohjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¹h²hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:118: ./include/uapi/misc/amd-apml.h”h´NubhÞ)�”}”(hXC**Description** IOCTL command for APML messages using generic _IOWR The IOCTL provides userspace access to AMD sideband cpuid protocol - CPUID protocol to get CPU details for Function/Ext Function at thread level - returning "-EFAULT" if none of the above "-EPROTOTYPE" error is returned to provide additional error details”h]”(j<)�”}”(hŒ**Description**”h]”hŒ Description”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj´ubhX< IOCTL command for APML messages using generic _IOWR The IOCTL provides userspace access to AMD sideband cpuid protocol - CPUID protocol to get CPU details for Function/Ext Function at thread level - returning “-EFAULTâ€� if none of the above “-EPROTOTYPEâ€� error is returned to provide additional error details”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:118: ./include/uapi/misc/amd-apml.h”h´Kqhj¹h²hubjË)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j׌ SBRMI_IOCTL_MCAMSR_CMD (C macro)”Œc.SBRMI_IOCTL_MCAMSR_CMD”hNt”auh1jÊhj¹h²hh³Nh´NubjÜ)�”}”(hhh]”(já)�”}”(hŒSBRMI_IOCTL_MCAMSR_CMD”h]”jç)�”}”(hŒSBRMI_IOCTL_MCAMSR_CMD”h]”jí)�”}”(hŒSBRMI_IOCTL_MCAMSR_CMD”h]”jó)�”}”(hjäh]”hŒSBRMI_IOCTL_MCAMSR_CMD”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jòhjêubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jìhjæh²hh³hÇh´Kxubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jæjjhjâh²hh³hÇh´Kxubah}”(h]”jÝah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jàh³hÇh´Kxhjßh²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jhjßh²hh³hÇh´Kxubeh}”(h]”h ]”(j,Œmacro”eh"]”h$]”h&]”j1j,j2jj3jj4‰j5‰j6‰uh1jÛh²hhj¹h³Nh´NubhÞ)�”}”(hŒ**Parameters**”h]”j<)�”}”(hjh]”hŒ Parameters”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:121: ./include/uapi/misc/amd-apml.h”h´K~hj¹h²hubj�)�”}”(hhh]”j¢)�”}”(hŒˆ**struct** apml_mcamsr_msg Pointer to the :c:type:`struct apml_mcamsr_msg ` that will contain the protocol information ”h]”(j¨)�”}”(hŒ**struct** apml_mcamsr_msg”h]”(j<)�”}”(hŒ **struct**”h]”hŒstruct”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj<ubhŒ apml_mcamsr_msg”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j§h³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:121: ./include/uapi/misc/amd-apml.h”h´K‚hj8ubj¸)�”}”(hhh]”hÞ)�”}”(hŒlPointer to the :c:type:`struct apml_mcamsr_msg ` that will contain the protocol information”h]”(hŒPointer to the ”…”�”}”(hj\h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct apml_mcamsr_msg `”h]”j<)�”}”(hjfh]”hŒstruct apml_mcamsr_msg”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”(jŽj,Œc-type”eh"]”h$]”h&]”uh1j;hjdubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j,Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŸj£j§Œapml_mcamsr_msg”uh1hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:121: ./include/uapi/misc/amd-apml.h”h´K�hj\ubhŒ+ that will contain the protocol information”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jƒh´K�hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³jXh´K‚hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¹h²hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:121: ./include/uapi/misc/amd-apml.h”h´NubhÞ)�”}”(hX=**Description** IOCTL command for APML messages using generic _IOWR The IOCTL provides userspace access to AMD sideband MCAMSR protocol - MCAMSR protocol to get MCA bank details for Function at thread level - returning "-EFAULT" if none of the above "-EPROTOTYPE" error is returned to provide additional error details”h]”(j<)�”}”(hŒ**Description**”h]”hŒ Description”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj¡ubhX6 IOCTL command for APML messages using generic _IOWR The IOCTL provides userspace access to AMD sideband MCAMSR protocol - MCAMSR protocol to get MCA bank details for Function at thread level - returning “-EFAULTâ€� if none of the above “-EPROTOTYPEâ€� error is returned to provide additional error details”…”�”}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:121: ./include/uapi/misc/amd-apml.h”h´K„hj¹h²hubjË)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j׌"SBRMI_IOCTL_REG_XFER_CMD (C macro)”Œc.SBRMI_IOCTL_REG_XFER_CMD”hNt”auh1jÊhj¹h²hh³Nh´NubjÜ)�”}”(hhh]”(já)�”}”(hŒSBRMI_IOCTL_REG_XFER_CMD”h]”jç)�”}”(hŒSBRMI_IOCTL_REG_XFER_CMD”h]”jí)�”}”(hŒSBRMI_IOCTL_REG_XFER_CMD”h]”jó)�”}”(hjÑh]”hŒSBRMI_IOCTL_REG_XFER_CMD”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jòhj×ubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jìhjÓh²hh³hÇh´K{ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jæjjhjÏh²hh³hÇh´K{ubah}”(h]”jÊah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jàh³hÇh´K{hjÌh²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌh²hh³hÇh´K{ubeh}”(h]”h ]”(j,Œmacro”eh"]”h$]”h&]”j1j,j2jj3jj4‰j5‰j6‰uh1jÛh²hhj¹h³Nh´NubhÞ)�”}”(hŒ**Parameters**”h]”j<)�”}”(hj h]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:124: ./include/uapi/misc/amd-apml.h”h´K�hj¹h²hubj�)�”}”(hhh]”j¢)�”}”(hŒŽ**struct** apml_reg_xfer_msg Pointer to the :c:type:`struct apml_reg_xfer_msg ` that will contain the protocol information ”h]”(j¨)�”}”(hŒ**struct** apml_reg_xfer_msg”h]”(j<)�”}”(hŒ **struct**”h]”hŒstruct”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj)ubhŒ apml_reg_xfer_msg”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j§h³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:124: ./include/uapi/misc/amd-apml.h”h´K”hj%ubj¸)�”}”(hhh]”hÞ)�”}”(hŒpPointer to the :c:type:`struct apml_reg_xfer_msg ` that will contain the protocol information”h]”(hŒPointer to the ”…”�”}”(hjIh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct apml_reg_xfer_msg `”h]”j<)�”}”(hjSh]”hŒstruct apml_reg_xfer_msg”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”(jŽj,Œc-type”eh"]”h$]”h&]”uh1j;hjQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j,Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŸj£j§Œapml_reg_xfer_msg”uh1hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:124: ./include/uapi/misc/amd-apml.h”h´K“hjIubhŒ+ that will contain the protocol information”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jph´K“hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³jEh´K”hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¹h²hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:124: ./include/uapi/misc/amd-apml.h”h´NubhÞ)�”}”(hŒÕ**Description** IOCTL command for APML messages using generic _IOWR The IOCTL provides userspace access to AMD sideband register xfer protocol - Register xfer protocol to get/set hardware register for given offset”h]”(j<)�”}”(hŒ**Description**”h]”hŒ Description”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hjŽubhŒÆ IOCTL command for APML messages using generic _IOWR The IOCTL provides userspace access to AMD sideband register xfer protocol - Register xfer protocol to get/set hardware register for given offset”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:124: ./include/uapi/misc/amd-apml.h”h´K–hj¹h²hubjË)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j׌"SBTSI_IOCTL_REG_XFER_CMD (C macro)”Œc.SBTSI_IOCTL_REG_XFER_CMD”hNt”auh1jÊhj¹h²hh³Nh´NubjÜ)�”}”(hhh]”(já)�”}”(hŒSBTSI_IOCTL_REG_XFER_CMD”h]”jç)�”}”(hŒSBTSI_IOCTL_REG_XFER_CMD”h]”jí)�”}”(hŒSBTSI_IOCTL_REG_XFER_CMD”h]”jó)�”}”(hj¾h]”hŒSBTSI_IOCTL_REG_XFER_CMD”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jòhjÄubah}”(h]”h ]”(jjeh"]”h$]”h&]”hÅhÆuh1jìhjÀh²hh³hÇh´K~ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆuh1jæjjhj¼h²hh³hÇh´K~ubah}”(h]”j·ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jàh³hÇh´K~hj¹h²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹h²hh³hÇh´K~ubeh}”(h]”h ]”(j,Œmacro”eh"]”h$]”h&]”j1j,j2jój3jój4‰j5‰j6‰uh1jÛh²hhj¹h³Nh´NubhÞ)�”}”(hŒ**Parameters**”h]”j<)�”}”(hjùh]”hŒ Parameters”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:127: ./include/uapi/misc/amd-apml.h”h´K hj¹h²hubj�)�”}”(hhh]”j¢)�”}”(hŒŽ**struct** apml_tsi_xfer_msg Pointer to the :c:type:`struct apml_tsi_xfer_msg ` that will contain the protocol information ”h]”(j¨)�”}”(hŒ**struct** apml_tsi_xfer_msg”h]”(j<)�”}”(hŒ **struct**”h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj ubhŒ apml_tsi_xfer_msg”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j§h³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:127: ./include/uapi/misc/amd-apml.h”h´K¤hj ubj¸)�”}”(hhh]”hÞ)�”}”(hŒpPointer to the :c:type:`struct apml_tsi_xfer_msg ` that will contain the protocol information”h]”(hŒPointer to the ”…”�”}”(hj6 h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct apml_tsi_xfer_msg `”h]”j<)�”}”(hj@ h]”hŒstruct apml_tsi_xfer_msg”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”(jŽj,Œc-type”eh"]”h$]”h&]”uh1j;hj> ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j,Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jŸj£j§Œapml_tsi_xfer_msg”uh1hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:127: ./include/uapi/misc/amd-apml.h”h´K£hj6 ubhŒ+ that will contain the protocol information”…”�”}”(hj6 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j] h´K£hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j·hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¡h³j2 h´K¤hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj¹h²hh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:127: ./include/uapi/misc/amd-apml.h”h´NubhÞ)�”}”(hŒÐ**Description** IOCTL command for APML TSI messages using generic _IOWR The IOCTL provides userspace access to AMD sideband TSI register xfer protocol - TSI protocol to read/write temperature sensor registers”h]”(j<)�”}”(hŒ**Description**”h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj{ ubhŒÁ IOCTL command for APML TSI messages using generic _IOWR The IOCTL provides userspace access to AMD sideband TSI register xfer protocol - TSI protocol to read/write temperature sensor registers”…”�”}”(hj{ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œb/var/lib/git/docbuild/linux/Documentation/misc-devices/amd-sbi:127: ./include/uapi/misc/amd-apml.h”h´K¦hj¹h²hubeh}”(h]”Œ driver-ioctls”ah ]”h"]”Œ driver ioctls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KpubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒUser-space usage”h]”hŒUser-space usage”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj  h²hh³hÇh´KƒubhÞ)�”}”(hŒYTo access side band interface from a C program. First, user need to include the headers::”h]”hŒXTo access side band interface from a C program. First, user need to include the headers:”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K…hj  h²hubjz)�”}”(hŒ#include ”h]”hŒ#include ”…”�”}”hj¿ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jyh³hÇh´Kˆhj  h²hubhÞ)�”}”(hŒVWhich defines the supported IOCTL and data structure to be passed from the user space.”h]”hŒVWhich defines the supported IOCTL and data structure to be passed from the user space.”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŠhj  h²hubhÞ)�”}”(hŒ.Next thing, open the device file, as follows::”h]”hŒ-Next thing, open the device file, as follows:”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hj  h²hubjz)�”}”(hŒcint file; file = open("/dev/sbrmi-*", O_RDWR); if (file < 0) { /* ERROR HANDLING */ exit(1); }”h]”hŒcint file; file = open("/dev/sbrmi-*", O_RDWR); if (file < 0) { /* ERROR HANDLING */ exit(1); }”…”�”}”hjé sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jyh³hÇh´K�hj  h²hubhÞ)�”}”(hŒTo open SB-TSI device::”h]”hŒTo open SB-TSI device:”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K—hj  h²hubjz)�”}”(hŒdint file; file = open("/dev/sbtsi-4c", O_RDWR); if (file < 0) { /* ERROR HANDLING */ exit(1); }”h]”hŒdint file; file = open("/dev/sbtsi-4c", O_RDWR); if (file < 0) { /* ERROR HANDLING */ exit(1); }”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jyh³hÇh´K™hj  h²hubhÞ)�”}”(hŒ!The following IOCTLs are defined:”h]”hŒ!The following IOCTLs are defined:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¡hj  h²hubhÞ)�”}”(hX``#define SB_BASE_IOCTL_NR 0xF9`` ``#define SBRMI_IOCTL_MBOX_CMD _IOWR(SB_BASE_IOCTL_NR, 0, struct apml_mbox_msg)`` ``#define SBRMI_IOCTL_CPUID_CMD _IOWR(SB_BASE_IOCTL_NR, 1, struct apml_cpuid_msg)`` ``#define SBRMI_IOCTL_MCAMSR_CMD _IOWR(SB_BASE_IOCTL_NR, 2, struct apml_mcamsr_msg)`` ``#define SBRMI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 3, struct apml_reg_xfer_msg)`` ``#define SBTSI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 4, struct apml_tsi_xfer_msg)``”h]”(j<)�”}”(hŒ.``#define SB_BASE_IOCTL_NR 0xF9``”h]”hŒ*#define SB_BASE_IOCTL_NR 0xF9”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj! ubhŒ ”…”�”}”(hj! h²hh³Nh´Nubj<)�”}”(hŒZ``#define SBRMI_IOCTL_MBOX_CMD _IOWR(SB_BASE_IOCTL_NR, 0, struct apml_mbox_msg)``”h]”hŒV#define SBRMI_IOCTL_MBOX_CMD _IOWR(SB_BASE_IOCTL_NR, 0, struct apml_mbox_msg)”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj! ubhŒ ”…”�”}”hj! sbj<)�”}”(hŒ[``#define SBRMI_IOCTL_CPUID_CMD _IOWR(SB_BASE_IOCTL_NR, 1, struct apml_cpuid_msg)``”h]”hŒW#define SBRMI_IOCTL_CPUID_CMD _IOWR(SB_BASE_IOCTL_NR, 1, struct apml_cpuid_msg)”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj! ubhŒ ”…”�”}”hj! sbj<)�”}”(hŒ\``#define SBRMI_IOCTL_MCAMSR_CMD _IOWR(SB_BASE_IOCTL_NR, 2, struct apml_mcamsr_msg)``”h]”hŒX#define SBRMI_IOCTL_MCAMSR_CMD _IOWR(SB_BASE_IOCTL_NR, 2, struct apml_mcamsr_msg)”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj! ubhŒ ”…”�”}”hj! sbj<)�”}”(hŒ^``#define SBRMI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 3, struct apml_reg_xfer_msg)``”h]”hŒZ#define SBRMI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 3, struct apml_reg_xfer_msg)”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj! ubhŒ ”…”�”}”hj! sbj<)�”}”(hŒ^``#define SBTSI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 4, struct apml_tsi_xfer_msg)``”h]”hŒZ#define SBTSI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 4, struct apml_tsi_xfer_msg)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j;hj! ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K£hj  h²hubhÞ)�”}”(hŒuUser space C-APIs are made available by esmi_oob_library, hosted at [2]_ which is provided by the E-SMS project [3]_.”h]”(hŒDUser space C-APIs are made available by esmi_oob_library, hosted at ”…”�”}”(hj“ h²hh³Nh´Nubhö)�”}”(hŒ[2]_”h]”hŒ2”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”jŒid5”jj uh1hõhj“ j KubhŒ( which is provided by the E-SMS project ”…”�”}”(hj“ h²hh³Nh´Nubhö)�”}”(hŒ[3]_”h]”hŒ3”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”jŒid6”jj uh1hõhj“ j KubhŒ.”…”�”}”(hj“ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K«hj  h²hubj)�”}”(hŒ'https://github.com/amd/esmi_oob_library”h]”(j)�”}”(hŒ2”h]”hŒ2”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉ ubhÞ)�”}”(hjË h]”j0)�”}”(hjË h]”hŒ'https://github.com/amd/esmi_oob_library”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jË uh1j/hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K®hjÉ ubeh}”(h]”jª ah ]”h"]”Œ2”ah$]”h&]”j¥ ajj uh1jh³hÇh´K®hj  h²hj Kubj)�”}”(hŒ+https://www.amd.com/en/developer/e-sms.html”h]”(j)�”}”(hŒ3”h]”hŒ3”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjù ubhÞ)�”}”(hjû h]”j0)�”}”(hjû h]”hŒ+https://www.amd.com/en/developer/e-sms.html”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jû uh1j/hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¯hjù ubeh}”(h]”j¾ ah ]”h"]”Œ3”ah$]”h&]”j¹ ajj uh1jh³hÇh´K¯hj  h²hj Kubeh}”(h]”Œuser-space-usage”ah ]”h"]”Œuser-space usage”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kƒubeh}”(h]”Œamd-side-band-interface”ah ]”h"]”Œamd side band interface”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j\ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œ1”]”h÷aŒ2”]”j› aŒ3”]”j¯ auŒrefids”}”Œnameids”}”(j6 j3 jIjjìjéjõjòj¶j³j� jš j. j+ jö jª j& j¾ uŒ nametypes”}”(j6 ‰jIˆjì‰jõ‰j¶‰j� ‰j. ‰jö ˆj& ˆuh}”(j3 hÊjh÷jjjéjLjòjïj³jøjš j¹jÙjâjðjõjÝjâjÊjÏj·j¼j+ j  j¥ j› j¹ j¯ jª jÉ j¾ jù uŒ footnote_refs”}”(jœ ]”h÷ajž ]”j› aj  ]”j¯ auŒ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”(jjÉ jù eŒ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jj Ks…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.