Dsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget7/translations/zh_CN/driver-api/media/drivers/cx88-develmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/zh_TW/driver-api/media/drivers/cx88-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/it_IT/driver-api/media/drivers/cx88-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/ja_JP/driver-api/media/drivers/cx88-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/ko_KR/driver-api/media/drivers/cx88-develmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget7/translations/sp_SP/driver-api/media/drivers/cx88-develmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhQ/var/lib/git/docbuild/linux/Documentation/driver-api/media/drivers/cx88-devel.rsthKubhsection)}(hhh](htitle)}(hThe cx88 driverh]hThe cx88 driver}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hAuthor: Gerd Hoffmannh]hAuthor: Gerd Hoffmann}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h+Documentation missing at the cx88 datasheeth]h+Documentation missing at the cx88 datasheet}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hMO_OUTPUT_FORMAT (0x310164)h]hMO_OUTPUT_FORMAT (0x310164)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh literal_block)}(hXPrevious default from DScaler: 0x1c1f0008 Digit 8: 31-28 28: PREVREMOD = 1 Digit 7: 27-24 (0xc = 12 = b1100 ) 27: COMBALT = 1 26: PAL_INV_PHASE (DScaler apparently set this to 1, resulted in sucky picture) Digits 6,5: 23-16 25-16: COMB_RANGE = 0x1f [default] (9 bits -> max 512) Digit 4: 15-12 15: DISIFX = 0 14: INVCBF = 0 13: DISADAPT = 0 12: NARROWADAPT = 0 Digit 3: 11-8 11: FORCE2H 10: FORCEREMD 9: NCHROMAEN 8: NREMODEN Digit 2: 7-4 7-6: YCORE 5-4: CCORE Digit 1: 3-0 3: RANGE = 1 2: HACTEXT 1: HSFMTh]hXPrevious default from DScaler: 0x1c1f0008 Digit 8: 31-28 28: PREVREMOD = 1 Digit 7: 27-24 (0xc = 12 = b1100 ) 27: COMBALT = 1 26: PAL_INV_PHASE (DScaler apparently set this to 1, resulted in sucky picture) Digits 6,5: 23-16 25-16: COMB_RANGE = 0x1f [default] (9 bits -> max 512) Digit 4: 15-12 15: DISIFX = 0 14: INVCBF = 0 13: DISADAPT = 0 12: NARROWADAPT = 0 Digit 3: 11-8 11: FORCE2H 10: FORCEREMD 9: NCHROMAEN 8: NREMODEN Digit 2: 7-4 7-6: YCORE 5-4: CCORE Digit 1: 3-0 3: RANGE = 1 2: HACTEXT 1: HSFMT}hhsbah}(h]h ]h"]h$]h&]hhforcelanguagenonehighlight_args}uh1hhhhK hhhhubh)}(h0x47 is the sync byte for MPEG-2 transport stream packets. Datasheet incorrectly states to use 47 decimal. 188 is the length. All DVB compliant frontends output packets with this start code.h]h0x47 is the sync byte for MPEG-2 transport stream packets. Datasheet incorrectly states to use 47 decimal. 188 is the length. All DVB compliant frontends output packets with this start code.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hhhhubeh}(h]+documentation-missing-at-the-cx88-datasheetah ]h"]+documentation missing at the cx88 datasheetah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h#Hauppauge WinTV cx88 IR informationh]h#Hauppauge WinTV cx88 IR information}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hhhhhK5ubh)}(hJThe controls for the mux are GPIO [0,1] for source, and GPIO 2 for muting.h]hJThe controls for the mux are GPIO [0,1] for source, and GPIO 2 for muting.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj#hhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jLhjIubjM)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jLhjIubjM)}(hhh]h}(h]h ]h"]h$]h&]colwidthK1uh1jLhjIubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(hGPIO0h]hGPIO0}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjxubah}(h]h ]h"]h$]h&]uh1jvhjsubjw)}(hhh]h)}(hGPIO1h]hGPIO1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjubah}(h]h ]h"]h$]h&]uh1jvhjsubjw)}(hhh]h}(h]h ]h"]h$]h&]uh1jvhjsubeh}(h]h ]h"]h$]h&]uh1jqhjnubah}(h]h ]h"]h$]h&]uh1jlhjIubhtbody)}(hhh](jr)}(hhh](jw)}(hhh]h)}(h0h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj]ubah}(h]h ]h"]h$]h&]uh1jvhjZubjw)}(hhh]h)}(hjh]h1}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK>hjsubah}(h]h ]h"]h$]h&]uh1jvhjZubjw)}(hhh]h)}(hLine-Inh]hLine-In}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK>hjubah}(h]h ]h"]h$]h&]uh1jvhjZubeh}(h]h ]h"]h$]h&]uh1jqhjubjr)}(hhh](jw)}(hhh]h)}(hjh]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jvhjubjw)}(hhh]h)}(hjh]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jvhjubjw)}(hhh]h)}(h1Mono tuner bypass or CD passthru (tuner specific)h]h1Mono tuner bypass or CD passthru (tuner specific)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jvhjubeh}(h]h ]h"]h$]h&]uh1jqhjubeh}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]colsKuh1jGhjDubah}(h]h ]h"]h$]h&]uh1jBhj#hhhhhNubh)}(h7GPIO 16(I believe) is tied to the IR port (if present).h]h7GPIO 16(I believe) is tied to the IR port (if present).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhj#hhubh)}(hFrom the data sheet:h]hFrom the data sheet:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhj#hhubh bullet_list)}(hhh]h list_item)}(h)Register 24'h20004 PCI Interrupt Status h]h)}(h(Register 24'h20004 PCI Interrupt Statush]h*Register 24’h20004 PCI Interrupt Status}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhj(ubah}(h]h ]h"]h$]h&]uh1j&hj#hhhhhNubah}(h]h ]h"]h$]h&]bullet-uh1j!hhhKGhj#hhubh block_quote)}(hr- bit [18] IR_SMP_INT Set when 32 input samples have been collected over - gpio[16] pin into GP_SAMPLE register. h]j")}(hhh](j')}(hGbit [18] IR_SMP_INT Set when 32 input samples have been collected overh]h)}(hjSh]hGbit [18] IR_SMP_INT Set when 32 input samples have been collected over}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjQubah}(h]h ]h"]h$]h&]uh1j&hjNubj')}(h&gpio[16] pin into GP_SAMPLE register. h]h)}(h%gpio[16] pin into GP_SAMPLE register.h]h%gpio[16] pin into GP_SAMPLE register.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjhubah}(h]h ]h"]h$]h&]uh1j&hjNubeh}(h]h ]h"]h$]h&]jFjGuh1j!hhhKIhjJubah}(h]h ]h"]h$]h&]uh1jHhhhKIhj#hhubh)}(h#What's missing from the data sheet:h]h%What’s missing from the data sheet:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhj#hhubj")}(hhh](j')}(hXSetup 4KHz sampling rate (roughly 2x oversampled; good enough for our RC5 compat remote)h]h)}(hXSetup 4KHz sampling rate (roughly 2x oversampled; good enough for our RC5 compat remote)h]hXSetup 4KHz sampling rate (roughly 2x oversampled; good enough for our RC5 compat remote)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjubah}(h]h ]h"]h$]h&]uh1j&hjhhhhhNubj')}(h"set register 0x35C050 to 0xa80a80h]h)}(hjh]h"set register 0x35C050 to 0xa80a80}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhjubah}(h]h ]h"]h$]h&]uh1j&hjhhhhhNubj')}(henable samplingh]h)}(hjh]henable sampling}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjubah}(h]h ]h"]h$]h&]uh1j&hjhhhhhNubj')}(hset register 0x35C054 to 0x5h]h)}(hjh]hset register 0x35C054 to 0x5}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhjubah}(h]h ]h"]h$]h&]uh1j&hjhhhhhNubj')}(hQenable the IRQ bit 18 in the interrupt mask register (and provide for a handler) h]h)}(hPenable the IRQ bit 18 in the interrupt mask register (and provide for a handler)h]hPenable the IRQ bit 18 in the interrupt mask register (and provide for a handler)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjubah}(h]h ]h"]h$]h&]uh1j&hjhhhhhNubeh}(h]h ]h"]h$]h&]jFjGuh1j!hhhKNhj#hhubh)}(h!GP_SAMPLE register is at 0x35C058h]h!GP_SAMPLE register is at 0x35C058}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhj#hhubh)}(hXgBits are then right shifted into the GP_SAMPLE register at the specified rate; you get an interrupt when a full DWORD is received. You need to recover the actual RC5 bits out of the (oversampled) IR sensor bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment.h]hXgBits are then right shifted into the GP_SAMPLE register at the specified rate; you get an interrupt when a full DWORD is received. You need to recover the actual RC5 bits out of the (oversampled) IR sensor bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhj#hhubh)}(hX$I'm pretty sure when no IR signal is present the receiver is always in a marking state(1); but stray light, etc can cause intermittent noise values as well. Remember, this is a free running sample of the IR receiver state over time, so don't assume any sample starts at any particular place.h]hX(I’m pretty sure when no IR signal is present the receiver is always in a marking state(1); but stray light, etc can cause intermittent noise values as well. Remember, this is a free running sample of the IR receiver state over time, so don’t assume any sample starts at any particular place.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hj#hhubh)}(hhh](h)}(hAdditional infoh]hAdditional info}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhhhhhKdubh)}(hThis data sheet (google search) seems to have a lovely description of the RC5 basics: http://www.atmel.com/dyn/resources/prod_documents/doc2817.pdfh](hVThis data sheet (google search) seems to have a lovely description of the RC5 basics: }(hjShhhNhNubh reference)}(h=http://www.atmel.com/dyn/resources/prod_documents/doc2817.pdfh]h=http://www.atmel.com/dyn/resources/prod_documents/doc2817.pdf}(hj]hhhNhNubah}(h]h ]h"]h$]h&]refurij_uh1j[hjSubeh}(h]h ]h"]h$]h&]uh1hhhhKfhjBhhubh)}(hIThis document has more data: http://www.nenya.be/beor/electronics/rc5.htmh](hThis document has more data: }(hjrhhhNhNubj\)}(h,http://www.nenya.be/beor/electronics/rc5.htmh]h,http://www.nenya.be/beor/electronics/rc5.htm}(hjzhhhNhNubah}(h]h ]h"]h$]h&]refurij|uh1j[hjrubeh}(h]h ]h"]h$]h&]uh1hhhhKjhjBhhubh)}(hzThis document has a how to decode a bi-phase data stream: http://www.ee.washington.edu/circuit_archive/text/ir_decode.txth](h;This document has a how to decode a bi-phase data stream: }(hjhhhNhNubj\)}(h?http://www.ee.washington.edu/circuit_archive/text/ir_decode.txth]h?http://www.ee.washington.edu/circuit_archive/text/ir_decode.txt}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j[hjubeh}(h]h ]h"]h$]h&]uh1hhhhKmhjBhhubh)}(hQThis document has still more info: http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htmh](h#This document has still more info: }(hjhhhNhNubj\)}(h.http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htmh]h.http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htm}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j[hjubeh}(h]h ]h"]h$]h&]uh1hhhhKphjBhhubeh}(h]additional-infoah ]h"]additional infoah$]h&]uh1hhj#hhhhhKdubeh}(h]#hauppauge-wintv-cx88-ir-informationah ]h"]#hauppauge wintv cx88 ir informationah$]h&]uh1hhhhhhhhK5ubeh}(h]the-cx88-driverah ]h"]the cx88 driverah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjvfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjj jjjjju nametypes}(jj jjuh}(jhjhjj#jjBu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.