€•c3Œ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”Œ5/translations/zh_CN/driver-api/memory-devices/ti-emif”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/zh_TW/driver-api/memory-devices/ti-emif”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/it_IT/driver-api/memory-devices/ti-emif”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/ja_JP/driver-api/memory-devices/ti-emif”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/ko_KR/driver-api/memory-devices/ti-emif”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/sp_SP/driver-api/memory-devices/ti-emif”Œ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ŸŒO/var/lib/git/docbuild/linux/Documentation/driver-api/memory-devices/ti-emif.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒTI EMIF SDRAM Controller Driver”h]”hŒTI EMIF SDRAM Controller Driver”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒAuthor”h]”hŒAuthor”…””}”(hhÌhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhÉhžhhŸh³h KubhŒ paragraph”“”)”}”(hŒAneesh V ”h]”(hŒ Aneesh V <”…””}”(hhÜhžhhŸNh NubhŒ reference”“”)”}”(hŒ aneesh@ti.com”h]”hŒ aneesh@ti.com”…””}”(hhæhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:aneesh@ti.com”uh1hähhÜubhŒ>”…””}”(hhÜhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K hhÉhžhubeh}”(h]”Œauthor”ah ]”h"]”Œauthor”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒLocation”h]”hŒLocation”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h K ubhÛ)”}”(hŒdriver/memory/emif.c”h]”hŒdriver/memory/emif.c”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K hjhžhubeh}”(h]”Œlocation”ah ]”h"]”Œlocation”ah$]”h&]”uh1h´hh¶hžhhŸh³h K ubhµ)”}”(hhh]”(hº)”}”(hŒSupported SoCs:”h]”hŒSupported SoCs:”…””}”(hj2hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj/hžhhŸh³h KubhÛ)”}”(hŒTI OMAP44xx TI OMAP54xx”h]”hŒTI OMAP44xx TI OMAP54xx”…””}”(hj@hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h Khj/hžhubeh}”(h]”Œsupported-socs”ah ]”h"]”Œsupported socs:”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒMenuconfig option:”h]”hŒMenuconfig option:”…””}”(hjYhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjVhžhhŸh³h KubhŒdefinition_list”“”)”}”(hhh]”hŒdefinition_list_item”“”)”}”(hŒDDevice Drivers Memory devices Texas Instruments EMIF driver ”h]”(hŒterm”“”)”}”(hŒDevice Drivers”h]”hŒDevice Drivers”…””}”(hjthžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhŸh³h KhjnubhŒ definition”“”)”}”(hhh]”jh)”}”(hhh]”jm)”}”(hŒ-Memory devices Texas Instruments EMIF driver ”h]”(js)”}”(hŒMemory devices”h]”hŒMemory devices”…””}”(hjŽhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhŸh³h KhjŠubjƒ)”}”(hhh]”hÛ)”}”(hŒTexas Instruments EMIF driver”h]”hŒTexas Instruments EMIF driver”…””}”(hjŸhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h Khjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlhŸh³h Khj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlhŸh³h Khjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjVhžhhŸNh Nubeh}”(h]”Œmenuconfig-option”ah ]”h"]”Œmenuconfig option:”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ Description”h]”hŒ Description”…””}”(hjÜhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjÙhžhhŸh³h KubhÛ)”}”(hXˆThis driver is for the EMIF module available in Texas Instruments SoCs. EMIF is an SDRAM controller that, based on its revision, supports one or more of DDR2, DDR3, and LPDDR2 SDRAM protocols. This driver takes care of only LPDDR2 memories presently. The functions of the driver includes re-configuring AC timing parameters and other settings during frequency, voltage and temperature changes”h]”hXˆThis driver is for the EMIF module available in Texas Instruments SoCs. EMIF is an SDRAM controller that, based on its revision, supports one or more of DDR2, DDR3, and LPDDR2 SDRAM protocols. This driver takes care of only LPDDR2 memories presently. The functions of the driver includes re-configuring AC timing parameters and other settings during frequency, voltage and temperature changes”…””}”(hjêhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h KhjÙhžhubeh}”(h]”Œ description”ah ]”h"]”Œ description”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ;Platform Data (see include/linux/platform_data/emif_plat.h)”h]”hŒ;Platform Data (see include/linux/platform_data/emif_plat.h)”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h K%ubhÛ)”}”(hŒŠDDR device details and other board dependent and SoC dependent information can be passed through platform data (struct emif_platform_data)”h]”hŒŠDDR device details and other board dependent and SoC dependent information can be passed through platform data (struct emif_platform_data)”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K&hjhžhubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒ,DDR device details: 'struct ddr_device_info'”h]”hÛ)”}”(hj(h]”hŒ0DDR device details: ‘struct ddr_device_info’”…””}”(hj*hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K)hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj!hžhhŸh³h Nubj%)”}”(hŒFDevice AC timings: 'struct lpddr2_timings' and 'struct lpddr2_min_tck'”h]”hÛ)”}”(hj?h]”hŒNDevice AC timings: ‘struct lpddr2_timings’ and ‘struct lpddr2_min_tck’”…””}”(hjAhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K*hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj!hžhhŸh³h Nubj%)”}”(hŒWCustom configurations: customizable policy options through 'struct emif_custom_configs'”h]”hÛ)”}”(hŒWCustom configurations: customizable policy options through 'struct emif_custom_configs'”h]”hŒ[Custom configurations: customizable policy options through ‘struct emif_custom_configs’”…””}”(hjXhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K+hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj!hžhhŸh³h Nubj%)”}”(hŒ IP revision”h]”hÛ)”}”(hjnh]”hŒ IP revision”…””}”(hjphžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K-hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj!hžhhŸh³h Nubj%)”}”(hŒ PHY type ”h]”hÛ)”}”(hŒPHY type”h]”hŒPHY type”…””}”(hj‡hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K.hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj!hžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jhŸh³h K)hjhžhubeh}”(h]”Œ9platform-data-see-include-linux-platform-data-emif-plat-h”ah ]”h"]”Œ;platform data (see include/linux/platform_data/emif_plat.h)”ah$]”h&]”uh1h´hh¶hžhhŸh³h K%ubhµ)”}”(hhh]”(hº)”}”(hŒInterface to the external world”h]”hŒInterface to the external world”…””}”(hj®hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj«hžhhŸh³h K1ubhÛ)”}”(hŒ†EMIF driver registers notifiers for voltage and frequency changes affecting EMIF and takes appropriate actions when these are invoked.”h]”hŒ†EMIF driver registers notifiers for voltage and frequency changes affecting EMIF and takes appropriate actions when these are invoked.”…””}”(hj¼hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K2hj«hžhubj )”}”(hhh]”(j%)”}”(hŒfreq_pre_notify_handling()”h]”hÛ)”}”(hjÏh]”hŒfreq_pre_notify_handling()”…””}”(hjÑhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K5hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÊhžhhŸh³h Nubj%)”}”(hŒfreq_post_notify_handling()”h]”hÛ)”}”(hjæh]”hŒfreq_post_notify_handling()”…””}”(hjèhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K6hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÊhžhhŸh³h Nubj%)”}”(hŒvolt_notify_handling() ”h]”hÛ)”}”(hŒvolt_notify_handling()”h]”hŒvolt_notify_handling()”…””}”(hjÿhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K7hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÊhžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”j¡j¢uh1jhŸh³h K5hj«hžhubeh}”(h]”Œinterface-to-the-external-world”ah ]”h"]”Œinterface to the external world”ah$]”h&]”uh1h´hh¶hžhhŸh³h K1ubhµ)”}”(hhh]”(hº)”}”(hŒDebugfs”h]”hŒDebugfs”…””}”(hj$hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj!hžhhŸh³h K:ubhÛ)”}”(hŒ2The driver creates two debugfs entries per device.”h]”hŒ2The driver creates two debugfs entries per device.”…””}”(hj2hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K;hj!hžhubj )”}”(hhh]”(j%)”}”(hŒ]regcache_dump : dump of register values calculated and saved for all frequencies used so far.”h]”hÛ)”}”(hŒ]regcache_dump : dump of register values calculated and saved for all frequencies used so far.”h]”hŒ]regcache_dump : dump of register values calculated and saved for all frequencies used so far.”…””}”(hjGhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K=hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj@hžhhŸh³h Nubj%)”}”(hŒxmr4 : last polled value of MR4 register in the LPDDR2 device. MR4 indicates the current temperature level of the device.”h]”hÛ)”}”(hŒxmr4 : last polled value of MR4 register in the LPDDR2 device. MR4 indicates the current temperature level of the device.”h]”hŒxmr4 : last polled value of MR4 register in the LPDDR2 device. MR4 indicates the current temperature level of the device.”…””}”(hj_hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÚhŸh³h K?hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj@hžhhŸh³h Nubeh}”(h]”h ]”h"]”h$]”h&]”j¡j¢uh1jhŸh³h K=hj!hžhubeh}”(h]”Œdebugfs”ah ]”h"]”Œdebugfs”ah$]”h&]”uh1h´hh¶hžhhŸh³h K:ubeh}”(h]”Œti-emif-sdram-controller-driver”ah ]”h"]”Œti emif sdram controller driver”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”}”Œrefids”}”Œnameids”}”(j†jƒjjj,j)jSjPjÖjÓjýjúj¨j¥jjj~j{uŒ nametypes”}”(j†‰j‰j,‰jS‰jÖ‰jý‰j¨‰j‰j~‰uh}”(jƒh¶jhÉj)jjPj/jÓjVjújÙj¥jjj«j{j!uŒ 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.