€•»0Œ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/hwmon/kb9002”Œ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/hwmon/kb9002”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ /translations/it_IT/hwmon/kb9002”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ /translations/ja_JP/hwmon/kb9002”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ /translations/ko_KR/hwmon/kb9002”Œ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/hwmon/kb9002”Œ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/hwmon/kb9002”Œ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-or-later”h]”hŒ)SPDX-License-Identifier: GPL-2.0-or-later”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ:/var/lib/git/docbuild/linux/Documentation/hwmon/kb9002.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒKernel driver kb9002”h]”hŒKernel driver kb9002”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒSupported chips:”h]”hŒSupported chips:”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒ block_quote”“”)�”}”(hŒy* Kandou KB9002 Prefix: 'kb9002' Addresses scanned: - Datasheet: KA-015171-PD (available from Kandou under NDA) ”h]”hŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hŒqKandou KB9002 Prefix: 'kb9002' Addresses scanned: - Datasheet: KA-015171-PD (available from Kandou under NDA) ”h]”(hÞ)�”}”(hŒ Kandou KB9002”h]”hŒ Kandou KB9002”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhúubhÞ)�”}”(hŒPrefix: 'kb9002'”h]”hŒPrefix: ‘kb9002’”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhúubhÞ)�”}”(hŒAddresses scanned: -”h]”hŒAddresses scanned: -”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhúubhÞ)�”}”(hŒ9Datasheet: KA-015171-PD (available from Kandou under NDA)”h]”hŒ9Datasheet: KA-015171-PD (available from Kandou under NDA)”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhúubeh}”(h]”h ]”h"]”h$]”h&]”uh1høhhõubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1hóh³hÇh´Khhïubah}”(h]”h ]”h"]”h$]”h&]”uh1híh³hÇh´KhhÊh²hubhÞ)�”}”(hŒ'Author: Andy Chung ”h]”(hŒAuthor: Andy Chung <”…”�”}”(hjJh²hh³Nh´NubhŒ reference”“”)�”}”(hŒandy.chung@amd.com”h]”hŒandy.chung@amd.com”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:andy.chung@amd.com”uh1jRhjJubhŒ>”…”�”}”(hjJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjnh²hh³hÇh´KubhÞ)�”}”(hX)The Kandou KB9002 is an 8-lane PCIe 5.0 retimer with an integrated microcontroller. It exposes an SMBus 3.0 target (with mandatory PEC) on its sideband interface. The internal firmware aggregates per-lane die temperatures and publishes the maximum value through a 16-bit addressed register window.”h]”hX)The Kandou KB9002 is an 8-lane PCIe 5.0 retimer with an integrated microcontroller. It exposes an SMBus 3.0 target (with mandatory PEC) on its sideband interface. The internal firmware aggregates per-lane die temperatures and publishes the maximum value through a 16-bit addressed register window.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjnh²hubhÞ)�”}”(hŒ§This driver reports that aggregated maximum as the only hwmon temperature channel. The running firmware version and the firmware boot status are exposed under debugfs.”h]”hŒ§This driver reports that aggregated maximum as the only hwmon temperature channel. The running firmware version and the firmware boot status are exposed under debugfs.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjnh²hubeh}”(h]”Œ description”ah ]”h"]”Œ description”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒsysfs interface”h]”hŒsysfs interface”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj£h²hh³hÇh´K ubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j¾hj»ubj¿)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K/uh1j¾hj»ubhŒtbody”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒ temp1_input”h]”hŒ temp1_input”…”�”}”(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ß)�”}”(hhh]”hÞ)�”}”(hŒRAggregated maximum die temperature across all active lanes (millidegrees Celsius).”h]”hŒRAggregated maximum die temperature across all active lanes (millidegrees Celsius).”…”�”}”(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&]”uh1jÙhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÔhj»ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j¹hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj£h²hh³hÇh´Nubeh}”(h]”Œsysfs-interface”ah ]”h"]”Œsysfs interface”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒdebugfs interface”h]”hŒdebugfs interface”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj/h²hh³hÇh´K(ubhÞ)�”}”(hŒzFiles live in the per-client debugfs directory created by the I2C core: ``/sys/kernel/debug/i2c/i2c-/-/``.”h]”(hŒHFiles live in the per-client debugfs directory created by the I2C core: ”…”�”}”(hj@h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ1``/sys/kernel/debug/i2c/i2c-/-/``”h]”hŒ-/sys/kernel/debug/i2c/i2c-/-/”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhj@ubhŒ.”…”�”}”(hj@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K*hj/h²hubjµ)�”}”(hhh]”jº)�”}”(hhh]”(j¿)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j¾hjeubj¿)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K0uh1j¾hjeubjÕ)�”}”(hhh]”(jÚ)�”}”(hhh]”(jß)�”}”(hhh]”hÞ)�”}”(hŒfw_ver”h]”hŒfw_ver”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K.hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubjß)�”}”(hhh]”hÞ)�”}”(hŒIRunning firmware version in "major.minor.patch.suffix" format. Read-only.”h]”hŒMRunning firmware version in “major.minor.patch.suffixâ€� format. Read-only.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K.hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÙhj|ubjÚ)�”}”(hhh]”(jß)�”}”(hhh]”hÞ)�”}”(hŒfw_load_status”h]”hŒfw_load_status”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K0hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¶ubjß)�”}”(hhh]”hÞ)�”}”(hŒhFirmware boot status: "normal" once firmware has finished initialising, "abnormal" otherwise. Read-only.”h]”hŒpFirmware boot status: “normalâ€� once firmware has finished initialising, “abnormalâ€� otherwise. Read-only.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K0hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÙhj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÔhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j¹hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj/h²hh³hÇh´Nubeh}”(h]”Œdebugfs-interface”ah ]”h"]”Œdebugfs interface”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K(ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒNotes”h]”hŒNotes”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K6ubhÞ)�”}”(hŒùThe driver requires ``I2C_FUNC_SMBUS_BLOCK_DATA``, ``I2C_FUNC_SMBUS_PEC`` and ``I2C_FUNC_I2C`` from the host adapter. The last is needed only during probe for the host-interface mode switch; runtime accesses use SMBus block transactions exclusively.”h]”(hŒThe driver requires ”…”�”}”(hjh²hh³Nh´NubjI)�”}”(hŒ``I2C_FUNC_SMBUS_BLOCK_DATA``”h]”hŒI2C_FUNC_SMBUS_BLOCK_DATA”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjubhŒ, ”…”�”}”(hjh²hh³Nh´NubjI)�”}”(hŒ``I2C_FUNC_SMBUS_PEC``”h]”hŒI2C_FUNC_SMBUS_PEC”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjubhŒ and ”…”�”}”(hjh²hh³Nh´NubjI)�”}”(hŒ``I2C_FUNC_I2C``”h]”hŒ I2C_FUNC_I2C”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhjubhŒ› from the host adapter. The last is needed only during probe for the host-interface mode switch; runtime accesses use SMBus block transactions exclusively.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K8hjh²hubhÞ)�”}”(hŒäThe retimer's SMBus address is configurable on three strap pins and ranges from 0x20 to 0x27. The address is selected through device tree (or i2c board info) the same way as any other I2C device; the driver does not auto-detect.”h]”hŒæThe retimer’s SMBus address is configurable on three strap pins and ranges from 0x20 to 0x27. The address is selected through device tree (or i2c board info) the same way as any other I2C device; the driver does not auto-detect.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K=hjh²hubeh}”(h]”Œnotes”ah ]”h"]”Œnotes”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K6ubeh}”(h]”Œkernel-driver-kb9002”ah ]”h"]”Œkernel driver kb9002”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”jÞŒ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”}”Œrefids”}”Œnameids”}”(jxjuj j�j,j)jjjpjmuŒ nametypes”}”(jx‰j ‰j,‰j‰jp‰uh}”(juhÊj�jnj)j£jj/jmjuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.