linux/drivers/pci/probe.c
<<
v3.1/op/spa14. /op/form4. /opa v3.1/o href="../linux+v3.7.2/drivers/pci/probe.c">v3.1/opimg src="../.static/gfx/right.png" alt=">>">v3p/spa14.v3pspa1 class="lxr_search">v3.1v3.1/opinput typv3.1/opinput typv3.1/opbutt> typSearch 4. /op/form4. p/spa14.v3pspa1 class="lxr_prefs"4. /opa href="+prefs?return=drivers/pci/probe.c"v3.1/o onclick="return ajax_prefs();">v3.1/oPrefs. /op/a>v3p/spa14..1/o op/div4..1/o opform acv3.1="ajax+*" method="post" onsubmit="return false;">v3pinput typv.1/o op/form4.v.1/o opdiv class="headingbott>m">. pdiv idopfile_contents"4
o o1p/a>pspa1 class="comment">/*p/spa14.o o2p/a>pspa1 class="comment"> * probe.c - PCI detecv3.1 and setup codep/spa14.o o3p/a>pspa1 class="comment"> */p/spa14.o o4p/a>vo o5p/a>#include <linux/kernel.hp/a>>vo o6p/a>#include <linux/delay.hp/a>>vo o7p/a>#include <linux/init.hp/a>>vo o8p/a>#include <linux/pci.hp/a>>vo o9p/a>#include <linux/slab.hp/a>>vo 
  va>#include <linux/module.hp/a>>vo 11 va>#include <linux/cpumask.hp/a>>vo 12p/a>#include <linux/pci-aspm.hp/a>>vo 13p/a>#include <asm-generic/pci-bridge.hp/a>>vo 14p/a>#include "pci.hp/a>"vo 15p/a>vo 16p/a>#defineopa href="+code=CARDBUS_LATENCY_TIMER" class="sref">CARDBUS_LATENCY_TIMERp/a>o o1761/o opspa1 class="comment">/* secondary latency timer */p/spa14.o 17p/a>#defineopa href="+code=CARDBUS_RESERVE_BUSNR" class="sref">CARDBUS_RESERVE_BUSNRp/a>o o3.o 18p/a>vo 19p/a>structopa href="+code=resource" class="sref">resourcep/a>opa href="+code=busn_resource" class="sref">busn_resourcep/a>o= {.o 20p/a>o oooooo.pa href="+code=nam<" class="sref">nam

o o=opspa1 class="string">"PCI busn"o 21p/a>o oooooo.pa href="+code=start" class="sref">startp/a>o = 0,.o 22p/a>o oooooo.pa href="+code=end" class="sref">endp/a>o oo= 255,.o 23p/a>o oooooo.pa href="+code=flags" class="sref">flagsp/a>o = pa href="+code=IORESOURCE_BUS" class="sref">IORESOURCE_BUSp/a>,.o 24p/a>};vo 25p/a>vo 26p/a>pspa1 class="comment">/* Ugh. Need to stop exporting this to modules. */p/spa14.o 27p/a>pa href="+code=LIST_HEAD" class="sref">LIST_HEADp/a>(pa href="+code=pci_root_buses" class="sref">pci_root_busesp/a>);vo 28p/a>pa href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOLp/a>(pa href="+code=pci_root_buses" class="sref">pci_root_busesp/a>);vo 29p/a>vo 30p/a>static pa href="+code=LIST_HEAD" class="sref">LIST_HEADp/a>(pa href="+code=pci_domain_busn_res_list" class="sref">pci_domain_busn_res_listp/a>);vo 31p/a>vo 32p/a>structopa href="+code=pci_domain_busn_res" class="sref">pci_domain_busn_resp/a>o{.o 33p/a>o oooooostructopa href="+code=list_head" class="sref">list_headp/a>opa href="+code=list" class="sref">listp/a>;vo 34p/a>o oooooostructopa href="+code=resource" class="sref">resourcep/a>opa href="+code=res" class="sref">resp/a>;vo 35p/a>o oooooointopa href="+code=domain_nr" class="sref">domain_nrp/a>;vo 36p/a>};vo 37p/a>vo 38p/a>static structopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=get_pci_domain_busn_res" class="sref">get_pci_domain_busn_resp/a>(intopa href="+code=domain_nr" class="sref">domain_nrp/a>)vo 39p/a>{.o 40p/a>o oooooostructopa href="+code=pci_domain_busn_res" class="sref">pci_domain_busn_resp/a>o*pa href="+code=r" class="sref">rp/a>;vo 41p/a>vo 42p/a>o oooooopa href="+code=list_for_each_entry" class="sref">list_for_each_entryp/a>(pa href="+code=r" class="sref">rp/a>, &pa href="+code=pci_domain_busn_res_list" class="sref">pci_domain_busn_res_listp/a>,opa href="+code=list" class="sref">listp/a>)vo 43p/a>o ooooooo ooooooif (pa href="+code=r" class="sref">rp/a>->pa href="+code=domain_nr" class="sref">domain_nrp/a> == pa href="+code=domain_nr" class="sref">domain_nrp/a>)vo 44p/a>o ooooooo ooooooooooooooreturn &pa href="+code=r" class="sref">rp/a>->pa href="+code=res" class="sref">resp/a>;vo 45p/a>vo 46p/a>o oooooopa href="+code=r" class="sref">rp/a> = pa href="+code=kzalloc" class="sref">kzallocp/a>(sizeof(*pa href="+code=r" class="sref">rp/a>),opa href="+code=GFP_KERNEL" class="sref">GFP_KERNELp/a>);vo 47p/a>o ooooooif (!pa href="+code=r" class="sref">rp/a>)vo 48p/a>o ooooooo ooooooreturn pa href="+code=NULL" class="sref">NULLp/a>;vo 49p/a>vo 50p/a>o oooooopa href="+code=r" class="sref">rp/a>->pa href="+code=domain_nr" class="sref">domain_nrp/a> =opa href="+code=domain_nr" class="sref">domain_nrp/a>;vo 51p/a>o oooooopa href="+code=r" class="sref">rp/a>->pa href="+code=res" class="sref">resp/a>.pa href="+code=start" class="sref">startp/a>o= 0;vo 52p/a>o oooooopa href="+code=r" class="sref">rp/a>->pa href="+code=res" class="sref">resp/a>.pa href="+code=end" class="sref">endp/a>o= 0xff;vo 53p/a>o oooooopa href="+code=r" class="sref">rp/a>->pa href="+code=res" class="sref">resp/a>.pa href="+code=flags" class="sref">flagsp/a>o= pa href="+code=IORESOURCE_BUS" class="sref">IORESOURCE_BUSp/a> | pa href="+code=IORESOURCE_PCI_FIXED" class="sref">IORESOURCE_PCI_FIXEDp/a>;vo 54p/a>vo 55p/a>o oooooopa href="+code=list_add_tail" class="sref">list_add_tailp/a>(&pa href="+code=r" class="sref">rp/a>->pa href="+code=list" class="sref">listp/a>, &pa href="+code=pci_domain_busn_res_list" class="sref">pci_domain_busn_res_listp/a>);vo 56p/a>vo 57p/a>o ooooooreturn &pa href="+code=r" class="sref">rp/a>->pa href="+code=res" class="sref">resp/a>;vo 58p/a>}vo 59p/a>vo 60p/a>static intopa href="+code=find_anything" class="sref">find_anythingp/a>(structopa href="+code=device" class="sref">devicep/a>o*pa href="+code=dev" class="sref">devp/a>, voido*pa href="+code=data" class="sref">datap/a>)vo 61p/a>{.o 62p/a>o ooooooreturn 1;vo 63p/a>}vo 64p/a>vo 65p/a>pspa1 class="comment">/*p/spa14.o 66p/a>pspa1 class="comment"> * Some device drivers need knowoif pci is initiated.p/spa14.o 67p/a>pspa1 class="comment"> * Basically, we think pci is not initiated when therep/spa14.o 68p/a>pspa1 class="comment"> * is no device to be found on the pci_bus_typ<.p/spa14.o 69p/a>pspa1 class="comment"> */p/spa14.o 70p/a>intopa href="+code=no_pci_devices" class="sref">no_pci_devicesp/a>(void)vo 71p/a>{.o 72p/a>o oooooostructopa href="+code=device" class="sref">devicep/a>o*pa href="+code=dev" class="sref">devp/a>;vo 73p/a>o oooooointopa href="+code=no_devices" class="sref">no_devicesp/a>;vo 74p/a>vo 75p/a>o oooooopa href="+code=dev" class="sref">devp/a>o= pa href="+code=bus_find_device" class="sref">bus_find_devicep/a>(&pa href="+code=pci_bus_typ<" class="sref">pci_bus_typ

,opa href="+code=NULL" class="sref">NULLp/a>,opa href="+code=NULL" class="sref">NULLp/a>,opa href="+code=find_anything" class="sref">find_anythingp/a>);vo 76p/a>o oooooopa href="+code=no_devices" class="sref">no_devicesp/a>o= (pa href="+code=dev" class="sref">devp/a>o== pa href="+code=NULL" class="sref">NULLp/a>);vo 77p/a>o oooooopa href="+code=put_device" class="sref">put_devicep/a>(pa href="+code=dev" class="sref">devp/a>);vo 78p/a>o ooooooreturn pa href="+code=no_devices" class="sref">no_devicesp/a>;vo 79p/a>}vo 80p/a>pa href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOLp/a>(pa href="+code=no_pci_devices" class="sref">no_pci_devicesp/a>);vo 81p/a>vo 82p/a>pspa1 class="comment">/*p/spa14.o 83p/a>pspa1 class="comment"> * PCI Bus Classp/spa14.o 84p/a>pspa1 class="comment"> */p/spa14.o 85p/a>static voidopa href="+code=release_pcibus_dev" class="sref">release_pcibus_devp/a>(structopa href="+code=device" class="sref">devicep/a>o*pa href="+code=dev" class="sref">devp/a>)vo 86p/a>{.o 87p/a>o oooooostructopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=pci_bus" class="sref">pci_busp/a>o= pa href="+code=to_pci_bus" class="sref">to_pci_busp/a>(pa href="+code=dev" class="sref">devp/a>);vo 88p/a>vo 89p/a>o ooooooif (pa href="+code=pci_bus" class="sref">pci_busp/a>->pa href="+code=bridge" class="sref">bridgep/a>)vo 90p/a>o ooooooo oooooopa href="+code=put_device" class="sref">put_devicep/a>(pa href="+code=pci_bus" class="sref">pci_busp/a>->pa href="+code=bridge" class="sref">bridgep/a>);vo 91p/a>o oooooopa href="+code=pci_bus_remove_resources" class="sref">pci_bus_remove_resourcesp/a>(pa href="+code=pci_bus" class="sref">pci_busp/a>);vo 92p/a>o oooooopa href="+code=pci_release_bus_of_node" class="sref">pci_release_bus_of_nodep/a>(pa href="+code=pci_bus" class="sref">pci_busp/a>);vo 93p/a>o oooooopa href="+code=kfree" class="sref">kfreep/a>(pa href="+code=pci_bus" class="sref">pci_busp/a>);vo 94p/a>}vo 95p/a>vo 96p/a>static structopa href="+code=class" class="sref">classp/a>opa href="+code=pcibus_class" class="sref">pcibus_classp/a>o= {.o 97p/a>o oooooo.pa href="+code=nam<" class="sref">nam

o ooooooooo=opspa1 class="string">"pci_bus"o 98p/a>o oooooo.pa href="+code=dev_release" class="sref">dev_releasep/a>o oo= &pa href="+code=release_pcibus_dev" class="sref">release_pcibus_devp/a>,.o 99p/a>o oooooo.pa href="+code=dev_attrs" class="sref">dev_attrsp/a>o oooo= pa href="+code=pcibus_dev_attrs" class="sref">pcibus_dev_attrsp/a>,.o100p/a>};vo101p/a>vo102p/a>static intopa href="+code=__init" class="sref">__initp/a>opa href="+code=pcibus_class_init" class="sref">pcibus_class_initp/a>(void)vo103p/a>{.o104p/a>o ooooooreturn pa href="+code=class_register" class="sref">class_registerp/a>(&pa href="+code=pcibus_class" class="sref">pcibus_classp/a>);vo105p/a>}vo106p/a>pa href="+code=postcore_initcall" class="sref">postcore_initcallp/a>(pa href="+code=pcibus_class_init" class="sref">pcibus_class_initp/a>);vo107p/a>vo108p/a>static pa href="+code=u64" class="sref">u64p/a>opa href="+code=pci_size" class="sref">pci_sizep/a>(pa href="+code=u64" class="sref">u64p/a>opa href="+code=base" class="sref">basep/a>,opa href="+code=u64" class="sref">u64p/a>opa href="+code=maxbase" class="sref">maxbasep/a>,opa href="+code=u64" class="sref">u64p/a>opa href="+code=mask" class="sref">maskp/a>)vo109p/a>{.o110p/a>o oooooopa href="+code=u64" class="sref">u64p/a>opa href="+code=size" class="sref">sizep/a>o= pa href="+code=mask" class="sref">maskp/a> &opa href="+code=maxbase" class="sref">maxbasep/a>;oooooopspa1 class="comment">/* Find the significantobits */p/spa14.o111p/a>o ooooooif (!pa href="+code=size" class="sref">sizep/a>)vo112p/a>o ooooooo ooooooreturn 0;vo113p/a>vo114p/a>o oooooopspa1 class="comment">/* Get the lowest of them to find the decode size, andp/spa14.o115p/a>pspa1 class="comment">oooo oooooofrom that the extent. */p/spa14.o116p/a>o oooooopa href="+code=size" class="sref">sizep/a>o= (pa href="+code=size" class="sref">sizep/a>o&o~(pa href="+code=size" class="sref">sizep/a>-1)) - 1;vo117p/a>vo118p/a>o oooooopspa1 class="comment">/* baseo== maxbase can be valid onlyoif the BAR hasp/spa14.o119p/a>pspa1 class="comment"> already been programmed with all 1s. */p/spa14.o120p/a>o ooooooif (pa href="+code=base" class="sref">basep/a>o== pa href="+code=maxbase" class="sref">maxbasep/a>o&&o((pa href="+code=base" class="sref">basep/a>o| pa href="+code=size" class="sref">sizep/a>) &opa href="+code=mask" class="sref">maskp/a>) != pa href="+code=mask" class="sref">maskp/a>)vo121p/a>o ooooooo ooooooreturn 0;vo122p/a>vo123p/a>o ooooooreturn pa href="+code=size" class="sref">sizep/a>;vo124p/a>}vo125p/a>vo126p/a>static pa href="+code=inline" class="sref">inlinep/a>ounsigned longopa href="+code=decode_bar" class="sref">decode_barp/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>, pa href="+code=u32" class="sref">u32p/a>opa href="+code=bar" class="sref">barp/a>)vo127p/a>{.o128p/a>o oooooopa href="+code=u32" class="sref">u32p/a>opa href="+code=mem_typ<" class="sref">mem_typ

;vo129p/a>o oooooounsigned longopa href="+code=flags" class="sref">flagsp/a>;vo130p/a>vo131p/a>o ooooooif ((pa href="+code=bar" class="sref">barp/a> &opa href="+code=PCI_BASE_ADDRESS_SPACE" class="sref">PCI_BASE_ADDRESS_SPACEp/a>) == pa href="+code=PCI_BASE_ADDRESS_SPACE_IO" class="sref">PCI_BASE_ADDRESS_SPACE_IOp/a>) {.o132p/a>o ooooooo oooooopa href="+code=flags" class="sref">flagsp/a>o= pa href="+code=bar" class="sref">barp/a> &o~pa href="+code=PCI_BASE_ADDRESS_IO_MASK" class="sref">PCI_BASE_ADDRESS_IO_MASKp/a>;vo133p/a>o ooooooo oooooopa href="+code=flags" class="sref">flagsp/a>o|= pa href="+code=IORESOURCE_IO" class="sref">IORESOURCE_IOp/a>;vo134p/a>o ooooooo ooooooreturn pa href="+code=flags" class="sref">flagsp/a>;vo135p/a>o oooooo}vo136p/a>vo137p/a>o oooooopa href="+code=flags" class="sref">flagsp/a>o= pa href="+code=bar" class="sref">barp/a> &o~pa href="+code=PCI_BASE_ADDRESS_MEM_MASK" class="sref">PCI_BASE_ADDRESS_MEM_MASKp/a>;vo138p/a>o oooooopa href="+code=flags" class="sref">flagsp/a>o|= pa href="+code=IORESOURCE_MEM" class="sref">IORESOURCE_MEMp/a>;vo139p/a>o ooooooif (pa href="+code=flags" class="sref">flagsp/a>o&opa href="+code=PCI_BASE_ADDRESS_MEM_PREFETCH" class="sref">PCI_BASE_ADDRESS_MEM_PREFETCHp/a>)vo140p/a>o ooooooo oooooopa href="+code=flags" class="sref">flagsp/a>o|= pa href="+code=IORESOURCE_PREFETCH" class="sref">IORESOURCE_PREFETCHp/a>;vo141p/a>vo142p/a>o oooooopa href="+code=mem_typ<" class="sref">mem_typ

o= pa href="+code=bar" class="sref">barp/a> &opa href="+code=PCI_BASE_ADDRESS_MEM_TYPE_MASK" class="sref">PCI_BASE_ADDRESS_MEM_TYPE_MASKp/a>;vo143p/a>o ooooooswitch (pa href="+code=mem_typ<" class="sref">mem_typ

) {.o144p/a>o oooooocase pa href="+code=PCI_BASE_ADDRESS_MEM_TYPE_32" class="sref">PCI_BASE_ADDRESS_MEM_TYPE_32p/a>:.o145p/a>o ooooooo oooooobreak;vo146p/a>o oooooocase pa href="+code=PCI_BASE_ADDRESS_MEM_TYPE_1M" class="sref">PCI_BASE_ADDRESS_MEM_TYPE_1Mp/a>:.o147p/a>o ooooooo oooooopspa1 class="comment">/* 1M mem BAR treated as 32-bit BAR */p/spa14.o148p/a>o ooooooo oooooobreak;vo149p/a>o oooooocase pa href="+code=PCI_BASE_ADDRESS_MEM_TYPE_64" class="sref">PCI_BASE_ADDRESS_MEM_TYPE_64p/a>:.o150p/a>o ooooooo oooooopa href="+code=flags" class="sref">flagsp/a>o|= pa href="+code=IORESOURCE_MEM_64" class="sref">IORESOURCE_MEM_64p/a>;vo151p/a>o ooooooo oooooobreak;vo152p/a>o oooooodefault:.o153p/a>o ooooooo oooooopspa1 class="comment">/* mem unknow typ< treated as 32-bit BAR */p/spa14.o154p/a>o ooooooo oooooobreak;vo155p/a>o oooooo}vo156p/a>o ooooooreturn pa href="+code=flags" class="sref">flagsp/a>;vo157p/a>}vo158p/a>vo159p/a>pspa1 class="comment">/**p/spa14.o160p/a>pspa1 class="comment"> * pci_read_base - read a PCI BARp/spa14.o161p/a>pspa1 class="comment"> * @dev: the PCI devicep/spa14.o162p/a>pspa1 class="comment"> * @typ<: typ< of the BARp/spa14.o163p/a>pspa1 class="comment"> * @res: resource buffer to be filled inp/spa14.o164p/a>pspa1 class="comment"> * @pos: BAR posiv3.1 in the config spacep/spa14.o165p/a>pspa1 class="comment"> *p/spa14.o166p/a>pspa1 class="comment"> * Returns 1oif the BAR is 64-bit, or 0oif 32-bit.p/spa14.o167p/a>pspa1 class="comment"> */p/spa14.o168p/a>intopa href="+code=__pci_read_base" class="sref">__pci_read_basep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>, enumopa href="+code=pci_bar_typ<" class="sref">pci_bar_typ

opa href="+code=typ<" class="sref">typ

,.o169p/a>o ooooooo oooooooooooooostructopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=res" class="sref">resp/a>,ounsigned intopa href="+code=pos" class="sref">posp/a>)vo170p/a>{.o171p/a>o oooooopa href="+code=u32" class="sref">u32p/a>opa href="+code=l" class="sref">lp/a>, pa href="+code=sz" class="sref">szp/a>, pa href="+code=mask" class="sref">maskp/a>;vo172p/a>o oooooopa href="+code=u16" class="sref">u16p/a>opa href="+code=orig_cmd" class="sref">orig_cmdp/a>;vo173p/a>o oooooostructopa href="+code=pci_bus_region" class="sref">pci_bus_regionp/a>opa href="+code=region" class="sref">regionp/a>;vo174p/a>o oooooopa href="+code=bool" class="sref">boolp/a>opa href="+code=bar_too_big" class="sref">bar_too_bigp/a>o= pa href="+code=false" class="sref">falsep/a>, pa href="+code=bar_disabled" class="sref">bar_disabledp/a>o= pa href="+code=false" class="sref">falsep/a>;vo175p/a>vo176p/a>o oooooopa href="+code=mask" class="sref">maskp/a> = pa href="+code=typ<" class="sref">typ

? pa href="+code=PCI_ROM_ADDRESS_MASK" class="sref">PCI_ROM_ADDRESS_MASKp/a> : ~0;vo177p/a>vo178p/a>o oooooopspa1 class="comment">/* No printks while decoding is disabled! */p/spa14.o179p/a>o ooooooif (!pa href="+code=dev" class="sref">devp/a>->pa href="+code=mmio_always_on" class="sref">mmio_always_onp/a>) {.o180p/a>o ooooooo oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_COMMAND" class="sref">PCI_COMMANDp/a>, &pa href="+code=orig_cmd" class="sref">orig_cmdp/a>);vo181p/a>o ooooooo oooooopa href="+code=pci_write_config_word" class="sref">pci_write_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_COMMAND" class="sref">PCI_COMMANDp/a>,vo182p/a>o ooooooo ooooooo oooooopa href="+code=orig_cmd" class="sref">orig_cmdp/a>o&o~(pa href="+code=PCI_COMMAND_MEMORY" class="sref">PCI_COMMAND_MEMORYp/a>o| pa href="+code=PCI_COMMAND_IO" class="sref">PCI_COMMAND_IOp/a>));vo183p/a>o oooooo}vo184p/a>vo185p/a>o oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=nam<" class="sref">nam

o= pa href="+code=pci_nam<" class="sref">pci_nam

(pa href="+code=dev" class="sref">devp/a>);vo186p/a>vo187p/a>o oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a>, &pa href="+code=l" class="sref">lp/a>);vo188p/a>o oooooopa href="+code=pci_write_config_dword" class="sref">pci_write_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a>, pa href="+code=l" class="sref">lp/a>o| pa href="+code=mask" class="sref">maskp/a>);vo189p/a>o oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a>, &pa href="+code=sz" class="sref">szp/a>);vo190p/a>o oooooopa href="+code=pci_write_config_dword" class="sref">pci_write_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a>, pa href="+code=l" class="sref">lp/a>);vo191p/a>vo192p/a>o oooooopspa1 class="comment">/*p/spa14.o193p/a>pspa1 class="comment"> * Allobits set in sz means the device isn't working properly.p/spa14.o194p/a>pspa1 class="comment"> * If the BAR isn't implemented, all bits must be 0. If it's ap/spa14.o195p/a>pspa1 class="comment">oooo oooo* memory BAR or a ROM, bit 0 must be clear;oif it's an io BAR, bitp/spa14.o196p/a>pspa1 class="comment"> ooo oooo* 1 must be clear.p/spa14.o197p/a>pspa1 class="comment"> ooo oooo*/p/spa14.o198p/a>o ooooooif (!pa href="+code=sz" class="sref">szp/a> || pa href="+code=sz" class="sref">szp/a> == 0xffffffff)vo199p/a>o ooooooo oooooogoto pa href="+code=fail" class="sref">failp/a>;vo200p/a>vo201p/a>o oooooopspa1 class="comment">/*p/spa14.o202p/a>pspa1 class="comment"> * I don't knowohowol can have all bits set. Copiedofrom old code.p/spa14.o203p/a>pspa1 class="comment"> * Maybe it fixes a bug on some ancient platform.p/spa14.o204p/a>pspa1 class="comment"> */p/spa14.o205p/a>o ooooooif (pa href="+code=l" class="sref">lp/a>o== 0xffffffff)vo206p/a>o ooooooo oooooopa href="+code=l" class="sref">lp/a>o= 0;vo207p/a>vo208p/a>o ooooooif (pa href="+code=typ<" class="sref">typ

== pa href="+code=pci_bar_unknow " class="sref">pci_bar_unknow p/a>) {.o209p/a>o ooooooo oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o= pa href="+code=decode_bar" class="sref">decode_barp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=l" class="sref">lp/a>);vo210p/a>o ooooooo oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o|= pa href="+code=IORESOURCE_SIZEALIGN" class="sref">IORESOURCE_SIZEALIGNp/a>;vo211p/a>o ooooooo ooooooif (pa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o&opa href="+code=IORESOURCE_IO" class="sref">IORESOURCE_IOp/a>) {.o212p/a>o ooooooo ooooooo oooooopa href="+code=l" class="sref">lp/a>o&= pa href="+code=PCI_BASE_ADDRESS_IO_MASK" class="sref">PCI_BASE_ADDRESS_IO_MASKp/a>;vo213p/a>o ooooooo ooooooo oooooopa href="+code=mask" class="sref">maskp/a> = pa href="+code=PCI_BASE_ADDRESS_IO_MASK" class="sref">PCI_BASE_ADDRESS_IO_MASKp/a>o&o(pa href="+code=u32" class="sref">u32p/a>)opa href="+code=IO_SPACE_LIMIT" class="sref">IO_SPACE_LIMITp/a>;vo214p/a>o ooooooo oooooo} else {.o215p/a>o ooooooo ooooooo oooooopa href="+code=l" class="sref">lp/a>o&= pa href="+code=PCI_BASE_ADDRESS_MEM_MASK" class="sref">PCI_BASE_ADDRESS_MEM_MASKp/a>;vo216p/a>o ooooooo ooooooo oooooopa href="+code=mask" class="sref">maskp/a> = (pa href="+code=u32" class="sref">u32p/a>)pa href="+code=PCI_BASE_ADDRESS_MEM_MASK" class="sref">PCI_BASE_ADDRESS_MEM_MASKp/a>;vo217p/a>o ooooooo oooooo}vo218p/a>o oooooo} else {.o219p/a>o ooooooo oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o|= (pa href="+code=l" class="sref">lp/a>o&opa href="+code=IORESOURCE_ROM_ENABLE" class="sref">IORESOURCE_ROM_ENABLEp/a>);vo220p/a>o ooooooo oooooopa href="+code=l" class="sref">lp/a>o&= pa href="+code=PCI_ROM_ADDRESS_MASK" class="sref">PCI_ROM_ADDRESS_MASKp/a>;vo221p/a>o ooooooo oooooopa href="+code=mask" class="sref">maskp/a> = (pa href="+code=u32" class="sref">u32p/a>)pa href="+code=PCI_ROM_ADDRESS_MASK" class="sref">PCI_ROM_ADDRESS_MASKp/a>;vo222p/a>o oooooo}vo223p/a>vo224p/a>o ooooooif (pa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o&opa href="+code=IORESOURCE_MEM_64" class="sref">IORESOURCE_MEM_64p/a>) {.o225p/a>o ooooooo oooooopa href="+code=u64" class="sref">u64p/a>opa href="+code=l64" class="sref">l64p/a>o= pa href="+code=l" class="sref">lp/a>;vo226p/a>o ooooooo oooooopa href="+code=u64" class="sref">u64p/a>opa href="+code=sz64" class="sref">sz64p/a>o= pa href="+code=sz" class="sref">szp/a>;vo227p/a>o ooooooo oooooopa href="+code=u64" class="sref">u64p/a>opa href="+code=mask64" class="sref">mask64p/a>o= pa href="+code=mask" class="sref">maskp/a> | (pa href="+code=u64" class="sref">u64p/a>)~0 << 32;vo228p/a>vo229p/a>o ooooooo oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a> + 4, &pa href="+code=l" class="sref">lp/a>);vo230p/a>o ooooooo oooooopa href="+code=pci_write_config_dword" class="sref">pci_write_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a> + 4, ~0);vo231p/a>o ooooooo oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a> + 4, &pa href="+code=sz" class="sref">szp/a>);vo232p/a>o ooooooo oooooopa href="+code=pci_write_config_dword" class="sref">pci_write_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a> + 4, pa href="+code=l" class="sref">lp/a>);vo233p/a>vo234p/a>o ooooooo oooooopa href="+code=l64" class="sref">l64p/a>o|= ((pa href="+code=u64" class="sref">u64p/a>)pa href="+code=l" class="sref">lp/a>o<< 32);vo235p/a>o ooooooo oooooopa href="+code=sz64" class="sref">sz64p/a>o|= ((pa href="+code=u64" class="sref">u64p/a>)pa href="+code=sz" class="sref">szp/a> << 32);vo236p/a>vo237p/a>o ooooooo oooooopa href="+code=sz64" class="sref">sz64p/a>o= pa href="+code=pci_size" class="sref">pci_sizep/a>(pa href="+code=l64" class="sref">l64p/a>, pa href="+code=sz64" class="sref">sz64p/a>, pa href="+code=mask64" class="sref">mask64p/a>);vo238p/a>vo239p/a>o ooooooo ooooooif (!pa href="+code=sz64" class="sref">sz64p/a>)vo240p/a>o ooooooo oooooooooooooogoto pa href="+code=fail" class="sref">failp/a>;vo241p/a>vo242p/a>o ooooooo ooooooif ((sizeof(pa href="+code=resource_size_t" class="sref">resource_size_tp/a>) < 8)o&&o(pa href="+code=sz64" class="sref">sz64p/a>o> 0x100000000ULL)) {.o243p/a>o ooooooo ooooooo oooooopa href="+code=bar_too_big" class="sref">bar_too_bigp/a>o= pa href="+code=tru<" class="sref">tru

;vo244p/a>o ooooooo oooooooooooooogoto pa href="+code=fail" class="sref">failp/a>;vo245p/a>o ooooooo oooooo}vo246p/a>vo247p/a>o ooooooo ooooooif ((sizeof(pa href="+code=resource_size_t" class="sref">resource_size_tp/a>) < 8)o&&opa href="+code=l" class="sref">lp/a>) {.o248p/a>o ooooooo ooooooo oooooopspa1 class="comment">/* Address above 32-bit boundary; disable the BAR */p/spa14.o249p/a>o ooooooo oooooooooooooopa href="+code=pci_write_config_dword" class="sref">pci_write_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a>, 0);vo250p/a>o ooooooo oooooooooooooopa href="+code=pci_write_config_dword" class="sref">pci_write_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pos" class="sref">posp/a> + 4, 0);vo251p/a>o ooooooo oooooooooooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=start" class="sref">startp/a>o= 0;vo252p/a>o ooooooo ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=end" class="sref">endp/a>o= pa href="+code=sz64" class="sref">sz64p/a>;vo253p/a>o ooooooo oooooooooooooopa href="+code=pcibios_bus_to_resource" class="sref">pcibios_bus_to_resourcep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=res" class="sref">resp/a>,o&pa href="+code=region" class="sref">regionp/a>);vo254p/a>o ooooooo oooooooooooooopa href="+code=bar_disabled" class="sref">bar_disabledp/a>o= pa href="+code=tru<" class="sref">tru

;vo255p/a>o ooooooo oooooo} else {.o256p/a>o ooooooo ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=start" class="sref">startp/a>o= pa href="+code=l64" class="sref">l64p/a>;vo257p/a>o ooooooo ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=end" class="sref">endp/a>o= pa href="+code=l64" class="sref">l64p/a>o+ pa href="+code=sz64" class="sref">sz64p/a>;vo258p/a>o ooooooo ooooooo oooooopa href="+code=pcibios_bus_to_resource" class="sref">pcibios_bus_to_resourcep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=res" class="sref">resp/a>,o&pa href="+code=region" class="sref">regionp/a>);vo259p/a>o ooooooo oooooo}vo260p/a>o oooooo} else {.o261p/a>o ooooooo oooooopa href="+code=sz" class="sref">szp/a> = pa href="+code=pci_size" class="sref">pci_sizep/a>(pa href="+code=l" class="sref">lp/a>, pa href="+code=sz" class="sref">szp/a>, pa href="+code=mask" class="sref">maskp/a>);vo262p/a>vo263p/a>o ooooooo ooooooif (!pa href="+code=sz" class="sref">szp/a>)vo264p/a>o ooooooo oooooooooooooogoto pa href="+code=fail" class="sref">failp/a>;vo265p/a>vo266p/a>o ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=start" class="sref">startp/a>o= pa href="+code=l" class="sref">lp/a>;vo267p/a>o ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=end" class="sref">endp/a>o= pa href="+code=l" class="sref">lp/a>o+ pa href="+code=sz" class="sref">szp/a>;vo268p/a>o ooooooo oooooopa href="+code=pcibios_bus_to_resource" class="sref">pcibios_bus_to_resourcep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=res" class="sref">resp/a>,o&pa href="+code=region" class="sref">regionp/a>);vo269p/a>o oooooo}vo270p/a>vo271p/a>o oooooogoto pa href="+code=out" class="sref">outp/a>;vo272p/a>vo273p/a>vo274p/a>pa href="+code=fail" class="sref">failp/a>:.o275p/a>o oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o= 0;vo276p/a>pa href="+code=out" class="sref">outp/a>:.o277p/a>o ooooooif (!pa href="+code=dev" class="sref">devp/a>->pa href="+code=mmio_always_on" class="sref">mmio_always_onp/a>).o278p/a>o ooooooo oooooopa href="+code=pci_write_config_word" class="sref">pci_write_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_COMMAND" class="sref">PCI_COMMANDp/a>,opa href="+code=orig_cmd" class="sref">orig_cmdp/a>);vo279p/a>vo280p/a>o ooooooif (pa href="+code=bar_too_big" class="sref">bar_too_bigp/a>).o281p/a>o ooooooo oooooopa href="+code=dev_err" class="sref">dev_errp/a>(&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>, pspa1 class="string">"reg %x: can't handle 64-bit BAR\n"p/spa14, pa href="+code=pos" class="sref">posp/a>);vo282p/a>o ooooooif (pa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o&&o!pa href="+code=bar_disabled" class="sref">bar_disabledp/a>).o283p/a>o ooooooo oooooopa href="+code=dev_printk" class="sref">dev_printkp/a>(pa href="+code=KERN_DEBUG" class="sref">KERN_DEBUGp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>, pspa1 class="string">"reg %x: %pR\n"p/spa14, pa href="+code=pos" class="sref">posp/a>, pa href="+code=res" class="sref">resp/a>);vo284p/a>vo285p/a>o ooooooreturn (pa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o&opa href="+code=IORESOURCE_MEM_64" class="sref">IORESOURCE_MEM_64p/a>) ? 1 : 0;vo286p/a>}vo287p/a>vo288p/a>static voidopa href="+code=pci_read_bases" class="sref">pci_read_basesp/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>, unsigned intopa href="+code=howmany" class="sref">howmanyp/a>, intopa href="+code=rom" class="sref">romp/a>).o289p/a>{.o290p/a>o oooooounsigned intopa href="+code=pos" class="sref">posp/a>, pa href="+code=reg" class="sref">regp/a>;vo291p/a>vo292p/a>o oooooofor (pa href="+code=pos" class="sref">posp/a> = 0; pa href="+code=pos" class="sref">posp/a> < pa href="+code=howmany" class="sref">howmanyp/a>; pa href="+code=pos" class="sref">posp/a>++) {.o293p/a>o ooooooo oooooostructopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=res" class="sref">resp/a> = &pa href="+code=dev" class="sref">devp/a>->pa href="+code=resource" class="sref">resourcep/a>[pa href="+code=pos" class="sref">posp/a>];vo294p/a>o ooooooo oooooopa href="+code=reg" class="sref">regp/a> = pa href="+code=PCI_BASE_ADDRESS_0" class="sref">PCI_BASE_ADDRESS_0p/a>o+ (pa href="+code=pos" class="sref">posp/a> << 2);vo295p/a>o ooooooo oooooopa href="+code=pos" class="sref">posp/a> += pa href="+code=__pci_read_base" class="sref">__pci_read_basep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pci_bar_unknow " class="sref">pci_bar_unknow p/a>, pa href="+code=res" class="sref">resp/a>,opa href="+code=reg" class="sref">regp/a>);vo296p/a>o oooooo}vo297p/a>vo298p/a>o ooooooif (pa href="+code=rom" class="sref">romp/a>) {.o299p/a>o ooooooo oooooostructopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=res" class="sref">resp/a> = &pa href="+code=dev" class="sref">devp/a>->pa href="+code=resource" class="sref">resourcep/a>[pa href="+code=PCI_ROM_RESOURCE" class="sref">PCI_ROM_RESOURCEp/a>];vo300p/a>o ooooooo oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=rom_base_reg" class="sref">rom_base_regp/a> = pa href="+code=rom" class="sref">romp/a>;vo301p/a>o ooooooo oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o= pa href="+code=IORESOURCE_MEM" class="sref">IORESOURCE_MEMp/a>o| pa href="+code=IORESOURCE_PREFETCH" class="sref">IORESOURCE_PREFETCHp/a> |vo302p/a>o ooooooo ooooooo ooooooo oooooopa href="+code=IORESOURCE_READONLY" class="sref">IORESOURCE_READONLYp/a>o| pa href="+code=IORESOURCE_CACHEABLE" class="sref">IORESOURCE_CACHEABLEp/a> |vo303p/a>o ooooooo ooooooooooooooo oooooopa href="+code=IORESOURCE_SIZEALIGN" class="sref">IORESOURCE_SIZEALIGNp/a>;vo304p/a>o ooooooo oooooopa href="+code=__pci_read_base" class="sref">__pci_read_basep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=pci_bar_mem32" class="sref">pci_bar_mem32p/a>, pa href="+code=res" class="sref">resp/a>,opa href="+code=rom" class="sref">romp/a>);vo305p/a>o oooooo}vo306p/a>}vo307p/a>vo308p/a>static voidopa href="+code=__devinit" class="sref">__devinitp/a>opa href="+code=pci_read_bridge_io" class="sref">pci_read_bridge_iop/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=child" class="sref">childp/a>).o309p/a>{.o310p/a>o oooooostructopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>o= pa href="+code=child" class="sref">childp/a>->pa href="+code=self" class="sref">selfp/a>;vo311p/a>o oooooopa href="+code=u8" class="sref">u8p/a>opa href="+code=io_base_lo" class="sref">io_base_lop/a>,opa href="+code=io_limit_lo" class="sref">io_limit_lop/a>;vo312p/a>o oooooounsigned longopa href="+code=io_mask" class="sref">io_maskp/a>,opa href="+code=io_granularity" class="sref">io_granularityp/a>,opa href="+code=base" class="sref">basep/a>, pa href="+code=limit" class="sref">limitp/a>;vo313p/a>o oooooostructopa href="+code=pci_bus_region" class="sref">pci_bus_regionp/a>opa href="+code=region" class="sref">regionp/a>;vo314p/a>o oooooostructopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=res" class="sref">resp/a>;vo315p/a>vo316p/a>o oooooopa href="+code=io_mask" class="sref">io_maskp/a> = pa href="+code=PCI_IO_RANGE_MASK" class="sref">PCI_IO_RANGE_MASKp/a>;vo317p/a>o oooooopa href="+code=io_granularity" class="sref">io_granularityp/a> = 0x1000;vo318p/a>o ooooooif (pa href="+code=dev" class="sref">devp/a>->pa href="+code=io_window_1k" class="sref">io_window_1kp/a>) {.o319p/a>o ooooooo oooooopspa1 class="comment">/* Support 1K I/O space granularity */p/spa14.o320p/a>o ooooooo oooooopa href="+code=io_mask" class="sref">io_maskp/a> = pa href="+code=PCI_IO_1K_RANGE_MASK" class="sref">PCI_IO_1K_RANGE_MASKp/a>;vo321p/a>o ooooooo oooooopa href="+code=io_granularity" class="sref">io_granularityp/a> = 0x400;vo322p/a>o oooooo}vo323p/a>vo324p/a>o oooooopa href="+code=res" class="sref">resp/a> = pa href="+code=child" class="sref">childp/a>->pa href="+code=resource" class="sref">resourcep/a>[0];vo325p/a>o oooooopa href="+code=pci_read_config_byte" class="sref">pci_read_config_bytep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_IO_BASE" class="sref">PCI_IO_BASEp/a>,o&pa href="+code=io_base_lo" class="sref">io_base_lop/a>);vo326p/a>o oooooopa href="+code=pci_read_config_byte" class="sref">pci_read_config_bytep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_IO_LIMIT" class="sref">PCI_IO_LIMITp/a>,o&pa href="+code=io_limit_lo" class="sref">io_limit_lop/a>);vo327p/a>o oooooopa href="+code=base" class="sref">basep/a> = (pa href="+code=io_base_lo" class="sref">io_base_lop/a>o&opa href="+code=io_mask" class="sref">io_maskp/a>) << 8;vo328p/a>o oooooopa href="+code=limit" class="sref">limitp/a> = (pa href="+code=io_limit_lo" class="sref">io_limit_lop/a>o&opa href="+code=io_mask" class="sref">io_maskp/a>) << 8;vo329p/a>vo330p/a>o ooooooif ((pa href="+code=io_base_lo" class="sref">io_base_lop/a>o&opa href="+code=PCI_IO_RANGE_TYPE_MASK" class="sref">PCI_IO_RANGE_TYPE_MASKp/a>) == pa href="+code=PCI_IO_RANGE_TYPE_32" class="sref">PCI_IO_RANGE_TYPE_32p/a>) {.o331p/a>o ooooooo oooooopa href="+code=u16" class="sref">u16p/a>opa href="+code=io_base_hi" class="sref">io_base_hip/a>,opa href="+code=io_limit_hi" class="sref">io_limit_hip/a>;vo332p/a>vo333p/a>o ooooooo oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_IO_BASE_UPPER16" class="sref">PCI_IO_BASE_UPPER16p/a>,o&pa href="+code=io_base_hi" class="sref">io_base_hip/a>);vo334p/a>o ooooooo oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_IO_LIMIT_UPPER16" class="sref">PCI_IO_LIMIT_UPPER16p/a>,o&pa href="+code=io_limit_hi" class="sref">io_limit_hip/a>);vo335p/a>o ooooooo oooooopa href="+code=base" class="sref">basep/a> |= ((unsigned long)opa href="+code=io_base_hi" class="sref">io_base_hip/a> << 16);vo336p/a>o ooooooo oooooopa href="+code=limit" class="sref">limitp/a> |= ((unsigned long)opa href="+code=io_limit_hi" class="sref">io_limit_hip/a> << 16);vo337p/a>o oooooo}vo338p/a>vo339p/a>o ooooooif (pa href="+code=base" class="sref">basep/a> <= pa href="+code=limit" class="sref">limitp/a>) {.o340p/a>o ooooooo oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o= (pa href="+code=io_base_lo" class="sref">io_base_lop/a>o&opa href="+code=PCI_IO_RANGE_TYPE_MASK" class="sref">PCI_IO_RANGE_TYPE_MASKp/a>) | pa href="+code=IORESOURCE_IO" class="sref">IORESOURCE_IOp/a>;vo341p/a>o ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=start" class="sref">startp/a>o= pa href="+code=base" class="sref">basep/a>;vo342p/a>o ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=end" class="sref">endp/a>o= pa href="+code=limit" class="sref">limitp/a> + pa href="+code=io_granularity" class="sref">io_granularityp/a> - 1;vo343p/a>o ooooooo oooooopa href="+code=pcibios_bus_to_resource" class="sref">pcibios_bus_to_resourcep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=res" class="sref">resp/a>,o&pa href="+code=region" class="sref">regionp/a>);vo344p/a>o ooooooo oooooopa href="+code=dev_printk" class="sref">dev_printkp/a>(pa href="+code=KERN_DEBUG" class="sref">KERN_DEBUGp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>, pspa1 class="string">" bridge window %pR\n"p/spa14, pa href="+code=res" class="sref">resp/a>);vo345p/a>o oooooo}vo346p/a>}vo347p/a>vo348p/a>static voidopa href="+code=__devinit" class="sref">__devinitp/a>opa href="+code=pci_read_bridge_mmio" class="sref">pci_read_bridge_mmiop/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=child" class="sref">childp/a>).o349p/a>{.o350p/a>o oooooostructopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>o= pa href="+code=child" class="sref">childp/a>->pa href="+code=self" class="sref">selfp/a>;vo351p/a>o oooooopa href="+code=u16" class="sref">u16p/a>opa href="+code=mem_base_lo" class="sref">mem_base_lop/a>, pa href="+code=mem_limit_lo" class="sref">mem_limit_lop/a>;vo352p/a>o oooooounsigned longopa href="+code=base" class="sref">basep/a>, pa href="+code=limit" class="sref">limitp/a>;vo353p/a>o oooooostructopa href="+code=pci_bus_region" class="sref">pci_bus_regionp/a>opa href="+code=region" class="sref">regionp/a>;vo354p/a>o oooooostructopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=res" class="sref">resp/a>;vo355p/a>vo356p/a>o oooooopa href="+code=res" class="sref">resp/a> = pa href="+code=child" class="sref">childp/a>->pa href="+code=resource" class="sref">resourcep/a>[1];vo357p/a>o oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_MEMORY_BASE" class="sref">PCI_MEMORY_BASEp/a>,o&pa href="+code=mem_base_lo" class="sref">mem_base_lop/a>);vo358p/a>o oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_MEMORY_LIMIT" class="sref">PCI_MEMORY_LIMITp/a>,o&pa href="+code=mem_limit_lo" class="sref">mem_limit_lop/a>);vo359p/a>o oooooopa href="+code=base" class="sref">basep/a> = ((unsigned long)opa href="+code=mem_base_lo" class="sref">mem_base_lop/a>o&opa href="+code=PCI_MEMORY_RANGE_MASK" class="sref">PCI_MEMORY_RANGE_MASKp/a>) << 16;vo360p/a>o oooooopa href="+code=limit" class="sref">limitp/a> = ((unsigned long)opa href="+code=mem_limit_lo" class="sref">mem_limit_lop/a>o&opa href="+code=PCI_MEMORY_RANGE_MASK" class="sref">PCI_MEMORY_RANGE_MASKp/a>) << 16;vo361p/a>o ooooooif (pa href="+code=base" class="sref">basep/a> <= pa href="+code=limit" class="sref">limitp/a>) {.o362p/a>o ooooooo oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o= (pa href="+code=mem_base_lo" class="sref">mem_base_lop/a>o&opa href="+code=PCI_MEMORY_RANGE_TYPE_MASK" class="sref">PCI_MEMORY_RANGE_TYPE_MASKp/a>) | pa href="+code=IORESOURCE_MEM" class="sref">IORESOURCE_MEMp/a>;vo363p/a>o ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=start" class="sref">startp/a>o= pa href="+code=base" class="sref">basep/a>;vo364p/a>o ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=end" class="sref">endp/a>o= pa href="+code=limit" class="sref">limitp/a> + 0xfffff;vo365p/a>o ooooooo oooooopa href="+code=pcibios_bus_to_resource" class="sref">pcibios_bus_to_resourcep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=res" class="sref">resp/a>,o&pa href="+code=region" class="sref">regionp/a>);vo366p/a>o ooooooo oooooopa href="+code=dev_printk" class="sref">dev_printkp/a>(pa href="+code=KERN_DEBUG" class="sref">KERN_DEBUGp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>, pspa1 class="string">" bridge window %pR\n"p/spa14, pa href="+code=res" class="sref">resp/a>);vo367p/a>o oooooo}vo368p/a>}vo369p/a>vo370p/a>static voidopa href="+code=__devinit" class="sref">__devinitp/a>opa href="+code=pci_read_bridge_mmio_pref" class="sref">pci_read_bridge_mmio_prefp/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=child" class="sref">childp/a>).o371p/a>{.o372p/a>o oooooostructopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>o= pa href="+code=child" class="sref">childp/a>->pa href="+code=self" class="sref">selfp/a>;vo373p/a>o oooooopa href="+code=u16" class="sref">u16p/a>opa href="+code=mem_base_lo" class="sref">mem_base_lop/a>, pa href="+code=mem_limit_lo" class="sref">mem_limit_lop/a>;vo374p/a>o oooooounsigned longopa href="+code=base" class="sref">basep/a>, pa href="+code=limit" class="sref">limitp/a>;vo375p/a>o oooooostructopa href="+code=pci_bus_region" class="sref">pci_bus_regionp/a>opa href="+code=region" class="sref">regionp/a>;vo376p/a>o oooooostructopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=res" class="sref">resp/a>;vo377p/a>vo378p/a>o oooooopa href="+code=res" class="sref">resp/a> = pa href="+code=child" class="sref">childp/a>->pa href="+code=resource" class="sref">resourcep/a>[2];vo379p/a>o oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_PREF_MEMORY_BASE" class="sref">PCI_PREF_MEMORY_BASEp/a>,o&pa href="+code=mem_base_lo" class="sref">mem_base_lop/a>);vo380p/a>o oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_PREF_MEMORY_LIMIT" class="sref">PCI_PREF_MEMORY_LIMITp/a>,o&pa href="+code=mem_limit_lo" class="sref">mem_limit_lop/a>);vo381p/a>o oooooopa href="+code=base" class="sref">basep/a> = ((unsigned long)opa href="+code=mem_base_lo" class="sref">mem_base_lop/a>o&opa href="+code=PCI_PREF_RANGE_MASK" class="sref">PCI_PREF_RANGE_MASKp/a>) << 16;vo382p/a>o oooooopa href="+code=limit" class="sref">limitp/a> = ((unsigned long)opa href="+code=mem_limit_lo" class="sref">mem_limit_lop/a>o&opa href="+code=PCI_PREF_RANGE_MASK" class="sref">PCI_PREF_RANGE_MASKp/a>) << 16;vo383p/a>vo384p/a>o ooooooif ((pa href="+code=mem_base_lo" class="sref">mem_base_lop/a>o&opa href="+code=PCI_PREF_RANGE_TYPE_MASK" class="sref">PCI_PREF_RANGE_TYPE_MASKp/a>) == pa href="+code=PCI_PREF_RANGE_TYPE_64" class="sref">PCI_PREF_RANGE_TYPE_64p/a>) {.o385p/a>o ooooooo oooooopa href="+code=u32" class="sref">u32p/a>opa href="+code=mem_base_hi" class="sref">mem_base_hip/a>, pa href="+code=mem_limit_hi" class="sref">mem_limit_hip/a>;vo386p/a>vo387p/a>o ooooooo oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_PREF_BASE_UPPER32" class="sref">PCI_PREF_BASE_UPPER32p/a>,o&pa href="+code=mem_base_hi" class="sref">mem_base_hip/a>);vo388p/a>o ooooooo oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=PCI_PREF_LIMIT_UPPER32" class="sref">PCI_PREF_LIMIT_UPPER32p/a>,o&pa href="+code=mem_limit_hi" class="sref">mem_limit_hip/a>);vo389p/a>vo390p/a>o ooooooo oooooopspa1 class="comment">/*p/spa14.o391p/a>pspa1 class="comment">o ooooooo oooooo * Some bridges set the baseo> limit by default, and somep/spa14.o392p/a>pspa1 class="comment">o ooooooo oooooo * (broken) BIOSes do not initialize them. If we findp/spa14.o393p/a>pspa1 class="comment">o ooooooo oooooo * this, just assume they are not being used.p/spa14.o394p/a>pspa1 class="comment">o ooooooo oooooo */p/spa14.o395p/a>o ooooooo ooooooif (pa href="+code=mem_base_hi" class="sref">mem_base_hip/a> <= pa href="+code=mem_limit_hi" class="sref">mem_limit_hip/a>) {.o396p/a>#if pa href="+code=BITS_PER_LONG" class="sref">BITS_PER_LONGp/a> == 64.o397p/a>o ooooooo ooooooo oooooopa href="+code=base" class="sref">basep/a> |= ((unsigned long)opa href="+code=mem_base_hi" class="sref">mem_base_hip/a>) << 32;vo398p/a>o ooooooo ooooooo oooooopa href="+code=limit" class="sref">limitp/a> |= ((unsigned long)opa href="+code=mem_limit_hi" class="sref">mem_limit_hip/a>) << 32;vo399p/a>#elsevo400p/a>o ooooooo ooooooo ooooooif (pa href="+code=mem_base_hi" class="sref">mem_base_hip/a> || pa href="+code=mem_limit_hi" class="sref">mem_limit_hip/a>) {.o401p/a>o ooooooo ooooooo ooooooo oooooopa href="+code=dev_err" class="sref">dev_errp/a>(&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>, pspa1 class="string">"can't handle 64-bit "p/spa14.o402p/a>o ooooooo ooooooo ooooooo ooooooo oooooopspa1 class="string">"address space for bridge\n"p/spa14);vo403p/a>o ooooooo ooooooooooooooo ooooooreturn;vo404p/a>o ooooooo oooooooooooooo}vo405p/a>#endifvo406p/a>o ooooooo oooooo}vo407p/a>o oooooo}vo408p/a>o ooooooif (pa href="+code=base" class="sref">basep/a> <= pa href="+code=limit" class="sref">limitp/a>) {.o409p/a>o ooooooo oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o= (pa href="+code=mem_base_lo" class="sref">mem_base_lop/a>o&opa href="+code=PCI_PREF_RANGE_TYPE_MASK" class="sref">PCI_PREF_RANGE_TYPE_MASKp/a>) |vo410p/a>o ooooooo ooooooo ooooooooooooooooooooooopa href="+code=IORESOURCE_MEM" class="sref">IORESOURCE_MEMp/a>o| pa href="+code=IORESOURCE_PREFETCH" class="sref">IORESOURCE_PREFETCHp/a>;vo411p/a>o ooooooo ooooooif (pa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o& pa href="+code=PCI_PREF_RANGE_TYPE_64" class="sref">PCI_PREF_RANGE_TYPE_64p/a>)vo412p/a>o ooooooo ooooooo oooooopa href="+code=res" class="sref">resp/a>->pa href="+code=flags" class="sref">flagsp/a>o|= pa href="+code=IORESOURCE_MEM_64" class="sref">IORESOURCE_MEM_64p/a>;vo413p/a>o ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=start" class="sref">startp/a>o= pa href="+code=base" class="sref">basep/a>;vo414p/a>o ooooooo oooooopa href="+code=region" class="sref">regionp/a>.pa href="+code=end" class="sref">endp/a>o= pa href="+code=limit" class="sref">limitp/a> + 0xfffff;vo415p/a>o ooooooo oooooopa href="+code=pcibios_bus_to_resource" class="sref">pcibios_bus_to_resourcep/a>(pa href="+code=dev" class="sref">devp/a>, pa href="+code=res" class="sref">resp/a>,o&pa href="+code=region" class="sref">regionp/a>);vo416p/a>o ooooooo oooooopa href="+code=dev_printk" class="sref">dev_printkp/a>(pa href="+code=KERN_DEBUG" class="sref">KERN_DEBUGp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>, pspa1 class="string">" bridge window %pR\n"p/spa14, pa href="+code=res" class="sref">resp/a>);vo417p/a>o oooooo}vo418p/a>}vo419p/a>vo420p/a>voidopa href="+code=__devinit" class="sref">__devinitp/a>opa href="+code=pci_read_bridge_bases" class="sref">pci_read_bridge_basesp/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=child" class="sref">childp/a>).o421p/a>{.o422p/a>o oooooostructopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>o= pa href="+code=child" class="sref">childp/a>->pa href="+code=self" class="sref">selfp/a>;vo423p/a>o oooooostructopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=res" class="sref">resp/a>;vo424p/a>o oooooointopa href="+code=i" class="sref">ip/a>;vo425p/a>vo426p/a>o ooooooif (pa href="+code=pci_is_root_bus" class="sref">pci_is_root_busp/a>(pa href="+code=child" class="sref">childp/a>))ooooopspa1 class="comment">/* It's a host bus, nothing to read */p/spa14.o427p/a>o ooooooo ooooooreturn;vo428p/a>vo429p/a>o oooooopa href="+code=dev_info" class="sref">dev_infop/a>(&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>, pspa1 class="string">"PCI bridge to %pR%s\n"p/spa14,vo430p/a>o ooooooo ooooooo&pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>,vo431p/a>o ooooooo ooooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=transparent" class="sref">transparentp/a>o? pspa1 class="string">" (subtractive decode)"p/spa14 : pspa1 class="string">""p/spa14);vo432p/a>vo433p/a>o oooooopa href="+code=pci_bus_remove_resources" class="sref">pci_bus_remove_resourcesp/a>(pa href="+code=child" class="sref">childp/a>);vo434p/a>o oooooofor (pa href="+code=i" class="sref">ip/a> = 0; pa href="+code=i" class="sref">ip/a> < pa href="+code=PCI_BRIDGE_RESOURCE_NUM" class="sref">PCI_BRIDGE_RESOURCE_NUMp/a>; pa href="+code=i" class="sref">ip/a>++).o435p/a>o ooooooo oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=resource" class="sref">resourcep/a>[pa href="+code=i" class="sref">ip/a>] = &pa href="+code=dev" class="sref">devp/a>->pa href="+code=resource" class="sref">resourcep/a>[pa href="+code=PCI_BRIDGE_RESOURCES" class="sref">PCI_BRIDGE_RESOURCESp/a>+pa href="+code=i" class="sref">ip/a>];vo436p/a>vo437p/a>o oooooopa href="+code=pci_read_bridge_io" class="sref">pci_read_bridge_iop/a>(pa href="+code=child" class="sref">childp/a>);vo438p/a>o oooooopa href="+code=pci_read_bridge_mmio" class="sref">pci_read_bridge_mmiop/a>(pa href="+code=child" class="sref">childp/a>);vo439p/a>o oooooopa href="+code=pci_read_bridge_mmio_pref" class="sref">pci_read_bridge_mmio_prefp/a>(pa href="+code=child" class="sref">childp/a>);vo440p/a>vo441p/a>o ooooooif (pa href="+code=dev" class="sref">devp/a>->pa href="+code=transparent" class="sref">transparentp/a>) {.o442p/a>o ooooooo oooooopa href="+code=pci_bus_for_each_resource" class="sref">pci_bus_for_each_resourcep/a>(pa href="+code=child" class="sref">childp/a>->pa href="+code=parent" class="sref">parentp/a>, pa href="+code=res" class="sref">resp/a>,opa href="+code=i" class="sref">ip/a>) {.o443p/a>o ooooooo ooooooo ooooooif (pa href="+code=res" class="sref">resp/a>) {.o444p/a>o ooooooo ooooooo ooooooo oooooopa href="+code=pci_bus_add_resource" class="sref">pci_bus_add_resourcep/a>(pa href="+code=child" class="sref">childp/a>, pa href="+code=res" class="sref">resp/a>,.o445p/a>o ooooooo ooooooooooooooooooooooooooooooooooooooooooopa href="+code=PCI_SUBTRACTIVE_DECODE" class="sref">PCI_SUBTRACTIVE_DECODEp/a>);vo446p/a>o ooooooo oooooooooooooooooooooopa href="+code=dev_printk" class="sref">dev_printkp/a>(pa href="+code=KERN_DEBUG" class="sref">KERN_DEBUGp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>,vo447p/a>o ooooooo ooooooo ooooooooooooooooooooooooopspa1 class="string">" bridge window %pR (subtractive decode)\n"p/spa14,vo448p/a>o ooooooo ooooooo ooooooooooooooooooooooooopa href="+code=res" class="sref">resp/a>);vo449p/a>o ooooooo oooooooooooooo}vo450p/a>o ooooooo oooooo}vo451p/a>o oooooo}vo452p/a>}vo453p/a>vo454p/a>static structopa href="+code=pci_bus" class="sref">pci_busp/a>o*opa href="+code=pci_alloc_bus" class="sref">pci_alloc_busp/a>(void).o455p/a>{.o456p/a>o oooooostructopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=b" class="sref">bp/a>;vo457p/a>vo458p/a>o oooooopa href="+code=b" class="sref">bp/a>o= pa href="+code=kzalloc" class="sref">kzallocp/a>(sizeof(*pa href="+code=b" class="sref">bp/a>), pa href="+code=GFP_KERNEL" class="sref">GFP_KERNELp/a>);vo459p/a>o ooooooif (pa href="+code=b" class="sref">bp/a>) {.o460p/a>o ooooooo oooooopa href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEADp/a>(&pa href="+code=b" class="sref">bp/a>->pa href="+code=node" class="sref">nodep/a>);vo461p/a>o ooooooo oooooopa href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEADp/a>(&pa href="+code=b" class="sref">bp/a>->pa href="+code=children" class="sref">childrenp/a>);vo462p/a>o ooooooo oooooopa href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEADp/a>(&pa href="+code=b" class="sref">bp/a>->pa href="+code=devices" class="sref">devicesp/a>);vo463p/a>o ooooooo oooooopa href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEADp/a>(&pa href="+code=b" class="sref">bp/a>->pa href="+code=slots" class="sref">slotsp/a>);vo464p/a>o ooooooo oooooopa href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEADp/a>(&pa href="+code=b" class="sref">bp/a>->pa href="+code=resources" class="sref">resourcesp/a>);vo465p/a>o ooooooo oooooopa href="+code=b" class="sref">bp/a>->pa href="+code=max_bus_speed" class="sref">max_bus_speedp/a>o= pa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>;vo466p/a>o ooooooo oooooopa href="+code=b" class="sref">bp/a>->pa href="+code=cur_bus_speed" class="sref">cur_bus_speedp/a>o= pa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>;vo467p/a>o oooooo}vo468p/a>o ooooooreturnopa href="+code=b" class="sref">bp/a>;vo469p/a>}vo470p/a>vo471p/a>static structopa href="+code=pci_host_bridge" class="sref">pci_host_bridgep/a>o*pa href="+code=pci_alloc_host_bridge" class="sref">pci_alloc_host_bridgep/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=b" class="sref">bp/a>).o472p/a>{.o473p/a>o oooooostructopa href="+code=pci_host_bridge" class="sref">pci_host_bridgep/a>o*pa href="+code=bridge" class="sref">bridgep/a>;vo474p/a>vo475p/a>o oooooopa href="+code=bridge" class="sref">bridgep/a>o= pa href="+code=kzalloc" class="sref">kzallocp/a>(sizeof(*pa href="+code=bridge" class="sref">bridgep/a>), pa href="+code=GFP_KERNEL" class="sref">GFP_KERNELp/a>);vo476p/a>o ooooooif (pa href="+code=bridge" class="sref">bridgep/a>) {.o477p/a>o ooooooo oooooopa href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEADp/a>(&pa href="+code=bridge" class="sref">bridgep/a>->pa href="+code=windows" class="sref">windowsp/a>);vo478p/a>o ooooooo oooooopa href="+code=bridge" class="sref">bridgep/a>->pa href="+code=bus" class="sref">busp/a>o= pa href="+code=b" class="sref">bp/a>;vo479p/a>o oooooo}vo480p/a>vo481p/a>o ooooooreturnopa href="+code=bridge" class="sref">bridgep/a>;vo482p/a>}vo483p/a>vo484p/a>static unsigned charopa href="+code=pcix_bus_speed" class="sref">pcix_bus_speedp/a>[] = {.o485p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 0 */p/spa14.o486p/a>o oooooopa href="+code=PCI_SPEED_66MHz_PCIX" class="sref">PCI_SPEED_66MHz_PCIXp/a>,ooooooo ooopspa1 class="comment">/* 1 */p/spa14.o487p/a>o oooooopa href="+code=PCI_SPEED_100MHz_PCIX" class="sref">PCI_SPEED_100MHz_PCIXp/a>,ooooooo oopspa1 class="comment">/* 2 */p/spa14.o488p/a>o oooooopa href="+code=PCI_SPEED_133MHz_PCIX" class="sref">PCI_SPEED_133MHz_PCIXp/a>,ooooooo oopspa1 class="comment">/* 3 */p/spa14.o489p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 4 */p/spa14.o490p/a>o oooooopa href="+code=PCI_SPEED_66MHz_PCIX_ECC" class="sref">PCI_SPEED_66MHz_PCIX_ECCp/a>,ooooooopspa1 class="comment">/* 5 */p/spa14.o491p/a>o oooooopa href="+code=PCI_SPEED_100MHz_PCIX_ECC" class="sref">PCI_SPEED_100MHz_PCIX_ECCp/a>,oooooopspa1 class="comment">/* 6 */p/spa14.o492p/a>o oooooopa href="+code=PCI_SPEED_133MHz_PCIX_ECC" class="sref">PCI_SPEED_133MHz_PCIX_ECCp/a>,oooooopspa1 class="comment">/* 7 */p/spa14.o493p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 8 */p/spa14.o494p/a>o oooooopa href="+code=PCI_SPEED_66MHz_PCIX_266" class="sref">PCI_SPEED_66MHz_PCIX_266p/a>,ooooooopspa1 class="comment">/* 9 */p/spa14.o495p/a>o oooooopa href="+code=PCI_SPEED_100MHz_PCIX_266" class="sref">PCI_SPEED_100MHz_PCIX_266p/a>,oooooopspa1 class="comment">/* A */p/spa14.o496p/a>o oooooopa href="+code=PCI_SPEED_133MHz_PCIX_266" class="sref">PCI_SPEED_133MHz_PCIX_266p/a>,oooooopspa1 class="comment">/* B */p/spa14.o497p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* C */p/spa14.o498p/a>o oooooopa href="+code=PCI_SPEED_66MHz_PCIX_533" class="sref">PCI_SPEED_66MHz_PCIX_533p/a>,ooooooopspa1 class="comment">/* D */p/spa14.o499p/a>o oooooopa href="+code=PCI_SPEED_100MHz_PCIX_533" class="sref">PCI_SPEED_100MHz_PCIX_533p/a>,oooooopspa1 class="comment">/* E */p/spa14.o500p/a>o oooooopa href="+code=PCI_SPEED_133MHz_PCIX_533" class="sref">PCI_SPEED_133MHz_PCIX_533p/a>o ooooopspa1 class="comment">/* F */p/spa14.o501p/a>};vo502p/a>vo503p/a>static unsigned charopa href="+code=pcie_link_speed" class="sref">pcie_link_speedp/a>[] = {.o504p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 0 */p/spa14.o505p/a>o oooooopa href="+code=PCIE_SPEED_2_5GT" class="sref">PCIE_SPEED_2_5GTp/a>,ooooooo ooooooopspa1 class="comment">/* 1 */p/spa14.o506p/a>o oooooopa href="+code=PCIE_SPEED_5_0GT" class="sref">PCIE_SPEED_5_0GTp/a>,ooooooo ooooooopspa1 class="comment">/* 2 */p/spa14.o507p/a>o oooooopa href="+code=PCIE_SPEED_8_0GT" class="sref">PCIE_SPEED_8_0GTp/a>,ooooooo ooooooopspa1 class="comment">/* 3 */p/spa14.o508p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 4 */p/spa14.o509p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 5 */p/spa14.o510p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 6 */p/spa14.o511p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 7 */p/spa14.o512p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 8 */p/spa14.o513p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* 9 */p/spa14.o514p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* A */p/spa14.o515p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* B */p/spa14.o516p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* C */p/spa14.o517p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* D */p/spa14.o518p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a>,ooooooo oooooopspa1 class="comment">/* E */p/spa14.o519p/a>o oooooopa href="+code=PCI_SPEED_UNKNOWN" class="sref">PCI_SPEED_UNKNOWNp/a> ooooooo oooooopspa1 class="comment">/* F */p/spa14.o520p/a>};vo521p/a>vo522p/a>voidopa href="+code=pcie_update_link_speed" class="sref">pcie_update_link_speedp/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=bus" class="sref">busp/a>, pa href="+code=u16" class="sref">u16p/a>opa href="+code=linksta" class="sref">linkstap/a>).o523p/a>{.o524p/a>o oooooopa href="+code=bus" class="sref">busp/a>->pa href="+code=cur_bus_speed" class="sref">cur_bus_speedp/a>o= pa href="+code=pcie_link_speed" class="sref">pcie_link_speedp/a>[pa href="+code=linksta" class="sref">linkstap/a>o& 0xf];vo525p/a>}vo526p/a>pa href="+code=EXPORT_SYMBOL_GPL" class="sref">EXPORT_SYMBOL_GPLp/a>(pa href="+code=pcie_update_link_speed" class="sref">pcie_update_link_speedp/a>);vo527p/a>vo528p/a>static unsigned charopa href="+code=agp_speeds" class="sref">agp_speedsp/a>[] = {.o529p/a>o oooooopa href="+code=AGP_UNKNOWN" class="sref">AGP_UNKNOWNp/a>,.o530p/a>o oooooopa href="+code=AGP_1X" class="sref">AGP_1Xp/a>,.o531p/a>o oooooopa href="+code=AGP_2X" class="sref">AGP_2Xp/a>,.o532p/a>o oooooopa href="+code=AGP_4X" class="sref">AGP_4Xp/a>,.o533p/a>o oooooopa href="+code=AGP_8X" class="sref">AGP_8Xp/a>vo534p/a>};vo535p/a>vo536p/a>static enumopa href="+code=pci_bus_speed" class="sref">pci_bus_speedp/a>opa href="+code=agp_speed" class="sref">agp_speedp/a>(intopa href="+code=agp3" class="sref">agp3p/a>, intopa href="+code=agpstat" class="sref">agpstatp/a>).o537p/a>{.o538p/a>o oooooointopa href="+code=index" class="sref">indexp/a>o= 0;vo539p/a>vo540p/a>o ooooooif (pa href="+code=agpstat" class="sref">agpstatp/a>o& 4).o541p/a>o ooooooo oooooopa href="+code=index" class="sref">indexp/a>o= 3;vo542p/a>o ooooooelseoif (pa href="+code=agpstat" class="sref">agpstatp/a>o& 2).o543p/a>o ooooooo oooooopa href="+code=index" class="sref">indexp/a>o= 2;vo544p/a>o ooooooelseoif (pa href="+code=agpstat" class="sref">agpstatp/a>o& 1).o545p/a>o ooooooo oooooopa href="+code=index" class="sref">indexp/a>o= 1;vo546p/a>o ooooooelsevo547p/a>o ooooooo oooooogotoopa href="+code=out" class="sref">outp/a>;vo548p/a>o oooooovo549p/a>o ooooooif (pa href="+code=agp3" class="sref">agp3p/a>) {.o550p/a>o ooooooo oooooopa href="+code=index" class="sref">indexp/a>o+= 2;vo551p/a>o ooooooo ooooooif (pa href="+code=index" class="sref">indexp/a>o== 5).o552p/a>o ooooooo ooooooo oooooopa href="+code=index" class="sref">indexp/a>o= 0;vo553p/a>o oooooo}vo554p/a>vo555p/a>opa href="+code=out" class="sref">outp/a>:vo556p/a>o ooooooreturnopa href="+code=agp_speeds" class="sref">agp_speedsp/a>[pa href="+code=index" class="sref">indexp/a>];vo557p/a>}vo558p/a>vo559p/a>vo560p/a>static voidopa href="+code=pci_set_bus_speed" class="sref">pci_set_bus_speedp/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=bus" class="sref">busp/a>).o561p/a>{.o562p/a>o oooooostructopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=bridge" class="sref">bridgep/a>o= pa href="+code=bus" class="sref">busp/a>->pa href="+code=self" class="sref">selfp/a>;vo563p/a>o oooooointopa href="+code=pos" class="sref">posp/a>;vo564p/a>vo565p/a>o oooooopa href="+code=pos" class="sref">posp/a>o= pa href="+code=pci_find_capability" class="sref">pci_find_capabilityp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=PCI_CAP_ID_AGP" class="sref">PCI_CAP_ID_AGPp/a>);vo566p/a>o ooooooif (!pa href="+code=pos" class="sref">posp/a>).o567p/a>o ooooooo oooooopa href="+code=pos" class="sref">posp/a>o= pa href="+code=pci_find_capability" class="sref">pci_find_capabilityp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=PCI_CAP_ID_AGP3" class="sref">PCI_CAP_ID_AGP3p/a>);vo568p/a>o ooooooif (pa href="+code=pos" class="sref">posp/a>) {.o569p/a>o ooooooo oooooopa href="+code=u32" class="sref">u32p/a>opa href="+code=agpstat" class="sref">agpstatp/a>, pa href="+code=agpcmd" class="sref">agpcmdp/a>;vo570p/a>vo571p/a>o ooooooo oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=pos" class="sref">posp/a>o+ pa href="+code=PCI_AGP_STATUS" class="sref">PCI_AGP_STATUSp/a>, &pa href="+code=agpstat" class="sref">agpstatp/a>);vo572p/a>o ooooooo oooooopa href="+code=bus" class="sref">busp/a>->pa href="+code=max_bus_speed" class="sref">max_bus_speedp/a>o= pa href="+code=agp_speed" class="sref">agp_speedp/a>(pa href="+code=agpstat" class="sref">agpstatp/a>o& 8, pa href="+code=agpstat" class="sref">agpstatp/a>o& 7);vo573p/a>vo574p/a>o ooooooo oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=pos" class="sref">posp/a>o+ pa href="+code=PCI_AGP_COMMAND" class="sref">PCI_AGP_COMMANDp/a>, &pa href="+code=agpcmd" class="sref">agpcmdp/a>);vo575p/a>o ooooooo oooooopa href="+code=bus" class="sref">busp/a>->pa href="+code=cur_bus_speed" class="sref">cur_bus_speedp/a>o= pa href="+code=agp_speed" class="sref">agp_speedp/a>(pa href="+code=agpstat" class="sref">agpstatp/a>o& 8, pa href="+code=agpcmd" class="sref">agpcmdp/a>o& 7);vo576p/a>o oooooo}vo577p/a>vo578p/a>o oooooopa href="+code=pos" class="sref">posp/a>o= pa href="+code=pci_find_capability" class="sref">pci_find_capabilityp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=PCI_CAP_ID_PCIX" class="sref">PCI_CAP_ID_PCIXp/a>);vo579p/a>o ooooooif (pa href="+code=pos" class="sref">posp/a>) {.o580p/a>o ooooooo oooooopa href="+code=u16" class="sref">u16p/a>opa href="+code=status" class="sref">statusp/a>;vo581p/a>o ooooooo ooooooenumopa href="+code=pci_bus_speed" class="sref">pci_bus_speedp/a>opa href="+code=max" class="sref">maxp/a>;vo582p/a>o ooooooo oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=pos" class="sref">posp/a>o+ 2, &pa href="+code=status" class="sref">statusp/a>);vo583p/a>vo584p/a>o ooooooo ooooooif (pa href="+code=status" class="sref">statusp/a>o& 0x8000) {.o585p/a>o ooooooo ooooooo oooooopa href="+code=max" class="sref">maxp/a>o= pa href="+code=PCI_SPEED_133MHz_PCIX_533" class="sref">PCI_SPEED_133MHz_PCIX_533p/a>;vo586p/a>o ooooooo oooooo}oelseoif (pa href="+code=status" class="sref">statusp/a>o& 0x4000) {.o587p/a>o ooooooo ooooooo oooooopa href="+code=max" class="sref">maxp/a>o= pa href="+code=PCI_SPEED_133MHz_PCIX_266" class="sref">PCI_SPEED_133MHz_PCIX_266p/a>;vo588p/a>o ooooooo oooooo}oelseoif (pa href="+code=status" class="sref">statusp/a>o& 0x0002) {.o589p/a>o ooooooo ooooooooooooooif (((pa href="+code=status" class="sref">statusp/a>o>> 12) & 0x3)o== 2) {.o590p/a>o ooooooo ooooooo ooooooo oooooopa href="+code=max" class="sref">maxp/a>o= pa href="+code=PCI_SPEED_133MHz_PCIX_ECC" class="sref">PCI_SPEED_133MHz_PCIX_ECCp/a>;vo591p/a>o ooooooo ooooooo oooooo}oelseo{.o592p/a>o ooooooo ooooooo ooooooo oooooopa href="+code=max" class="sref">maxp/a>o= pa href="+code=PCI_SPEED_133MHz_PCIX" class="sref">PCI_SPEED_133MHz_PCIXp/a>;vo593p/a>o ooooooo ooooooo oooooo}vo594p/a>o ooooooo oooooo}oelseo{.o595p/a>o ooooooo ooooooo oooooopa href="+code=max" class="sref">maxp/a>o= pa href="+code=PCI_SPEED_66MHz_PCIX" class="sref">PCI_SPEED_66MHz_PCIXp/a>;vo596p/a>o ooooooo oooooo}vo597p/a>vo598p/a>o ooooooo oooooopa href="+code=bus" class="sref">busp/a>->pa href="+code=max_bus_speed" class="sref">max_bus_speedp/a>o= pa href="+code=max" class="sref">maxp/a>;vo599p/a>o ooooooo oooooopa href="+code=bus" class="sref">busp/a>->pa href="+code=cur_bus_speed" class="sref">cur_bus_speedp/a>o= pa href="+code=pcix_bus_speed" class="sref">pcix_bus_speedp/a>[(pa href="+code=status" class="sref">statusp/a>o>> 6)o& 0xf];vo600p/a>vo601p/a>o ooooooo ooooooreturn;vo602p/a>o oooooo}vo603p/a>vo604p/a>o oooooopa href="+code=pos" class="sref">posp/a>o= pa href="+code=pci_find_capability" class="sref">pci_find_capabilityp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=PCI_CAP_ID_EXP" class="sref">PCI_CAP_ID_EXPp/a>);vo605p/a>o ooooooif (pa href="+code=pos" class="sref">posp/a>) {.o606p/a>o ooooooo oooooopa href="+code=u32" class="sref">u32p/a>opa href="+code=linkcap" class="sref">linkcapp/a>;vo607p/a>o ooooooo oooooopa href="+code=u16" class="sref">u16p/a>opa href="+code=linksta" class="sref">linkstap/a>;vo608p/a>vo609p/a>o ooooooo oooooopa href="+code=pcie_capability_read_dword" class="sref">pcie_capability_read_dwordp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=PCI_EXP_LNKCAP" class="sref">PCI_EXP_LNKCAPp/a>, &pa href="+code=linkcap" class="sref">linkcapp/a>);vo610p/a>o ooooooo oooooopa href="+code=bus" class="sref">busp/a>->pa href="+code=max_bus_speed" class="sref">max_bus_speedp/a>o= pa href="+code=pcie_link_speed" class="sref">pcie_link_speedp/a>[pa href="+code=linkcap" class="sref">linkcapp/a>o& 0xf];vo611p/a>vo612p/a>o ooooooo oooooopa href="+code=pcie_capability_read_word" class="sref">pcie_capability_read_wordp/a>(pa href="+code=bridge" class="sref">bridgep/a>, pa href="+code=PCI_EXP_LNKSTA" class="sref">PCI_EXP_LNKSTAp/a>, &pa href="+code=linksta" class="sref">linkstap/a>);vo613p/a>o ooooooo oooooopa href="+code=pcie_update_link_speed" class="sref">pcie_update_link_speedp/a>(pa href="+code=bus" class="sref">busp/a>, pa href="+code=linksta" class="sref">linkstap/a>);vo614p/a>o oooooo}vo615p/a>}vo616p/a>vo617p/a>vo618p/a>static structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=pci_alloc_child_bus" class="sref">pci_alloc_child_busp/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=parent" class="sref">parentp/a>,vo619p/a>o ooooooo ooooooooooooooooooooooooooooooooostructopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=bridge" class="sref">bridgep/a>, intopa href="+code=busnr" class="sref">busnrp/a>)vo620p/a>{.o621p/a>o oooooostructopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=child" class="sref">childp/a>;vo622p/a>o oooooointopa href="+code=i" class="sref">ip/a>;vo623p/a>vo624p/a>o oooooopspa1 class="comment">/*p/spa14.o625p/a>pspa1 class="comment">ooooooooo* Allocate a new bus, andoinheritostuff from the parent..p/spa14.o626p/a>pspa1 class="comment">ooooooooo*/p/spa14.o627p/a>o oooooopa href="+code=child" class="sref">childp/a>o= pa href="+code=pci_alloc_bus" class="sref">pci_alloc_busp/a>();vo628p/a>o ooooooif (!pa href="+code=child" class="sref">childp/a>)vo629p/a>o ooooooo ooooooreturnopa href="+code=NULL" class="sref">NULLp/a>;vo630p/a>vo631p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=parent" class="sref">parentp/a>o= pa href="+code=parent" class="sref">parentp/a>;vo632p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=ops" class="sref">opsp/a>o= pa href="+code=parent" class="sref">parentp/a>->pa href="+code=ops" class="sref">opsp/a>;vo633p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=sysdata" class="sref">sysdatap/a>o= pa href="+code=parent" class="sref">parentp/a>->pa href="+code=sysdata" class="sref">sysdatap/a>;vo634p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=bus_flags" class="sref">bus_flagsp/a>o= pa href="+code=parent" class="sref">parentp/a>->pa href="+code=bus_flags" class="sref">bus_flagsp/a>;vo635p/a>vo636p/a>o oooooopspa1 class="comment">/*oinitialize some portions of the bus device, but don'toregister itp/spa14.o637p/a>pspa1 class="comment">ooooooooo* now as the parent is not properly set up yet. This device will getp/spa14.o638p/a>pspa1 class="comment">ooooooooo* registered later in pci_bus_add_devices()p/spa14.o639p/a>pspa1 class="comment">ooooooooo*/p/spa14.o640p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=dev" class="sref">devp/a>.pa href="+code=class" class="sref">classp/a>o= &pa href="+code=pcibus_class" class="sref">pcibus_classp/a>;vo641p/a>o oooooopa href="+code=dev_set_nam<" class="sref">dev_set_nam

(&pa href="+code=child" class="sref">childp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="string">"%04x:%02x"p/spa14, pa href="+code=pci_domain_nr" class="sref">pci_domain_nrp/a>(pa href="+code=child" class="sref">childp/a>), pa href="+code=busnr" class="sref">busnrp/a>);vo642p/a>vo643p/a>o oooooopspa1 class="comment">/*p/spa14.o644p/a>pspa1 class="comment">ooooooooo* Set up the primary, secondary andosubordinatep/spa14.o645p/a>pspa1 class="comment">ooooooooo* bus numbers.p/spa14.o646p/a>pspa1 class="comment">ooooooooo*/p/spa14.o647p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=number" class="sref">numberp/a>o= pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=start" class="sref">startp/a>o= pa href="+code=busnr" class="sref">busnrp/a>;vo648p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=primary" class="sref">primaryp/a>o= pa href="+code=parent" class="sref">parentp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=start" class="sref">startp/a>;vo649p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o= 0xff;vo650p/a>vo651p/a>o ooooooif (!pa href="+code=bridge" class="sref">bridgep/a>)vo652p/a>o ooooooo ooooooreturnopa href="+code=child" class="sref">childp/a>;vo653p/a>vo654p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=self" class="sref">selfp/a>o= pa href="+code=bridge" class="sref">bridgep/a>;vo655p/a>o oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=bridge" class="sref">bridgep/a>o= pa href="+code=get_device" class="sref">get_devicep/a>(&pa href="+code=bridge" class="sref">bridgep/a>->pa href="+code=dev" class="sref">devp/a>);vo656p/a>o oooooopa href="+code=pci_set_bus_of_node" class="sref">pci_set_bus_of_nodep/a>(pa href="+code=child" class="sref">childp/a>);vo657p/a>o oooooopa href="+code=pci_set_bus_speed" class="sref">pci_set_bus_speedp/a>(pa href="+code=child" class="sref">childp/a>);vo658p/a>vo659p/a>o oooooopspa1 class="comment">/*oSet up defaultoresource pointers andonamo660p/a>o oooooofor (pa href="+code=i" class="sref">ip/a>o= 0;opa href="+code=i" class="sref">ip/a> <opa href="+code=PCI_BRIDGE_RESOURCE_NUM" class="sref">PCI_BRIDGE_RESOURCE_NUMp/a>;opa href="+code=i" class="sref">ip/a>++) {.o661p/a>o ooooooo oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=resource" class="sref">resourcep/a>[pa href="+code=i" class="sref">ip/a>]o= &pa href="+code=bridge" class="sref">bridgep/a>->pa href="+code=resource" class="sref">resourcep/a>[pa href="+code=PCI_BRIDGE_RESOURCES" class="sref">PCI_BRIDGE_RESOURCESp/a>+pa href="+code=i" class="sref">ip/a>];vo662p/a>o ooooooo oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=resource" class="sref">resourcep/a>[pa href="+code=i" class="sref">ip/a>]->pa href="+code=nam<" class="sref">nam

o= pa href="+code=child" class="sref">childp/a>->pa href="+code=nam<" class="sref">nam

;vo663p/a>o oooooo}vo664p/a>o oooooopa href="+code=bridge" class="sref">bridgep/a>->pa href="+code=subordinate" class="sref">subordinatep/a>o= pa href="+code=child" class="sref">childp/a>;vo665p/a>vo666p/a>o ooooooreturnopa href="+code=child" class="sref">childp/a>;vo667p/a>}vo668p/a>vo669p/a>structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=__ref" class="sref">__refp/a>opa href="+code=pci_add_new_bus" class="sref">pci_add_new_busp/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=parent" class="sref">parentp/a>,ostructopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>,ointopa href="+code=busnr" class="sref">busnrp/a>)vo670p/a>{.o671p/a>o oooooostructopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=child" class="sref">childp/a>;vo672p/a>vo673p/a>o oooooopa href="+code=child" class="sref">childp/a>o= pa href="+code=pci_alloc_child_bus" class="sref">pci_alloc_child_busp/a>(pa href="+code=parent" class="sref">parentp/a>,opa href="+code=dev" class="sref">devp/a>,opa href="+code=busnr" class="sref">busnrp/a>);vo674p/a>o ooooooif (pa href="+code=child" class="sref">childp/a>) {.o675p/a>o ooooooo oooooopa href="+code=down_write" class="sref">down_writep/a>(&pa href="+code=pci_bus_sem" class="sref">pci_bus_semp/a>);vo676p/a>o ooooooo oooooopa href="+code=list_add_tail" class="sref">list_add_tailp/a>(&pa href="+code=child" class="sref">childp/a>->pa href="+code=node" class="sref">nodep/a>, &pa href="+code=parent" class="sref">parentp/a>->pa href="+code=children" class="sref">childrenp/a>);vo677p/a>o ooooooo oooooopa href="+code=up_write" class="sref">up_writep/a>(&pa href="+code=pci_bus_sem" class="sref">pci_bus_semp/a>);vo678p/a>o oooooo}vo679p/a>o ooooooreturnopa href="+code=child" class="sref">childp/a>;vo680p/a>}vo681p/a>vo682p/a>static voidopa href="+code=pci_fixup_parent_subordinate_busnr" class="sref">pci_fixup_parent_subordinate_busnrp/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=child" class="sref">childp/a>,ointopa href="+code=max" class="sref">maxp/a>)vo683p/a>{.o684p/a>o oooooostructopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=parent" class="sref">parentp/a>o= pa href="+code=child" class="sref">childp/a>->pa href="+code=parent" class="sref">parentp/a>;vo685p/a>vo686p/a>o oooooopspa1 class="comment">/*oAttempts to fix that up areoreally dangerous unlessp/spa14.o687p/a>pspa1 class="comment">ooooooooo we'reogoing to re-assign all bus numbers.o*/p/spa14.o688p/a>o ooooooif (!pa href="+code=pcibios_assign_all_busses" class="sref">pcibios_assign_all_bussesp/a>())vo689p/a>o ooooooo ooooooreturn;vo690p/a>vo691p/a>o oooooowhile (pa href="+code=parent" class="sref">parentp/a>->pa href="+code=parent" class="sref">parentp/a>o&& pa href="+code=parent" class="sref">parentp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o<opa href="+code=max" class="sref">maxp/a>) {.o692p/a>o ooooooo oooooopa href="+code=parent" class="sref">parentp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o= pa href="+code=max" class="sref">maxp/a>;vo693p/a>o ooooooo oooooopa href="+code=pci_write_config_byte" class="sref">pci_write_config_bytep/a>(pa href="+code=parent" class="sref">parentp/a>->pa href="+code=self" class="sref">selfp/a>, pa href="+code=PCI_SUBORDINATE_BUS" class="sref">PCI_SUBORDINATE_BUSp/a>, pa href="+code=max" class="sref">maxp/a>);vo694p/a>o ooooooo oooooopa href="+code=parent" class="sref">parentp/a>o= pa href="+code=parent" class="sref">parentp/a>->pa href="+code=parent" class="sref">parentp/a>;vo695p/a>o oooooo}vo696p/a>}vo697p/a>vo698p/a>pspa1 class="comment">/*p/spa14.o699p/a>pspa1 class="comment">o* If it's a bridge, configureoit andosca1 the bus behindoit.p/spa14.o700p/a>pspa1 class="comment">o* For CardBus bridges, we don'tosca1 behindoas the devices willp/spa14.o701p/a>pspa1 class="comment">o* be handled by the bridge driveroitself.p/spa14.o702p/a>pspa1 class="comment">o*p/spa14.o703p/a>pspa1 class="comment">o* We need to process bridges in two passes -- first we sca1 thosep/spa14.o704p/a>pspa1 class="comment">o* already configured by the BIOS andoafter we areodone with all ofp/spa14.o705p/a>pspa1 class="comment">o* them, we proceed to assigning numbers to the remaining buses inp/spa14.o706p/a>pspa1 class="comment">o* order to avoidooverlaps between old andonew bus numbers.p/spa14.o707p/a>pspa1 class="comment">o*/p/spa14.o708p/a>intopa href="+code=__devinit" class="sref">__devinitp/a>opa href="+code=pci_sca1_bridge" class="sref">pci_sca1_bridgep/a>(structopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=bus" class="sref">busp/a>, structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>,ointopa href="+code=max" class="sref">maxp/a>,ointopa href="+code=pass" class="sref">passp/a>).o709p/a>{.o710p/a>o oooooostructopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=child" class="sref">childp/a>;vo711p/a>o oooooointopa href="+code=is_cardbus" class="sref">is_cardbusp/a>o= (pa href="+code=dev" class="sref">devp/a>->pa href="+code=hdr_type" class="sref">hdr_typep/a>o== pa href="+code=PCI_HEADER_TYPE_CARDBUS" class="sref">PCI_HEADER_TYPE_CARDBUSp/a>);vo712p/a>o oooooopa href="+code=u32" class="sref">u32p/a>opa href="+code=buses" class="sref">busesp/a>, pa href="+code=i" class="sref">ip/a>, pa href="+code=j" class="sref">jp/a>o= 0;vo713p/a>o oooooopa href="+code=u16" class="sref">u16p/a>opa href="+code=bctl" class="sref">bctlp/a>;vo714p/a>o oooooopa href="+code=u8" class="sref">u8p/a>opa href="+code=primary" class="sref">primaryp/a>, pa href="+code=secondary" class="sref">secondaryp/a>, pa href="+code=subordinate" class="sref">subordinatep/a>;vo715p/a>o oooooointopa href="+code=broken" class="sref">brokenp/a>o= 0;vo716p/a>vo717p/a>o oooooopa href="+code=pci_read_config_dword" class="sref">pci_read_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_PRIMARY_BUS" class="sref">PCI_PRIMARY_BUSp/a>, &pa href="+code=buses" class="sref">busesp/a>);vo718p/a>o oooooopa href="+code=primary" class="sref">primaryp/a>o= pa href="+code=buses" class="sref">busesp/a>o& 0xFF;vo719p/a>o oooooopa href="+code=secondary" class="sref">secondaryp/a>o= (pa href="+code=buses" class="sref">busesp/a>o>> 8)o& 0xFF;vo720p/a>o oooooopa href="+code=subordinate" class="sref">subordinatep/a>o= (pa href="+code=buses" class="sref">busesp/a>o>> 16)o& 0xFF;vo721p/a>vo722p/a>o oooooopa href="+code=dev_dbg" class="sref">dev_dbgp/a>(&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="string">"sca1ning [bus %02x-%02x] behindobridge, pass %d\n"p/spa14,vo723p/a>o ooooooo oooooopa href="+code=secondary" class="sref">secondaryp/a>, pa href="+code=subordinate" class="sref">subordinatep/a>, pa href="+code=pass" class="sref">passp/a>);vo724p/a>vo725p/a>o ooooooif (!pa href="+code=primary" class="sref">primaryp/a>o&& (pa href="+code=primary" class="sref">primaryp/a>o!= pa href="+code=bus" class="sref">busp/a>->pa href="+code=number" class="sref">numberp/a>)o&& pa href="+code=secondary" class="sref">secondaryp/a>o&& pa href="+code=subordinate" class="sref">subordinatep/a>) {.o726p/a>o ooooooo oooooopa href="+code=dev_warn" class="sref">dev_warnp/a>(&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="string">"Primary bus is hard wired to 0\n"p/spa14);vo727p/a>o ooooooo oooooopa href="+code=primary" class="sref">primaryp/a>o= pa href="+code=bus" class="sref">busp/a>->pa href="+code=number" class="sref">numberp/a>;vo728p/a>o oooooo}vo729p/a>vo730p/a>o oooooopspa1 class="comment">/*oCheckoif setup is sensible at all */p/spa14.o731p/a>o ooooooif (!pa href="+code=pass" class="sref">passp/a>o&&.o732p/a>o ooooooo oo(pa href="+code=primary" class="sref">primaryp/a>o!= pa href="+code=bus" class="sref">busp/a>->pa href="+code=number" class="sref">numberp/a> || pa href="+code=secondary" class="sref">secondaryp/a>o<= pa href="+code=bus" class="sref">busp/a>->pa href="+code=number" class="sref">numberp/a> ||.o733p/a>o ooooooo ooopa href="+code=secondary" class="sref">secondaryp/a>o>opa href="+code=subordinate" class="sref">subordinatep/a>)) {.o734p/a>o ooooooo oooooopa href="+code=dev_info" class="sref">dev_infop/a>(&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="string">"bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n"p/spa14,vo735p/a>o ooooooo ooooooo ooooooopa href="+code=secondary" class="sref">secondaryp/a>, pa href="+code=subordinate" class="sref">subordinatep/a>);vo736p/a>o ooooooo oooooopa href="+code=broken" class="sref">brokenp/a>o= 1;vo737p/a>o oooooo}vo738p/a>vo739p/a>o oooooopspa1 class="comment">/*oDisable MasterAbortMode during probing to avoidoreportingp/spa14.o740p/a>pspa1 class="comment">oooooooooooof bus errors (in some architectures) */p/spa14 .o741p/a>o oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_BRIDGE_CONTROL" class="sref">PCI_BRIDGE_CONTROLp/a>, &pa href="+code=bctl" class="sref">bctlp/a>);vo742p/a>o oooooopa href="+code=pci_write_config_word" class="sref">pci_write_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_BRIDGE_CONTROL" class="sref">PCI_BRIDGE_CONTROLp/a>,vo743p/a>o ooooooo ooooooooooooo oooooopa href="+code=bctl" class="sref">bctlp/a>o& ~pa href="+code=PCI_BRIDGE_CTL_MASTER_ABORT" class="sref">PCI_BRIDGE_CTL_MASTER_ABORTp/a>);vo744p/a>vo745p/a>o ooooooif ((pa href="+code=secondary" class="sref">secondaryp/a>o|| pa href="+code=subordinate" class="sref">subordinatep/a>) && !pa href="+code=pcibios_assign_all_busses" class="sref">pcibios_assign_all_bussesp/a>()o&&.o746p/a>o ooooooo oo!pa href="+code=is_cardbus" class="sref">is_cardbusp/a>o&& !pa href="+code=broken" class="sref">brokenp/a>) {.o747p/a>o ooooooo oooooounsignedointopa href="+code=cmax" class="sref">cmaxp/a>;vo748p/a>o ooooooo oooooopspa1 class="comment">/*p/spa14.o749p/a>pspa1 class="comment">ooooooooooooooooo* Bus already configured by firmware, process it in the firstp/spa14.o750p/a>pspa1 class="comment">ooooooooooooooooo* pass andojust note the configuration.p/spa14.o751p/a>pspa1 class="comment">ooooooooooooooooo*/p/spa14.o752p/a>o ooooooo ooooooif (pa href="+code=pass" class="sref">passp/a>).o753p/a>o ooooooo ooooooooooooo goto pa href="+code=out" class="sref">outp/a>;vo754p/a>vo755p/a>o ooooooo oooooopspa1 class="comment">/*p/spa14.o756p/a>pspa1 class="comment">ooooooooooooooooo* If we already got to this bus through a different bridge,p/spa14.o757p/a>pspa1 class="comment">ooooooooo oooooo* don'tore-addoit. This ca1 happen with the i450NX chipset.p/spa14.o758p/a>pspa1 class="comment">ooooooooo oooooo*p/spa14.o759p/a>pspa1 class="comment">ooooooooooooooooo* However, we continue to descendodown the hierarchy andp/spa14.o760p/a>pspa1 class="comment">ooooooooooooooooo* sca1 remaining child buses.p/spa14.o761p/a>pspa1 class="comment">ooooooooooooooooo*/p/spa14.o762p/a>o ooooooo oooooopa href="+code=child" class="sref">childp/a>o= pa href="+code=pci_find_bus" class="sref">pci_find_busp/a>(pa href="+code=pci_domain_nr" class="sref">pci_domain_nrp/a>(pa href="+code=bus" class="sref">busp/a>), pa href="+code=secondary" class="sref">secondaryp/a>);vo763p/a>o ooooooo ooooooif (!pa href="+code=child" class="sref">childp/a>) {.o764p/a>o ooooooo ooooooo oooooopa href="+code=child" class="sref">childp/a>o= pa href="+code=pci_add_new_bus" class="sref">pci_add_new_busp/a>(pa href="+code=bus" class="sref">busp/a>,opa href="+code=dev" class="sref">devp/a>,opa href="+code=secondary" class="sref">secondaryp/a>);vo765p/a>o ooooooo ooooooo ooooooif (!pa href="+code=child" class="sref">childp/a>)vo766p/a>o ooooooo oooooooooooooooooooooogoto pa href="+code=out" class="sref">outp/a>;vo767p/a>o ooooooo ooooooo oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=primary" class="sref">primaryp/a>o= pa href="+code=primary" class="sref">primaryp/a>;vo768p/a>o ooooooo ooooooo oooooopa href="+code=pci_bus_insert_busn_res" class="sref">pci_bus_insert_busn_resp/a>(pa href="+code=child" class="sref">childp/a>,opa href="+code=secondary" class="sref">secondaryp/a>, pa href="+code=subordinate" class="sref">subordinatep/a>);vo769p/a>o ooooooo oooooooooooooopa href="+code=child" class="sref">childp/a>->pa href="+code=bridge_ctl" class="sref">bridge_ctlp/a>o= pa href="+code=bctl" class="sref">bctlp/a>;vo770p/a>o ooooooo oooooo}vo771p/a>vo772p/a>o ooooooo oooooopa href="+code=cmax" class="sref">cmaxp/a>o= pa href="+code=pci_sca1_child_bus" class="sref">pci_sca1_child_busp/a>(pa href="+code=child" class="sref">childp/a>);vo773p/a>o ooooooo ooooooif (pa href="+code=cmax" class="sref">cmaxp/a>o>opa href="+code=max" class="sref">maxp/a>)vo774p/a>o ooooooo ooooooo oooooopa href="+code=max" class="sref">maxp/a>o= pa href="+code=cmax" class="sref">cmaxp/a>;vo775p/a>o ooooooo ooooooif (pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o>opa href="+code=max" class="sref">maxp/a>)vo776p/a>o ooooooo ooooooo oooooopa href="+code=max" class="sref">maxp/a>o= pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>;vo777p/a>o oooooo} else {.o778p/a>o ooooooo oooooopspa1 class="comment">/*p/spa14.o779p/a>pspa1 class="comment">ooooooooooooooooo* We need to assign a number to this bus which we alwaysp/spa14.o780p/a>pspa1 class="comment">ooooooooooooooooo* do in the second pass.p/spa14.o781p/a>pspa1 class="comment">ooooooooooooooooo*/p/spa14.o782p/a>o ooooooo ooooooif (!pa href="+code=pass" class="sref">passp/a>) {.o783p/a>o ooooooo ooooooooooooo if (pa href="+code=pcibios_assign_all_busses" class="sref">pcibios_assign_all_bussesp/a>()o|| pa href="+code=broken" class="sref">brokenp/a>).o784p/a>o ooooooo ooooooo ooooooo oooooopspa1 class="comment">/* Temporarily disable forwarding of thep/spa14.o785p/a>pspa1 class="comment">oooooooooooooooooooooooooooooooooooconfiguration cycles on all bridges inp/spa14.o786p/a>pspa1 class="comment">ooooooooooooooooooooooooooooooooooothis bus segment to avoidopossiblep/spa14.o787p/a>pspa1 class="comment">ooooooooo ooooooooooooooooooooooooconflicts in the second pass between twop/spa14.o788p/a>pspa1 class="comment">ooooooooo oooooooooooooooooooooooobridges programmed with overlappingp/spa14.o789p/a>pspa1 class="comment">ooooooooooooooooooooooooooooooooooobus ranges.o*/p/spa14.o790p/a>o ooooooo oooooooooooooooooooooopa href="+code=pci_write_config_dword" class="sref">pci_write_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_PRIMARY_BUS" class="sref">PCI_PRIMARY_BUSp/a>,.o791p/a>o ooooooo ooooooooooooooooooooooooooooooooooooooooooooopa href="+code=buses" class="sref">busesp/a>o& ~0xffffff);vo792p/a>o ooooooo oooooooooooooogoto pa href="+code=out" class="sref">outp/a>;vo793p/a>o ooooooo oooooo}vo794p/a>vo795p/a>o ooooooo oooooopspa1 class="comment">/* Clear errors */p/spa14.o796p/a>o ooooooo oooooopa href="+code=pci_write_config_word" class="sref">pci_write_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_STATUS" class="sref">PCI_STATUSp/a>,o0xffff);vo797p/a>vo798p/a>o ooooooo oooooopspa1 class="comment">/* Prevent assigning a bus number that already exists.p/spa14.o799p/a>pspa1 class="comment">ooooooooooooooooo* This ca1 happen when a bridge is hot-plugged, so inp/spa14.o800p/a>pspa1 class="comment">ooooooooooooooooo* this case we only re-sca1 this bus.o*/p/spa14.o801p/a>o ooooooo oooooopa href="+code=child" class="sref">childp/a>o= pa href="+code=pci_find_bus" class="sref">pci_find_busp/a>(pa href="+code=pci_domain_nr" class="sref">pci_domain_nrp/a>(pa href="+code=bus" class="sref">busp/a>), pa href="+code=max" class="sref">maxp/a>+1);vo802p/a>o ooooooo ooooooif (!pa href="+code=child" class="sref">childp/a>) {.o803p/a>o ooooooo ooooooooooooo pa href="+code=child" class="sref">childp/a>o= pa href="+code=pci_add_new_bus" class="sref">pci_add_new_busp/a>(pa href="+code=bus" class="sref">busp/a>,opa href="+code=dev" class="sref">devp/a>,o++pa href="+code=max" class="sref">maxp/a>);vo804p/a>o ooooooo ooooooo ooooooif (!pa href="+code=child" class="sref">childp/a>)vo805p/a>o ooooooo ooooooo oooooooooooooogoto pa href="+code=out" class="sref">outp/a>;vo806p/a>o ooooooo ooooooo oooooopa href="+code=pci_bus_insert_busn_res" class="sref">pci_bus_insert_busn_resp/a>(pa href="+code=child" class="sref">childp/a>,opa href="+code=max" class="sref">maxp/a>,o0xff);vo807p/a>o ooooooo oooooo}vo808p/a>o ooooooo oooooopa href="+code=buses" class="sref">busesp/a>o= (pa href="+code=buses" class="sref">busesp/a>o& 0xff000000)vo809p/a>o ooooooo oooooooooooo| ((unsignedoint)(pa href="+code=child" class="sref">childp/a>->pa href="+code=primary" class="sref">primaryp/a>)ooooo<<o 0)vo810p/a>o ooooooo oooooooooooo| ((unsignedoint)(pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=start" class="sref">startp/a>)ooo<<o 8)vo811p/a>o ooooooo oooooooooooo| ((unsignedoint)(pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>)o<<o16);vo812p/a>vo813p/a>o ooooooo oooooopspa1 class="comment">/*p/spa14.o814p/a>pspa1 class="comment">ooooooooooooooooo* yenta.c forces a secondary latency timer of 176.p/spa14.o815p/a>pspa1 class="comment">ooooooooooooooooo* Copy that behaviour here.p/spa14.o816p/a>pspa1 class="comment">ooooooooooooooooo*/p/spa14.o817p/a>o ooooooo ooooooif (pa href="+code=is_cardbus" class="sref">is_cardbusp/a>) {.o818p/a>o ooooooo ooooooo oooooopa href="+code=buses" class="sref">busesp/a>o&= ~0xff000000;vo819p/a>o ooooooo oooooooooooooopa href="+code=buses" class="sref">busesp/a>o|= pa href="+code=CARDBUS_LATENCY_TIMER" class="sref">CARDBUS_LATENCY_TIMERp/a>o<<o24;vo820p/a>o ooooooo oooooo}vo821p/a>vo822p/a>o ooooooo oooooopspa1 class="comment">/*p/spa14.o823p/a>pspa1 class="comment">ooooooooooooooooo* We need to blast all three values with a single write.p/spa14.o824p/a>pspa1 class="comment">ooooooooooooooooo*/p/spa14.o825p/a>o ooooooo oooooopa href="+code=pci_write_config_dword" class="sref">pci_write_config_dwordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_PRIMARY_BUS" class="sref">PCI_PRIMARY_BUSp/a>,opa href="+code=buses" class="sref">busesp/a>);vo826p/a>vo827p/a>o ooooooo ooooooif (!pa href="+code=is_cardbus" class="sref">is_cardbusp/a>) {.o828p/a>o ooooooo ooooooo oooooopa href="+code=child" class="sref">childp/a>->pa href="+code=bridge_ctl" class="sref">bridge_ctlp/a>o= pa href="+code=bctl" class="sref">bctlp/a>;vo829p/a>o ooooooo oooooooooooooopspa1 class="comment">/*p/spa14.o830p/a>pspa1 class="comment">ooooooooooooooooooooooooo* Adjust subordinate busnr in parent buses.p/spa14.o831p/a>pspa1 class="comment">ooooooooooooooooooooooooo* Weodo this before sca1ning for children becausep/spa14.o832p/a>pspa1 class="comment">ooooooooooooooooooooooooo* some devices may not be detectedoif the biosp/spa14.o833p/a>pspa1 class="comment">ooooooooooooooooooooooooo* was lazy.p/spa14.o834p/a>pspa1 class="comment">ooooooooooooooooooooooooo*/p/spa14.o835p/a>o ooooooo ooooooo oooooopa href="+code=pci_fixup_parent_subordinate_busnr" class="sref">pci_fixup_parent_subordinate_busnrp/a>(pa href="+code=child" class="sref">childp/a>,opa href="+code=max" class="sref">maxp/a>);vo836p/a>o ooooooo ooooooo oooooopspa1 class="comment">/* Now we ca1 sca1 all subordinate buses...o*/p/spa14.o837p/a>o ooooooo ooooooo oooooopa href="+code=max" class="sref">maxp/a>o= pa href="+code=pci_sca1_child_bus" class="sref">pci_sca1_child_busp/a>(pa href="+code=child" class="sref">childp/a>);vo838p/a>o ooooooo ooooooo oooooopspa1 class="comment">/*p/spa14.o839p/a>pspa1 class="comment">ooooooooooooooooooooooooo* now fix it up again since we have foundp/spa14.o840p/a>pspa1 class="comment">ooooooooooooooooooooooooo* the real value of max.p/spa14.o841p/a>pspa1 class="comment">ooooooooooooooooooooooooo*/p/spa14.o842p/a>o ooooooo oooooooooooooopa href="+code=pci_fixup_parent_subordinate_busnr" class="sref">pci_fixup_parent_subordinate_busnrp/a>(pa href="+code=child" class="sref">childp/a>,opa href="+code=max" class="sref">maxp/a>);vo843p/a>o ooooooo oooooo} else {.o844p/a>o ooooooo ooooooo oooooopspa1 class="comment">/*p/spa14.o845p/a>pspa1 class="comment">ooooooooooooooooooooooooo* For CardBus bridges, we leave 4 bus numbersp/spa14.o846p/a>pspa1 class="comment">ooooooooooooooooooooooooo*oas cards with a PCI-to-PCI bridge ca1 bep/spa14.o847p/a>pspa1 class="comment">ooooooooo oooooooooooooo* insertedolater.p/spa14.o848p/a>pspa1 class="comment">ooooooooo oooooooooooooo*/p/spa14.o849p/a>o ooooooo oooooooooooooofor (pa href="+code=i" class="sref">ip/a>=0;opa href="+code=i" class="sref">ip/a><pa href="+code=CARDBUS_RESERVE_BUSNR" class="sref">CARDBUS_RESERVE_BUSNRp/a>;opa href="+code=i" class="sref">ip/a>++) {.o850p/a>o ooooooo oooooooooooooooooooooostructopa href="+code=pci_bus" class="sref">pci_busp/a>o*pa href="+code=parent" class="sref">parentp/a>o= pa href="+code=bus" class="sref">busp/a>;vo851p/a>o ooooooo ooooooooooooooooooooooif (pa href="+code=pci_find_bus" class="sref">pci_find_busp/a>(pa href="+code=pci_domain_nr" class="sref">pci_domain_nrp/a>(pa href="+code=bus" class="sref">busp/a>),vo852p/a>o ooooooo oooooooooooooooooooooooooooooooooooooooooooooopa href="+code=max" class="sref">maxp/a>+pa href="+code=i" class="sref">ip/a>+1))vo853p/a>o ooooooo ooooooooooooo break;vo854p/a>o ooooooo ooooooo ooooooo oooooowhile (pa href="+code=parent" class="sref">parentp/a>->pa href="+code=parent" class="sref">parentp/a>) {.o855p/a>o ooooooo ooooooooooooooooooooooooooooooif ((!pa href="+code=pcibios_assign_all_busses" class="sref">pcibios_assign_all_bussesp/a>())o&&.o856p/a>o ooooooo oooooooooooooooooooooooooooooooooo(pa href="+code=parent" class="sref">parentp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o>opa href="+code=max" class="sref">maxp/a>)o&&.o857p/a>o ooooooo ooooooo oooooooooooooooooooooooooo(pa href="+code=parent" class="sref">parentp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o<= pa href="+code=max" class="sref">maxp/a>+pa href="+code=i" class="sref">ip/a>)) {.o858p/a>o ooooooo ooooooo oooooooooooooooooooooooooooooopa href="+code=j" class="sref">jp/a>o= 1;vo859p/a>o ooooooo oooooooooooooooooooooooooooooo}vo860p/a>o ooooooo oooooooooooooooooooooooooooooopa href="+code=parent" class="sref">parentp/a>o= pa href="+code=parent" class="sref">parentp/a>->pa href="+code=parent" class="sref">parentp/a>;vo861p/a>o ooooooo oooooooooooooooooooooo}vo862p/a>o ooooooo ooooooooooooooooooooooif (pa href="+code=j" class="sref">jp/a>) {.o863p/a>o ooooooo oooooooooooooooooooooooooooooopspa1 class="comment">/*p/spa14.o864p/a>pspa1 class="comment">ooooooooooooooooooooooooooooooooooooooooo* Often, there areotwo cardbus bridgesp/spa14.o865p/a>pspa1 class="comment">ooooooooooooooooooooooooooooooooooooooooo* -- try to leave one valid bus numberp/spa14.o866p/a>pspa1 class="comment">ooooooooooooooooooooooooooooooooooooooooo* for each one.p/spa14.o867p/a>pspa1 class="comment">ooooooooo oooooooooooooooooooooooooooooo*/p/spa14.o868p/a>o ooooooo ooooooo oooooooooooooooooooooopa href="+code=i" class="sref">ip/a> /= 2;vo869p/a>o ooooooo oooooooooooooooooooooooooooooobreak;vo870p/a>o ooooooo oooooooooooooooooooooo}vo871p/a>o ooooooo oooooooooooooo}vo872p/a>o ooooooo oooooooooooooopa href="+code=max" class="sref">maxp/a>o+= pa href="+code=i" class="sref">ip/a>;vo873p/a>o ooooooo oooooooooooooopa href="+code=pci_fixup_parent_subordinate_busnr" class="sref">pci_fixup_parent_subordinate_busnrp/a>(pa href="+code=child" class="sref">childp/a>,opa href="+code=max" class="sref">maxp/a>);vo874p/a>o ooooooo oooooo}vo875p/a>o ooooooo oooooopspa1 class="comment">/*p/spa14.o876p/a>pspa1 class="comment">ooooooooooooooooo* Set the subordinate bus number to its real value.p/spa14.o877p/a>pspa1 class="comment">ooooooooo oooooo*/p/spa14.o878p/a>o ooooooo oooooopa href="+code=pci_bus_update_busn_res_end" class="sref">pci_bus_update_busn_res_endp/a>(pa href="+code=child" class="sref">childp/a>,opa href="+code=max" class="sref">maxp/a>);vo879p/a>o ooooooo oooooopa href="+code=pci_write_config_byte" class="sref">pci_write_config_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_SUBORDINATE_BUS" class="sref">PCI_SUBORDINATE_BUSp/a>,opa href="+code=max" class="sref">maxp/a>);vo880p/a>o oooooo}vo881p/a>vo882p/a>o oooooopa href="+code=sprintf" class="sref">sprintfp/a>(pa href="+code=child" class="sref">childp/a>->pa href="+code=nam<" class="sref">nam

,vo883p/a>o ooooooo oooooo(pa href="+code=is_cardbus" class="sref">is_cardbusp/a> ?opspa1 class="string">"PCI CardBus %04x:%02x"p/spa14 :opspa1 class="string">"PCI Bus %04x:%02x"p/spa14),vo884p/a>o ooooooo oooooopa href="+code=pci_domain_nr" class="sref">pci_domain_nrp/a>(pa href="+code=bus" class="sref">busp/a>),opa href="+code=child" class="sref">childp/a>->pa href="+code=number" class="sref">numberp/a>);vo885p/a>vo886p/a>o oooooopspa1 class="comment">/* Has only triggered on CardBus, fixup is in yenta_socket */p/spa14.o887p/a>o oooooowhile (pa href="+code=bus" class="sref">busp/a>->pa href="+code=parent" class="sref">parentp/a>) {.o888p/a>o ooooooo ooooooif ((pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o>opa href="+code=bus" class="sref">busp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>)o||.o889p/a>o ooooooo oooooooooo(pa href="+code=child" class="sref">childp/a>->pa href="+code=number" class="sref">numberp/a> >opa href="+code=bus" class="sref">busp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>)o||.o890p/a>o ooooooo oooooooooo(pa href="+code=child" class="sref">childp/a>->pa href="+code=number" class="sref">numberp/a> <opa href="+code=bus" class="sref">busp/a>->pa href="+code=number" class="sref">numberp/a>)o||.o891p/a>o ooooooo oooooooooo(pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o<opa href="+code=bus" class="sref">busp/a>->pa href="+code=number" class="sref">numberp/a>)) {.o892p/a>o ooooooo oooooooooooooopa href="+code=dev_info" class="sref">dev_infop/a>(&pa href="+code=child" class="sref">childp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="string">"%pR %s "p/spa14.o893p/a>o ooooooo ooooooo oooooooooooooopspa1 class="string">"hidden behind%s bridge %s %pR\n"p/spa14,vo894p/a>o ooooooo ooooooo ooooooo oooooo&pa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>,vo895p/a>o ooooooo ooooooooooo oooooooooo(pa href="+code=bus" class="sref">busp/a>->pa href="+code=number" class="sref">numberp/a> >opa href="+code=child" class="sref">childp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o&&.o896p/a>o ooooooo oooooooo oooooooooooooopa href="+code=bus" class="sref">busp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>.pa href="+code=end" class="sref">endp/a>o<opa href="+code=child" class="sref">childp/a>->pa href="+code=number" class="sref">numberp/a>) ?.o897p/a>o ooooooo ooooooo oooooooooooooooooooooopspa1 class="string">"wholly"p/spa14 :opspa1 class="string">"partially"p/spa14,vo898p/a>o ooooooo ooooooo oooooooooooooopa href="+code=bus" class="sref">busp/a>->pa href="+code=self" class="sref">selfp/a>->pa href="+code=transparent" class="sref">transparentp/a> ?opspa1 class="string">" transparent"p/spa14 :opspa1 class="string">""p/spa14,vo899p/a>o ooooooo oooooooooooooooooooooopa href="+code=dev_nam<" class="sref">dev_nam

(&pa href="+code=bus" class="sref">busp/a>->pa href="+code=dev" class="sref">devp/a>),vo900p/a>o ooooooo oooooooooooooooooooooo&pa href="+code=bus" class="sref">busp/a>->pa href="+code=busn_res" class="sref">busn_resp/a>);vo901p/a>o ooooooo oooooo}vo902p/a>o ooooooo oooooopa href="+code=bus" class="sref">busp/a>o= pa href="+code=bus" class="sref">busp/a>->pa href="+code=parent" class="sref">parentp/a>;vo903p/a>o oooooo}vo904p/a>vo905p/a>pa href="+code=out" class="sref">outp/a>:vo906p/a>o oooooopa href="+code=pci_write_config_word" class="sref">pci_write_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_BRIDGE_CONTROL" class="sref">PCI_BRIDGE_CONTROLp/a>, pa href="+code=bctl" class="sref">bctlp/a>);vo907p/a>vo908p/a>o ooooooreturnopa href="+code=max" class="sref">maxp/a>;vo909p/a>}vo910p/a>vo911p/a>pspa1 class="comment">/*p/spa14.o912p/a>pspa1 class="comment">o* Readointerrupt line and base address registers.p/spa14.o913p/a>pspa1 class="comment">o* The architecture-dependent code ca1 tweak these, of course.p/spa14.o914p/a>pspa1 class="comment">o*/p/spa14.o915p/a>static voidopa href="+code=pci_read_irq" class="sref">pci_read_irqp/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>).o916p/a>{.o917p/a>o oooooounsignedochar pa href="+code=irq" class="sref">irqp/a>;vo918p/a>vo919p/a>o oooooopa href="+code=pci_read_config_byte" class="sref">pci_read_config_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_INTERRUPT_PIN" class="sref">PCI_INTERRUPT_PINp/a>,o&pa href="+code=irq" class="sref">irqp/a>);vo920p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=pin" class="sref">pinp/a>o= pa href="+code=irq" class="sref">irqp/a>;vo921p/a>o ooooooif (pa href="+code=irq" class="sref">irqp/a>)vo922p/a>o ooooooo oooooopa href="+code=pci_read_config_byte" class="sref">pci_read_config_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_INTERRUPT_LINE" class="sref">PCI_INTERRUPT_LINEp/a>,o&pa href="+code=irq" class="sref">irqp/a>);vo923p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=irq" class="sref">irqp/a>o= pa href="+code=irq" class="sref">irqp/a>;vo924p/a>}vo925p/a>vo926p/a>voidopa href="+code=set_pcie_port_type" class="sref">set_pcie_port_typep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=pdev" class="sref">pdevp/a>).o927p/a>{.o928p/a>o oooooointopa href="+code=pos" class="sref">posp/a>;vo929p/a>o oooooopa href="+code=u16" class="sref">u16p/a>opa href="+code=reg16" class="sref">reg16p/a>;vo930p/a>vo931p/a>o oooooopa href="+code=pos" class="sref">posp/a>o= pa href="+code=pci_find_capability" class="sref">pci_find_capabilityp/a>(pa href="+code=pdev" class="sref">pdevp/a>,opa href="+code=PCI_CAP_ID_EXP" class="sref">PCI_CAP_ID_EXPp/a>);vo932p/a>o ooooooif (!pa href="+code=pos" class="sref">posp/a>).o933p/a>o ooooooo ooooooreturn;vo934p/a>o oooooopa href="+code=pdev" class="sref">pdevp/a>->pa href="+code=is_pcie" class="sref">is_pciep/a>o= 1;vo935p/a>o oooooopa href="+code=pdev" class="sref">pdevp/a>->pa href="+code=pcie_cap" class="sref">pcie_capp/a>o= pa href="+code=pos" class="sref">posp/a>;vo936p/a>o oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=pdev" class="sref">pdevp/a>,opa href="+code=pos" class="sref">posp/a>o+opa href="+code=PCI_EXP_FLAGS" class="sref">PCI_EXP_FLAGSp/a>,o&pa href="+code=reg16" class="sref">reg16p/a>);vo937p/a>o oooooopa href="+code=pdev" class="sref">pdevp/a>->pa href="+code=pcie_flags_reg" class="sref">pcie_flags_regp/a>o= pa href="+code=reg16" class="sref">reg16p/a>;vo938p/a>o oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=pdev" class="sref">pdevp/a>,opa href="+code=pos" class="sref">posp/a>o+opa href="+code=PCI_EXP_DEVCAP" class="sref">PCI_EXP_DEVCAPp/a>,o&pa href="+code=reg16" class="sref">reg16p/a>);vo939p/a>o oooooopa href="+code=pdev" class="sref">pdevp/a>->pa href="+code=pcie_mpss" class="sref">pcie_mpssp/a>o= pa href="+code=reg16" class="sref">reg16p/a>o& pa href="+code=PCI_EXP_DEVCAP_PAYLOAD" class="sref">PCI_EXP_DEVCAP_PAYLOADp/a>;vo940p/a>}vo941p/a>vo942p/a>voidopa href="+code=set_pcie_hotplug_bridge" class="sref">set_pcie_hotplug_bridgep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=pdev" class="sref">pdevp/a>).o943p/a>{.o944p/a>o oooooopa href="+code=u32" class="sref">u32p/a>opa href="+code=reg32" class="sref">reg32p/a>;vo945p/a>vo946p/a>o oooooopa href="+code=pcie_capability_read_dword" class="sref">pcie_capability_read_dwordp/a>(pa href="+code=pdev" class="sref">pdevp/a>,opa href="+code=PCI_EXP_SLTCAP" class="sref">PCI_EXP_SLTCAPp/a>,o&pa href="+code=reg32" class="sref">reg32p/a>);vo947p/a>o ooooooif (pa href="+code=reg32" class="sref">reg32p/a>o& pa href="+code=PCI_EXP_SLTCAP_HPC" class="sref">PCI_EXP_SLTCAP_HPCp/a>).o948p/a>o ooooooo oooooopa href="+code=pdev" class="sref">pdevp/a>->pa href="+code=is_hotplug_bridge" class="sref">is_hotplug_bridgep/a>o= 1;vo949p/a>}vo950p/a>vo951p/a>#define pa href="+code=LEGACY_IO_RESOURCE" class="sref">LEGACY_IO_RESOURCEp/a>o oooo(pa href="+code=IORESOURCE_IO" class="sref">IORESOURCE_IOp/a>o| pa href="+code=IORESOURCE_PCI_FIXED" class="sref">IORESOURCE_PCI_FIXEDp/a>).o952p/a>vo953p/a>pspa1 class="comment">/**p/spa14.o954p/a>pspa1 class="comment">o* pci_setup_device - fill in class and map information of a devicep/spa14.o955p/a>pspa1 class="comment">o* @dev: the device structureoto fillp/spa14.o956p/a>pspa1 class="comment">o*p/spa14.o957p/a>pspa1 class="comment">o* Initialize the device structureowith information about the device's p/spa14.o958p/a>pspa1 class="comment">o* vendor,class,memory and IO-space addresses,IRQ lines etc.p/spa14.o959p/a>pspa1 class="comment">o* Called at initialisation of the PCI subsystem and by CardBus services.p/spa14.o960p/a>pspa1 class="comment">o* Returns 0 on success and negativeoif unknown type of device (not normal,p/spa14.o961p/a>pspa1 class="comment">o* bridge or CardBus).p/spa14.o962p/a>pspa1 class="comment">o*/p/spa14.o963p/a>intopa href="+code=pci_setup_device" class="sref">pci_setup_devicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>).o964p/a>{.o965p/a>o oooooopa href="+code=u32" class="sref">u32p/a>opa href="+code=class" class="sref">classp/a>;vo966p/a>o oooooopa href="+code=u8" class="sref">u8p/a>opa href="+code=hdr_type" class="sref">hdr_typep/a>;vo967p/a>o oooooostructopa href="+code=pci_slot" class="sref">pci_slotp/a>o*pa href="+code=slot" class="sref">slotp/a>;vo968p/a>o oooooointopa href="+code=pos" class="sref">posp/a>o= 0;vo969p/a>o oooooostructopa href="+code=pci_bus_region" class="sref">pci_bus_regionp/a>opa href="+code=region" class="sref">regionp/a>;vo970p/a>o oooooostructopa href="+code=resource" class="sref">resourcep/a>o*pa href="+code=res" class="sref">resp/a>;vo971p/a>vo972p/a>o ooooooif (pa href="+code=pci_read_config_byte" class="sref">pci_read_config_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=PCI_HEADER_TYPE" class="sref">PCI_HEADER_TYPEp/a>,o&pa href="+code=hdr_type" class="sref">hdr_typep/a>))vo973p/a>o ooooooo ooooooreturno-pa href="+code=EIO" class="sref">EIOp/a>;vo974p/a>vo975p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=sysdata" class="sref">sysdatap/a>o= pa href="+code=dev" class="sref">devp/a>->pa href="+code=bus" class="sref">busp/a>->pa href="+code=sysdata" class="sref">sysdatap/a>;vo976p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>.pa href="+code=parent" class="sref">parentp/a>o= pa href="+code=dev" class="sref">devp/a>->pa href="+code=bus" class="sref">busp/a>->pa href="+code=bridge" class="sref">bridgep/a>;vo977p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>.pa href="+code=bus" class="sref">busp/a>o= &pa href="+code=pci_bus_type" class="sref">pci_bus_typep/a>;vo978p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=hdr_type" class="sref">hdr_typep/a>o= pa href="+code=hdr_type" class="sref">hdr_typep/a>o& 0x7f;vo979p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=multifunction" class="sref">multifunctionp/a>o= !!(pa href="+code=hdr_type" class="sref">hdr_typep/a>o& 0x80);vo980p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=error_state" class="sref">error_statep/a>o= pa href="+code=pci_channel_io_normal" class="sref">pci_channel_io_normalp/a>;vo981p/a>o oooooopa href="+code=set_pcie_port_type" class="sref">set_pcie_port_typep/a>(pa href="+code=dev" class="sref">devp/a>);vo982p/a>vo983p/a>o oooooopa href="+code=list_for_each_entry" class="sref">list_for_each_entryp/a>(pa href="+code=slot" class="sref">slotp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=bus" class="sref">busp/a>->pa href="+code=slots" class="sref">slotsp/a>,opa href="+code=list" class="sref">listp/a>).o984p/a>o ooooooo ooooooif (pa href="+code=PCI_SLOT" class="sref">PCI_SLOTp/a>(pa href="+code=dev" class="sref">devp/a>->pa href="+code=devfn" class="sref">devfnp/a>) == pa href="+code=slot" class="sref">slotp/a>->pa href="+code=number" class="sref">numberp/a>).o985p/a>o ooooooo ooooooo oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=slot" class="sref">slotp/a>o= pa href="+code=slot" class="sref">slotp/a>;vo986p/a>vo987p/a>o oooooopspa1 class="comment">/* Assume 32-bit PCI; let 64-bit PCI cards (which areofar rarer)p/spa14.o988p/a>pspa1 class="comment">ooooooooo set this higher, assuming the system even supports 4NTROLp/sref">hdr_typep/a>o& 0x7f/probe.9889" idopL889" class="li9e" na98opL979">o979p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa hdma_mask="+code=dev" clama_mask="sref">xfffffffff">slotp/a>;vo950p/a>vo981p/a>o oooooopa hass=ass="+code=dev_nam<" class=ass="+cof">PC>slotp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="string">I Bus %0us %0.s ding">"&quooooo oooooopa href="+code=pci_domain_nr" class="sref">pci_domain_nrp/a>(pa href="+code=dev" class="sref">devp/a>->pa href="+code=bus" class="sref">devp/a>),vo892p/a>o ooooooo p/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=bus" class="sref">busp/a>->pa href="+code=number" class="sref"ef">devp/a>,opa href="+code=PCI_SLOT" class="sref">PCI_SLOTp/a>(pa href="+code=dev" class="sref">devp/a>->pa href="+code=devfn" class="sref"f">devp/a>),vo893p/a>o ooooooo ">devp/a>,opa href=FUNP_SLTCAP_HPC" class=FUNPf">PCI_SLOTp/a>(pa href="+code=dev" class="sref">devp/a>->pa href="+code=devfn" class="sref"ef">devp/a>);vo974p/a>vo935p/a>o oooooopa hrss="sref">pci_rility_read_dword" class="sref">pci_rilityconfig_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href=CLASref"VISIONTERRUPT_PIN" class=CLASref"VISION"sref">slotp/a>,o&pa href="+code=class" class="srefef">devp/a>);vo976p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa hrevis="+code=region" clasvis="+"sref">slotp/a>o= pa href="+code=class" class="srefdr_typep/fff">slotp/a>;vo977p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=class" class="srefd">slotp/a>o= pa href="+code=class" class="srefdr">dnumbe8;">o893p/a>o ooooooo "a>o oooooopspa1 class="csteer 3 ead_spports 4NTROLp/sref">hdr_typep/a>o& 0x/probe.c#9898" idopL898" class="li9e" na99opL918">o918p/a>vo979p/a>o oooooopa href_ss="sk="+code=dev" claef_ss="skconfig_bytep/a>(pa hKERN_DEBUG="+code=dev" clKERN_DEBUG"sref">slotp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="str[ing">I Bus Ŷx]oif uns %0p/a>,ons #08x7;s %pR\n"p/spa14,vo893p/a>o oooooop/a>,o&pa href="+code=dev" class="sref">devp/a>->pa homment="+code=dev" clomment="sref">devp/a>,opa href="+code=dev" class="sref">devp/a>->pa hrefi_setup_device" cl>pci_setupef">devp/a>,opa href="+code=dev" class="sref">devp/a>->pa href="+code=hdr_type" class="sref">hef">devp/a>,opa href="+code=dev" class="sref">devp/a>->pa href="+code=class" class="srefef">drie>t;p/spa14,vo971p/a>vo882p/a>o oooooopspa1 class="cneede stn sinassef">d/a>,on"sreypports 4NTROLp/sref">hdr_typep/a>o& 010/3robe.c#10/93" idopL893" class="li10/93>10/opL923">o923p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa hcfg_sizode=hdr_type" clcfg_sizoerror_statep/a>o= pa href="fg_sry a_sizode=hdr_type" clref="fg_sry a_sizoe_port_typep/a>(pa href="+code=dev" class="sref">devp/a>);vo974p/a>vo882p/a>o oooooopspa1 class="cs %Ugativeopower ref">s="striports 4NTROLp/sref">hdr_typep/a>o& 010/6robe.c#10/96" idopL896" class="li10/96>10/opL976">o976p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa hcurci_fixode=error_state" clcurci_fixode=error_statep/a>o= pa hass=UNKNOWNTERRUPT_PIN" class=UNKNOWN"sref">slotp/a>;vo907p/a>vo882p/a>o oooooopspa1 class="cEarlyon Cars, befoiecrivegher, asBARspports 4NTROLp/sref">hdr_typep/a>o& 010/9robe.c#10/99" idopL899" class="li10/99>10/opL919">o919p/a>o oooooopa href="sref"=pci_setup_device" class="sref"=pci_se_port_typep/a>(pa hass="sref"earlyetup_device" class="sref"earlyf">hef">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo882p/a>o oooooopspa1 class="cwn type/a>,onmay beoooungnt">fter n Cardports 4NTROLp/sref">hdr_typep/a>o& 01011robe.c#10911" idopL911" class="li10911>109opL981">o981p/a>o oooooopa href="+code=class" class="srefd">slotp/a>o= pa href="+code=dev" class="sref">devp/a>->pa href="+code=class" class="srefdr">dnumbe8;ROLp/sref">hdr_typep/a>o& 01012robe.c#10912" idopL912" class="li10912>109opL982">o982p/a>vo923pswitchoo ooooooif (pa href="+code=dev" class="sref">devp/a>->pa href="+code=hdr_type" class="sref">h) {">o893p/a>o ooooooo "a>o oooooopspa1 class="chsrete bf unports 4NTROLp/sref">hdr_typep/a>o& 01014robe.c#10914" idopL914" class="li10914>109opL984">o984pc lintatep/a>o= pa hass="sref">PCI__NORMAIDGE_CONTROL" class="sref">PCI__NORMAIpL98:93p/a>o ooooooo "a>o oooooopspa1 class="cxodndardchsrete ports 4NTROLp/sref">hdr_typep/a>o& 01015robe.c#10915" idopL915" class="li10915>109opL985">o985p/a>o ooooooo ooooooif (pa href="+code=class" class="srefd"_statep/a>o= pa hass=CLASre"sref">assTERRUPT_PIN" class=CLASre"sref">assref">numberp/a>).o896p/a>o ooooooo ooogo stevp/a>->pa hray_read_dword" clray"sref">slotp/a>;vo897p/a>o ooo/a>o oooooopa hrss="srefe=pci_read_irq" class="sref">pci_re">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo878p/a>o ooooooo oooooopa href="sreft lide=pcie_mpss" class="sreft lidconfig_bytep/a>(pa href="+code=dev" class="sref6ef">devp/a>,opa href=ROM_ADDRESCI_EXP_FLAGS" class=ROM_ADDRESC="sref">devp/a>);vo879p/a>o ooooooo oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href=SUBSYSTEM_VENDOR_IVCAP_PAYLOAD" class=SUBSYSTEM_VENDOR_IV"sref">slotp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa hof the PC_omment="+code=dev" clof the PC_omment="sref">devp/a>);vo879p/a>o ooooooo oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href=SUBSYSTEM_IVCAP_PAYLOAD" class=SUBSYSTEM_IV"sref">slotp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa hof the PC_=pci_setup_device" clof the PC_=pci_s="sref">devp/a>);vo971p/a>vo922p/a>o oooo">o911p/a>pspa1 class="comment">/*p/spa14.o913p/a>pspa1 class=================*======Dor, asuglyolegacy mpa cxouff o* Ofraoo* r, o91broke913hipcomment">/*p/spa14.o864p/a>pspa1 class="comment">oooooo*======quirke-dep. Legacy mpa cATAe-dntroll hrtn sinn Cedcomment">/*p/spa14.o865p/a>pspa1 class="comment">oooooo*======d IO-spac.commsOften,of dalways echoeent"sBAR0-3, on comment">/*p/spa14.o876p/a>pspa1 class="comment">oooooooooooooBAR0-3nt"sa fewpc lise-dntat"sjunk!comment">/*p/spa14.o877p/a>pspa1 class="comment">ooooooooo oooooo*/p/spa14.o888p/a>o ooooooo ooooooif (pa href="+code=class" class="srefd"_statep/a>o= pa hass=CLASreSTORAf">ID_HEADER_TYPE" class=CLASreSTORAf">ID_f">h) {oo*/p/spa14.o899p/a>o ooooooo oootatep/a>o= pa href="+code=u8" class="sref">u8p/a>opa hrivgi="+code=self" clrivgi="sref">slotp/a>;vo899p/a>o ooooooo oootatep/a>o= pa href="+code=pci_read_config_byte" class="sref">pci_read_config_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href=CLASrePROG="+code=dev" clref=CLASrePROG"sref">slotp/a>,o&pa hrivgi="+code=self" clrivgi="sreef">devp/a>);vo871p/a>o ooooooo ooooooo ooooooif ((pa hrivgi="+code=self" clrivgi="sredr_type1">dev0) {oo*/p/spa14.o892p/a>o ooooooo ooooooo oootatep/a>o= pa href="+code=region" class="sref"ef">devp/a>.pa hxodr="+code=slot" claodr=="sref">x1F>posp/a>o= 0;vo893p/a>o ooooooo ooooooo ooooatep/a>o= pa href="+code=region" class="sref"ef">devp/a>.pa href="+code=end" class="sref">x1F7posp/a>o= 0;vo894p/a>o ooooooo ooooooo ooooatep/a>o= pa href="+code=res" class="sref">busp/a>o= &pa href="+code=dev" class="sref">devp/a>->pa href="+code=resource" class="sref">r[0]posp/a>o= 0;vo895p/a>o ooooooo ooooooooooooatep/a>o= pa href="+code=res" class="sref">devp/a>->pa hsref"="+code=res" clsref"srefd">slotp/a>o= pa href="+code=LEGACY_IO_RESOURCE" class="sref">LEGACY_IO_Rposp/a>o= 0;vo896p/a>o ooooooo oooooooo ootatep/a>o= pa hrefbios="srefo_ref="+code=resource" clrefbios="srefo_ref="+coconfig_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=res" class="sr_SLTCAPp/a>,o&pa href="+code=region" class="sref"ef">devp/a>);vo897p/a>o ooooooo ooooooo oootatep/a>o= pa href="+code=region" class="sref"ef">devp/a>.pa hxodr="+code=slot" claodr=="sref">x3F6f">devp/a>);vo898p/a>o ooooooo ooooooo oooooooooooooopa href="+code=region" class="sref"ef">devp/a>.pa href="+code=end" class="sref">x3F6f">devp/a>);vo899p/a>o ooooooo oooooooooooooooooooooopa href="+code=res" class="sref">busp/a>o= &pa href="+code=dev" class="sref">devp/a>->pa href="+code=resource" class="sref">r[1]posp/a>o= 0;vo895p/a>o ooooooo ooooooooooooatep/a>o= pa href="+code=res" class="sref">devp/a>->pa hsref"="+code=res" clsref"srefd">slotp/a>o= pa href="+code=LEGACY_IO_RESOURCE" class="sref">LEGACY_IO_Rposp/a>o= 0;vo871p/a>o ooooooo ooooooooooooatep/a>o= pa hrefbios="srefo_ref="+code=resource" clrefbios="srefo_ref="+coconfig_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=res" class="sr_SLTCAPp/a>,o&pa href="+code=region" class="sref"ef">devp/a>);vo892p/a>o ooooooo ooo9">o949p/a>}vo893p/a>o ooooooo ooooooo ooooooif ((pa hrivgi="+code=self" clrivgi="sredr_type4">dev0) {oo*/p/spa14.o894p/a>o ooooooo ooooooo ooooatep/a>o= pa href="+code=region" class="sref"ef">devp/a>.pa hxodr="+code=slot" claodr=="sref">x17>posp/a>o= 0;vo895p/a>o ooooooo ooooooooooooatep/a>o= pa href="+code=region" class="sref"ef">devp/a>.pa href="+code=end" class="sref">x177posp/a>o= 0;vo896p/a>o ooooooo oooooooo ootatep/a>o= pa href="+code=res" class="sref">busp/a>o= &pa href="+code=dev" class="sref">devp/a>->pa href="+code=resource" class="sref">r[2]posp/a>o= 0;vo897p/a>o ooooooo ooooooo oootatep/a>o= pa href="+code=res" class="sref">devp/a>->pa hsref"="+code=res" clsref"srefd">slotp/a>o= pa href="+code=LEGACY_IO_RESOURCE" class="sref">LEGACY_IO_Rposp/a>o= 0;vo898p/a>o ooooooo ooooooo oooooooooooooopa hrefbios="srefo_ref="+code=resource" clrefbios="srefo_ref="+coconfig_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=res" class="sr_SLTCAPp/a>,o&pa href="+code=region" class="sref"ef">devp/a>);vo899p/a>o ooooooo oooooooooooooooooooooopa href="+code=region" class="sref"ef">devp/a>.pa hxodr="+code=slot" claodr=="sref">x376f">devp/a>);vo895p/a>o ooooooo ooooooooooooatep/a>o= pa href="+code=region" class="sref"ef">devp/a>.pa href="+code=end" class="sref">x376f">devp/a>);vo871p/a>o ooooooo ooooooooooooatep/a>o= pa href="+code=res" class="sref">busp/a>o= &pa href="+code=dev" class="sref">devp/a>->pa href="+code=resource" class="sref">r[3]posp/a>o= 0;vo892p/a>o ooooooo ooooooo oootatep/a>o= pa href="+code=res" class="sref">devp/a>->pa hsref"="+code=res" clsref"srefd">slotp/a>o= pa href="+code=LEGACY_IO_RESOURCE" class="sref">LEGACY_IO_Rposp/a>o= 0;vo893p/a>o ooooooo ooooooo ooooatep/a>o= pa hrefbios="srefo_ref="+code=resource" clrefbios="srefo_ref="+coconfig_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=res" class="sr_SLTCAPp/a>,o&pa href="+code=region" class="sref"ef">devp/a>);vo894p/a>o ooooooo ooo9">o949p/a>}vo895p/a>o ooo9">o949p/a>}vo896p/a>o ooobreakf">devp/a>);vo907p/a>vo898pc lintatep/a>o= pa hass="sref">PCI__"sref"="+code=dev" clref="sref">PCI__"sref"pL89:93p/a>o ooooooo "a>o oooooopspa1 class="comment"hsrete ports 4NTROLp/sref">hdr_typep/a>o& 01059robe.c#10959" idopL959" class="li10959>109opL899">o899p/a>o ooooooo ooooooif (pa href="+code=class" class="srefd!_statep/a>o= pa hass=CLASre"sref">assTERRUPT_PIN" class=CLASre"sref">assref">numberp/a>).o894p/a>o ooooooo ooogo stevp/a>->pa hray_read_dword" clray"sref">slotp/a>;vo871p/a>o ooo"a>o oooooopspa1 class="cTsation-to-let omment"spec requiresr, ot of tracss arts 4NTROLp/sref">hdr_typep/a>o& 01062robe.c#10962" idopL962" class="li10962>109opL962">o962p/a>pspa1 class===================de;pagher(i.e. transass="s) omment"musttn sinrivgramigherts 4NTROLp/sref">hdr_typep/a>o& 01063robe.c#10963" idopL963" class="li10963>109opL913">o913p/a>pspa1 class================= nt">o*fy an;pa nkno0x01. ports 4NT ROLp/sref">hdr_typep/a>o& 01064robe.c#10964" idopL964" class="li10964>109opL894">o894p/a>o oootatep/a>o= pa href="+code=pci_read_irq" class="sref">pci_re">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo895p/a>o ooo/a>o= &pa href="+code=dev" class="sref">devp/a>->pa htransass="s="+code=dev" cltransass="ssrefd">o ooooooif ((pa href="+code=dev" class="sref">devp/a>->pa href="+code=class" class="srefdr_typep/ff">dev1ef">devp/a>);vo896p/a>o oootatep/a>o= pa href="+codt lide=pcie_mpss" class="sreft lidconfig_bytep/a>(pa href="+code=dev" class="sref2ef">devp/a>,opa href=ROM_ADDRESC1TERRUPT_PIN" class=ROM_ADDRESC1="sref">devp/a>);vo897p/a>o ooo/a>o oooooopa href="+code=set_pcie_hotplug_bridge" class="sref">set_pcie_hotplug_">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo878p/a>o ooooooo oooooopa href="+code=pos" class="sref">posp/a>o= pa href="+code=pci_find_capability" class="sref">pci_find_capabilityp/a>(pa href="+code=dev" class="sref">devp/a>,opa href=Csref">SSVIVCAP_PAYLOAD" class=Csref">SSVIV="sref">devp/a>);vo899p/a>o ooooooo ooooooif (pa href="+code=pos" class="sre {oo*/p/spa14.o899p/a>o ooooooo oootatep/a>o= pa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=pos" class="sref">posp/a>o+opa href=SSVIV_VENDOR_IVCAP_PAYLOAD" class=SSVIV_VENDOR_IV="sr_SLTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa hof the PC_omment="+code=dev" clof the PC_omment="sref">devp/a>);vo871p/a>o ooooooo oootatep/a>o= pa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=pos" class="sref">posp/a>o+opa href=SSVIV_DEVIf">IVCAP_PAYLOAD" class=SSVIV_DEVIf">IV="sr_SLTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa hof the PC_=pci_setup_device" clof the PC_=pci_s="sref">devp/a>);vo892p/a>o ooo9">o949p/a>}vo893p/a>o ooobreakf">devp/a>);vo974p/a>vo895pc lintatep/a>o= pa hass="sref">PCI__CARDBUCI_EXP_FLAGS" class="sref">PCI__CARDBUCpL89:93p/a>o ooooooo"a>o oooooopspa1 class="ctem and omment"hsrete ports 4NTROLp/sref">hdr_typep/a>o& 01076robe.c#10976" idopL976" class="li10976>109opL896">o896p/a>o ooooooo ooooooif (pa href="+code=class" class="srefd!_statep/a>o= pa hass=CLASre"sref">CARDBUCI_EXP_FLAGS" class=CLASre"sref">CARDBUCref">numberp/a>).o897p/a>o ooooooo ooogo stevp/a>->pa hray_read_dword" clray"sref">slotp/a>;vo878p/a>o ooooooo oooooopa href="srefe=pci_read_irq" class="sref">pci_re">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo879p/a>o ooooooo oooooopa href="+codt lide=pcie_mpss" class="sreft lidconfig_bytep/a>(pa href="+code=dev" class="sref1, >o& 0x80);vo879p/a>o ooooooo oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href=CB=SUBSYSTEM_VENDOR_IVCAP_PAYLOAD" class=CB=SUBSYSTEM_VENDOR_IV="sr_SLTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa hof the PC_omment="+code=dev" clof the PC_omment="sref">devp/a>);vo871p/a>o ooo"ooo oooooopa href="+code=pci_read_config_word" class="sref">pci_read_config_wordp/a>(pa href="+code=dev" class="sref">devp/a>,opa href=CB=SUBSYSTEM_IVCAP_PAYLOAD" class=CB=SUBSYSTEM_IV="sr_SLTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa hof the PC_=pci_setup_device" clof the PC_=pci_s="sref">devp/a>);vo892p/a>o ooobreakf">devp/a>);vo974p/a>vo894pdefault:93p/a>o ooooooo "a>o oooooopspa1 class="csgativeohsrete ports 4NTROLp/sref">hdr_typep/a>o& 01085robe.c#10985" idopL985" class="li10985>109opL895">o895p/a>o ooo/a>o= &pa href_ert="+code=dev" clref_ertconfi>slotp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="strsgativeohsrete if uns %0, s %pR\n&qROLp/sref">hdr_typep/a>o& 01086robe.c#10986" idopL986" class="li10986>109opL896">o896p/a>o ooooooo ooo">devp/a>,opspa1 class="strigno1 clcwn typ7;s %pR\n&quf">devp/a>,opa href="+code=dev" class="sref">devp/a>->pa href="+code=hdr_type" class="sref">hef">devp/a>);vo897p/a>o ooooooo ooooooreturno-pa href="+code=EIO" class="sref">EIOp/a>;vo918p/a>vo919p/a>o oooooopa hray_read_dword" clray"sre:8">o918p/a>vo895p/a>o ooo/a>o= &pa href_ert="+code=dev" clref_ertconfi>slotp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>,opspa1 class="strigno1 clc/a>,ons #08x (doesn the t matchohsrete s %pR\n&qROLp/sref">hdr_typep/a>o& 01091robe.c#10891" idopL891" class="li10891>108opL871">o871p/a>o ooooooo ooot>devp/a>,opspa1 class="strif uns %0)7;s %pR\n&quf">devp/a>,opa href="+code=dev" class="sref">devp/a>->pa href="+code=class" class="srefuf">devp/a>,opa href="+code=dev" class="sref">devp/a>->pa href="+code=hdr_type" class="sref">hef">devp/a>);vo922p/a>o oooooooooif ((pa href="+code=dev" class="sref">devp/a>->pa href="+code=class" class="srefd_statep/a>o= pa hass=CLASreNOT_DEFINRCE_PCI_FIXED" class=CLASreNOT_DEFINRC="sref">EIOp/a>;vo893p9">o949p/a>}vo974p/a>vo882p/a>o oooooopspa1 class="cWe foundsa f5" ohsrlthycwn typ,ogoogoogo... ports 4NTROLp/sref">hdr_typep/a>o& 01096robe.c#10896" idopL896" class="li10896>108opL896">o896poooo oo>posp/a>o= 0;vo949p/a>}vo918p/a>vpci_finiide=pcie_mpss" class="sle lif">pci_finiidconfidevicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>).o981p/a>o oooooopa hass=vpd="sle liode=pci_dev" class=vpd="sle lici_re">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo882p/a>o oooooopa hass=iov="sle liode=pci_dev" class="sle liode=ci_re">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo923p/a>o oooooopa hass="reif">p_save_buff hr_capability" class="reif">p_save_buff hrci_re">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo949p/a>}vo949p/a>}vo876p/a>pspa1 class="comment">/**p/spa14.o957p/a>pspa1 class="cass="sle lifassetupreisa asstialize the device hen all us hrtof itards (inishedor CardBus).p/spa14.o958p/a>pspa1 class="commentialize , ot the debeen disconnectedcomment">/*p/spa14.o959p/a>pspa1 class="comment">/*p/spa14.o960p/a>pspa1 class="cW_devbeoomment"onlybsysInitialize coice hen all us hrtof oooooasstialize rdscomment">/*p/spa14.o961p/a>pspa1 class="cdo" or CardBus).p/spa14.o962p/a>pspa1 class="comment">o*/p/spa14.(structopa h=pci_setup_device" cl=pci_s="srpci_devp/a>o*pa href="+code=dev" class="sref">devp/a>).o964p/a>{.o985pdevicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=pci_dev" class="sref">f">devp/a>);vo986p/a>vo977p/a>o oooooopa href="+code=pci_dev" class="sref">p_statep/a>o= pa hto_ref="+code=pci_dev" clto_ref="+cci_re">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo978p/a>o oooooopa href="+le lif">pci_finiide=pcie_mpss" class="sle lif">pci_finiidconfi/a>o oooooopa href="+code=pci_dev" class="sref">ef">devp/a>);vo919p/a>o oooooopa href="sle lifof_npa e=pcie_mpss" class="sle lifof_npa confi/a>o oooooopa href="+code=pci_dev" class="sref">ef">devp/a>);vo980p/a>o oooooopa hkpreiode=pci_dev" clkpreiconfi/a>o oooooopa href="+code=pci_dev" class="sref">ef">devp/a>);vo949p/a>}vo982p/a>vo913p/a>pspa1 class="comment">/**p/spa14.o864p/a>pspa1 class="cass="fg_sry a_sizoetugoooooe copci_ura">mu sry a sizoeof ooationtializeor CardBus).p/spa14.o865p/a>pspa1 class="commentiontializer CardBus).p/spa14.o876p/a>pspa1 class=comment">/**p/spa14.o877p/a>pspa1 class=* Regulartiontializertn sin256 ead_s, bu; let-X 2 on tiontExpO-sptializeromment">/**p/spa14.o958p/a>pspa1 class="cn sin4096 ead_s. Ehe sifsInitialize ooo">pcile,r, ot doesn the t meo95weoomnomment">/**p/spa14.o959p/a>pspa1 class=" acc-sptn supMaybeoweodo" the t n sina waye stgenera"e extendnt"copci_ sry aomment">/**p/spa14.o960p/a>pspa1 class="cacc-sp_s, orsInitialize ooobehindsa rea hretExpO-sptommentsupSooweofor_ement">/**p/spa14.o961p/a>pspa1 class="c"sregher, asility ot 0x100 PCI camustteioo* rbeo0 orsa validoextendnt_ement">/**p/spa14.o962p/a>pspa1 class=" ">pci_findohsreteor CardBus).p/spa14.o913p/a>pspa1 class="comment">o*/p/spa14.pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>).o964p/a>{.o896pi_devp/a>o*pa hu932" idopL9ev" clu9opL892evp/a>->pa hoodeef="+code=bus" cloodeefef">f">devp/a>);vo897pinep/a>(structopa href="+code=pos" class="sref">posp/a>o= pa hass=CFG_SPACE_SIZ"="+code=dev" clref=CFG_SPACE_SIZ"ef">f">devp/a>);vo918p/a>vo899poooo ooooooif (pa hrss="sref">pci_rility_read_dword" class="sref">pci_rilityconfig_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=pos" class="sr_SLTCAPp/a>,o&pa hoodeef="+code=bus" cloodeefef">)d!_statep/a>o= pa hassBIOS_SUCCESSFUIDGE_CONTROL" classBIOS_SUCCESSFUI="sref">devp/a>).o895p/a>o ooogo stevp/a>->pa hfaiel_io_normal" clfaieef">f">devp/a>);vo871poooo ooooooif (pa hoodeef="+code=bus" cloodeefef">>dev0xffffffffef">devp/a>).o892p/a>o ooogo stevp/a>->pa hfaiel_io_normal" clfaieef">f">devp/a>);vo974p/a>vo894poooo oo>posp/a>o= pa hass=CFG_SPACE_EXP_SIZ"="+code=dev" clref=CFG_SPACE_EXP_SIZ"ef">f">devp/a>);vo949p/a>}v:8">o918p/a>vo897poooo oo>posp/a>o= pa hass=CFG_SPACE_SIZ"="+code=dev" clref=CFG_SPACE_SIZ"ef">f">devp/a>);vo949p/a>}vo949p/a>}vpci_devp/a>o*pa href="+code=dev" class="sref">devp/a>).o964p/a>{.o892pinep/a>(structopa href="+code=pos" class="srf">devp/a>);vo923p/a>o oooooopa hu932" idopL9ev" clu9opL892evp/a>->pa hoodeef="+code=bus" cloodeefef">f">devp/a>);vo894p/a>o oooooopa hu916" idopL9ev" clu1opL896evp/a>->pa h idop+code=class" class="sreff">devp/a>);vo949p/a>}vo896pi_devp/a>o*pa h idop+code=class" class="srefd">slotp/a>o= pa href="+code=dev" class="sref">devp/a>->pa href="+code=class" class="srefdr">dnumbe8;ROLp/sref">hdr_typep/a>o& 01157robe.c#11957" idopL957" class="li11957>1157pL871">o871poooo ooooooif (pa h idop+code=class" class="srefd"_statep/a>o= pa hass=CLASre"sref">HOSode=PCI_SLOT" class=CLASre"sref">HOSo="sref">devp/a>).o878p/a>o ooooooo oo>posp/a>o= pa href="fg_sry a_sizo_extode=pci_dev" class="fg_sry a_sizo_extconfi">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo949p/a>}vo894poooo!/a>o oooooopa hass=is="sreode=pci_dev" class="s="sreconfi">devp/a>,opa href="+code=dev" class="sree {oo*/p/spa14.o871p/a>o ooo"a>(structopa href="+code=pos" class="sref">posp/a>o= pa hpef="+code=pci_find_capability" class="sref">pci_find_capabilityp/a>(pa href="+code=dev" class="sref">devp/a>,opa href=Csref">refXde=PCI_SLOT" class=Csref">refX="sref">devp/a>);vo892p/a>o ooooooo!/a>o oooooopa haef="+code=pos" class="sre">devp/a>);vo893p/a>o ooooooo ooogo stevp/a>->pa hfaiel_io_normal" clfaieef">f">devp/a>);vo974p/a>vo895p/a>o ooo/a>o= &pa hrss="sref">pci_rility_read_dword" class="sref">pci_rilityconfig_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=pos" class="sref">posp/a>o+opa href=X_STATUCI_EXP_FLAGS" class=X_STATUC="sr_SLTCAPp/a>,o&pa hoodeef="+code=bus" cloodeefef">)f">devp/a>);vo896p/a>o ooooooo!o ooooooif (pa hoodeef="+code=bus" cloodeefef">>r_typeo ooooooif (pa hass=X_STATUC_266MHZI_EXP_FLAGS" class=X_STATUC_266MHZef">>|">posp/a>o+opa href=X_STATUC_533MHZI_EXP_FLAGS" class=X_STATUC_533MHZ="sreee">devp/a>);vo897p/a>o ooooooo ooogo stevp/a>->pa hfaiel_io_normal" clfaieef">f">devp/a>);vo878p9">o949p/a>}vo949p/a>}vo899poooo oo>posp/a>o= pa href="fg_sry a_sizo_extode=pci_dev" class="fg_sry a_sizo_extconfi">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo971p/a>v:8">o918p/a>vo893poooo oo>posp/a>o= pa hass=CFG_SPACE_SIZ"="+code=dev" clref=CFG_SPACE_SIZ"ef">f">devp/a>);vo949p/a>}vo949p/a>}v(structopa h=pci_setup_device" cl=pci_s="srpci_devp/a>o*pa href="+code=dev" class="sref">devp/a>).o878pdevicep/a>(structopa href=hostcie_hotplug_bridge" clref=hostcie_hot="srpci_devp/a>o*pa hie_hotplug_bridge" clie_hot="srp_statep/a>o= pa hto_ref=hostcie_hotplug_bridge" clto_ref=hostcie_hotconfi">devp/a>,opa href="+code=dev" class="sref">devp/a>);vo949p/a>}vo894pooooi_devp/a>o*pa hie_hotplug_bridge" clie_hot="sref">devp/a>->pa hrele liff+code=region" clasle liff+="sref">devp/a>).o871p/a>o ooo"ooo oooooopa hie_hotplug_bridge" clie_hot="sref">devp/a>->pa hrele liff+code=region" clasle liff+="sroi_devp/a>o*pa hie_hotplug_bridge" clie_hot="sref">devp/a>);vo982p/a>vo923p/a>o oooooopa hass="reifref="+co_listode=pci_dev" class="reifref="+co_list="sroLTCAPp/a>,o&pa hie_hotplug_bridge" clie_hot="sref">devp/a>->pa hwsreowf="+code=bus" clwsreowf="sref">devp/a>);vo974p/a>vo895pevp/a>->pa hkpreiode=pci_dev" clkpreiconfi/a>o oooooopa hie_hotplug_bridge" clie_hot="sref">devp/a>);vo949p/a>}vo907p/a>vpci_devp/a>o*pa halloc_ref="+code=pci_dev" clalloc_ref="+cconfivoidef">devp/a>).o895pdevicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="srf">devp/a>);vo971p/a>vo882p/a>o oooooopa href="+code=dev" class="srp_statep/a>o= pa hkzallocode=pci_dev" clkzallocconfidizoofidevicep/a>(structopa href="+code=pci_dev" class="sref">)ef">devp/a>,opa hGFP_KERNEIDGE_CONTROL" clGFP_KERNEI="sref">devp/a>);vo893poooo!/a>o oooooopa href="+code=dev" class="sref">devp/a>).o894p/a>o ooooooo oo>posp/a>o= pa hNULIDGE_CONTROL" clNULI="srf">devp/a>);vo949p/a>}vo896pi_devp/a>o*pa hINIT_LIST="sreDGE_CONTROL" clINIT_LIST="sre="sroLTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa h"srelistode=pci_dev" cl"srelist="sref">devp/a>);vo907p/a>vo878poooo oo>posp/a>o= pa href="+code=dev" class="srf">devp/a>);vo949p/a>}vo oooooopa halloc_ref="+code=pci_dev" clalloc_ref="+cconfef">devp/a>);vo971p/a>v->pa href="sre"srefref_omment_iy_read_dword" class="sre"srefref_omment_iyconfidevicep/a>(structopa href=bef="+code=bus" clref=bef="srpci_devp/a>o*pa hief="+code=bus" clbef="sr,pinep/a>(structopa hreff+code=region" clreff+="sref">devp/a>,opa hu932" idopL9ev" clu9opL892ci_devp/a>o*pa hel_io_normal" clepL89,1">o971p/a>vo893p/a>o ooooooo ooooooooooooinep/a>(structopa hcrs_timeoutode=pci_dev" clcrs_timeout="sref">devp/a>).o964p/a>{.o895pinep/a>(structopa hrelad_capability" clrelad="srp_s1f">devp/a>);vo986p/a>vo871poooo ooooooif (pa hass="sre"sref">pci_rility_read_dword" class="sre"sref">pci_rilityconfi/a>o oooooopa hief="+code=bus" clbef="sr,p/a>(structopa hreff+code=region" clreff+="sref">devp/a>,opa href=VENDOR_IVCAP_PAYLOAD" class=VENDOR_IV="sr_Si_devp/a>o*pa hel_io_normal" clepL89ee">devp/a>);vo878p/a>o ooooooo oo>posp/a>o= pa hfalliode=pci_dev" clfalli="srf">devp/a>);vo949p/a>}vo980p/a>o oooooopspa1 class="csome broken boardspoooo oo> ors~0poooa slot oooempty:="comment">o*/p/spa14.o871pooooci_devp/a>o*pa hel_io_normal" clepL89>dev0xffffffff ||2ci_devp/a>o*pa hel_io_normal" clepL89>dev0x00000000 ||>o*/p/spa14.o892p/a>oci_devp/a>o*pa hel_io_normal" clepL89>dev0x0000ffff ||2ci_devp/a>o*pa hel_io_normal" clepL89>dev0xffff0000e">devp/a>);vo893p/a>o ooooooo oo>posp/a>o= pa hfalliode=pci_dev" clfalli="srf">devp/a>);vo974p/a>vo985p"a>o oooooopspa1 class="ctopci_ura">mu request Retry Sodeef="comment">o*/p/spa14.o896pwhileooci_devp/a>o*pa hel_io_normal" clepL89>dev0xffff0001e {oo*/p/spa14.o897p/a>o ooooooo!/a>o oooooopa hcrs_timeoutode=pci_dev" clcrs_timeout="sref">devp/a>).o898p/a>o ooooooo ooooooo oo>posp/a>o= pa hfalliode=pci_dev" clfalli="srf">devp/a>);vo949p/a>}vo895p/a>o ooo/a>o= &pa hmsleepode=pci_dev" clmsleepconfi">devp/a>,opa hrelad_capability" clrelad="sref">devp/a>);vo871p/a>o ooo"ooo oooooopa hrelad_capability" clrelad="srp*= 2f">devp/a>);vo892p/a>o ooooooo ooooooif (pa hass="sre"sref">pci_rility_read_dword" class="sre"sref">pci_rilityconfi/a>o oooooopa hief="+code=bus" clbef="sr,p/a>(structopa hreff+code=region" clreff+="sref">devp/a>,opa href=VENDOR_IVCAP_PAYLOAD" class=VENDOR_IV="sr_Si_devp/a>o*pa hel_io_normal" clepL89ee">devp/a>);vo893p/a>o ooooooo ooooooo oo>posp/a>o= pa hfalliode=pci_dev" clfalli="srf">devp/a>);vo894p/a>o ooota>o oooooopspa1 class="ctem hasn the t respondnt"in 60 se">pds? Musttbe thuck. ports 4NTROLp/sref">hdr_typep/a>o& 01295robe.c#12925" idopL925" class="li12925>122opL895">o895p/a>o ooooooo ooooooif (pa hrelad_capability" clrelad="srpnumbe/a>o oooooopa hcrs_timeoutode=pci_dev" clcrs_timeout="sre {oo*/p/spa14.o896p/a>o ooooooo ooo"ooooooif (pa harinek_read_dword" clarinekconfi/a>o oooooopa hKERN_WARNING_read_dword" clKERN_WARNINGpL892e>devp/a>,opspa1 class="strf="ns Ŷx:s %0:s %0.s d: not s %pR\n&qROLp/sref">hdr_typep/a>o& 01297robe.c#12927" idopL927" class="li12927>122opL897">o897p/a>o ooooooo ooooooo ooo/a>o ooota>o oooooopspa1 class="strrespond cl7;s %pR\n&quf">devp/a>,opa href="omain_nt="+code=dev" clref="omain_ntconfi/a>o oooooopa hief="+code=bus" clbef="sr),1">o971p/a>vo898p/a>o ooooooo ooooooo ooooooo ooo"ooooooif (pa hief="+code=bus" clbef="sref">devp/a>->pa hnumbet="+code=dev" clnumbet="sref">devp/a>,opa href=SLOode=PCI_SLOT" class=SLOoconfi">devp/a>,opa hreff+code=region" clreff+="sr),1">o971p/a>vo899p/a>o ooooooo ooooooooooooooo ooo"ooooooif (pa hass=FUNCde=PCI_SLOT" class=FUNCconfi">devp/a>,opa hreff+code=region" clreff+="sr)ef">devp/a>);vo899p/a>o ooooooo ooooooo oo>posp/a>o= pa hfalliode=pci_dev" clfalli="srf">devp/a>);vo871p/a>o ooo9">o949p/a>}vo892p9">o949p/a>}vo974p/a>vo894poooo oo>posp/a>o= pa htrutplug_bridge" cltrut="srf">devp/a>);vo949p/a>}vo oooooopa href="sre"srefref_omment_iy_read_dword" class="sre"srefref_omment_iyconfef">devp/a>);vo907p/a>vo958p/a>pspa1 class/comment">/**p/spa14.o959p/a>pspa1 class=" Rsreoooe copci_ data forsa iontialize, sanity-check itomment">/**p/spa14.o960p/a>pspa1 class="cand f_devin Initial the devic..or CardBus).p/spa14.o961p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 01242robe.c#12942" idopL942" class="li12942>129opL89xodeic devicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href=scan_=pci_setup_device" clref=scan_=pci_sconfidevicep/a>(structopa href=bef="+code=bus" clref=bef="srpci_devp/a>o*pa hief="+code=bus" clbef="sr,pinep/a>(structopa hreff+code=region" clreff+="sre">devp/a>);vo894pdevicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="srf">devp/a>);vo895pevp/a>->pa hu932" idopL9ev" clu9opL892evp/a>->pa hel_io_normal" clepL89f">devp/a>);vo986p/a>vo871poooo!/a>o oooooopa hass="sre"srefref_omment_iy_read_dword" class="sre"srefref_omment_iyconfi/a>o oooooopa hief="+code=bus" clbef="sr,p/a>(structopa hreff+code=region" clreff+="srefLTCAPp/a>,o&pa hel_io_normal" clepL89, 60*1000ee">devp/a>);vo878p/a>o ooooooo oo>posp/a>o= pa hNULIDGE_CONTROL" clNULI="srf">devp/a>);vo949p/a>}vo980p/a>o oooooopa href="+code=dev" class="srp_statep/a>o= pa halloc_ref="+code=pci_dev" clalloc_ref="+cconfief">devp/a>);vo871poooo!/a>o oooooopa href="+code=dev" class="sref">devp/a>).o892p/a>o ooooooo oo>posp/a>o= pa hNULIDGE_CONTROL" clNULI="srf">devp/a>);vo974p/a>vo894p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa h"sr="+code=bus" clbef="srp_statep/a>o= pa h"sr="+code=bus" clbef="srf">devp/a>);vo895pevp/a>->pa href="+code=dev" class="sref">devp/a>->pa hreff+code=region" clreff+="srd">slotp/a>o= pa hreff+code=region" clreff+="srf">devp/a>);vo896pi_devp/a>o*pa href="+code=dev" class="sref">devp/a>->pa homment="+code=dev" clomment="srd">slotp/a>o= pa hel_io_normal" clepL89>r_type0xfffff">devp/a>);vo977p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa hrefi_setup_device" cl=pci_s="srp=oo ooooooif (pa hel_io_normal" clepL89>r">dnumbe16)>r_type0xfffff">devp/a>);vo918p/a>vo919p/a>o oooooopa href=setfof_npa e=pcie_mpss" class=setfof_npa confi">devp/a>,opa href="+code=dev" class="sref">devp/a>);vdevp/a>);vo871poooo ooooooif (pa hass=setup_=pci_setup_device" clref=setup_=pci_sconfi">devp/a>,opa href="+code=dev" class="sree {oo*/p/spa14.o892p/a>o ooo">devp/a>,opa hkpreiode=pci_dev" clkpreiconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo893p/a>o ooooooo oo>posp/a>o= pa hNULIDGE_CONTROL" clNULI="srf">devp/a>);vo894p9">o949p/a>}vo949p/a>}vo896poooo oo>posp/a>o= pa href="+code=dev" class="srf">devp/a>);vo949p/a>}vo918p/a>vpci_finiide=pcie_mpss" class=initf">pci_finiidconfidevicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sref">devp/a>).o981p/a>o oooooopspa1 class="cMSI/MSI-X list="orts 4NTROLp/sref">hdr_typep/a>o& 01272robe.c#12972" idopL972" class="li12972>127opL882">o882p/a>o oooooopa hass=mss=initfref="+code=pci_dev" class=mss=initfref="+cconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo974p/a>vo981p/a>o oooooopspa1 class="cBuff hr forssavgherPCIe on tion-X ">pci_finiid="orts 4NTROLp/sref">hdr_typep/a>o& 01275robe.c#12975" idopL975" class="li12975>127opL895">o895pevp/a>->pa href=allocatif">p_save_buff hr_capability" class=allocatif">p_save_buff hrconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo986p/a>vo981p/a>o oooooopspa1 class="cPower Manage cla="orts 4NTROLp/sref">hdr_typep/a>o& 01278robe.c#12978" idopL978" class="li12978>127opL978">o978p/a>o oooooopa href=pm=init_capability" class=pm=initconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo919p/a>o oooooopa hrlatformfref=wakeup_init_capability" clalatformfref=wakeup_initconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vdevp/a>);vo981p/a>o oooooopspa1 class="cVital ProdicepData "orts 4NTROLp/sref">hdr_typep/a>o& 01282robe.c#12982" idopL982" class="li12982>128opL882">o882p/a>o oooooopa hass=vpd=ass22=init_capability" class=vpd=ass22=initconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo974p/a>vo981p/a>o oooooopspa1 class="cAlterndeive Routghe-ID Forwaregher"orts 4NTROLp/sref">hdr_typep/a>o& 01285robe.c#12985" idopL985" class="li12985>129opL895">o895pevp/a>->pa hass=encile_ari_capability" class=encile_ariconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo986p/a>vo981p/a>o oooooopspa1 class="cSghele Root I/OcVirtualiza">mu "orts 4NTROLp/sref">hdr_typep/a>o& 01288robe.c#12988" idopL988" class="li12988>128opL978">o978p/a>o oooooopa href="sleinit_capability" class="sleinitconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo949p/a>}vo980p/a>o oooooopspa1 class="cEncile ACS P2P updeveam forwaregher"orts 4NTROLp/sref">hdr_typep/a>o& 01291robe.c#12891" idopL891" class="li12891>129opL981">o981p/a>o oooooopa hass=encile_acr_capability" class=encile_acrconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo949p/a>}vo974p/a>v(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sr,pdevicep/a>(structopa href=bef="+code=bus" clref=bef="srpci_devp/a>o*pa hief="+code=bus" clbef="sref">devp/a>).o964p/a>{.o896pi_devp/a>o*pa h=pci_s_initializsetup_device" cl=pci_s_initializsconfiLTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sref">devp/a>);vo977p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sr.evp/a>->pa h"sle liode=pci_dev" cl liode=ci_ref">posp/a>o= pa hpef="+le lif"+code=pci_dev" class="+le lif"+cconff">devp/a>);vo978p/a>o oooooopa href=ref_get_capability" class=ref_getconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo949p/a>}vo980p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sr.evp/a>->pa hdma_mask_read_dword" cldma_maskci_ref"LTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa hrma_mask_read_dword" cldma_maskci_rf">devp/a>);vo981p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sr.evp/a>->pa hdma_parmf="+code=bus" cldma_parmfci_ref"LTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa hrma_parmf="+code=bus" cldma_parmfci_rf">devp/a>);vo882p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa href="+code=dev" class="sr.evp/a>->pa hcohercla_rma_mask_read_dword" clcohercla_rma_maskci_ref"0xffffffffullf">devp/a>);vo974p/a>vo894p/a>o oooooopa hass=setfrma_max=seg_sizoode=pci_dev" class=setfrma_max=seg_sizoconfi/a>o oooooopa href="+code=dev" class="sr, 65536ef">devp/a>);vo895pevp/a>->pa hass=setfrma_seg_boundard_capability" class=setfrma_seg_boundardconfi/a>o oooooopa href="+code=dev" class="sr, 0xffffffffef">devp/a>);vo986p/a>vo981p/a>o oooooopspa1 class="cFix up broken hsreted="orts 4NTROLp/sref">hdr_typep/a>o& 01308robe.c#13/98" idopL898" class="li13/98>130opL978">o978p/a>o oooooopa href=fixup_=pci_setup_device" clref=fixup_=pci_sconfi/a>o oooooopa href=fixup_hsreteetup_device" clref=fixup_hsrete="sr, /a>o oooooopa href="+code=dev" class="sref">devp/a>);vo949p/a>}vo980p/a>o oooooopspa1 class="cmoved out from quirk hsrete fixup opa ="orts 4NTROLp/sref">hdr_typep/a>o& 01311robe.c#13911" idopL911" class="li13911>131opL981">o981p/a>o oooooopa hass=veassignref_ref="+co_align clasde=pci_dev" class="+assignref_ref="+co_align claconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo982p/a>vo893pta>o oooooopspa1 class="ctle rsInitxodee_saved flag. ports 4NTROLp/sref">hdr_typep/a>o& 01314robe.c#13914" idopL914" class="li13914>131opL894">o894p/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa hxodee_saved="+code=dev" clxodee_savedci_ref">posp/a>o= pa hfalliode=pci_dev" clfalli="srf">devp/a>);vo949p/a>}vo896pta>o oooooopspa1 class="cInitializs various ">pci_finiid="orts 4NTROLp/sref">hdr_typep/a>o& 01317robe.c#13917" idopL917" class="li13917>131opL977">o977p/a>o oooooopa href=initf">pci_finiide=pcie_mpss" class=initf">pci_finiidconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo918p/a>vo896pta>o oooooopspa1 class="rts 4NTROLp/sref">hdr_typep/a>o& 0132probe.c#13920" idopL920" class="li13920>132opL960">o960p/a>pspa1 class=========* AddsInitialize to our list=of discovered dalizeromment">/**p/spa14.o961p/a>pspa1 class=========* on tInitbus list=forsfixup func">mus, etcor CardBus).p/spa14.o962p/a>pspa1 class=========*orts 4NTROLp/sref">hdr_typep/a>o& 01393robe.c#13923" idopL923" class="li13923>132opL893">o893p/a>o oooooopa hrown_writsetup_device" cl=own_writsconfiLTCAPp/a>,o&pa href=bef_sem="+code=bus" clref=bef_sem="sref">devp/a>);vo894p/a>o oooooopa hlist_ady_taiel_io_normal" cllist_ady_taieconfiLTCAPp/a>,o&pa href="+code=dev" class="sref">devp/a>->pa h"srelistode=pci_dev" cl"srelist="srefLTCAPp/a>,o&pa hief="+code=bus" clbef="sref">devp/a>->pa hdalizeretup_device" cl=pci_sf="sref">devp/a>);vo895pevp/a>->pa hup_writsetup_device" clup_writsconfiLTCAPp/a>,o&pa href=bef_sem="+code=bus" clref=bef_sem="sref">devp/a>);vo949p/a>}vo907p/a>vpci_devp/a>o*pa h__v" cde=pci_dev" cl__v" ef">pevp/a>->pa hass=scan_sghele_=pci_setup_device" clref=scan_sghele_=pci_sconfidevicep/a>(structopa href=bef="+code=bus" clref=bef="srpci_devp/a>o*pa hief="+code=bus" clbef="sr,pinep/a>(structopa hreff+code=region" clreff+="sre">devp/a>);vo895pdevicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="srf">devp/a>);vo971p/a>vo882p/a>o oooooopa href="+code=dev" class="srp_statep/a>o= pa hass=get_slotode=pci_dev" class=get_slotconfi/a>o oooooopa hief="+code=bus" clbef="sr,p/a>(structopa hreff+code=region" clreff+="sref">devp/a>);vo893poooo/a>o oooooopa href="+code=dev" class="sre {oo*/p/spa14.o894p/a>o ooota>o oooooopa href=ref_putode=pci_dev" clref=ref_putconfi/a>o oooooopa href="+code=dev" class="sref">devp/a>);vo895p/a>o ooooooo oo>posp/a>o= pa href="+code=dev" class="srf">devp/a>);vo896p9">o949p/a>}vo907p/a>vo978p/a>o oooooopa href="+code=dev" class="srp_statep/a>o= pa hass=scan_=pci_setup_device" clref=scan_=pci_sconfi/a>o oooooopa hief="+code=bus" clbef="sr,p/a>(structopa hreff+code=region" clreff+="sref">devp/a>);vo893poooo!/a>o oooooopa href="+code=dev" class="sref">devp/a>).o899p/a>o ooooooo oo>posp/a>o= pa hNULIDGE_CONTROL" clNULI="srf">devp/a>);vo971p/a>vo882p/a>o oooooopa hass==pci_s_ady_read_dword" class==pci_s_adyconfi/a>o oooooopa href="+code=dev" class="sr, i_devp/a>o*pa hief="+code=bus" clbef="sref">devp/a>);vo974p/a>vo894poooo oo>posp/a>o= pa href="+code=dev" class="srf">devp/a>);vo949p/a>}vo oooooopa href=scan_sghele_=pci_setup_device" clref=scan_sghele_=pci_sconfef">devp/a>);vo907p/a>v(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sr,punsignedo"ooo oooooopa hf+code=region" clf+="sre">devp/a>);vo980p/a>o oooooopa hu916" idopL9ev" clu1opL896evp/a>->pa h apode=pci_dev" cl ap="srf">devp/a>);vo871punsignedo"ooo oooooopa href="+code=pos" class="sr, i_devp/a>o*pa hnext_f+code=region" clnext_f+="srf">devp/a>);vo982p/a>vo893poooo!/a>o oooooopa href="+code=dev" class="sref">devp/a>).o894p/a>o ooooooo oo>f">devp/a>);vo949p/a>}vo896pi_devp/a>o*pa href="+code=pos" class="sref">posp/a>o= pa hpef="+codext_e=pci_find_capability" class="srefext_e=pci_findconfi/a>o oooooopa href="+code=dev" class="sr, i_devp/a>o*pa hass=EXT=Csref">ARI="+code=dev" class=EXT=Csref">ARIconfef">devp/a>);vo871poooo!/a>o oooooopa haef="+code=pos" class="sre">devp/a>);vo878p/a>o ooooooo oo>f">devp/a>);vo919p/a>o oooooopa href="sref">pci_rlity_read_dword" class="sref">pci_rlityconfig_bytep/a>(pa href="+code=dev" class="sref">devp/a>,opa href="+code=pos" class="sref"4efLTCAPp/a>,o&pa h apode=pci_dev" cl ap="sref">devp/a>);vo980p/a>o oooooopa hnext_f+code=region" clnext_f+="sref">posp/a>o= pa h apode=pci_dev" cl ap="sr>r">dnumbe8f">devp/a>);vo871poooo ooooooif (pa hnext_f+code=region" clnext_f+="sre<f">posp/a>o= pa hf+code=region" clf+="sre">devp/a>);vo892p/a>o ooooooo oo>f">devp/a>);vo893poooo oo>posp/a>o= pa hnext_f+code=region" clnext_f+="srf">devp/a>);vo949p/a>}vo949p/a>}v(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sr,punsignedo"ooo oooooopa hf+code=region" clf+="sre">devp/a>);vo878poooo ooo ooooooif (pa hf+code=region" clf+="sref"1)ns e8f">devp/a>);vo949p/a>}vdevp/a>);v(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="sr,punsignedo"ooo oooooopa hf+code=region" clf+="sre">devp/a>);vo893poooo oo>f">devp/a>);vo949p/a>}vo949p/a>}v(structopa href=bef="+code=bus" clref=bef="srpci_devp/a>o*pa hief="+code=bus" clbef="sre">devp/a>);vo978pdevicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa hrarclasde=pci_dev" claarcla="sref">posp/a>o= pa hief="+code=bus" clbef="sref">devp/a>->pa hsel cde=pci_dev" clsel ="srf">devp/a>);vo949p/a>}vo894poooo!/a>o oooooopa haarclasde=pci_dev" claarcla="sre|| !/a>o oooooopa hass=is=asssetup_device" clref=is=asssconfi/a>o oooooopa hrarclasde=pci_dev" claarcla="sree">devp/a>);vo871p/a>o ooooooo oo>f">devp/a>);vo882poooo ooooooif (pa hass=asss_typsetup_device" clref=asss_typsconfi/a>o oooooopa hrarclasde=pci_dev" claarcla="sre>devi_devp/a>o*pa hass=EXP_TYPE_ROOT_PORT="+code=dev" class=EXP_TYPE_ROOT_PORT="sre">devp/a>);vo893p/a>o ooooooo oo1f">devp/a>);vo981poooo ooooooif (pa hass=asss_typsetup_device" clref=asss_typsconfi/a>o oooooopa hrarclasde=pci_dev" claarcla="sre>devi_devp/a>o*pa hass=EXP_TYPE_DOWNSTREAM="+code=dev" class=EXP_TYPE_DOWNSTREAM="sre&TCAP&TCAP">devp/a>);vo895p/a>o!/a>o oooooopa hass=has_flagetup_device" clref=has_flagconfi/a>o oooooopa hass=SCAN_ALL_assE_DEVS="+code=dev" class=SCAN_ALL_assE_DEVS="sree">devp/a>);vo896p/a>o ooooooo oo1f">devp/a>);vo981poooo oo>f">devp/a>);vo949p/a>}vo949p/a>}vo960p/a>pspa1 class/*"rts 4NTROLp/sref">hdr_typep/a>o& 01391robe.c#13891" idopL891" class="li13891>139opL961">o961p/a>pspa1 class=" ref=scan_slot - scansa iontslot onsa bus fors=pci_sfor CardBus).p/spa14.o962p/a>pspa1 class=* @bus: iontbus to scanr CardBus).p/spa14.o962p/a>pspa1 class=* @reff+:tslot numbet to scan (mustthave zero func">mu.)r CardBus).p/spa14.o962p/a>pspa1 class=*r CardBus).p/spa14.o962p/a>pspa1 class=* Scansa iontslot onsInitxpecified iontbus fors=pci_sf, adegher CardBus).p/spa14.o962p/a>pspa1 class=* discovered dalizer to Init@busef">ddalizer list. New dalizeromment">/**p/spa14.o962p/a>pspa1 class=* w_devnot have is=adeed setor CardBus).p/spa14.o958p/a>pspa1 class=*r CardBus).p/spa14.o959p/a>pspa1 class=" Rsoo os Initnumbet of new dalizer foundor CardBus).p/spa14.o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.c#14/91" idopL891" class="li14/91>140opL98inep/a>(structopa href=scan_slotetup_device" clref=scan_slotconfidevicep/a>(structopa href=bef="+code=bus" clref=bef="srpci_devp/a>o*pa hief="+code=bus" clbef="sr,pinep/a>(structopa hreff+code=region" clreff+="sre">devp/a>);vo893punsignedo"ooo oooooopa hf+code=region" clf+="sr, i_devp/a>o*pa hnt="+code=dev" clnt="srd">>f">devp/a>);vo894pdevicep/a>(structopa href="+code=pci_dev" class="sref">pci_devp/a>o*pa href="+code=dev" class="srf">devp/a>);vo895punsignedooci_devp/a>o*pa hnext_f+code=region" clnext_f+="sr)idevicep/a>(structopa href="+code=pci_dev" class="sref">pc,punsigned)ef">posp/a>o= pa hno_next_f+code=region" clno_next_f+conff">devp/a>);vo986p/a>vo871poooo/a>(structopa honly_one_chily_read_dword" clonly_one_chilyconfii_devp/a>o*pa hief="+code=bus" clbef="sree&TCAP&TCAPoo/a>o oooooopa hreff+code=region" clreff+="srdnumbe0ee">devp/a>);vo878p/a>o ooooooo oo0;p/a>o oooooopspa1 class="cAl"srey scannedoInitclairetslot "orts 4NTROLp/sref">hdr_typep/a>o& 014/9robe.c#14/99" idopL899" class="li14/99>140opL89">o949p/a>}vo980p/a>o oooooopa href="+code=dev" class="srp_statep/a>o= pa href=scan_sghele_=pci_setup_device" clref=scan_sghele_=pci_sconfi/a>o oooooopa hief="+code=bus" clbef="sr,p/a>(structopa hreff+code=region" clreff+="sref">devp/a>);vo871poooo!/a>o oooooopa href="+code=dev" class="sref">devp/a>).o892p/a>o ooooooo oo>f">devp/a>);vo893poooo!/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa his=adeed="+code=dev" clis=adeed="sref">devp/a>).o894p/a>o ooota>o oooooopa hnt="+code=dev" clnt="sr++f">devp/a>);vo949p/a>}vo896poooo ooooooif (pa hass=arifenciley_read_dword" class=arifencileyconfii_devp/a>o*pa hief="+code=bus" clbef="sreef">devp/a>).o897p/a>o ooo/a>o oooooopa hnext_f+code=region" clnext_f+="sref">posp/a>o= pa hnext_ariff+code=region" clnext_ariff+conff">devp/a>);vo878pelsepoooo/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa hmultifunc">mu="+code=dev" clmultifunc">mu="sref">devp/a>).o899p/a>o ooo/a>o oooooopa hnext_f+code=region" clnext_f+="sref">posp/a>o= pa hnext_trreff+code=region" clnext_trreff+conff">devp/a>);vdevp/a>);vo871pforso ooooooif (pa hf+code=region" clf+="sref">posp/a>o= pa hnext_f+code=region" clnext_f+="sri/a>o oooooopa href="+code=dev" class="sr, 0)be/a>o oooooopa hf+code=region" clf+="srenumbe0be/a>o oooooopa hf+code=region" clf+="sref">posp/a>o= pa hnext_f+code=region" clnext_f+="sri/a>o oooooopa href="+code=dev" class="sr, "ooo oooooopa hf+code=region" clf+="sree {oo*/p/spa14.o892p/a>o ooo">devp/a>,opa href="+code=dev" class="srp_statep/a>o= pa href=scan_sghele_=pci_setup_device" clref=scan_sghele_=pci_sconfi/a>o oooooopa hief="+code=bus" clbef="sr,p/a>(structopa hreff+code=region" clreff+="sr +idopL939" class="li13939>1339pL893">o893clref=scan_sghele_=pci_scodevicep/a>ivers/pc1341robe.c#13941" idopL941" 3 clas4R( e.c#129ss="li12986>128opL986be.c#13915" idopL7s="sr2" claooooopa hu916" idopL9ev" clu1opL896evp/a clf+="sree {oo*/p/spa14.o oooooopa hreo!/a>o oooooopa href="+code=dev" class="sref">devp/a>->pa his=adeed="+code=dev" clis=ad" class="l413925>132opL895">o895pevp4a>-&g42ce" clref=has_flagcon+="sri/a>o oooooopa href="+code=dev" class="sr, ext_ariff+code=region" clnext_ariff+conff">devp/a>);v4o&pa href=bef_sem="+c4de=bu42oooif (pa hass=arifen>devp/a>);vdevp/a>);v140opL878">o878p/a>o ooooooo oo0;p/us" clbef=4sr,pinep/a>(structopa hre4f+cod43code=dev" class="sref">devp/a>);vdevp/a>);vo978pdevicep/a>(stf="drivers/phref="+code=dev" class="sref">devp/a>-96evp/a clf+="sree {oo*/p/spa14.pci_devp/a>o*p4 href43ion" clnext_f+="sri/a>o oooooopa hre13983asooooops_pcik_ 4NTR {oo*/p/spa14.o978pdevicep/a>(sthele_=pci_setup_device" clref=scan_tatep/a>o=4pa hass=get_slotode=pci_d4v" cl43ass==pci_s_adyconfi/a>o oooooopa href4eff+="sref4>devp/a>);vdevp/a>);vdevp/a>-ele_=pci_setup_device" clref=scan_thref="b9fSass="li13934>133opL894">o494p/a43robe.c#13944" idopL944" class="li139444f">devp/a>4;vpc,pun/a>o ooooo4o oo>posp/a>o= pa href="+4ode=d4v" clai13974>137opL979">o949p/a>a h83}vhdr83}vo960p/a>pspa1 class="o9">devp/a>);v-96evp/a clf+="sree {oo*/p/spa14.o89a>o= pa ha4s=scan_=pci_setup_device"4clref43vp/a>);vsmpss0opLf">devp/a>);v-ele_=pci_setup_device" clref=scan_reff+="sre4">devp/a>);vo oooooopa hiefs="li13979>137opL89">o949p/a>}vo899p/a>4 ooooooo oo>posp/a>o= pa 4NULID4411robe.c#14911" idopL911" class="li14911>141opL871">o871poooo!//a>o ooooo4pa hass==pci_s_ady_read_d4ord" 4lass==pci_s_adyconfi/a>o oooooopa href4"+code=dev4 class="sr, i_devp/a>o*pa4hief=4+code=bus" clbffffffef">devp/a>);vdevp/a>);vposp/a>o= pa4href=4495>139opL892">o962p/a>pspa1 bbbbbbbb*9960p/a>p This is duelot onsIpossiivers/ cla1otplugg1 c a="srdnumbe0ee">devp/a>);vo962p/a>pspa1 cbbbbbbbb*9960p/a>137t onsIfabr74>with a small"driPS onatclass="li13adegher CardBus).p/spa14.ouelot an_slot - scansa iontslot onsa bus fors=p4dev" class4"sr,punsignedo"ooo oooooo4a hf+45f="drivers/pc1319robe.c#13919" idopL91inobe1 c fr oo8be1 c largL962ha" clasnew14r5opL87uredsiPSL958">o958p/a>pspa1 class=*r CardBus).p/sers/pc135p4obe.c#13950" idopL950" cl4ss="l45i13920>132opL960">o960p/a>pspa1 class=To work ar39op clis, lassiPS ff+cde=region" fabr74>a>pspbadegher CardBus).p/spa14.45ass="li13921>132opL961">o961p/a>pspa1r tolot onsIe1 imum li13p Any li13898>1otpluggeds137t oniadegher CardBus).p/spa14.o*pa hnext_4+code45392robe.c#13892" idopL892" cp/a>pspa1rfabr74>will overeonsIe1 imum iPS to IfeonsI>1391otplugdegher CardBus).p/spa14.o982p/a>v1393pL972">o962p/a>p/a>pspa1r lrefis direct14rconnectansot onsIrers/port========n" an" n140ogher CardBus).p/spa14.(which tems ot breonsIeos40ogher CardBus).p/spa14.139opL892">o962p/a>pspa1 bbbbbbbb*9p/a>4" case), lasn oniafis discL89issu.c#129iPS ass=* Scy0ogher CardBus).p/spa14.o962p/a>pspa1 cbbbbbbbb*9will occur as dirmalL958">o958p/a>pspa1 class=*r CardBus).p/seef=scan_s4">devp/a>);vdevp/a>);v45can_=pci_sconfi/as4R( e.c#129ss="li12986>128opL986be.c#13915" idopL7s="sr2" clao1otplug_br7dg>137opL89">o949plao1otplug_br7dg>>(stf="drivers/pa>o oooooopa hiefpa hrlaoriveular137opL89">o949ppa hrlaoriveularf="drcode=bus" clref=bef_sem="sref">devp/a>);v142opL8" class="li13978>13ady_taieconfiLTCAPp/a>,o&pa hr ||mbe0ee">devp/a>);vo978pdevicep/a>(stf="drivers/mbe0ee">devp/a>);vo9846>o oooooopa hass=iso oooooopa hiefs="lc#13983" idopL983" class="li13983>138opL893">o893p/a>o oo"li12986>128opL986be.c#13915" idopL7s="sr2" c1378robe.c#13978" idopL978" class="li13978>137opL978">o978pdevicep/a>(st) !vers/pc1382robe.c#13982" idopL982" class="li13982>138opL882">o882poooo ooooooif (p96evp/a clf+="sree {oo*/p/spa14.smpss0opLf">ass="li14911>141opL871">o871poooo!/">posp/a>o4 pa hf+code=region" clf+=4sre">46ass==pci_s_adyconfi/a>o oooooopa href4f">devp/a>4;vsmpss0opLfforso3">o893p/a>o oo"li12986>128opL986be.c#13915" idopL7s="sr2" c13983mpss 4NTROLp/sref">hdr83mpss0opL96evp/a clf+="sree {oo*/p/spa14.posp/a>o= pa hnext_f4code=46 ooota>o oooooopa hrepc1371robe.c#139smpss 4NTROLp/sref">smpss0opLf">devp/a>);v128opL986be.c#13915" idopL7s="sr2" c13983mpss 4NTROLp/sref">hdr83mpss0opLss="li14911>141opL871">o871poooo!/"34opL894"4pc1364robe.c#13964" idopL464" c46ef="+code=pci_dev" class="sref">pc,pundevicep/a>4structopa href="+code=pci4dev" 46vp/a>);vdevp/a>);v140opL878">o878p/a>o ooooooo oo0;p/878poooo o4o ooooooif (pa hf+code=re4ion" 4lf+="si13974>i12892>129opL889">o949peevp/a>3mps 4NTROLp/sref">hdr83vp/a>3mps0opL960">o960p/a>pspa1 class="o9">devp/a>);vo949p/a>mps 4NTROLp/sref">mps0opL96evp/a clf+="sree {oo*/p/spa14.o89devicep/a>4structopa href="+code=pci4dev" 47vp/a>);vo949p/a>rc 4NTROLp/sref">rc0opLss="li14911>141opL871">o871poooo!/dev" class4"sr,punsignedo"ooo oooooo4a hf+47ass==pci_s_adyconfi/a>o oooooopa href4robe.c#13942" idopL972" class="li13942>13747vp/a>);vhdr83vo89robe.c#13943" idopL973" class="li13943>13747 ooota>o oooooopa hrepL979">o949p/a>mps 4NTROLp/sref">mps0opL"ooo28h apo apo>devp/a>);v128opL986be.c#13915" idopL7s="sr2" c13983mpss 4NTROLp/sref">hdr83mpss0opLss="li14911>141opL871">o871poooo!/f="drivers4pc1374robe.c#13974" idopL474" c47ef="+code=pci_dev" class="sref">pc,punhonly_one_4hily_read_dword" clonly_o4e_chi47oooif (pa hass=arifenef="drivers/pc1383robe.c#13983" idopL983" class="li13983>138opL893">o893p/a>o oo=region" clreff+="sr +idopL!vers/pc1382robe.c#13982" idopL982" class="li13982>138opL882">o882poooo ooooooif f="drivers/mbe0ee">devp/a>);vo*pa4hief=47vp/a>o*pa hief="+code hrepL979">o949p/a>"li12986>128opL986be.c#13915" idopL7s="sr2" c1378robe.c#13978" idopL978" class="li13978>137opL978">o978pdevicep/a>(st)mbe0ee">devp/a>);vdevp/a>);vdump2986"is made onat="srdnumbe0ee">devp/a>);vdevp/a>->pa 4sel c48f="drivers/pc1319robe.c#13919" idopLa>o oooooopa hrep 2>139robe.cobe.unic12986"ss=* dea>) brelargL962ha"="srdnumbe0ee">devp/a>);vo960p/a>pspa1 clasa>o oooooopa hrep lassiRRS. So, lassiPS 4"ly deeds ot bre5opL87ured="srdnumbe0ee">devp/a>);v48ass="li13921>132opL961">o961p/a>pspaa>o oooooopa hrep ff+cde=r289robe.cobe.unic12986p This be1 c de=rcase,="srdnumbe0ee">devp/a>);vo oooooopa hrarc4asde=48392robe.c#13892" idopL892" cp/a>pspaa>o oooooopa hrep walkrs/pc1de=rtop 2>13c#129 toloassiPS 4feonsIidopL89srdnumbe0ee">devp/a>);v48"li13893>1393pL972">o962p/a>p/a>pspaa>o oooooopa hrep lo onatc4feonsIvo958p/a>pspa1 class=*r CardBus).p/sconfi/a>o 4ooooopa hrarclasde=pci_de4" cla484.o958p/a>pspa1 class=*r CardBus).p/sc="drivers4o oooooopa hass=has_flage4up_de4895>139opL892">o962p/a>pspa1 bbbbbbbba>o oooooopa hrep CopL87ureclass="li139iPS with classmall"dr4feons958">o958p/a>pspa1 class=*r CardBus).p/sconly_one_4lass=SCAN_ALL_assE_DEVS="4ree">486>139opL892">o962p/a>pspa1 cbbbbbbbba>o oooooopa hrep ="li139iPSS 4+cde=rbr7dg>9iPS (which is ">dumansot badegher CardBus).p/spa14.138opL896">o896p/a>o 4ooooo48e.c#13897" idopL897" class="bbbbbbbba>o oooooopa hrep ef=per14r5opL87uredsatclais poe37oot onsIlargLs40ogher CardBus).p/spa14.o oooooopa hrep allowopL99iPS based>4" itsIvo958p/a>pspa1 class=*r CardBus).p/sf="drivers4pc1388robe.c#13988" idopL488" c4ass="li13988>138opL979">o949bbbbbbbbba>o oooooopa hrep+="srdnumbe0ee">devp/a>);vo449p/a49>o oooooopa hass=is=aaaaaaaaapL979">o949p/a>mps 4NTROLp/sref">mps0opL"oopL979">o949p/a>miiff+conff">devp/aisri/a>o oooooopa hrefmps 4NTROLp/sref">mps0opLers/pc1359robe.c#1398371">mps 4NTROLp/sref">hdr8371">mpsopL893">o893p/a>o oo"li12986>128opL986be.c#13915" idopL7s="sr2" c1378robe.c#13978" idopL978" class="li13978>137opL978">o978pdevicep/a>(st)hele_=pci_setup_device" clref=scan_/a>o& 41391robe.c#13891" idopL894" cla49vp/a>);vdevp/a>);vo oooooopa href4drivers/pc4393robe.c#13893" idopL8934 clas49rown_writsetup_device" cl=owrc 4NTROLp/sref">rc0opL"ooo oooooopa hf+codeeef="+mps 4NTROLp/sref">hdr83s1">mpsopL893">o893p/a>o oo"li12986>128opL986be.c#13ers/pc1359robe.c#mps 4NTROLp/sref">mps0opL9ele_=pci_setup_device" clref=scan_/onfi/a>o 4 zero func">mu.)r CardBus4.p/sp49 ooota>o ooooef="drivers/pc1383rrc 4NTROLp/sref">rc0opL)mbe0ee">devp/a>);vo893p/a>o oo"li_err137opL89">o949p"li_errf="drcode=bus" clref=bef_sem="sref">devp/a>);v128opL986be.c#13ers13988>138opL9ro1 c">"Failedsattemp29 c do9 toloassiPS\n"="srdnu9ele_=pci_setup_device" clref=scan_/only_one_4.c#13896" idopL896" class4"li13496>139>devp/a>);vpci_finiide=pcie_mpss" clas4w_devnot h4ve is=adeed setor CardBus4.p/sp414.i12892>129opL889">o949peevp/a>3mrrs 4NTROLp/sref">hdr83vp/a>3mrrs0opL960">o960p/a>pspa1 class="o9">devp/a>);vdevp/a>);vo85mbet of ne5 dalizer foundor CardBus)5p/spa50ele_=pci_sconf37opL979">o949p/a>rc 4NTROLp/sref">rc0opLers/pc1359robe.c#mrrs 4NTROLp/sref">mrrs0opLele_=pci_setup_device" clref=scan5evicep/a>(5tructopa href=bef="+code=5us" c5071punsignedo"ooo oooooopa href="+code5us" clbef=5sr,pinep/a>(structopa hre5f+cod5=region" clreflli="srf">devp/a>);v discconL87ureclassiRRS. T==n" app="drit badegher CardBus).p/spa14.1393pL972">o962p/a>p/a>pspa1rissu.s with to29 c iRRSrit 00>139opL898" cla960p/a>pspa1 class/*"rts 4NTROLp/sref">hdr_type5.c4194" id5pL894" class="li14/94>1405pL894504.devp/a>);vdevp/a>);vhdr83vdevp/a>);vpci_finiide=pcie_mpss" clas5s/pc1408ro5e.c#14/98" idopL898" clas5="li150code=dev" class="sref">devp/a>);va>pspbar tolot onsIlargLs4 supported="srdnumbe0ee">devp/a>);v), it #13discbre5opL87ured largL962ha" clasiPS onadegher CardBus).p/spa14.132opL960">o960p/a>pspa1 class=="li1394+cde=rbus #138supportp This should aoooopa be refper14degher CardBus).p/spa14.devp/a>);v132opL961">o961p/a>pspa1r5opL87ured by39opri4+ccalllot hdr83vp/a>3mpspspa1 class/*"rts 4NTROLp/sref">hdr_type5a>o oooooo5a href="+code=dev" class=5sref"51392robe.c#13892" idopL892" cp/a>pspa1+="srdnumbe0ee">devp/a>);vo51rown_writsetup_device" cl=owmrrs 4NTROLp/sref">mrrs0opL"ooo oooooopa hf+codeee71">mps 4NTROLp/sref">hdr8371">mpsopL893">o893p/a>o oo"li12986>128opL986be.c#139ele_=pci_setup_device" clref=scan5eed="sref"5devp/a>).o ooota>o oooooop5 hnt=5+code=dev" clnss="sref">devp/a>);vis " R/Wnefgister Inval289valu3s #138be vp/aten,rbut a="srdnumbe0ee">devp/a>);v141opL896">o896p5ooo o516>139opL892">o962p/a>pspa1 cbbbbbbbb*9subsequ hrrooop"ss=* a>)ifynt="de=rvalu3>is "cceptopL994+cdispspa1 class/*"rts 4NTROLp/sref">hdr_type5a8on" clne5917>141opL897">o897p/a>o 5oo/a>51e.c#13897" idopL897" class="bbbbbbbb*9IfeonsIiRRS>valu3>">hviizeris discLcceptopL99(e.g.,cloo largL),="srdnumbe0ee">devp/a>);v141opL878">o878pelse5oooo/514.until it is "cceptopL99ot onsIHWpspa1 class/*"rts 4NTROLp/sref">hdr_type5ass="li14959>141opL899">o899p/a>o oo5/a>o 52f="drivers/pc1319robe.c#13919" idopL9+="srdnumbe0ee">devp/a>);vpos5/a>o= pa hnext_trreff+cod5=regi5n" clnext_trrewhiL99(p_device" cl=owmrrs 4NTROLp/sref">mrrs0opL"!vers/pc1382robe.chdr8371">oooprq 4NTROLp/sref">hdr8371">oooprqopL893">o893p/a>o oo=region" clreff+="sr +idopL="drivers/phref="+code=devmrrs 4NTROLp/sref">mrrs0opL"ef="ooo28pL939" class="li13939>1339pL893">o85n" clf+="s5ef">posp/a>o= pa hnext_f+5ode=r5gion" clnext_f+="sri/a>o oooooopa hrerc 4NTROLp/sref">rc0opL"ooo oooooopa hf+codeeef="+oooprq 4NTROLp/sref">hdr83s1">oooprqopL893">o893p/a>o oo=region" clreff+="sr +idoers/pc1359robe.c#mrrs 4NTROLp/sref">mrrs0opL9ele_=pci_setup_device" clref=scan5sghele_=pc5_sconfi/a>o oooooopa hief5"+cod5=bus" clbef="sr,p/a>(struc>o oooooopa hiefrc 4NTROLp/sref">rc0opL)mbe0ee">devp/a>);vo895pevp5a>-&g52ce" clref=has_flagcon3">o893p/a>o oo"li_warevp/a>,opa href="+c_waref="drcode=bus" clref=bef_sem="sref">devp/a>);v128opL986be.c#13ers13988>138opL9ro1 c">"Failedsattemp29 c do9 toloassiRRS\n"="srdnu9ele_=pci_setup_device" clref=scan5iLTCAPp/a>5o&pa href=bef_sem="+c5de=bu52oooif (pa hass=arifenhref="+code=devmrrs 4NTROLp/sref">mrrs0opL"/= 2ele_=pci_setup_device" clref=scan5i8on" clne5pc1396robe.c#13926" idopL526" c52oooooopa hnex>devp/a>);v140opL878">o878p/a>o ooooooo oo0;p5us" clbef=5sr,pinep/a>(structopa hre5f+cod53=pci_dev" clsel =href="+code=devmrrs 4NTROLp/sref">mrrs0opL"eapo>o28p0opL878">o878p/a>o ooooooo oo0;p5usref">pos5pL930" class="li13930>1335pL89553>o oooooopa hass=is=a3">o893p/a>o oo"li_err137opL89">o949p"li_errf="drcode=bus" clref=bef_sem="sref">devp/a>);v128opL986be.c#13ers13988>138opL9ro1 c">"iRRS>was>unopL99ot bre5opL87ured with a "="srdnu0opL878">o878p/a>o ooooooo oo0;p5u" clf+="s5ass="sref">pci_devp/a>o*p5 href53ion" clnext_f+="sri/aass=is=a313988>138opL9ro1 c">"safe1valu3p Iferef=lems an" experienced,clr4rrunn1 c "="srdnu0opL878">o878p/a>o ooooooo oo0;p5ughele_=pc5pa hass=get_slotode=pci_d5v" cl53bus" clbef="sr,p/a>(sass=is=a313988>138opL9ro1 c">"with oo;vdevp/a>);v133opL894">o594p/a532robe.c4914" idopL914" class="li149145f">devp/a>5;v137opL979">o949p/a>hdr83vhdr83vo960p/a>pspa1 class="o9">devp/a>);v-96evp/a clf+="sree {oo*/p/spa14.<5/a>o ooooo5o oo>posp/a>o= pa href="+5ode=d53confidevicep/a>(structopa href=bef="+c5p="drivers5be.c#13936" idopL936" cla5s="li53oooooopa hnex137opL979">o949p/a>mps 4NTROLp/sref">mps0opLers/pc1359robe.c#orig>mps 4NTROLp/sref">orig>mps0opLele_=pci_setup_device" clref=scan5a>o= pa ha5s=scan_=pci_setup_device"5clref5398>140opL878">o878p/a>o ooooooo oo0;p5reff+="sre5">devp/a>);vdevp/a>);v<="li13979>137opL89">o949p/a>}vdevp/a>)5o oo5">o899p/a>5 ooooooo oo>posp/a>o= pa 5NULID5471punsignedo"ooo oooooopa href="+code5/a>o ooooo5pa hass==pci_s_ady_read_d5ord" 54region" clreflL979">o949p/a>mps 4NTROLp/sref">mps0opL"ooo28h apo apo>*rivers/pc138probu8 idopL971" clasu8vers/p)c1371robe.c#1397ata idopL971" classata/a>-device" clref=is=asssconfi/a>o oo5"ff+="sref5 class="sr, i_devp/a>o*pa5hief=54rown_writsetup_device" cl=oworig>mps 4NTROLp/sref">orig>mps0opL"ooo oooooopa hf+codeee71">mps 4NTROLp/sref">hdr8371">mpsopL893">o893p/a>o oo"li12986>128opL986be.c#139ele_=pci_setup_device" clref=scan5>1343pL9745>o974p/a>vposp/a>o= pa5href=54894p/a>o ooooooo oo>f">devp/a9peevp/a>3mps 4NTROLp/sref">hdr83vp/a>3mps0opL93">o893p/a>o oo"li12986>128opL986be.c#13ers/pc1359robe.c#mps 4NTROLp/sref">mps0opL9ele_=pci_setup_device" clref=scan5>a>o ooooo5/a>o= pa hEXPORT_SYMBOIDG5_CONT54794p/a>o ooooooo oo>f">devp/a9peevp/a>3mrrs 4NTROLp/sref">hdr83vp/a>3mrrs0opL93">o893p/a>o oo"li12986>128opL986be.c#139ele_=pci_setup_device" clref=scan5>="drivers5hele_=pci_setup_device" c5ref=s54ef=initf">pci_finiide=pcie_mpss" clas5r>o= pa ha5structopa href="+code=pci5dev" 54vp/a>);vo949p"li_infof="drcode=bus" clref=bef_sem="sref">devp/a>);v128opL986be.c#13ers13988>138opL9ro1 c">"73" E Max Payload Sizar tolot 67" i4d/67" i4d (was>67" i4d), "="srdnu0opL878">o878p/a>o ooooooo oo0;p5dev" class5"sr,punsignedo"ooo oooooo5a hf+5539robe.c#13939" idis=a313988>138opL9ro1 c">"Max Roop"Rq>67" i4d\n"="srdnuers/pc1359robe.c#1398371">mps 4NTROLp/sref">hdr8371">mpsopL893">o893p/a>o oo"li12986>128opL986be.c#13), o28h apo apo>devp/a>);v128opL986be.c#13915" idopL7s="sr2" c13983mpss 4NTROLp/sref">hdr83mpss0opL,0opL878">o878p/a>o ooooooo oo0;p5d>devp/a>)5obe.c#13950" idopL950" cl5ss="l55>o oooooopa hass=is=aap_device" cl=oworig>mps 4NTROLp/sref">orig>mps0opLers/pc1359robe.c#1398371">oooprq 4NTROLp/sref">hdr8371">oooprqopL893">o893p/a>o oo=region" clreff+="sr +idop9ele_=pci_setup_device" clref=scan53951" idop5951" class="li13951>135op5871">5571punsignedo"ooo oooooopa href="+code5pos" class5"sr, i_devp/a>o*pa hnext_5+code55de=region" clf+="sre">devp/a>);vo982p/a>v139opL892">o962p/a>pspa1/* hdr83v}walk3v13,="srdnumbe0ee">devp/a>);vo962p/a>pspa1 c*Ivo oass=* dis="srdnumbe0ee">devp/a>);vdevp/a>);vhdr_type5a>o oooooo5a haef="+code=pos" class=5sre">554.devp/a>);v129opL889">o949peevhdr83vo960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.c#14/91" idopL891" class="ivers/pc138probu8 idopL971" clasu8vers/s/pc1359robe.c#mpss 4NTROLp/sref">mpss0opL96evp/a clf+="sree {oo*/p/spa14.<5irs/pc135p5" class="li13960>136opL985">o9856ss="l939" class="li13939>1339pL893">o85#13961" id5pL961" class="li13961>1365pL8715>o871poooo oooivers/pc138probu8 idopL971" clasu8vers/s/pc1359robe.c#smpss 4NTROLp/sref">smpss0opL>devp/a>);vposp/a>o5 pa hf+code=region" clf+=5sre">56ass==pci_s_adyconfi/a>o oooooopa href5f">devp/a>5;vdevp/a>);v<="li13979>137opL89">o949p/a>}vo978pdevicep/a>(st)hpci_s_adyconfi/a>o oooooopa href5f1343pL9745o oo>posp/a>o= pa hnext_f5code=56 ooota>o oooooopa hreef="drele_=pci_setup_device" clref=scan5"34opL894"5pc1364robe.c#13964" idopL564" c56ef="+code=pci_dev" class="sref">pc,pu5devicep/a>5structopa href="+code=pci5dev" 56on" clno_next_f+conff">devp/a>);vhdr83vo*pa hief="+code=bus" ele_=pci_setup_device" clref=scan5">o oooooo5 href="drivers/pc1368robe5c#1395698>140opL878">o878p/a>o ooooooo oo0;p5878poooo o5o ooooooif (pa hf+code=re5ion" 57code=dev" class="sref">devp/a>);vpeL96DMA is possiile,claoughcde=regdpoe37owould deed="srdnumbe0ee">devp/a>);v132opL960">o960p/a>pspa1 class=ot breawan" ot onsIiPS 4feonsIde429 12986p To work ar39op clis,="srdnumbe0ee">devp/a>);vo961p/a>pspa1r imply ff+ce onsIiPS 4feonsIegion" cystem ot onsIsmall"st possiilepspa1 class/*"rts 4NTROLp/sref">hdr_type5dev" class5"sr,punsignedo"ooo oooooo5a hf+57392robe.c#13892" idopL892" cp/a>pspa1+="srdnumbe0ee">devp/a>);vhdr83vo949p/a>smpss 4NTROLp/sref">smpss0opLf">ass="li14911>141opL871">o871poooo!5f="drivers5pc1374robe.c#13974" idopL574" c57ef="+code=pci_dev" class="sref">pc,pu5honly_one_5hily_read_dword" clonly_o5e_chi57on" clno_next_f+conff">devp/a>);vhdr83vo85de=bus" cl5ef=bef="srpci_devp/a>o*pa5hief=57vp/a>o*pa hief="+codepL979">o949p/a>smpss 4NTROLp/sref">smpss0opLf">s/pc1359robe.c#mpss 4NTROLp/sref">mpss0opLss="li14911>141opL871">o871poooo!5f>o oooooo5_devp/a>o*pa hrarclasde=p5i_dev5798>140opL878">o878p/a>o ooooooo oo0;p5de=bus" cl5ef="sref">devp/a>->pa 5sel c5839robe.c#13939" idis=onff">devp/a>);vhdr83}vo978pdevicep/a>(st, code=bus" clref=bef_smpss 4NTROLp/sref">smpss0opL9ele_=pci_setup_device" clref=scan5d="drivers5asde=pci_dev" claarcla="s5e|| !58>o oooooopa hass=is=a3">o893p/a>o oo/a>}walk3vo949p/a>}walk3vhdr83}vsmpss0opL9ele_=pci_setup_device" clref=scan5d13961" id5lasde=pci_dev" claarcla="5ree">58vp/a>);vdevp/a>);vo oooooopa hrarc5asde=58ass==pci_s_adyconfi/a>o oooooopa href5dobe.c#1395class=EXP_TYPE_ROOT_PORT=5sre">58rown_writsetup_device" cl=owhdr83vhdr83vo978pdevicep/a>(st, code=bus" clref=bef_smpss 4NTROLp/sref">smpss0opL9ele_=pci_setup_device" clref=scan5dobe.c#1395ooooopa hrarclasde=pci_de5" cla585own_writsetup_device" cl=owhdr}walk3vo949p/a>}walk3vhdr83vsmpss0opL9ele_=pci_setup_device" clref=scan5d="drivers5o oooooopa hass=has_flage5up_de5895>13>devp/a>);v586>139ous" clref=bef_EXoooo_SYMBOL_GPL 4NTROLp/sref">EXoooo_SYMBOL_GPL0opL9ivers/pc138prob49peevhdr83v138opL896">o896p/a>o 5ooooo58ef=initf">pci_finiide=pcie_mpss" clas5robe.c#13957" idopL987" class="li13957>138584.(struct137opL979">o949p/a>_"drioops 4NTROLp/sref">_"drioopsvers/s/pc1359robe.c#p href="didopL3vo949p/a>}ef="didopL3vo960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.c#14/91" idopL891" class96evp/a clf+="sree {oo*/p/spa14.<5f="drivers5pc1388robe.c#13988" idopL588" c59opL89939" class="li13939>1339pL893">o85idopL889" 5lass="li13889>138opL89">o549p/a59>o oooooopa ha>(struct137opL979">o949p/a>o">devp/a>,opa href="+code=deers/pc1359robe.c#1ass 4NTROLp/sref">hasopL97ers/pc1359robe.c#max 4NTROLp/sref">max0opLf">s/pc1359robe.c#1378robe.c#13978" idopL978" class="li13978>13idon_raieconfiLTCAPp/a>idon_raipL97.bus" clref=bef_stars 4NTROLp/sref">stars0opLss="li14911>141opL871">o871poooo!5/a>o& 51391robe.c#13891" idopL895" cla59vp/a>);vo960p/a>pspa1 class="o9">devp/a>);v141opL871">o871poooo!5/ev" class5Bus).p/spa14."li_db7f="drcode=bus" clref=bef_obe class="li14922>142opL8" class="li13978>13ady12986>128opL986be.c#13ers13988>138opL9ro1 c">"hreff1 c >14\n"="srdnu9ele_=pci_setup_device" clref=scan5/onfi/a>o 5 zero func">mu.)r CardBus5.p/sp592robe.c4914" idopL914" class="li149145s/pc1395ro5e.c#13895" idopL895" clas5="li159code=dev" clnss="sref">devp/a>);vdevp/a>);vdevp/a>);vo">devp/a>,opa href="+code=dev=o ooooooif (pa hf+co">devp/a>,opa href="+code=dev apo>0x10 ooooooif (pa hf+co">devp/a>,opa href="+code=dev+= 8p0opL878">o878p/a>o ooooooo oo0;p5ilass="li15/spa14.o949p/a>/a>}ef="d lre137opL89">o949p/a>}ef="d lre0opL9ivers/pc138prob1378robe.c#13978" idopL97ers/pc1359robe.c#o">devp/a>,opa href="+code=de9ele_=pci_setup_device" clref=scan5/obe.c#1395ve is=adeed setor CardBus5.p/sp5998>140opL878">o878p/a>o ooooooo oo0;p6pa14.devp/a>);vdevp/a>);vmax0opLf+ooo oooooopa hf+code=iov3vo949p/a>}vov3v(6tructopa href=bef="+code=6us" c6071punsignedo"ooo oooooopa href="+code6us" clbef=6sr,pinep/a>(structopa hre6f+cod6=region" clreflli="srf">devp/a>);vdevp/a>);v14060"li13893>1393pL972">o962p/a>p/a>pspa1rAfter perfirm1 c arch-depend hrrfixup 4feonsIido, look behvdevp/a>);vmu.)r CardBus6pL894604.139br7dg>8>4" clis bpLL958">o958p/a>pspa1 class=*r CardBus).p/6gion" clne6t_f+="sr)idevicep/a>(stru6topa 6095>139opL892">o962p/a>pspa1 bbbbbbbb*+="srdnumbe0ee">devp/a>);vdevp/a>);vobe class="li14922>142opL8" class="li13978>13laooooopa hu916" idopL9ev" clu1opL89L939" class="li13939>1339pL893">o86e8on" clne6tspa14.o949p/a>"li_db7 4NTROLp/sref">"li_db7f="drcode=bus" clref=bef_obe class="li14922>142opL8" class="li13978>13ady12986>128opL986be.c#13ers13988>138opL9ro1 c">"fixupstff+c>14\n"="srdnu9ele_=pci_setup_device" clref=scan6s/pc1408ro6e.c#14/98" idopL898" clas6="li160o oooooopa href="+codo oooooopa hf+codebios_fixuports 4NTROLp/sref">hdrbios_fixuports0opL9ivers/pc138prob1378robe.c#13978" idopL979ele_=pci_setup_device" clref=scan6a>o oooooo6spa1 class="cAl"srey scan6edoIn6139robe.c#13939" idis=ef="drivers/pc1383robe.ev"rersorts 4NTROLp/sref">hdr_ev"rersorts0opL9ivers/pc138prob1378robe.c#13978" idopL979p0opL878">o878p/a>o ooooooo oo0;p6can_sghele6=pci_setup_device" clref=6can_s61>o oooooopa hass=is=aaaaaaaaapL979">o949p/a>obe class="li14922>142opL8" class="li13978>13laooooopa hu916" idopL9ev" clu1opL8"oooooooopa hass=SCAN_ALL_assE_DEVS="6cvicep/a>(6">devp/a>);vo oooooo6a href="+code=dev" class=6sref"61ass==pci_s_adyconfi/a>o oooooopa href6913" idopL613" class="li14913>141opL693">o61rown_writsetuff+conff">devp/a>);v1ass 4NTROLp/sref">hasopL97= ooooooif (pa hf+c1ass 4NTROLp/sref">hasopL97v apo>2ooooooif (pa hf+c1ass 4NTROLp/sref">hasopL97++p0opL878">o878p/a>o ooooooo oo0;p6c5" clbef=6devp/a>).o949p/a>pa hrff+_each_pspry 4NTROLp/sref">pa hrff+_each_pspry0opL9ivers/pc138probady12986>128opL986be.c#13ercode=bus" clref=bef_obe class="li14922>142opL8" class="li13978>13ady_taieconfiLTCAPp/a>,o&pa hers/pc1359robe.c#vo86141opL894"6o894p/a>o ooota>o oooooop6 hnt=6+code=dev" clne.c#13939" idis=ef="drivers/pc1383reli12986>128opL986be.c#13915" idopL7s="sr2" chdr983" idopL983" classhdr983" 0opLf"vers/pc1382robe.c#13_HEADERo882poBRIDGEs="li13982>138opL8_HEADERo882poBRIDGE0opLf||mbe0ee">devp/a>);v141opL896">o896p6ooo o61oooif (pa hass=arifen hief="+codepL979">o949p/a>"li12986>128opL986be.c#13915" idopL7s="sr2" chdr983" idopL983" classhdr983" 0opLf"vers/pc1382robe.c#13_HEADERo882poCARDBUSs="li13982>138opL8_HEADERo882poCARDBUSlass96evp/a clf+="sree {oo*/p/spa14.<6a8on" clne6917>141opL897">o897p/a>o 6oo/a>61vp/a>o*pa hief="+code hre hief="+codepL979">o949p/a>max 4NTROLp/sref">max0opLf">s/pc1359robe.c#/a>}ef="dbr7dg>137opL89">o949p/a>}ef="dbr7dg>0opL9ivers/pc138prob1378robe.c#13978" idopL97ers/pc1359robe.c#o">12986>128opL986be.c#13ersL979">o949p/a>max 4NTROLp/sref">max0opLers/pc1359robe.c#1ass 4NTROLp/sref">hasopL979ele_=pci_setup_device" clref=scan6a/pc1408ro64918>141opL878">o878pelse6oooo/61o oooooopa href="+cod>devp/a>);v141opL899">o899p/a>o oo6/a>o 62oooopa hnext_f+code=region" clnext_f+6"sref">pos6/a>o= pa hnext_trreff+cod6=regi6n" clnext_trrelli="srf">devp/a>);vdevp/a>);vposp/a>o= pa hnext_f+6ode=r62ass="li13921>132opL961">o961p/a>pspa1rWe've hreffedcde=rbus #129 o we know all9about what'8>4"="srdnumbe0ee">devp/a>);vpspa1rde=ro===n side 4feany9br7dg>8>onatcmaa be 4" clis bpL pluadegher CardBus).p/spa14.1393pL972">o962p/a>p/a>pspa1rany li13898L958">o958p/a>pspa1 class=*r CardBus).p/6sed="sref"6srelistode=pci_dev" cl"sr6list=624.o958p/a>pspa1 class=*r CardBus).p/6s41opL894"613925>132opL895">o895pevp6a>-&g6295>139opL892">o962p/a>pspa1 bbbbbbbb*9R+="srehow far we've got }vo958p/a>pspa1 class=*r CardBus).p/6s16" class6o&pa href=bef_sem="+c6de=bu626>139opL892">o962p/a>pspa1 cbbbbbbbb*+="srdnumbe0ee">devp/a>);vo949p/a>"li_db7 4NTROLp/sref">"li_db7f="drcode=bus" clref=bef_obe class="li14922>142opL8" class="li13978>13ady12986>128opL986be.c#13ers13988>138opL9ro1 c">"bpL hrefe=bus" 1 c with max=67" i02x\n"="srdnuers/pc1359robe.c#max 4NTROLp/sref">max0opL9ele_=pci_setup_device" clref=scan6fclass="li6tructopa href=bef="+code=6us" c62o oooooopa hrf+="sres/pc1359robe.c#max 4NTROLp/sref">max0opLele_=pci_setup_device" clref=scan6us" clbef=6sr,pinep/a>(structopa hre6f+cod63=pci_>devp/a>);vpos6pL930" class="li13930>1336pL89563>o oodevp/a>);vpci_devp/a>o*p6 href63ion" 60">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robehdr_create"rersorts 4NTROLp/sref">hdr_create"rersorts0opL960">o960p/a>pspa1 clasli1389econfiLTCAPp/a>,o&ep/a>o& 014/1robehhaa hrc#13er137opL979">o949p/a>1378robe.c#13978" idopL97edevp/a>);vo960p/a>pspa1 class="oops 4NTROLp/sref">hdroopsep/a>o& 014/1robeops 4NTROLp/sref">ops0opLeri1289pc1371robe.c#139sys7ata idopL971" classys7ata0opLer60">o960p/a>pspa1 claspa hrheapa hu916" idopL9pa hrheapep/a>o& 014/1roberesourtaieconfiLTCAPp/a>resourtailass96evp/a clf+="sree {oo*/p/spa14.<6eff+="sref6>devp/a>);vo86thref="b9f6ass="li13934>133opL894">o694p/a63 ooota>o ooooe37opL979">o949p/a>error137opL89">o949perror0opLele_=pci_setup_device" clref=scan6u41opL894"6;vo960p/a>pspa1 class="oho hrbr7dg>137opL89">o949p/a>}ho hrbr7dg>ep/a>o& 014/1robe.r7dg>137opL89">o949pbr7dg>ep/aele_=pci_setup_device" clref=scan6u16" class6o oo>posp/a>o= pa href="+6ode=d637ode=dev" cln60">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.137opL89">o949pb0opLero& 014/1robe.2137opL89">o949pb2ep/aele_=pci_setup_device" clref=scan6u8on" clne6be.c#13936" idopL936" cla6s="li63oooooopa hnex60">o960p/a>pspa1 class="oho hrbr7dg>_wvo949p/a>}ho hrbr7dg>_wvo& 014/1robewvo949pwv,opa href=nep/aele_=pci_setup_device" clref=scan6uclass="li6s=scan_=pci_setup_device"6clref639ooooopa hnex60">o960p/a>pspa1 clasresourtaeconfiLTCAPp/a>resourtaep/a>o& 014/1robereseconfiLTCAPp/a>resep/aele_=pci_setup_device" clref=scan6reff+="sre6">devp/a>);vpspa1 clasresourta_size_r 4NTROLp/sref">resourta_size_rpci_d& 014/1robeoffs1" 4NTROLp/sref">offs1"ep/aele_=pci_setup_device" clref=scan6rsref">pos6o949pvfm"ep/aele_=pci_setup_device" clref=scan6r>o oooooo6pa hass==pci_s_ady_read_d6ord" 64ass==pci_s_adyconfi/a>o oooooopa href6"ff+="sref6 class="sr, i_devp/a>o*pa6hief=64rown_pci_s_adyconfi/a>o oooooopa href6"href="b9f6>o974p/a>vo949pb0opLf">s/pc1359robe.c#/a>}allocorts 4NTROLp/sref">hdr_allocorts0opL99ele_=pci_setup_device" clref=scan6134opL894"6o894poooo oo>posp/a>o= pa6href=64894p/a>o oooo_f+c"srf">devp/a>);vo137opL89">o949pb0opL96evp/a clf+="sree {oo*/p/spa14.<6>a>o ooooo6/a>o= pa hEXPORT_SYMBOIDG6_CONT64oooif (pa hass=arifenef="dr>s/pc1359robe.c#NULL 4NTROLp/sref">NULLep/aele_=pci_setup_device" clref=scan6r8on" clne6hele_=pci_setup_device" c6ref=s64ef=initf">pci_finiide=pcie_mpss" clas6r>o= pa ha6structopa href="+code=pci6dev" 64vp/a>);vo949pb0opL8" class="li13978>137ys7ata idopL971" classys7ata0opLf">s/pc1359robe.c#7ys7ata idopL971" classys7ata0opLele_=pci_setup_device" clref=scan6dev" class6"sr,punsignedo"ooo oooooo6a hf+65=pci_dev" cls0p/a>pspa1 claso137opL89">o949pb0opL8" class="li13978>13ops 4NTROLp/sref">ops0opLf">s/pc1359robe.c#ops 4NTROLp/sref">ops0opLele_=pci_setup_device" clref=scan6dsref">pos6obe.c#13950" idopL950" cl6ss="l65ele_=pci_scons/pc1359robe.c#.2137opL89">o949pb2ep/af">s/pc1359robe.c#/a>}}vhdr_}vo949pef="domain_nr0opL9ivers/pc138prob1137opL89">o949pb0opL9ers/pc1359robe.c#v65294p/a>o oooo_f+cs/pc1359robe.c#.2137opL89">o949pb2ep/a9L939" class="li13939>1339pL893">o86pos" class6"sr, i_devp/a>o*pa hnext_6+code65bus" clbef="sr,p/a>(slli="srf">devp/a>);ver1gnore it *+="srdnumbe0ee">devp/a>);vo982p/a>vo949p/a>"li_db7 4NTROLp/sref">"li_db7f="drcode=bus" clref=bef_o2137opL89">o949pb2ep/a8" class="li13978>13ady12986>128opL986be.c#13ers13988>138opL9ro1 c">"bpL aoooopa known\n"="srdnu9ele_=pci_setup_device" clref=scan6p1343pL9746a href="+code=dev" class=6sref"65 ooota>o oooooopa hregotoopL979">o949p/a>err_ou" 4NTROLp/sref">err_ou"0opLele_=pci_setup_device" clref=scan6d34opL894"6L954" class="li13954>135o6L894"65894p/a>o oooo>devp/a>);vdevp/a>);vo949p/a>.r7dg>137opL89">o949pbr7dg>ep/af">s/pc1359robe.c#/a>}allocoho hrbr7dg>137opL89">o949p/a>}allocoho hrbr7dg>0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan6d>o= pa ha6a haef="+code=pos" class=6sre">65994p/a>o oooo_f+c"srf">devp/a>);vor7dg>137opL89">o949pbr7dg>ep/a96evp/a clf+="sree {oo*/p/spa14.<6i_rlitycon6ig_bytep/a>(pa href="+cod6=dev"6639robe.c#13939" idis=gotoopL979">o949p/a>err_ou" 4NTROLp/sref">err_ou"0opLele_=pci_setup_device" clref=scan6irs/pc135p6" class="li13960>136opL986">o9866>o oodevp/a>);vo949pbr7dg>ep/a8" class="li13978>13ady12986>128opL986be.c#13.bus" clref=bef_hhaa hrc#13f">s/pc1359robe.c#/haa hrc#13ele_=pci_setup_device" clref=scan6ios" class6 pa hf+code=region" clf+=6sre">66region" clreflL979">o949p/a>or7dg>137opL89">o949pbr7dg>ep/a8" class="li13978>13ady12986>128opL986be.c#13.bus" clref=bef_releasaeconfiLTCAPp/a>releasaep/af">s/pc1359robe.c#/a>}releasa3v_9">devp/a>);vc#13ele_=pci_setup_device" clref=scan6i+code=dev6;vs/pc 4NTROLp/sref">"li_s1">s/pcf="drcode=bus" clref=bef_or7dg>137opL89">o949pbr7dg>ep/a8" class="li13978>13ady12986>128opL986be.c#13ers13988>138opL9ro1 c">"ce"67" i04x:67" i02x"="srdnuers/pc1359robe.c#139"domain_nr137opL89">o949pef="domain_nr0opL9ivers/pc138prob1137opL89">o949pb0opL9ers/pc1359robe.c#vposp/a>o= pa hnext_f6code=665own_writsetup_device" cl=owerror137opL89">o949perror0opLf">s/pc1359robe.c#,o&_efgistereconfiLTCAPp/a>,o&_efgisterf="drcode=bus" clref=bef_or7dg>137opL89">o949pbr7dg>ep/a8" class="li13978>13ady12986>128opL986be.c#139ele_=pci_setup_device" clref=scan6f34opL894"6pc1364robe.c#13964" idopL664" c66code=dev" clnt="sr++f">devp/a>);error137opL89">o949perror0opL96evp/a clf+="sree {oo*/p/spa14.<6ia>o ooooo6structopa href="+code=pci6dev" 66oooif (pa hass=arifengotoopL979">o949p/a>br7dg>_9">_efg_err137opL89">o949pbr7dg>_9">_efg_errc#13ele_=pci_setup_device" clref=scan6i8on" clne6"sr,punsignedo"ooo oooooo6a hf+66oooooopa hnexpL979">o949p/a>.137opL89">o949pb0opL8" class="li13978>13.r7dg>137opL89">o949pbr7dg>ep/af">s/pc1359robe.c#71">li1389econfiLTCAPp/a>71">li1389f="drcode=bus" clref=bef_or7dg>137opL89">o949pbr7dg>ep/a8" class="li13978>13ady12986>128opL986be.c#139ele_=pci_setup_device" clref=scan6f>o= pa ha6 href="drivers/pc1368robe6c#13966vp/a>);v,o&_enopL9_async_suspend0opL9ivers/pc138prob1137opL89">o949pb0opL8" class="li13978>13.r7dg>137opL89">o949pbr7dg>ep/a9ele_=pci_setup_device" clref=scan6878poooo o6o ooooooif (pa hf+code=re6ion" 67=pci_dev" cls0p/a>pspa1 clas/a>}eesorts_of_ncla137opL89">o949pef="eesorts_of_ncla0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan6f="drivers6pc1369robe.c#13969" idopL669" c67>o oodevp/a>);vo oooo_f+c"srf">devp/a>);v<haa hrc#1396evp/a clf+="sree {oo*/p/spa14.<6dev" class6"sr,punsignedo"ooo oooooo6a hf+67bus" clbef="sr,p/a>(sl/pc1359robe.c#71">li1_ncla137opL89">o949p71">li1_ncla0opL9ivers/pc138prob1137opL89">o949pb0opL8" class="li13978>13.r7dg>137opL89">o949pbr7dg>ep/aers/pc1359robe.c#139rts_to_ncla137opL89">o949pef=rts_to_ncla0opL9ivers/pc138prob1137opL89">o949pb0opL99ele_=pci_setup_device" clref=scan6f+code=dev62" idopL972" class="li13962>13767rown_pci_s_adyconfi/a>o oooooopa href6robe.c#13963" idopL973" class="li13963>137675own_writsetup_device" cl=ow.137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#13.bus" clref=bef_986>112986>128opL986986>1ep/af">code=bus" clref=bef_ef=rts_986>112986>128opL986ef=rts_986>1c#13ele_=pci_setup_device" clref=scan6f="drivers6pc1374robe.c#13974" idopL674" c67894p/a>o ooooooo oo>f">devp/.137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#13.bus" clref=bef_hhaa hrc#13f">s/pc1359robe.c#1137opL89">o949pb0opL8" class="li13978>13.r7dg>137opL89">o949pbr7dg>ep/aele_=pci_setup_device" clref=scan6fa>o ooooo6hily_read_dword" clonly_o6e_chi67794p/a>o ooooooo oo>f">devp/"li_s1">s/pc 4NTROLp/sref">"li_s1">s/pcf="drcode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#13ers13988>138opL9ro1 c">"67" i04x:67" i02x"="srdnuers/pc1359robe.c#139"domain_nr137opL89">o949pef="domain_nr0opL9ivers/pc138prob1137opL89">o949pb0opL9ers/pc1359robe.c#vo*pa6hief=67oooooopa hnexpL979">o949p/a>error137opL89">o949perror0opLf">s/pc1359robe.c#,o&_efgistereconfiLTCAPp/a>,o&_efgisterf="drcode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#139ele_=pci_setup_device" clref=scan6d>o= pa ha6_devp/a>o*pa hrarclasde=p6i_dev67994p/a>o oooo_f+cr++f">devp/a>);error137opL89">o949perror0opL96evp/a clf+="sree {oo*/p/spa14.<6de=bus" cl6ef="sref">devp/a>->pa 6sel c6839robe.c#13939" idis=gotoopL979">o949p/a>sref"_9">_efg_err137opL89">o949psref"_9">_efg_errep/aele_=pci_setup_device" clref=scan6d="drivers6asde=pci_dev" claarcla="s6e|| !68>o oodevp/a>);v68vp/a>);vdevp/a>);vdevp/a>);vo oooooopa hrarc6asde=68region" clreflL979">o949p/a>hdr_create"legacy_files137opL89">o949pef="create"legacy_files0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan6dobe.c#1396class=EXP_TYPE_ROOT_PORT=6sre">68rown_pci_s_adyconfi/a>o oooooopa href6dobe.c#1396ooooopa hrarclasde=pci_de6" cla685own_writsetup_device" cl=owo137opL89">o949pb0opL8" class="li13978>13numbereconfiLTCAPp/a>numberc#13f">s/pc1359robe.c#1137opL89">o949pb0opL8" class="li13978>13.don_raieconfiLTCAPp/a>idon_raipL97.bus" clref=bef_stars 4NTROLp/sref">stars0opLf">s/pc1359robe.c#1378robe.c#13978" idopL97ele_=pci_setup_device" clref=scan6d="drivers6o oooooopa hass=has_flage6up_de68ef="+code=pci_dev" class="sref">pc,pu6donly_one_6lass=SCAN_ALL_assE_DEVS="6ree">68on" clno_next_f+conff">devp/a>);vhaa hrc#1396evp/a clf+="sree {oo*/p/spa14.<6de=bus" cl6986>138opL896">o896p/a>o 6ooooo68vp/a>o*pa hief="+codepL979">o949p/a>"li_info137opL89">o949p"li_infof="dronff">devp/a>);vhaa hrc#13ers13988>138opL9ro1 c">"73" ho hror7dg>=ot bus>67" i4\n"="srdnuers/pc1359robe.c#o">>s/pc 4NTROLp/sref">"li_s/pcf="drcode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#1399ele_=pci_setup_device" clref=scan6robe.c#13967" idopL987" class="li13967>13868994p/a>o ooooelsele_=pci_setup_device" clref=scan6f="drivers6pc1388robe.c#13988" idopL688" c6939robe.c#13939" idis=onff">devp/a>);vo1 tk 4NTROLp/sref">ho1 tkf="dronff">devp/a>);KERN_INFO 4NTROLp/sref">KERN_INFO9robes13988>138opL9ro1 c">"73" ho hror7dg>=ot bus>67" i4\n"="srdnuers/pc1359robe.c#o">>s/pc 4NTROLp/sref">"li_s/pcf="drcode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#1399ele_=pci_setup_device" clref=scan6idopL889" 6lass="li13889>138opL89">o649p/a69>o oodevp/a>);v);vdevp/a>);vdevp/a>);vo949p/a>pa hrff+_each_pspry safe12986>128opL986pa hrff+_each_pspry safef="dronff">devp/a>);wvo949pwv13resourtaieconfiLTCAPp/a>resourtailasserass="li13978>13pa h class="li14922pa hopL89L939" class="li13939>1339pL893">o86drivers/pc6393robe.c#13893" idopL8936 clas69c1341robe.c#13941" idpL979">o949p/a>pa hrmove_tail12986>128opL986pa hrmove_tailf="drcode=bus" clref=bef_wvo949pwv137opL89">o949pbr7dg>ep/a8" class="li13978>13wvwvo 6 zero func">mu.)r CardBus6.p/sp69 ooota>o oooooopa hrepL979">o949p/a>reseconfiLTCAPp/a>resep/af">s/pc1359robe.c#wvo949pwvoffs1"ep/af">s/pc1359robe.c#wvo949pwvoffs1"ep/aele_=pci_setup_device" clref=scan6/only_one_6.c#13896" idopL896" class6"li1369oooif (pa hass=arifen_f+conff">devp/a>);reseconfiLTCAPp/a>resep/a8" class="li13978>13flacs 4NTROLp/sref">flacsooif code=>s/pc1359robe.c#IORESOURCE_BUS 4NTROLp/sref">IORESOURCE_BUSc#1396evp/a clf+="sree {oo*/p/spa14.<6ilass="li16/spa14.devp/a>);vdr_typ_insersortsn_raieconfiLTCAPp/a>vdr_typ_insersortsn_rai0opL9ivers/pc138prob1137opL89">o949pb0opLers/pc1359robe.c#vdevp/a>);vdr_typ_add_resourtaeconfiLTCAPp/a>vdr_typ_add_resourta0opL9ivers/pc138prob1137opL89">o949pb0opLers/pc1359robe.c#reseconfiLTCAPp/a>resep/a, 09ele_=pci_setup_device" clref=scan7mbet of ne7 dalizer foundor CardBus)7p/spa70>o oooooopa hass=is=a_f+conff">devp/a>);offs1" 4NTROLp/sref">offs1"ep/a9L939" class="li13939>1339pL893">o87evicep/a>(7tructopa href=bef="+code=7us" c70ion" clnext_f+="sri/aass=is=a_f+conff">devp/a>);resourta_83" idopL983" classresourta_83" 0opL9ivers/pc138probreseconfiLTCAPp/a>resep/a)f"vers/pc1382robe.cIORESOURCE_IO 4NTROLp/sref">IORESOURCE_IOc#1396evp/a clf+="sree {oo*/p/spa14.<7us" clbef=7sr,pinep/a>(structopa hre7f+cod70bus" clbef="sr,p/a>(s9" idis=a" idis=onff">devp/a>);fm" 4NTROLp/sref">fm"ep/af">s13988>138opL9ro1 c">" (bpL address [67" i#06llx-67" i#06llx])"="srdnuele_=pci_setup_device" clref=scan7m4" clbef=7s93robe.c#13893" idopL89373>14070c1341robe.c#13941" idef="+codelsele_=pci_setup_device" clref=scan7p5" clbef=7szero func">mu.)r CardBus7pL89470 ooota>o oooooopa hre9" idis=a" idis=onff">devp/a>);fm" 4NTROLp/sref">fm"ep/af">s13988>138opL9ro1 c">" (bpL address [67" i#010llx-67" i#010llx])"="srdnuele_=pci_setup_device" clref=scan7m6" clbef=7s.c#13895" idopL895" clas7topa 70code=dev" clne.c#13939" idis=bus" clref=bef_snho1 tL978">o978pdevicenho1 tL0opL9ivers/pc138prob1o949pvo949pvfm"ep/aedevp/a>);vdevp/a>);reseconfiLTCAPp/a>resep/a8" class="li13978>13stars 4NTROLp/sref">stars0opLf-3ass="li13978>13offs1" 4NTROLp/sref">offs1"ep/a)edevp/a>);vdevp/a>);reseconfiLTCAPp/a>resep/a8" class="li13978>13endeconfiLTCAPp/a>end0opLf-3ass="li13978>13offs1" 4NTROLp/sref">offs1"ep/a)9ele_=pci_setup_device" clref=scan7m9on" clne7te is=adeed setor CardBus7="li170o oooooopa href="+cod}delsele_=pci_setup_device" clref=scan7a>o oooooo7spa1 class="cAl"srey scan7edoIn7139robe.c#13939" idis=9" idis=bus" clref=bef_vo949pvs13988>138opL9ro1 c">'\0'="srdnuele_=pci_setup_device" clref=scan7can_sghele7=pci_setup_device" clref=7can_s71>o oooooopa hass=is=apL979">o949p/a>"li_info137opL89">o949p"li_infof="drcode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#13ers13988>138opL9ro1 c">"rersIbpL resourta>67" ipR67" i4\n"="srdnuers/pc1359robe.c#reseconfiLTCAPp/a>resep/a, ivers/pc138prob1o949pv(7">devp/a>);vo oooooo7a href="+code=dev" class=7sref"71ass==pci_s_adyconfi/a>o oooooopa href7913" idopL713" class="li14913>141opL793">o71rown_writsetup_device" cl=ow"own_writc 4NTROLp/sref">"own_writcf="drcode=bus" clref=bef_vdr_typ_semeconfiLTCAPp/a>vdr_typ_semo oo9ele_=pci_setup_device" clref=scan7c5" clbef=7devp/a>).128opL986pa hradd_tailf="drcode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ncla137opL89">o949pncla0opLercode=bus" clref=bef_ef="rersortsaieconfiLTCAPp/a>vdr_rersortsaio oo9ele_=pci_setup_device" clref=scan7c6" clbef=7o894p/a>o ooota>o oooooop7 hnt=71894p/a>o ooooooo oo>f">devp/up_writc 4NTROLp/sref">up_writcf="drcode=bus" clref=bef_vdr_typ_semeconfiLTCAPp/a>vdr_typ_semo oo9ele_=pci_setup_device" clref=scan7c7on" clne7"li14916>141opL896">o896p7ooo o716>139devp/a>);v141opL897">o897p/a>o 7oo/a>71vp/a>o*pa hieef="dr>s/pc1359robe.c#o137opL89">o949pb0opLele_=pci_setup_device" clref=scan7c9on" clne74918>141opL878">o878pelse7oooo/7198>140opL878">o878p/a>o ooooooo oo0;p7ass="li14979>141opL899">o899p/a>o oo7/a>o 72ooooppL979">o949p/a>sref"_9">_efg_err137opL89">o949psref"_9">_efg_errep/a:0opL878">o878p/a>o ooooooo oo0;p7aan_sghele7/a>o= pa hnext_trreff+cod7=regi72ele_=pci_scons/pc1359robe.c#pu">li1389econfiLTCAPp/a>pu">li1389f="drcode=bus" clref=bef_or7dg>137opL89">o949pbr7dg>ep/a8" class="li13978>13ady12986>128opL986be.c#139ele_=pci_setup_device" clref=scan7n" clf+="s7ef">posp/a>o= pa hnext_f+7ode=r72o871poooo oooivers/pc138prob,o&_unefgistereconfiLTCAPp/a>,o&_unefgisterf="drcode=bus" clref=bef_or7dg>137opL89">o949pbr7dg>ep/a8" class="li13978>13ady12986>128opL986be.c#139ele_=pci_setup_device" clref=scan7n>o oooooo7_sconfi/a>o oooooopa hief7"+cod72392robus" clref=bef_or7dg>_9">_efg_err137opL89">o949pbr7dg>_9">_efg_errc#13:0opL878">o878p/a>o ooooooo oo0;p7a13" idopL7_sghele_=pci_scodevicep/a7ivers72rown_writsetup_device" cl=owkfre>137opL89">o949pkfre>0opL9ivers/pc138prob1r7dg>137opL89">o949pbr7dg>ep/a9ele_=pci_setup_device" clref=scan7sed="sref"7srelistode=pci_dev" cl"sr7list=724.err_ou"0opL:0opL878">o878p/a>o ooooooo oo0;p7a6" clbef=713925>132opL895">o895pevp7a>-&g72894p/a>o ooooooo oo>f">devp/kfre>137opL89">o949pkfre>0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan7s7on" clne7o&pa href=bef_sem="+c7de=bu727p/a>o*pa hieef="dr>s/pc1359robe.c#NULL 4NTROLp/sref">NULLep/aele_=pci_setup_device" clref=scan7i8on" clne7pc1396robe.c#13926" idopL726" c72ooooo>devp/a>);v140opL878">o878p/a>o ooooooo oo0;p7us" clbef=7sr,pinep/a>(structopa hre7f+cod73=pci_e37opL979">o949p/a>vdr_typ_insersortsn_raieconfiLTCAPp/a>vdr_typ_insersortsn_rai0opL960">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.137opL89">o949pb0opLer137opL979">o949p/a>1378robe.c#13978" idopL97er137opL979">o949p/a>137_max 4NTROLp/sref">137_maxc#1396evp/a clf+="sree {oo*/p/spa14.<7usref">pos7pL930" class="li13930>1337pL89573>o oo939" class="li13939>1339pL893">o87u" clf+="s7ass="sref">pci_devp/a>o*p7 href73vp/a>);vo960p/a>pspa1 clasresourtaeconfiLTCAPp/a>resourtaep/a>o& 014/1robereseconfiLTCAPp/a>resep/af">code=bus" clref=bef_1137opL89">o949pb0opL8" class="li13978>13.don_raieconfiLTCAPp/a>idon_raipL97ele_=pci_setup_device" clref=scan7u>o oooooo7pa hass=get_slotode=pci_d7v" cl73bus" clbef="s60">o960p/a>pspa1 clasresourtaeconfiLTCAPp/a>resourtaep/a>o& 014/1robehaa hr_raieconfiLTCAPp/a>vaa hr_raipL97ero& 014/1robe5opLlic" 4NTROLp/sref">5opLlic"pL97ele_=pci_setup_device" clref=scan7u13" idopL7>devp/a>);vo794p/a735own_writsetup_device" cl=owreseconfiLTCAPp/a>resep/a8" class="li13978>13stars 4NTROLp/sref">stars0opLf">s/pc1359robe.c#1378robe.c#13978" idopL97ele_=pci_setup_device" clref=scan7u41opL894"7;vdevp/reseconfiLTCAPp/a>resep/a8" class="li13978>13endeconfiLTCAPp/a>end0opLf">s/pc1359robe.c#137_max 4NTROLp/sref">137_maxc#13ele_=pci_setup_device" clref=scan7u7on" clne7o oo>posp/a>o= pa href="+7ode=d73794p/a>o ooooooo oo>f">devp/reseconfiLTCAPp/a>resep/a8" class="li13978>13flacs 4NTROLp/sref">flacsooif vers/pc1382robe.cIORESOURCE_BUS 4NTROLp/sref">IORESOURCE_BUSc#13ele_=pci_setup_device" clref=scan7u8on" clne7be.c#13936" idopL936" cla7s="li73ef=initf">pci_finiide=pcie_mpss" clas7uclass="li7s=scan_=pci_setup_device"7clref73994p/a>o oooo_f+c"srf">devp/a>);vpbe.ev"rersorts 4NTROLp/sref">hdr_ev"rersorts0opL9ivers/pc138prob1137opL89">o949pb0opL996evp/a clf+="sree {oo*/p/spa14.<7reff+="sre7">devp/a>);vdevp/a>);vaa hr_raieconfiLTCAPp/a>vaa hr_raipL97f">code=bus" clref=bef_1137opL89">o949pb0opL8" class="li13978>13vhaa hrc#138" class="li13978>13.don_raieconfiLTCAPp/a>idon_raipL97ele_=pci_setup_device" clref=scan7rsref">pos7o87r" clf+="s7 ooooooo oo>posp/a>o= pa 7NULID74ion" clnext_f+="sri/aonff">devp/a>);vaa hr_raieconfiLTCAPp/a>vaa hr_raipL97f">onff">devp/a>);71">ef="domain_.don_raieconfiLTCAPp/a>71">ef="domain_.don_rai0opL9ivers/pc138prob139"domain_nr137opL89">o949pef="domain_nr0opL9ivers/pc138prob1137opL89">o949pb0opL99ele_=pci_setup_device" clref=scan7r>o oooooo7pa hass==pci_s_ady_read_d7ord" 74bus" clbef="sr,p/a>(sl/pc1359robe.c#reseconfiLTCAPp/a>resep/a8" class="li13978>13flacs 4NTROLp/sref">flacsooif |vers/pc1382robe.cIORESOURCE_pL8_FIXED 4NTROLp/sref">IORESOURCE_pL8_FIXEDpL97ele_=pci_setup_device" clref=scan7r13" idopL7 class="sr, i_devp/a>o*pa7hief=74rown_writsetu>devp/a>);vposp/a>o= pa7href=74894p/a>o ooooooo oo>f">devp/5opLlic" 4NTROLp/sref">5opLlic"pL97f">onff">devp/a>);insersoresourta_5opLlic" 4NTROLp/sref">insersoresourta_5opLlic"0opL9ivers/pc138prob1aa hr_raieconfiLTCAPp/a>vaa hr_raipL97erivers/pc138probreseconfiLTCAPp/a>resep/a)ele_=pci_setup_device" clref=scan7r7on" clne7/a>o= pa hEXPORT_SYMBOIDG7_CONT746>139devp/a>);vo oooo_f+cooo oo>f">devp/5opLlic" 4NTROLp/sref">5opLlic"pL9796evp/a clf+="sree {oo*/p/spa14.<7rclass="li7structopa href="+code=pci7dev" 74o oooooopa href="+codo oooooopa hf+c9">_vo1 tk 4NTROLp/sref">9">_vo1 tk0opL9ivers/pc138probKERN_DEBUG 4NTROLp/sref">KERN_DEBUG0opLercode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#13e6evp/a clf+="sree {oo*/p/spa14.<7dev" class7"sr,punsignedo"ooo oooooo7a hf+7539robe.c#13939" idis=9" idis= rs13988>138opL9ro1 c">"bpLn_rai: refenot insers>67" ipR under>67" i467" ipR (5opLlic"s with 67" i4>67" ipR)\n"="srdnue6evp/a clf+="sree {oo*/p/spa14.<7dsref">pos7obe.c#13950" idopL950" cl7ss="l75>o oooooopa hass=is=aaaaaaaaaa>(sl/pc1359robe.c#reseconfiLTCAPp/a>resep/aers/pc1359robe.c#139"ev"rersorts 4NTROLp/sref">hdr_ev"rersorts0opL9ivers/pc138prob1137opL89">o949pb0opL9 ?rs13988>138opL9ro1 c">"domain "="srdnu :rs13988>138opL9ro1 c">"6quot;="srdnue6evp/a clf+="sree {oo*/p/spa14.<7d" clf+="s7951" class="li13951>135op7871">75ion" clnext_f+="sri/aass=is=ari/aonff">devp/a>);vaa hr_raieconfiLTCAPp/a>vaa hr_raipL97ers/pc1359robe.c#5opLlic" 4NTROLp/sref">5opLlic"pL978" class="li13978>13n/pc 4NTROLp/sref">s/pcf="ders/pc1359robe.c#5opLlic" 4NTROLp/sref">5opLlic"pL97)ele_=pci_setup_device" clref=scan7pos" class7"sr, i_devp/a>o*pa hnext_7+code75ass==pci_s_adyconfi/a>o oooooopa href7p+code=dev72">o982p/a>vs/pc1359robe.c#5opLlic" 4NTROLp/sref">5opLlic"pL97f"">onff">devp/a>);NULL 4NTROLp/sref">NULLep/aele_=pci_setup_device" clref=scan7p1343pL9747a href="+code=dev" class=7sref"75 ooot>devp/a>);vpc,pu7pa>o ooooo7refext_e=pci_findconfi/a>7 oooo756>139e37opL979">o949p/a>vdr_typ_update"bpLn_rai_endeconfiLTCAPp/a>vdr_typ_update"bpLn_rai_end0opL960">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.137opL89">o949pb0opLer137opL979">o949p/a>137_max 4NTROLp/sref">137_maxc#1396evp/a clf+="sree {oo*/p/spa14.<7p8on" clne7">devp/a>);vo87d>o= pa ha7a haef="+code=pos" class=7sre">759ooooopa hnex60">o960p/a>pspa1 clasresourtaeconfiLTCAPp/a>resourtaep/a>o& 014/1robereseconfiLTCAPp/a>resep/af">code=bus" clref=bef_1137opL89">o949pb0opL8" class="li13978>13.don_raieconfiLTCAPp/a>idon_raipL97ele_=pci_setup_device" clref=scan7i_rlitycon7ig_bytep/a>(pa href="+cod7=dev"7639robe.c#139360">o960p/a>pspa1 clasresourtaeconfiLTCAPp/a>resourtaep/a>0p/a>pspa1 clasold_raieconfiLTCAPp/a>old_raiep/af">o& 014/1robereseconfiLTCAPp/a>resep/aele_=pci_setup_device" clref=scan7isref">pos7" class="li13960>136opL987">o9876ele_=pci_scons/pc1359robe.c#resourta_size_r 4NTROLp/sref">resourta_size_rpci_d& 014/1robesize 4NTROLp/sref">sizeep/aele_=pci_setup_device" clref=scan7i" clf+="s7pL961" class="li13961>1367pL8717>o871poooo ooo137opL979">o949p/a>r1" 4NTROLp/sref">r1"ep/aele_=pci_setup_device" clref=scan7ios" class7 pa hf+code=region" clf+=7sre">76ass==pci_s_adyconfi/a>o oooooopa href7i+code=dev7;vdevp/a>);reseconfiLTCAPp/a>resep/a8" class="li13978>13stars 4NTROLp/sref">stars0opLf" clopL979">o949p/a>137_max 4NTROLp/sref">137_maxc#1396evp/a clf+="sree {oo*/p/spa14.<7f1343pL9747o oo>posp/a>o= pa hnext_f7code=76 ooota>o oooooopa hreef="dr>-pL979">o949p/a>EINVAL 4NTROLp/sref">EINVALep/aele_=pci_setup_device" clref=scan7i34opL894"7pc1364robe.c#13964" idopL764" c76ef="+code=pci_dev" class="sref">pc,pu7ia>o ooooo7structopa href="+code=pci7dev" 76794p/a>o ooooooo oo>f">devp/size 4NTROLp/sref">sizeep/af">s/pc1359robe.c#137_max 4NTROLp/sref">137_maxc#13f-3ass="li13978>13reseconfiLTCAPp/a>resep/a8" class="li13978>13stars 4NTROLp/sref">stars0opLf+ooooooopa hass=SCAN_ALL_assE_DEVS="7i8on" clne7"sr,punsignedo"ooo oooooo7a hf+76oooooopa hnexpL979">o949p/a>r1" 4NTROLp/sref">r1"ep/af">s/pc1359robe.c#adjussoresourta 4NTROLp/sref">adjussoresourta0opL9ivers/pc138probreseconfiLTCAPp/a>resep/aers/pc1359robe.c#reseconfiLTCAPp/a>resep/a8" class="li13978>13stars 4NTROLp/sref">stars0opLers/pc1359robe.c#size 4NTROLp/sref">sizeep/a)ele_=pci_setup_device" clref=scan7f>o= pa ha7 href="drivers/pc1368robe7c#13976vp/a>);v9">_vo1 tk0opL9ivers/pc138probKERN_DEBUG 4NTROLp/sref">KERN_DEBUG0opLercode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#13e6evp/a clf+="sree {oo*/p/spa14.<7878poooo o7o ooooooif (pa hf+code=re7ion" 7739robe.c#13939" idis=9" idis=b13988>138opL9ro1 c">"bpLn_rai: 67" ipR end 67" i4>updated ot 67" i02x\n"="srdnue6evp/a clf+="sree {oo*/p/spa14.<78sref">pos7pc1369robe.c#13969" idopL769" c77>o oooooopa hass=is=aaaaaaaaacode=bus" clref=bef_old_raieconfiLTCAPp/a>old_raiep/aers/pc1359robe.c#re" 4NTROLp/sref">r1"ep/af?rs13988>138opL9ro1 c">"refenot be"="srdnu :rs13988>138opL9ro1 c">"is"="srdnuers/pc1359robe.c#137_max 4NTROLp/sref">137_maxc#139ele_=pci_setup_device" clref=scan7f13961" id7structopa href="+code=pci7dev" 77294p/le_=pci_setup_device" clref=scan7fos" class7"sr,punsignedo"ooo oooooo7a hf+77bus" clbef="s_f+c"srf">devp/a>);vre" 4NTROLp/sref">r1"ep/afcode=code=>"srf">devp/a>);vreseconfiLTCAPp/a>resep/a8" class="li13978>13vhaa hrc#1396evp/a clf+="sree {oo*/p/spa14.<7f+code=dev72" idopL972" class="li13972>13777c1341robe.c#13941" idpL979">o949p/a>vdr_typ_insersortsn_raieconfiLTCAPp/a>vdr_typ_insersortsn_rai0opL9ivers/pc138prob1137opL89">o949pb0opLers/pc1359robe.c#reseconfiLTCAPp/a>resep/a8" class="li13978>13stars 4NTROLp/sref">stars0opLers/pc1359robe.c#reseconfiLTCAPp/a>resep/a8" class="li13978>13endeconfiLTCAPp/a>end0opL9ele_=pci_setup_device" clref=scan7robe.c#13973" idopL973" class="li13973>137772robe.c4914" idopL914" class="li149147f="drivers7pc1374robe.c#13974" idopL774" c77894p/a>o ooooef="dr>s/pc1359robe.c#r1" 4NTROLp/sref">r1"ep/aele_=pci_setup_device" clref=scan7fa>o ooooo7hily_read_dword" clonly_o7e_chi77794p/>devp/a>);vo*pa7hief=77ef=initf">pci_finiide=pcie_mpss" clas7d>o= pa ha7_devp/a>o*pa hrarclasde=p7i_dev77994p/i1289pL979">o949p/a>vdr_typ_releasa3vvdr_typ_releasa3vo960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.137opL89">o949pb0opL96evp/a clf+="sree {oo*/p/spa14.<7de=bus" cl7ef="sref">devp/a>->pa 7sel c7839rob939" class="li13939>1339pL893">o87d="drivers7asde=pci_dev" claarcla="s7e|| !78>o oooooopa h60">o960p/a>pspa1 clasresourtaeconfiLTCAPp/a>resourtaep/a>o& 014/1robereseconfiLTCAPp/a>resep/af">code=bus" clref=bef_1137opL89">o949pb0opL8" class="li13978>13.don_raieconfiLTCAPp/a>idon_raipL97ele_=pci_setup_device" clref=scan7d13961" id7lasde=pci_dev" claarcla="7ree">78o871poooo ooo137opL979">o949p/a>r1" 4NTROLp/sref">r1"ep/aele_=pci_setup_device" clref=scan7dev" class7sconfi/a>o oooooopa hrarc7asde=78ass==pci_s_adyconfi/a>o oooooopa href7dobe.c#1397class=EXP_TYPE_ROOT_PORT=7sre">78rown_writsetu_f+c"srf">devp/a>);vreseconfiLTCAPp/a>resep/a8" class="li13978>13flacs 4NTROLp/sref">flacsooif ||>"srf">devp/a>);vreseconfiLTCAPp/a>resep/a8" class="li13978>13vhaa hrc#1396evp/a clf+="sree {oo*/p/spa14.<7dobe.c#1397ooooopa hrarclasde=pci_de7" cla78 ooota>o oooooopa hreef="drele_=pci_setup_device" clref=scan7d="drivers7o oooooopa hass=has_flage7up_de78ef="+code=pci_dev" class="sref">pc,pu7donly_one_7lass=SCAN_ALL_assE_DEVS="7ree">78794p/a>o ooooooo oo>f">devp/re" 4NTROLp/sref">r1"ep/af">s/pc1359robe.c#releasa3resourtaeconfiLTCAPp/a>releasa3resourta0opL9ivers/pc138probreseconfiLTCAPp/a>resep/a9ele_=pci_setup_device" clref=scan7de=bus" cl7986>138opL896">o896p/a>o 7ooooo78oooooopa hnexpL979">o949p/a>"li_vo1 tk 4NTROLp/sref">9">_vo1 tk0opL9ivers/pc138probKERN_DEBUG 4NTROLp/sref">KERN_DEBUG0opLercode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#13e6evp/a clf+="sree {oo*/p/spa14.<7robe.c#13977" idopL987" class="li13977>13878o oooooopa href="+cod9" idis=b13988>138opL9ro1 c">"bpLn_rai: 67" ipR 67" i4>releasad\n"="srdnue6evp/a clf+="sree {oo*/p/spa14.<7f="drivers7pc1388robe.c#13988" idopL788" c7939robe.c#13939" idis=a>o ooooooo oo>f">devp/reseconfiLTCAPp/a>resep/aers/pc1359robe.c#re" 4NTROLp/sref">r1"ep/af?rs13988>138opL9ro1 c">"refenot be"="srdnu :rs13988>138opL9ro1 c">"is"="srdnu9ele_=pci_setup_device" clref=scan7idopL889" 7lass="li13889>138opL89">o749p/a79>o oo>devp/a>);vo960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o60p/a>pspa1 clas__9">13it 4NTROLp/sref">__9">13itpci_d& 014/1robehdr_sref"rersorts 4NTROLp/sref">hdr_sref"rersorts0opL960">o960p/a>pspa1 clasli1389econfiLTCAPp/a>,o&ep/a>o& 014/1robehhaa hrc#13er137opL979">o949p/a>1378robe.c#13978" idopL97edevp/a>);vo960p/a>pspa1 class="oops 4NTROLp/sref">hdroopsep/a>o& 014/1robeops 4NTROLp/sref">ops0opLeri1289pc1371robe.c#139sys7ata idopL971" classys7ata0opLer60">o960p/a>pspa1 claspa hrheapa hu916" idopL9pa hrheapep/a>o& 014/1roberesourtaieconfiLTCAPp/a>resourtailass96evp/a clf+="sree {oo*/p/spa14.<7/onfi/a>o 7 zero func">mu.)r CardBus7.p/sp79 ooot939" class="li13939>1339pL893">o87s/pc1395ro7e.c#13895" idopL895" clas7="li179code=dev" cln60">o960p/a>pspa1 class="oho hrbr7dg>_wvo949p/a>}ho hrbr7dg>_wvo& 014/1robewvo949pwvo ooooooo oo>f">devp/bool12986>128opL986boolpci_d& 014/1robefoundeconfiLTCAPp/a>foundep/af">s/pc1359robe.c#falsaeconfiLTCAPp/a>falsaep/aele_=pci_setup_device" clref=scan7ie=bus" cl7/spa14.o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.137opL89">o949pb0opLele_=pci_setup_device" clref=scan7iobe.c#1397ve is=adeed setor CardBus7.p/sp79o oooooopa hr137opL979">o949p/a>max 4NTROLp/sref">maxc#13ele_=pci_setup_device" clref=scan8pa14.o8p/spa80ele_=pci_scons/pc1359robe.c#pa hrff+_each_psprya hu916" idopL9pa hrff+_each_pspry0opL9ivers/pc138probwvo949pwv13pa h class="li14922pa hopL89le_=pci_setup_device" clref=scan8p214.devp/a>);wvo949pwvflacsooif code=>s/pc1359robe.c#IORESOURCE_BUS 4NTROLp/sref">IORESOURCE_BUSc#139L939" class="li13939>1339pL893">o88us" clbef=8sr,pinep/a>(structopa hre8f+cod80bus" clbef="sr,p/a>(s9" idis=& 014/1robefoundeconfiLTCAPp/a>foundep/af">s/pc1359robe.c#0">aeconfiLTCAPp/a>0">ac#13ele_=pci_setup_device" clref=scan8p4" clbef=8s93robe.c#13893" idopL89383>14080c1341robe.c#13941" idef="+codbreakele_=pci_setup_device" clref=scan8p5" clbef=8szero func">mu.)r CardBus8pL89480 ooota>o oooooopa hre>devp/a>);vpc,pu8m7on" clne8tc#13896" idopL896" class8de=re80794p/a>o ooooooo oo>f">devp/b137opL89">o949pb0opLf">s/pc1359robe.c#/a>}create"rersorts 4NTROLp/sref">hdr_create"rersorts0opL9ivers/pc138probvhaa hrc#13ersL979">o949p/a>1378robe.c#13978" idopL97e>0p/a>pspa1 clasops 4NTROLp/sref">ops0opLerc1371robe.c#139sys7ata idopL971" classys7ata0opLer& 014/1roberesourtaieconfiLTCAPp/a>resourtailass9ele_=pci_setup_device" clref=scan8p8on" clne8tspa14.devp/a>);vo137opL89">o949pb0opL96evp/a clf+="sree {oo*/p/spa14.<8m9on" clne8te is=adeed setor CardBus8="li180o oooooopa href="+codef="dr>s/pc1359robe.c#NULL 4NTROLp/sref">NULLep/aele_=pci_setup_device" clref=scan8a>o oooooo8spa1 class="cAl"srey scan8edoIn8139roble_=pci_setup_device" clref=scan8can_sghele8=pci_setup_device" clref=8can_s81>o oooooopa h_f+c"srf">devp/a>);vfoundeconfiLTCAPp/a>foundep/a9L939" class="li13939>1339pL893">o88cvicep/a>(8">devp/a>);vdevp/a>);"li_info137opL89">o949p"li_infof="drcode=bus" clref=bef_o137opL89">o949pb0opL8" class="li13978>13ady12986>128opL986be.c#13e39" class="li13939>1339pL893">o88cs" clbef=8a href="+code=dev" class=8sref"81bus" clbef="sr,p/a>(s9s13988>138opL9ro1 c">"Nt busn resourta>foundtff+crersIbpL, will use [bus>67" i02x-ff]\n"="srdnue6evp/a clf+="sree {oo*/p/spa14.<8913" idopL813" class="li14913>141opL893">o81c1341robe.c#13941" idef="+codsL979">o949p/a>1378robe.c#13978" idopL979ele_=pci_setup_device" clref=scan8c5" clbef=8devp/a>).o949p/a>vdr_typ_insersortsn_raieconfiLTCAPp/a>vdr_typ_insersortsn_rai0opL9ivers/pc138prob1137opL89">o949pb0opLers/pc1359robe.c#1378robe.c#13978" idopL97e>2559ele_=pci_setup_device" clref=scan8c6" clbef=8o894p/a>o ooota>o oooooop8 hnt=81894p/a>o oooo>devp/a>);v141opL896">o896p8ooo o816>139devp/a>);v141opL897">o897p/a>o 8oo/a>81oooooopa hnexpL979">o949p/a>max 4NTROLp/sref">maxc#13f">s/pc1359robe.c#/a>}sref"childorts 4NTROLp/sref">hdr_sref"childorts0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan8c9on" clne84918>141opL878">o878pelse8oooo/8198>140opL878">o878p/a>o ooooooo oo0;p8ass="li14989>141opL899">o899p/a>o oo8/a>o 820o oooooopa h_f+c"srf">devp/a>);vfoundeconfiLTCAPp/a>foundep/a90opL878">o878p/a>o ooooooo oo0;p8aan_sghele8/a>o= pa hnext_trreff+cod8=regi82>o oooooopa hass=is=apL979">o949p/a>vdr_typ_update"bpLn_rai_endeconfiLTCAPp/a>vdr_typ_update"bpLn_rai_end0opL9ivers/pc138prob1137opL89">o949pb0opLers/pc1359robe.c#max 4NTROLp/sref">maxc#139ele_=pci_setup_device" clref=scan8n" clf+="s8ef">posp/a>o= pa hnext_f+8ode=r82294p/le_=pci_setup_device" clref=scan8n>o oooooo8_sconfi/a>o oooooopa hief8"+cod82region" clreflL979">o949p/a>hdr_typ_add_,o&ieconfiLTCAPp/a>vdr_typ_add_,o&i0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan8a13" idopL8_sghele_=pci_scodevicep/a8ivers82rown_writsetuef="dr>s/pc1359robe.c#o137opL89">o949pb0opLele_=pci_setup_device" clref=scan8sed="sref"8srelistode=pci_dev" cl"sr8list=82 ooot>devp/a>);v132opL895">o895pevp8a>-&g82894p/s/pc1359robe.c#EXPORT_SYMBOL 4NTROLp/sref">EXPORT_SYMBOL0opL9ivers/pc138probvdr_sref"rersorts 4NTROLp/sref">hdr_sref"rersorts0opL9ele_=pci_setup_device" clref=scan8a7on" clne8o&pa href=bef_sem="+c8de=bu826>139devp/a>);vdevp/a>);vdevp/a>);v1460">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o60p/a>pspa1 clas__9">13it 4NTROLp/sref">__9">13itpci_d& 014/1robehdr_sref"typ_haa hredeconfiLTCAPp/a>vdr_sref"typ_haa hred0opL960">o960p/a>pspa1 clasli1389econfiLTCAPp/a>,o&ep/a>o& 014/1robehhaa hrc#13embe0ee">devp/a>);v(structopa hre8f+cod8339robe.c#13939" idis=137opL979">o949p/a>1378robe.c#13978" idopL97er60">o960p/a>pspa1 class="oops 4NTROLp/sref">hdroopsep/a>o& 014/1robeops 4NTROLp/sref">ops0opLeri1289pc1371robe.c#139sys7ata idopL971" classys7ata0opL90opL878">o878p/a>o ooooooo oo0;p8usref">pos8pL930" class="li13930>1338pL89583>o oo939" class="li13939>1339pL893">o88u" clf+="s8ass="sref">pci_devp/a>o*p8 href83vp/a>);vLIST_HEAD0opL9ivers/pc138probresourtaieconfiLTCAPp/a>resourtailass9ele_=pci_setup_device" clref=scan8u>o oooooo8pa hass=get_slotode=pci_d8v" cl83bus" clbef="s60">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.137opL89">o949pb0opLele_=pci_setup_device" clref=scan8u13" idopL8>devp/a>);vo894p/a835own_writsetup_device" cl=owhdr_add_resourtaeconfiLTCAPp/a>vdr_add_resourta0opL9code=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailassercode=bus" clref=bef_ioporsoresourta 4NTROLp/sref">ioporsoresourtalass9ele_=pci_setup_device" clref=scan8u6" clbef=8;vdevp/hdr_add_resourtaeconfiLTCAPp/a>vdr_add_resourta0opL9code=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailassercode=bus" clref=bef_iomemoresourta 4NTROLp/sref">iomemoresourtalass9ele_=pci_setup_device" clref=scan8u7on" clne8o oo>posp/a>o= pa href="+8ode=d83794p/a>o ooooooo oo>f">devp/hdr_add_resourtaeconfiLTCAPp/a>vdr_add_resourta0opL9code=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailassercode=bus" clref=bef_bpLn_raiourtaeconfiLTCAPp/a>bpLn_raiourtalass9ele_=pci_setup_device" clref=scan8u8on" clne8be.c#13936" idopL936" cla8s="li83oooooopa hnexpL979">o949p/a>b137opL89">o949pb0opLf">s/pc1359robe.c#/a>}create"rersorts 4NTROLp/sref">hdr_create"rersorts0opL9ivers/pc138probvhaa hrc#13ersL979">o949p/a>1378robe.c#13978" idopL97e>0p/a>pspa1 clasops 4NTROLp/sref">ops0opLerc1371robe.c#139sys7ata idopL971" classys7ata0opLercode=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailass9ele_=pci_setup_device" clref=scan8uclass="li8s=scan_=pci_setup_device"8clref83994p/a>o oooo_f+csrf">devp/a>);vo137opL89">o949pb0opL96evp/a clf+="sree {oo*/p/spa14.<8reff+="sre8">devp/a>);vdevp/a>);va>}sref"childorts 4NTROLp/sref">hdr_sref"childorts0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan8rsref">pos8devp/a>);vdr_fre>oresourta_pa h class="li14922vdr_fre>oresourta_pa h0opL9code=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailass9ele_=pci_setup_device" clref=scan8r>o oooooo8pa hass==pci_s_ady_read_d8ord" 84bus" clbef="sef="dr>s/pc1359robe.c#o137opL89">o949pb0opLele_=pci_setup_device" clref=scan8r13" idopL8 class="sr, i_devp/a>o*pa8hief=84rown_>devp/a>);vEXPORT_SYMBOL0opL9ivers/pc138probvdr_sref"typ_haa hredeconfiLTCAPp/a>vdr_sref"typ_haa hred0opL9ele_=pci_setup_device" clref=scan8r6" clbef=8o894poooo oo>posp/a>o= pa8href=84ef="+code=pci_dev" class="sref">pc,pu8r7on" clne8/a>o= pa hEXPORT_SYMBOIDG8_CONT846>13960">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o60p/a>pspa1 clas__9">13it 4NTROLp/sref">__9">13itpci_d& 014/1robehdr_sref"typeconfiLTCAPp/a>vdr_sref"typ0opL9137opL979">o949p/a>1378robe.c#13978" idopL97er60">o960p/a>pspa1 class="oops 4NTROLp/sref">hdroopsep/a>o& 014/1robeops 4NTROLp/sref">ops0opLecode=pci_dev" class="sref">pc,pu8r8on" clne8hele_=pci_setup_device" c8ref=s84vp/a>o*pa hief="+code hief="+codeeeeeeeeeeeeei1289pc1371robe.c#139sys7ata idopL971" classys7ata0opL90opL878">o878p/a>o ooooooo oo0;p8rclass="li8structopa href="+code=pci8dev" 84o ooo939" class="li13939>1339pL893">o88dev" class8"sr,punsignedo"ooo oooooo8a hf+8539robe.c#1393c1371robe.c#139LIST_HEAD 4NTROLp/sref">LIST_HEAD0opL9ivers/pc138probresourtaieconfiLTCAPp/a>resourtailass9ele_=pci_setup_device" clref=scan8dsref">pos8obe.c#13950" idopL950" cl8ss="l85>o oooooopa h60">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.137opL89">o949pb0opLele_=pci_setup_device" clref=scan8d" clf+="s8951" class="li13951>135op8871">85294p/le_=pci_setup_device" clref=scan8pos" class8"sr, i_devp/a>o*pa hnext_8+code85region" clreflL979">o949p/a>hdr_add_resourtaeconfiLTCAPp/a>vdr_add_resourta0opL9code=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailassercode=bus" clref=bef_ioporsoresourta 4NTROLp/sref">ioporsoresourtalass9ele_=pci_setup_device" clref=scan8p+code=dev82">o982p/a>vo949p/a>hdr_add_resourtaeconfiLTCAPp/a>vdr_add_resourta0opL9code=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailassercode=bus" clref=bef_iomemoresourta 4NTROLp/sref">iomemoresourtalass9ele_=pci_setup_device" clref=scan8p1343pL9748a href="+code=dev" class=8sref"855own_writsetup_device" cl=owhdr_add_resourtaeconfiLTCAPp/a>vdr_add_resourta0opL9code=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailassercode=bus" clref=bef_bpLn_raiourtaeconfiLTCAPp/a>bpLn_raiourtalass9ele_=pci_setup_device" clref=scan8d34opL894"8L954" class="li13954>135o8L894"85894p/a>o ooooooo oo>f">devp/b137opL89">o949pb0opLf">s/pc1359robe.c#/a>}create"rersorts 4NTROLp/sref">hdr_create"rersorts0opL9ivers/pc138probNULL 4NTROLp/sref">NULLep/aersL979">o949p/a>1378robe.c#13978" idopL97e>0p/a>pspa1 clasops 4NTROLp/sref">ops0opLerc1371robe.c#139sys7ata idopL971" classys7ata0opLercode=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailass9ele_=pci_setup_device" clref=scan8pa>o ooooo8refext_e=pci_findconfi/a>8 oooo85794p/a>o oooo_f+csrf">devp/a>);vo137opL89">o949pb0opL9L939" class="li13939>1339pL893">o88p8on" clne8">devp/a>);vdevp/a>);va>}sref"childorts 4NTROLp/sref">hdr_sref"childorts0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan8d>o= pa ha8a haef="+code=pos" class=8sre">85o oooooopa href="+codo oooooopa hf+chdr_typ_add_,o&ieconfiLTCAPp/a>vdr_typ_add_,o&i0opL9ivers/pc138prob1137opL89">o949pb0opL9ele_=pci_setup_device" clref=scan8i_rlitycon8ig_bytep/a>(pa href="+cod8=dev"8639robe.c#1393}helseL939" class="li13939>1339pL893">o88isref">pos8" class="li13960>136opL988">o9886>o oooooopa hass=is=apL979">o949p/a>vdr_fre>oresourta_pa h class="li14922vdr_fre>oresourta_pa h0opL9code=bus" clref=bef_resourtaieconfiLTCAPp/a>resourtailass9ele_=pci_setup_device" clref=scan8i" clf+="s8pL961" class="li13961>1368pL8718>o871poooo ooo>devp/a>);v86bus" clbef="sef="dr>s/pc1359robe.c#o137opL89">o949pb0opLele_=pci_setup_device" clref=scan8i+code=dev8;vposp/a>o= pa hnext_f8code=864.EXPORT_SYMBOL0opL9ivers/pc138probvdr_sref"typeconfiLTCAPp/a>vdr_sref"typ0opL9ele_=pci_setup_device" clref=scan8i34opL894"8pc1364robe.c#13964" idopL864" c86ef="+code=pci_dev" class="sref">pc,pu8ia>o ooooo8structopa href="+code=pci8dev" 86794p/#ifdef>s/pc1359robe.c#CONFIG_HOTPLUG 4NTROLp/sref">CONFIG_HOTPLUGf="+code=pci_dev" class="sref">pc,pu8i8on" clne8"sr,punsignedo"ooo oooooo8a hf+86ooooolli="srf">devp/a>);vdevp/a>);vlli="srf">devp/a>);v_resize - sref a PCIIbpL ff+c,o&i.="srdnumbe0ee">devp/a>);vdevp/a>);v: PCIIbr7dg> ff+ctheIbpL to sref="srdnumbe0ee">devp/a>);vpos8pc1369robe.c#13969" idopL869" c87>o oolli="srf">devp/a>);vdevp/a>);vdevp/a>);vdevp/a>);vdevp/a>);v mmio/io resourta>_f+nempisary0osrdnumbe0ee">devp/a>);vdevp/a>);vdevp/a>);vdevp/a>);vdevp/a>);vdevp/a>);vdevp/a>);vdevp/a>);vdevp/a>);vo*pa8hief=87ooooolli="srf">devp/a>);vdevp/a>);vo949p/a>__ref"4NTROLp/sref">__refpci_d& 014/1robehdr_resref"typ_br7dg>_resizeeconfiLTCAPp/a>vdr_resref"typ_br7dg>_resize0opL960">o960p/a>pspa1 clasvdr_ady12986>128opL986vdr_adyep/a>o& 014/1robe.r7dg>137opL89">o949pbr7dg>ep/a9mbe0ee">devp/a>);vdevp/a>->pa 8sel c8839rob939" class="li13939>1339pL893">o88d="drivers8asde=pci_dev" claarcla="s8e|| !88>o oooooopa ha>(struct137opL979">o949p/a>max 4NTROLp/sref">maxc#13ele_=pci_setup_device" clref=scan8d13961" id8lasde=pci_dev" claarcla="8ree">88o871poooo ooo60">o960p/a>pspa1 class="orts 4NTROLp/sref">hdr_typep/a>o& 014/1robe.378robe.c#13978" idopL97f">s/pc1359robe.c#1r7dg>137opL89">o949pbr7dg>ep/a8" class="li13978>13subordinate idopL971" classubordinatec#13ele_=pci_setup_device" clref=scan8dos" class8sconfi/a>o oooooopa hrarc8asde=88ass==pci_s_adyconfi/a>o oooooopa href8dobe.c#1398class=EXP_TYPE_ROOT_PORT=8sre">88c1341robe.c#1lL979">o949p/a>max 4NTROLp/sref">maxc#13f">s/pc1359robe.c#/a>}sref"childorts 4NTROLp/sref">hdr_sref"childorts0opL9ivers/pc138prob1378robe.c#13978" idopL979ele_=pci_setup_device" clref=scan8dobe.c#1398ooooopa hrarclasde=pci_de8" cla882robe.c4914" idopL914" class="li149148d="drivers8o oooooopa hass=has_flage8up_de88894p/a>o ooooooo oo>f">devp/hdr_as(str_unas(stred_br7dg>_resourtaieconfiLTCAPp/a>hdr_as(str_unas(stred_br7dg>_resourtai0opL9ivers/pc138prob1r7dg>137opL89">o949pbr7dg>ep/a9ele_=pci_setup_device" clref=scan8donly_one_8lass=SCAN_ALL_assE_DEVS="8ree">886>139devp/a>);v138opL896">o896p/a>o 8ooooo88oooooopa hnexpL979">o949p/a>hdr_typ_add_,o&ieconfiLTCAPp/a>vdr_typ_add_,o&i0opL9ivers/pc138prob1378robe.c#13978" idopL979ele_=pci_setup_device" clref=scan8d>o= pa ha87" idopL987" class="li13987>1388898>140opL878">o878p/a>o ooooooo oo0;p8f="drivers8pc1388robe.c#13988" idopL888" c8939robe.c#1393ef="dr>s/pc1359robe.c#max 4NTROLp/sref">maxc#13ele_=pci_setup_device" clref=scan8idopL889" 8lass="li13889>138opL89">o849p/a89>o oo>devp/a>);vEXPORT_SYMBOL0opL9ivers/pc138probvdr_add_neworts 4NTROLp/sref">hdr_add_newortspL979ele_=pci_setup_device" clref=scan8drivers/pc8393robe.c#13893" idopL8938 clas89c1341hss="li13978>13EXPORT_SYMBOL 4NTROLp/sref">EXPORT_SYMBOL0opL9ivers/pc138probvdr_sref"sloh class="li14922vdr_sref"slohpL979ele_=pci_setup_device" clref=scan8dobe.c#1398 zero func">mu.)r CardBus8.p/sp894.EXPORT_SYMBOL0opL9ivers/pc138probvdr_sref"tr7dg>137opL89">o949pvdr_sref"tr7dg>pL979ele_=pci_setup_device" clref=scan8d="drivers8e.c#13895" idopL895" clas8="li189894p/s/pc1359robe.c#EXPORT_SYMBOL_GPL 4NTROLp/sref">EXPORT_SYMBOL_GPL0opL9ivers/pc138probvdr_sref"childorts 4NTROLp/sref">hdr_sref"childorts0opL9ele_=pci_setup_device" clref=scan8donly_one_8.c#13896" idopL896" class8"li1389794p/#endifle_=pci_setup_device" clref=scan8de=bus" cl8/spa14.pci_finiide=pcie_mpss" clas8iobe.c#1398ve is=adeed setor CardBus8.p/sp8998>1460atict137opL979">o949p/a>__13it 4NTROLp/sref">__13itpci_d& 014/1robehdr_sorsobf_cmp 4NTROLp/sref">hdr_sorsobf_cmp0opL9const 60">o960p/a>pspa1 clasli1389econfiLTCAPp/a>,o&ep/a>o& 014/1robed_a idopL971" clasd_a0opLerconst 60">o960p/a>pspa1 clasli1389econfiLTCAPp/a>,o&ep/a>o& 014/1robed_o137opL89">o949pd_oep/a9mbe0ee">devp/a>);vo89p114.o9p/spa90ele_=pci_sconconst 60">o960p/a>pspa1 clasvdr_ady12986>128opL986vdr_adyep/a>o& 014/1robea idopL971" clasac#13f">s/pc1359robe.c#to_vdr_ady12986>128opL986to_vdr_ady0opL9ivers/pc138probd_a idopL971" clasd_a0opL9ele_=pci_setup_device" clref=scan9p214.o960p/a>pspa1 clasvdr_ady12986>128opL986vdr_adyep/a>o& 014/1robeb137opL89">o949pb0opLf">s/pc1359robe.c#to_vdr_ady12986>128opL986to_vdr_ady0opL9ivers/pc138probd_o137opL89">o949pd_oep/a9ele_=pci_setup_device" clref=scan9p314.14090c1341robe.c#1ifbe.c#19ivers/pc138prob139"domain_nr137opL89">o949pef="domain_nr0opL9ivers/pc138proba idopL971" clasac#138" class="li13978>13.do8robe.c#13978" idopL979 &lclopL979">o949p/a>139"domain_nr137opL89">o949pef="domain_nr0opL9ivers/pc138prob1137opL89">o949pb0opL8" class="li13978>13.do8robe.c#13978" idopL979)eef="dr>-oooooopa hass=SCAN_ALL_assE_DEVS="9p5" clbef=9szero func">mu.)r CardBus9pL89490 ooota>o ooooelseL_f+csrf">devp/a>);v139"domain_nr137opL89">o949pef="domain_nr0opL9ivers/pc138proba idopL971" clasac#138" class="li13978>13.do8robe.c#13978" idopL979 & clopL979">o949p/a>139"domain_nr137opL89">o949pef="domain_nr0opL9ivers/pc138prob1137opL89">o949pb0opL8" class="li13978>13.do8robe.c#13978" idopL979)eef="dr>ooooooopa hass=SCAN_ALL_assE_DEVS="9m6" clbef=9s.c#13895" idopL895" clas9topa 90ef="+code=pci_dev" class="sref">pc,pu9m7on" clne9tc#13896" idopL896" class9de=re90794p/a>o oooo_f+e.c#19ivers/pc138proba idopL971" clasac#138" class="li13978>13.do8robe.c#13978" idopL978" class="li13978>13number8robe.c#13978" number94p/a&lclopL979">o949p/a>1137opL89">o949pb0opL8" class="li13978>13.do8robe.c#13978" idopL978" class="li13978>13number8robe.c#13978" number94p/)eef="dr>-oooooopa hass=SCAN_ALL_assE_DEVS="9p8on" clne9tspa14.devp/a>);va idopL971" clasac#138" class="li13978>13.do8robe.c#13978" idopL978" class="li13978>13number8robe.c#13978" number94p/a& clopL979">o949p/a>1137opL89">o949pb0opL8" class="li13978>13.do8robe.c#13978" idopL978" class="li13978>13number8robe.c#13978" number94p/)eef="dr>ooooooopa hass=SCAN_ALL_assE_DEVS="9m9on" clne9te is=adeed setor CardBus9="li19098>140opL878">o878p/a>o ooooooo oo0;p9a>o oooooo9spa1 class="cAl"srey scan9edoIn910o oooooopa h_f+e.c#19ivers/pc138proba idopL971" clasac#138" class="li13978>13adyfneconfiLTCAPp/a>,o&fn94p/a&lclopL979">o949p/a>1137opL89">o949pb0opL8" class="li13978>13adyfneconfiLTCAPp/a>,o&fn94p/)eef="dr>-oooooopa hass=SCAN_ALL_assE_DEVS="9can_sghele9=pci_setup_device" clref=9can_s91>o oooooopa helseL_f+csrf">devp/a>);va idopL971" clasac#138" class="li13978>13adyfneconfiLTCAPp/a>,o&fn94p/a& clopL979">o949p/a>1137opL89">o949pb0opL8" class="li13978>13adyfneconfiLTCAPp/a>,o&fn94p/)eef="dr>ooooooopa hass=SCAN_ALL_assE_DEVS="9cvicep/a>(9">devp/a>);v0ooooopa hass=SCAN_ALL_assE_DEVS="9c4" clbef=913" class="li14913>141opL993">o91rown_>devp/a>);v).o ooota>o oooooop9 hnt=91894p/i1289pL979">o949p/a>__13it 4NTROLp/sref">__13itpci_d& 014/1robehdr_sorsobreadthfir h class="li14922vdr_sorsobreadthfir h0opL9i1289mbe0ee">devp/a>);v141opL896">o896p9ooo o916>139939" class="li13939>1339pL893">o89a8on" clne9917>141opL897">o897p/a>o 9oo/a>91oooooopa hnexpL979">o949p/a>typ_sorsobreadthfir h class="li14922typ_sorsobreadthfir h0opL9code=bus" clref=bef_vdr_typ_typ>137opL89">o949pvdr_typ_typ>0opLercode=bus" clref=bef_vdr_sorsobf_cmp 4NTROLp/sref">hdr_sorsobf_cmp0opL9ele_=pci_setup_device" clref=scan9c9on" clne94918>141opL878">o878pelse9oooo/9198>14>devp/a>);v141opL899">o899p/a>o oo9/a>o 920o oo TheIoriginal LXR softwarecbycthe evp/a>);vhttp://sourtaforge.netiverjects/lxr8>LXR p/a>u3ity0opLerthis experi>);val hrefioncbycevp/a>);vmailto:lxr@">oux.no">lxr@">oux.no0opL. lxr.">oux.no kindly ho hedcbycevp/a>);vhttp://www.redpill-">over.no">Redpill L>over AS0opLervervider of L>ouxfconsultingIand operations ser&i since 1995.