linux/drivers/mfd/lpc_ich.c
<<
ti2oval/spa 2i val/form2i vala ti2ova href="../linux+v3.9.5/drivers/mfd/lpc_ich.c">ti2ovalimg src="../.static/gfx/right.png" alt=">>">til/spa 2itilspa class="lxr_search">ti2oti2ovalinput typ hidden" nam navtarget" 6.3" ">ti2ovalinput typ text" nam search" id search">ti2ovalbuttv4.typ submit">Searchti2ovaPrefsi val/a>til/spa 2i2ova al/div2i2ova alform aco 5 ="ajax+*" method="post" onsubmit="return false;">tilinput typ hidden" nam ajax_lookup" id ajax_lookup" 6.3" ">t2ova al/form2it2ova aldiv class="headingbottvm">i ldiv id file_contents"2Gpre class="9earch_results"i v2i2ova4.1516 v4="se862.1" > 2o 5 2ti2.1option v2o 5 2a v4.4.70optSut nam ajax_lookup" i#L76"v4.5.7080"vsubm7tt="ie="v id cL8">o 58a708s=#708 };ut nam ajax_lookup" i#L76"v4.5.7090"vsubm7tt="ie="v id cL19">o 19709s=#709 t code=fmtoptioMODULE_DEVICE_TABLEalinp">ACPIBASEMODULE_DEVICE_TABLE (t code=fmtoptiopcialinp">ACPIBASEpciht , t code=fmtoptioi#L76"v_idsalinp">ACPIBASEi#L76"v_idsht );ut nam ajax_lookup" i#L76"v4.5.7L10"vsubm7it="ie="v id cL10">o 1e7="abo710 ut nam ajax_lookup" i#L76"v4.5.7L10"vsubm7tt="ie="v id cL11">o 117s1s=#711 static void t code=fmtoptioi#L76"v_restore_config_spacealinp">ACPIBASEi#L76"v_restore_config_space (struct t code=fmtoptiopci_devalinp">ACPIBASEpci_dev *t code=fmtoptiodevalinp">ACPIBASEdev )ut nam ajax_lookup" i#L76"v4.5.7L20"vsubm7it="ie="v id cL12">o 127ass=s712 {ut nam ajax_lookup" i#L76"v4.5.7L30"vsubm7it="ie="v id cL13">o 137ass=s713 struct t code=fmtoptioi#L76"v_pax_alinp">ACPIBASEi#L76"v_pax_ *t code=fmtoptiopax_alinp">ACPIBASEpax_ = t code=fmtoptiopci_get_drvdataalinp">ACPIBASEpci_get_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.7L40"vsubm7it="ie="v id cL14">o 147ass=s714 ut nam ajax_lookup" i#L76"v4.5.7L50"vsubm7it="ie="v id cL15">o 157ass=s715 if (t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptiosavealinp">ACPIBASEsave >= 0) {ut nam ajax_lookup" i#L76"v4.5.7L60"vsubm7it="ie="v id cL16">o 167ass=s716 < code=fmtoptiopci_write_config_bytealinp">ACPIBASEpci_write_config_byte (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptioctrlalinp">ACPIBASEctrl , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptiosavealinp">ACPIBASEsave );ut nam ajax_lookup" i#L76"v4.5.7L70"vsubm7it="ie="v id cL17">o 177ass=s717 < code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptiosavealinp">ACPIBASEsave = -1;ut nam ajax_lookup" i#L76"v4.5.7L80"vsubm7it="ie="v id cL18">o 187ass=s718 }ut nam ajax_lookup" i#L76"v4.5.7L90"vsubm7it="ie="v id cL19">o 197ass=s719 ut nam ajax_lookup" i#L76"v4.5.7L20"vsubm7it="ie="v id cL20">o 207ass=s720 if (t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptiosavealinp">ACPIBASEsave >= 0) {ut nam ajax_lookup" i#L76"v4.5.7L11"vsubm7it="ie="v id cL21">o 217ass=s721 < code=fmtoptiopci_write_config_bytealinp">ACPIBASEpci_write_config_byte (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptioctrlalinp">ACPIBASEctrl , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptiosavealinp">ACPIBASEsave );ut nam ajax_lookup" i#L76"v4.5.7L12"vsubm7tt="ie="v id cL12">o 127sss=s722 < code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptiosavealinp">ACPIBASEsave = -1;ut nam ajax_lookup" i#L76"v4.5.7L23"vsubm7it="ie="v id cL23">o 237ass=s723 }ut nam ajax_lookup" i#L76"v4.5.7L43"vsubm7it="ie="v id cL24">o 247ass=s724 }ut nam ajax_lookup" i#L76"v4.5.7L50"vsubm7it="ie="v id cL25">o 257ass=s725 ut nam ajax_lookup" i#L76"v4.5.7L60"vsubm7it="ie="v id cL26">o 267ass=s726 static void t code=fmtoptioi#L76"v_enable_acpi_spacealinp">ACPIBASEi#L76"v_enable_acpi_space (struct t code=fmtoptiopci_devalinp">ACPIBASEpci_dev *t code=fmtoptiodevalinp">ACPIBASEdev )ut nam ajax_lookup" i#L76"v4.5.7L73"vsubm7it="ie="v id cL27">o 277ass=s727 {ut nam ajax_lookup" i#L76"v4.5.7L80"vsubm7it="ie="v id cL28">o 287ass=s728 struct t code=fmtoptioi#L76"v_pax_alinp">ACPIBASEi#L76"v_pax_ *t code=fmtoptiopax_alinp">ACPIBASEpax_ = t code=fmtoptiopci_get_drvdataalinp">ACPIBASEpci_get_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.7L93"vsubm7it="ie="v id cL29">o 297ass=s729 t code=fmtoptiou8alinp">ACPIBASEu8 t code=fmtoptioreg_savealinp">ACPIBASEreg_save ;ut nam ajax_lookup" i#L76"v4.5.7L30"vsubm7it="ie="v id cL30">o 307ass=s730 ut nam ajax_lookup" i#L76"v4.5.7L11"vsubm7it="ie="v id cL31">o 317ass=s731 t code=fmtoptiopci_read_config_bytealinp">ACPIBASEpci_read_config_byte (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptioctrlalinp">ACPIBASEctrl , &t code=fmtoptioreg_savealinp">ACPIBASEreg_save );ut nam ajax_lookup" i#L76"v4.5.7L12"vsubm7it="ie="v id cL32">o 327ass=s732 < code=fmtoptiopci_write_config_bytealinp">ACPIBASEpci_write_config_byte (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptioctrlalinp">ACPIBASEctrl , t code=fmtoptioreg_savealinp">ACPIBASEreg_save | 0x10);ut nam ajax_lookup" i#L76"v4.5.7L23"vsubm7tt="ie="v id cL13">o 137sss=s733 < code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptiosavealinp">ACPIBASEsave = t code=fmtoptioreg_savealinp">ACPIBASEreg_save ;ut nam ajax_lookup" i#L76"v4.5.7L43"vsubm7it="ie="v id cL34">o 347ass=s734 }ut nam ajax_lookup" i#L76"v4.5.7L53"vsubm7it="ie="v id cL35">o 357ass=s735 ut nam ajax_lookup" i#L76"v4.5.7L63"vsubm7it="ie="v id cL36">o 367ass=s736 static void t code=fmtoptioi#L76"v_enable_gpio_spacealinp">ACPIBASEi#L76"v_enable_gpio_space (struct t code=fmtoptiopci_devalinp">ACPIBASEpci_dev *t code=fmtoptiodevalinp">ACPIBASEdev )ut nam ajax_lookup" i#L76"v4.5.7L73"vsubm7it="ie="v id cL37">o 377ass=s737 {ut nam ajax_lookup" i#L76"v4.5.7L83"vsubm7it="ie="v id cL38">o 387ass=s738 struct t code=fmtoptioi#L76"v_pax_alinp">ACPIBASEi#L76"v_pax_ *t code=fmtoptiopax_alinp">ACPIBASEpax_ = t code=fmtoptiopci_get_drvdataalinp">ACPIBASEpci_get_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.7L93"vsubm7it="ie="v id cL39">o 397ass=s739 t code=fmtoptiou8alinp">ACPIBASEu8 t code=fmtoptioreg_savealinp">ACPIBASEreg_save ;ut nam ajax_lookup" i#L76"v4.5.7L40"vsubm7it="ie="v id cL40">o 407ass=s740 ut nam ajax_lookup" i#L76"v4.5.7L11"vsubm7it="ie="v id cL41">o 417ass=s741 t code=fmtoptiopci_read_config_bytealinp">ACPIBASEpci_read_config_byte (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptioctrlalinp">ACPIBASEctrl , &t code=fmtoptioreg_savealinp">ACPIBASEreg_save );ut nam ajax_lookup" i#L76"v4.5.7L12"vsubm7it="ie="v id cL42">o 427ass=s742 < code=fmtoptiopci_write_config_bytealinp">ACPIBASEpci_write_config_byte (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptioctrlalinp">ACPIBASEctrl , t code=fmtoptioreg_savealinp">ACPIBASEreg_save | 0x10);ut nam ajax_lookup" i#L76"v4.5.7L23"vsubm7it="ie="v id cL43">o 437ass=s743 < code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptiosavealinp">ACPIBASEsave = t code=fmtoptioreg_savealinp">ACPIBASEreg_save ;ut nam ajax_lookup" i#L76"v4.5.7L43"vsubm7tt="ie="v id cL14">o 147sss=s744 }ut nam ajax_lookup" i#L76"v4.5.7L53"vsubm7it="ie="v id cL45">o 457ass=s745 ut nam ajax_lookup" i#L76"v4.5.7L63"vsubm7it="ie="v id cL46">o 467ass=s746 static void t code=fmtoptioi#L76"v_finalize_cellalinp">ACPIBASEi#L76"v_finalize_cell (struct t code=fmtoptiopci_devalinp">ACPIBASEpci_dev *t code=fmtoptiodevalinp">ACPIBASEdev , struct t code=fmtoptioup"_cellalinp">ACPIBASEup"_cell *t code=fmtoptiocellalinp">ACPIBASEcell )ut nam ajax_lookup" i#L76"v4.5.7L73"vsubm7it="ie="v id cL47">o 477ass=s747 {ut nam ajax_lookup" i#L76"v4.5.7L83"vsubm7it="ie="v id cL48">o 487ass=s748 struct t code=fmtoptioi#L76"v_pax_alinp">ACPIBASEi#L76"v_pax_ *t code=fmtoptiopax_alinp">ACPIBASEpax_ = t code=fmtoptiopci_get_drvdataalinp">ACPIBASEpci_get_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.7L93"vsubm7it="ie="v id cL49">o 497ass=s749 ut nam ajax_lookup" i#L76"v4.5.7L50"vsubm7it="ie="v id cL50">o 507ass=s750 t code=fmtoptiocellalinp">ACPIBASEcell ->t code=fmtoptioplatform_dataalinp">ACPIBASEplatform_data = &t code=fmtoptioi#L7chipset_infoalinp">ACPIBASEi#L7chipset_info [< code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiochipsetalinp">ACPIBASEchipset ];ut nam ajax_lookup" i#L76"v4.5.7L11"vsubm7it="ie="v id cL51">o 517ass=s751 t code=fmtoptiocellalinp">ACPIBASEcell ->t code=fmtoptiopdata_sizealinp">ACPIBASEpdata_size = sizeof(struct t code=fmtoptioi#L76"v_infoalinp">ACPIBASEi#L76"v_info );ut nam ajax_lookup" i#L76"v4.5.7L12"vsubm7it="ie="v id cL52">o 527ass=s752 }ut nam ajax_lookup" i#L76"v4.5.7L23"vsubm7it="ie="v id cL53">o 537ass=s753 ut nam ajax_lookup" i#L76"v4.5.7L43"vsubm7it="ie="v id cL54">o 547ass=s754 /*ut nam ajax_lookup" i#L76"v4.5.7L53"vsubm7it="ie="v id cL55">o 557="abo755 * We don't check for resource conflict globally. There are 2 or 3 independentut nam ajax_lookup" i#L76"v4.5.7L63"vsubm7it="ie="v id cL56">o 567ass=#756 * GPIO groups and it's enough to have access to one of these to instantiate span>ut nam ajax_lookup" i#L76"v4.5.7L73"vsubm7it="ie="v id cL57">o 577ass=o757 * the device. span>ut nam ajax_lookup" i#L76"v4.5.7L83"vsubm7it="ie="v id cL58">o 587ass=#758 */ut nam ajax_lookup" i#L76"v4.5.7L93"vsubm7it="ie="v id cL59">o 597ass=#759 static int t code=fmtoptioi#L76"v_check_conflict_gpioalinp">ACPIBASEi#L76"v_check_conflict_gpio (struct t code=fmtoptioresourcealinp">ACPIBASEresource *t code=fmtoptioresalinp">ACPIBASEres )ut nam ajax_lookup" i#L76"v4.5.7L60"vsubm7it="ie="v id cL60">o 607ass=#760 {ut nam ajax_lookup" i#L76"v4.5.7L11"vsubm7it="ie="v id cL61">o 617ass=#761 int t code=fmtoptioretalinp">ACPIBASEret ;ut nam ajax_lookup" i#L76"v4.5.7L12"vsubm7it="ie="v id cL62">o 627ass=#762 < code=fmtoptiou8alinp">ACPIBASEu8 t code=fmtoptiouse_gpioalinp">ACPIBASEuse_gpio = 0;ut nam ajax_lookup" i#L76"v4.5.7L23"vsubm7it="ie="v id cL63">o 637ass=#763 ut nam ajax_lookup" i#L76"v4.5.7L43"vsubm7it="ie="v id cL64">o 647ass=#764 if (t code=fmtoptioresource_sizealinp">ACPIBASEresource_size (t code=fmtoptioresalinp">ACPIBASEres ) >= 0x50 &&ut nam ajax_lookup" i#L76"v4.5.7L53"vsubm7it="ie="v id cL65">o 657ass=#765 !t code=fmtoptioacpi_check_regionalinp">ACPIBASEacpi_check_region (t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart + 0x40, 0x10, "LPC ICH GPIO3"))ut nam ajax_lookup" i#L76"v4.5.7L63"vsubm7tt="ie="v id cL16">o 167sss=#766 < code=fmtoptiouse_gpioalinp">ACPIBASEuse_gpio |= 1 << 2;ut nam ajax_lookup" i#L76"v4.5.7L73"vsubm7it="ie="v id cL67">o 677ass=#767 ut nam ajax_lookup" i#L76"v4.5.7L83"vsubm7it="ie="v id cL68">o 687ass=#768 if (!t code=fmtoptioacpi_check_regionalinp">ACPIBASEacpi_check_region (t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart + 0x30, 0x10, "LPC ICH GPIO2"))ut nam ajax_lookup" i#L76"v4.5.7L93"vsubm7it="ie="v id cL69">o 697ass=#769 < code=fmtoptiouse_gpioalinp">ACPIBASEuse_gpio |= 1 << 1;ut nam ajax_lookup" i#L76"v4.5.7L70"vsubm7it="ie="v id cL70">o 707ass=#770 ut nam ajax_lookup" i#L76"v4.5.7L11"vsubm7it="ie="v id cL71">o 717ass=#771 t code=fmtoptioretalinp">ACPIBASEret = t code=fmtoptioacpi_check_regionalinp">ACPIBASEacpi_check_region (t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart + 0x00, 0x30, "LPC ICH GPIO1");ut nam ajax_lookup" i#L76"v4.5.7L12"vsubm7ing">": "DH89x7ass=#74 { t if (!t code=fmtoptioretalinp">ACPIBASEret )ut nam ajax_lookup" i#L76"v4.5.7L23"vsubm7it="ie="v id cL73">o 737ass=#773 < code=fmtoptiouse_gpioalinp">ACPIBASEuse_gpio |= 1 << 0;ut nam ajax_lookup" i#L76"v4.5.7L43"vsubm7it="ie="v id cL74">o 747ass=#774 ut nam ajax_lookup" i#L76"v4.5.7L53"vsubm7it="ie="v id cL75">o 757="abo775 return < code=fmtoptiouse_gpioalinp">ACPIBASEuse_gpio ? < code=fmtoptiouse_gpioalinp">ACPIBASEuse_gpio : t code=fmtoptioretalinp">ACPIBASEret ;ut nam ajax_lookup" i#L76"v4.5.7L26"vsubm7it="ie="v id cL76">o 767ass=#776 }ut nam ajax_lookup" i#L76"v4.5.7L73"vsubm7tt="ie="v id cL17">o 177sss=#777 ut nam ajax_lookup" i#L76"v4.5.7L83"vsubm7it="ie="v id cL78">o 787="abo778 static int t code=fmtoptioi#L76"v_init_gpioalinp">ACPIBASEi#L76"v_init_gpio (struct t code=fmtoptiopci_devalinp">ACPIBASEpci_dev *t code=fmtoptiodevalinp">ACPIBASEdev )ut nam ajax_lookup" i#L76"v4.5.7L93"vsubm7it="ie="v id cL79">o 797ass=#779 {ut nam ajax_lookup" i#L76"v4.5.7870"vsubm78t="ie="v id cL70">o 7078ss=#780 struct t code=fmtoptioi#L76"v_pax_alinp">ACPIBASEi#L76"v_pax_ *t code=fmtoptiopax_alinp">ACPIBASEpax_ = t code=fmtoptiopci_get_drvdataalinp">ACPIBASEpci_get_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.7811"vsubm78t="ie="v id cL71">o 7178ss=#781 t code=fmtoptiouit="ie="v iPIBASEu32 t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg ;ut nam ajax_lookup" i#L76"v4.5.7812"vsubm78t="ie="v id cL72">o 7278ss=#782 < code=fmtoptiouit="ie="v iPIBASEu32 t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr ;ut nam ajax_lookup" i#L76"v4.5.7823"vsubm78t="ie="v id cL73">o 7378ss=#783 int t code=fmtoptioretalinp">ACPIBASEret ;ut nam ajax_lookup" i#L76"v4.5.7843"vsubm78t="ie="v id cL74">o 7478ss=#784 t code=fmtoptioboolalinp">ACPIBASEbool t code=fmtoptioacpi_conflictalinp">ACPIBASEacpi_conflict = t code=fmtoptiofalsealinp">ACPIBASEfalse ;ut nam ajax_lookup" i#L76"v4.5.7853"vsubm78t="ie="v id cL75">o 7578"abo785 struct t code=fmtoptioresourcealinp">ACPIBASEresource *t code=fmtoptioresalinp">ACPIBASEres ;ut nam ajax_lookup" i#L76"v4.5.7826"vsubm78t="ie="v id cL76">o 7678ss=#786 ut nam ajax_lookup" i#L76"v4.5.7873"vsubm78t="ie="v id cL77">o 7778ss=#787 /* Setup power management base register */ut nam ajax_lookup" i#L76"v4.5.7883"vsubm7tt="ie="v id cL18">o 187s"abo788 t code=fmtoptiopci_read_config_dwordalinp">ACPIBASEpci_read_config_dword (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptiobase="ie="v iPIBASEbase , &t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg );ut nam ajax_lookup" i#L76"v4.5.7893"vsubm78t="ie="v id cL79">o 7978ss=#789 t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr = t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg & 0x0000ff80;ut nam ajax_lookup" i#L76"v4.5.7970"vsubm79t="ie="v id cL70">o 7079ss=#790 if (!t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr ) {ut nam ajax_lookup" i#L76"v4.5.7911"vsubm79t="ie="v id cL71">o 7179ss=#791 < code=fmtoptiodev_notice="ie="v iPIBASEdev_notice (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev , tspan"ie="v istring">"I/O space for ACPI uninitialized\n");ut nam ajax_lookup" i#L76"v4.5.7912"vsubm79t="ie="v id cL72">o 7279ss=#792 < code=fmtoptioi#L76"v_cellsalinp">ACPIBASEi#L76"v_cells [< code=fmtoptioLPC_GPIOalinp">ACPIBASELPC_GPIO ].t code=fmtoptionum_resourcesalinp">ACPIBASEnum_resources --;ut nam ajax_lookup" i#L76"v4.5.7923"vsubm79t="ie="v id cL73">o 7379ss=#793 goto < code=fmtoptiogpe0_done="ie="v iPIBASEgpe0_done ;ut nam ajax_lookup" i#L76"v4.5.7974"vsubm79t="ie="v id cL74">o 7479ss=#794 }ut nam ajax_lookup" i#L76"v4.5.7945"vsubm79t="ie="v id cL75">o 7579"abo795 ut nam ajax_lookup" i#L76"v4.5.7916"vsubm79t="ie="v id cL76">o 7679ss=#796 t code=fmtoptioresalinp">ACPIBASEres = &t code=fmtoptiogpio_6"v_res="ie="v iPIBASEgpio_6"v_res [< code=fmtoptioICH_RES_GPE0="ie="v iPIBASEICH_RES_GPE0 ];ut nam ajax_lookup" i#L76"v4.5.7974"vsubm79t="ie="v id cL77">o 7779ss=#797 t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr + t code=fmtoptioACPIBASE_GPE_OFF="ie="v iPIBASEACPIBASE_GPE_OFF ;ut nam ajax_lookup" i#L76"v4.5.7983"vsubm79t="ie="v id cL8">o 58a79"abo798 t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptioendalinp">ACPIBASEend = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr + t code=fmtoptioACPIBASE_GPE_END="ie="v iPIBASEACPIBASE_GPE_END ;ut nam ajax_lookup" i#L76"v4.5.7993"vsubm7tt="ie="v id cL19">o 197sss=#799 t code=fmtoptioretalinp">ACPIBASEret = t code=fmtoptioacpi_check_resource_conflictalinp">ACPIBASEacpi_check_resource_conflict (t code=fmtoptioresalinp">ACPIBASEres );ut nam ajax_lookup" i#L76"v4.5.8010"vsubm8tt="ie="v id cL10">o 1e8"ss=#800 if (t code=fmtoptioretalinp">ACPIBASEret ) {ut nam ajax_lookup" i#L76"v4.5.8010"vsubm8tt="ie="v id cL71">o 71801s=#801 /*ut nam ajax_lookup" i#L76"v4.5.8020"vsubm8tt="ie="v id cL72">o 72802s=#802 * This isn't fatal for the GPIO, but we have to make sure thatut nam ajax_lookup" i#L76"v4.5.8030"vsubm8tt="ie="v id cL73">o 73803s=#803 * the platform_device subsystem doesn't see this resource span>ut nam ajax_lookup" i#L76"v4.5.8040"vsubm8tt="ie="v id cL74">o 74804s=#804 * or it will register an"invalid region. span>ut nam ajax_lookup" i#L76"v4.5.8050"vsubm8tt="ie="v id cL75">o 75805s=#805 */ut nam ajax_lookup" i#L76"v4.5.8060"vsubm8tt="ie="v id cL76">o 76806s=#806 < code=fmtoptioi#L76"v_cellsalinp">ACPIBASEi#L76"v_cells [< code=fmtoptioLPC_GPIOalinp">ACPIBASELPC_GPIO ].t code=fmtoptionum_resourcesalinp">ACPIBASEnum_resources --;ut nam ajax_lookup" i#L76"v4.5.8070"vsubm8tt="ie="v id cL77">o 77807s=#807 < code=fmtoptioacpi_conflictalinp">ACPIBASEacpi_conflict = t code=fmtoptiotrue="ie="v iPIBASEtrue ;ut nam ajax_lookup" i#L76"v4.5.8080"vsubm8tt="ie="v id cL8">o 58a808s=#808 } else {ut nam ajax_lookup" i#L76"v4.5.8090"vsubm8tt="ie="v id cL19">o 19809s=#809 < code=fmtoptioi#L76"v_enable_acpi_spacealinp">ACPIBASEi#L76"v_enable_acpi_space (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.8L10"vsubm8it="ie="v id cL10">o 1e8="abo810 }ut nam ajax_lookup" i#L76"v4.5.8L10"vsubm8tt="ie="v id cL11">o 118s1s=#811 ut nam ajax_lookup" i#L76"v4.5.8L20"vsubm8it="ie="v id cL12">o 128ass=s812 < code=fmtoptiogpe0_done="ie="v iPIBASEgpe0_done :ut nam ajax_lookup" i#L76"v4.5.8L30"vsubm8it="ie="v id cL13">o 138ass=s813 /* Setup GPIO base register */ut nam ajax_lookup" i#L76"v4.5.8L40"vsubm8it="ie="v id cL14">o 148ass=s814 t code=fmtoptiopci_read_config_dwordalinp">ACPIBASEpci_read_config_dword (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptiobase="ie="v iPIBASEbase , &t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg );ut nam ajax_lookup" i#L76"v4.5.8L50"vsubm8it="ie="v id cL15">o 158ass=s815 t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr = t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg & 0x0000ff80;ut nam ajax_lookup" i#L76"v4.5.8L60"vsubm8it="ie="v id cL16">o 168ass=s816 if (!t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr ) {ut nam ajax_lookup" i#L76"v4.5.8L70"vsubm8it="ie="v id cL17">o 178ass=s817 < code=fmtoptiodev_notice="ie="v iPIBASEdev_notice (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev , tspan"ie="v istring">"I/O space for GPIO uninitialized\n");ut nam ajax_lookup" i#L76"v4.5.8L80"vsubm8it="ie="v id cL18">o 188ass=s818 < code=fmtoptioretalinp">ACPIBASEret = -< code=fmtoptioENODEValinp">ACPIBASEENODEV ;ut nam ajax_lookup" i#L76"v4.5.8L90"vsubm8it="ie="v id cL19">o 198ass=s819 goto < code=fmtoptiogpio_done="ie="v iPIBASEgpio_done ;ut nam ajax_lookup" i#L76"v4.5.8L20"vsubm8it="ie="v id cL20">o 208ass=s820 }ut nam ajax_lookup" i#L76"v4.5.8L11"vsubm8it="ie="v id cL21">o 218ass=s821 ut nam ajax_lookup" i#L76"v4.5.8L12"vsubm8tt="ie="v id cL12">o 128sss=s822 /* Older devices provide fewer GPIO and have a smaller resource size. */ut nam ajax_lookup" i#L76"v4.5.8L23"vsubm8it="ie="v id cL23">o 238ass=s823 < code=fmtoptioresalinp">ACPIBASEres = &t code=fmtoptiogpio_6"v_res="ie="v iPIBASEgpio_6"v_res [< code=fmtoptioICH_RES_GPIOalinp">ACPIBASEICH_RES_GPIO ];ut nam ajax_lookup" i#L76"v4.5.8L43"vsubm8it="ie="v id cL24">o 248ass=s824 t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr ;ut nam ajax_lookup" i#L76"v4.5.8L50"vsubm8it="ie="v id cL25">o 258ass=s825 switch (t code=fmtoptioi#L7chipset_infoalinp">ACPIBASEi#L7chipset_info [< code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiochipsetalinp">ACPIBASEchipset ].t code=fmtoptiogpio__looionalinp">ACPIBASEgpio__looion ) {ut nam ajax_lookup" i#L76"v4.5.8L60"vsubm8it="ie="v id cL26">o 268ass=s826 case < code=fmtoptioICH_V5_GPIOalinp">ACPIBASEICH_V5_GPIO :ut nam ajax_lookup" i#L76"v4.5.8L73"vsubm8it="ie="v id cL27">o 278ass=s827 case < code=fmtoptioICH_V10CORP_GPIOalinp">ACPIBASEICH_V10CORP_GPIO :ut nam ajax_lookup" i#L76"v4.5.8L80"vsubm8it="ie="v id cL28">o 288ass=s828 < code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptioendalinp">ACPIBASEend = t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart + 128 - 1;ut nam ajax_lookup" i#L76"v4.5.8L93"vsubm8it="ie="v id cL29">o 298ass=s829 break;ut nam ajax_lookup" i#L76"v4.5.8L30"vsubm8it="ie="v id cL30">o 308ass=s830 default:ut nam ajax_lookup" i#L76"v4.5.8L11"vsubm8it="ie="v id cL31">o 318ass=s831 < code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptioendalinp">ACPIBASEend = t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart + 64 - 1;ut nam ajax_lookup" i#L76"v4.5.8L12"vsubm8it="ie="v id cL32">o 328ass=s832 break;ut nam ajax_lookup" i#L76"v4.5.8L23"vsubm8tt="ie="v id cL13">o 138sss=s833 }ut nam ajax_lookup" i#L76"v4.5.8L43"vsubm8it="ie="v id cL34">o 348ass=s834 ut nam ajax_lookup" i#L76"v4.5.8L53"vsubm8it="ie="v id cL35">o 358ass=s835 t code=fmtoptioretalinp">ACPIBASEret = t code=fmtoptioi#L76"v_check_conflict_gpioalinp">ACPIBASEi#L76"v_check_conflict_gpio (t code=fmtoptioresalinp">ACPIBASEres );ut nam ajax_lookup" i#L76"v4.5.8L63"vsubm8it="ie="v id cL36">o 368ass=s836 if (t code=fmtoptioretalinp">ACPIBASEret < 0) {ut nam ajax_lookup" i#L76"v4.5.8L73"vsubm8it="ie="v id cL37">o 378ass=s837 /* this isn't necessarily fatal for the GPIO */ut nam ajax_lookup" i#L76"v4.5.8L83"vsubm8it="ie="v id cL38">o 388ass=s838 < code=fmtoptioacpi_conflictalinp">ACPIBASEacpi_conflict = t code=fmtoptiotrue="ie="v iPIBASEtrue ;ut nam ajax_lookup" i#L76"v4.5.8L93"vsubm8it="ie="v id cL39">o 398ass=s839 goto < code=fmtoptiogpio_done="ie="v iPIBASEgpio_done ;ut nam ajax_lookup" i#L76"v4.5.8L40"vsubm8it="ie="v id cL40">o 408ass=s840 }ut nam ajax_lookup" i#L76"v4.5.8L11"vsubm8it="ie="v id cL41">o 418ass=s841 t code=fmtoptioi#L7chipset_infoalinp">ACPIBASEi#L7chipset_info [< code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiochipsetalinp">ACPIBASEchipset ].t code=fmtoptiouse_gpioalinp">ACPIBASEuse_gpio = t code=fmtoptioretalinp">ACPIBASEret ;ut nam ajax_lookup" i#L76"v4.5.8L12"vsubm8it="ie="v id cL42">o 428ass=s842 < code=fmtoptioi#L76"v_enable_gpio_spacealinp">ACPIBASEi#L76"v_enable_gpio_space (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.8L23"vsubm8it="ie="v id cL43">o 438ass=s843 ut nam ajax_lookup" i#L76"v4.5.8L43"vsubm8tt="ie="v id cL14">o 148sss=s844 t code=fmtoptioi#L76"v_finalize_cellalinp">ACPIBASEi#L76"v_finalize_cell (t code=fmtoptiodevalinp">ACPIBASEdev , &t code=fmtoptioi#L76"v_cellsalinp">ACPIBASEi#L76"v_cells [< code=fmtoptioLPC_GPIOalinp">ACPIBASELPC_GPIO ]);ut nam ajax_lookup" i#L76"v4.5.8L53"vsubm8it="ie="v id cL45">o 458ass=s845 t code=fmtoptioretalinp">ACPIBASEret = t code=fmtoptioup"_add_devicesalinp">ACPIBASEup"_add_devices (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev , -1, &t code=fmtoptioi#L76"v_cellsalinp">ACPIBASEi#L76"v_cells [< code=fmtoptioLPC_GPIOalinp">ACPIBASELPC_GPIO ],ut nam ajax_lookup" i#L76"v4.5.8L63"vsubm8it="ie="v id cL46">o 468ass=s846 1, t code=fmtoptioNULLalinp">ACPIBASENULL , 0, t code=fmtoptioNULLalinp">ACPIBASENULL );ut nam ajax_lookup" i#L76"v4.5.8L73"vsubm8it="ie="v id cL47">o 478ass=s847 ut nam ajax_lookup" i#L76"v4.5.8L83"vsubm8it="ie="v id cL48">o 488ass=s848 < code=fmtoptiogpio_done="ie="v iPIBASEgpio_done :ut nam ajax_lookup" i#L76"v4.5.8L93"vsubm8it="ie="v id cL49">o 498ass=s849 if (t code=fmtoptioacpi_conflictalinp">ACPIBASEacpi_conflict )ut nam ajax_lookup" i#L76"v4.5.8L50"vsubm8it="ie="v id cL50">o 508ass=s850 t code=fmtoptiopr_warnalinp">ACPIBASEpr_warn (tspan"ie="v istring">"Resource conflict(s) found affecting %s\n",ut nam ajax_lookup" i#L76"v4.5.8L11"vsubm8it="ie="v id cL51">o 518ass=s851 t code=fmtoptioi#L76"v_cellsalinp">ACPIBASEi#L76"v_cells [< code=fmtoptioLPC_GPIOalinp">ACPIBASELPC_GPIO ].t code=fmtoption">oalinp">ACPIBASEn">o );ut nam ajax_lookup" i#L76"v4.5.8L12"vsubm8it="ie="v id cL52">o 528ass=s852 return < code=fmtoptioretalinp">ACPIBASEret ;ut nam ajax_lookup" i#L76"v4.5.8L23"vsubm8it="ie="v id cL53">o 538ass=s853 }ut nam ajax_lookup" i#L76"v4.5.8L43"vsubm8it="ie="v id cL54">o 548ass=s854 ut nam ajax_lookup" i#L76"v4.5.8L53"vsubm8it="ie="v id cL55">o 558="abo855 static int t code=fmtoptioi#L76"v_init_wdtalinp">ACPIBASEi#L76"v_init_wdt (struct t code=fmtoptiopci_devalinp">ACPIBASEpci_dev *t code=fmtoptiodevalinp">ACPIBASEdev )ut nam ajax_lookup" i#L76"v4.5.8L63"vsubm8it="ie="v id cL56">o 568ass=#856 {ut nam ajax_lookup" i#L76"v4.5.8L73"vsubm8it="ie="v id cL57">o 578ass=o857 struct t code=fmtoptioi#L76"v_pax_alinp">ACPIBASEi#L76"v_pax_ *t code=fmtoptiopax_alinp">ACPIBASEpax_ = t code=fmtoptiopci_get_drvdataalinp">ACPIBASEpci_get_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.8L83"vsubm8it="ie="v id cL58">o 588ass=#858 t code=fmtoptiouit="ie="v iPIBASEu32 t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg ;ut nam ajax_lookup" i#L76"v4.5.8L93"vsubm8it="ie="v id cL59">o 598ass=#859 t code=fmtoptiouit="ie="v iPIBASEu32 t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr ;ut nam ajax_lookup" i#L76"v4.5.8L60"vsubm8it="ie="v id cL60">o 608ass=#860 int t code=fmtoptioretalinp">ACPIBASEret ;ut nam ajax_lookup" i#L76"v4.5.8L11"vsubm8it="ie="v id cL61">o 618ass=#861 struct t code=fmtoptioresourcealinp">ACPIBASEresource *t code=fmtoptioresalinp">ACPIBASEres ;ut nam ajax_lookup" i#L76"v4.5.8L12"vsubm8it="ie="v id cL62">o 628ass=#862 ut nam ajax_lookup" i#L76"v4.5.8L23"vsubm8it="ie="v id cL63">o 638ass=#863 /* Setup power management base register */ut nam ajax_lookup" i#L76"v4.5.8L43"vsubm8it="ie="v id cL64">o 648ass=#864 t code=fmtoptiopci_read_config_dwordalinp">ACPIBASEpci_read_config_dword (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptiobase="ie="v iPIBASEbase , &t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg );ut nam ajax_lookup" i#L76"v4.5.8L53"vsubm8it="ie="v id cL65">o 658ass=#865 t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr = t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg & 0x0000ff80;ut nam ajax_lookup" i#L76"v4.5.8L63"vsubm8tt="ie="v id cL16">o 168sss=#866 if (!t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr ) {ut nam ajax_lookup" i#L76"v4.5.8L73"vsubm8it="ie="v id cL67">o 678ass=#867 < code=fmtoptiodev_notice="ie="v iPIBASEdev_notice (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev , tspan"ie="v istring">"I/O space for ACPI uninitialized\n");ut nam ajax_lookup" i#L76"v4.5.8L83"vsubm8it="ie="v id cL68">o 688ass=#868 < code=fmtoptioretalinp">ACPIBASEret = -< code=fmtoptioENODEValinp">ACPIBASEENODEV ;ut nam ajax_lookup" i#L76"v4.5.8L93"vsubm8it="ie="v id cL69">o 698ass=#869 goto < code=fmtoptiowdt_done="ie="v iPIBASEwdt_done ;ut nam ajax_lookup" i#L76"v4.5.8L70"vsubm8it="ie="v id cL70">o 708ass=#870 }ut nam ajax_lookup" i#L76"v4.5.8L11"vsubm8it="ie="v id cL71">o 718ass=#871 ut nam ajax_lookup" i#L76"v4.5.8L12"vsubm8ing">": "DH89x8ass=#872 < code=fmtoptioresalinp">ACPIBASEres = < code=fmtoptiowdt_io_res="ie="v iPIBASEwdt_io_res (t code=fmtoptioICH_RES_IO_TCOalinp">ACPIBASEICH_RES_IO_TCO );ut nam ajax_lookup" i#L76"v4.5.8L23"vsubm8it="ie="v id cL73">o 738ass=#873 < code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr + t code=fmtoptioACPIBASE_TCO_OFF="ie="v iPIBASEACPIBASE_TCO_OFF ;ut nam ajax_lookup" i#L76"v4.5.8L43"vsubm8it="ie="v id cL74">o 748ass=#874 t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptioendalinp">ACPIBASEend = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr + t code=fmtoptioACPIBASE_TCO_END="ie="v iPIBASEACPIBASE_TCO_END ;ut nam ajax_lookup" i#L76"v4.5.8L53"vsubm8it="ie="v id cL75">o 758="abo875 ut nam ajax_lookup" i#L76"v4.5.8L26"vsubm8it="ie="v id cL76">o 768ass=#876 t code=fmtoptioresalinp">ACPIBASEres = < code=fmtoptiowdt_io_res="ie="v iPIBASEwdt_io_res (t code=fmtoptioICH_RES_IO_SMIalinp">ACPIBASEICH_RES_IO_SMI );ut nam ajax_lookup" i#L76"v4.5.8L73"vsubm8tt="ie="v id cL17">o 178sss=#877 t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr + t code=fmtoptioACPIBASE_SMI_OFF="ie="v iPIBASEACPIBASE_SMI_OFF ;ut nam ajax_lookup" i#L76"v4.5.8L83"vsubm8it="ie="v id cL78">o 788="abo878 t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptioendalinp">ACPIBASEend = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr + t code=fmtoptioACPIBASE_SMI_END="ie="v iPIBASEACPIBASE_SMI_END ;ut nam ajax_lookup" i#L76"v4.5.8L93"vsubm8it="ie="v id cL79">o 798ass=#879 ut nam ajax_lookup" i#L76"v4.5.8870"vsubm88t="ie="v id cL70">o 7088ss=#880 t code=fmtoptioi#L76"v_enable_acpi_spacealinp">ACPIBASEi#L76"v_enable_acpi_space (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.8811"vsubm88t="ie="v id cL71">o 7188ss=#881 ut nam ajax_lookup" i#L76"v4.5.8812"vsubm88t="ie="v id cL72">o 7288ss=#882 /*ut nam ajax_lookup" i#L76"v4.5.8823"vsubm88t="ie="v id cL73">o 7388ss=#883 * Get the Memory-Mapped GCS register. To get access to itut nam ajax_lookup" i#L76"v4.5.8843"vsubm88t="ie="v id cL74">o 7488ss=#884 * we have to read RCBA from PCI Config space 0xf0 and use span>ut nam ajax_lookup" i#L76"v4.5.8853"vsubm88t="ie="v id cL75">o 7588"abo885 * it as base. GCS = RCBA + ICH6_GCS(0x3410). span>ut nam ajax_lookup" i#L76"v4.5.8826"vsubm88t="ie="v id cL76">o 7688ss=#886 */ut nam ajax_lookup" i#L76"v4.5.8873"vsubm88t="ie="v id cL77">o 7788ss=#887 if (t code=fmtoptioi#L7chipset_infoalinp">ACPIBASEi#L7chipset_info [< code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiochipsetalinp">ACPIBASEchipset ].t code=fmtoptioiTCO__looionalinp">ACPIBASEiTCO__looion == 1) {ut nam ajax_lookup" i#L76"v4.5.8883"vsubm8tt="ie="v id cL18">o 188s"abo888 /* Don't register iomem for TCO _lo 1 */ut nam ajax_lookup" i#L76"v4.5.8893"vsubm88t="ie="v id cL79">o 7988ss=#889 < code=fmtoptioi#L76"v_cellsalinp">ACPIBASEi#L76"v_cells [< code=fmtoptioLPC_WDTalinp">ACPIBASELPC_WDT ].t code=fmtoptionum_resourcesalinp">ACPIBASEnum_resources --;ut nam ajax_lookup" i#L76"v4.5.8970"vsubm89t="ie="v id cL70">o 7089ss=#890 } else {ut nam ajax_lookup" i#L76"v4.5.8911"vsubm89t="ie="v id cL71">o 7189ss=#891 < code=fmtoptiopci_read_config_dwordalinp">ACPIBASEpci_read_config_dword (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptioRCBABASEalinp">ACPIBASERCBABASE , &t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg );ut nam ajax_lookup" i#L76"v4.5.8912"vsubm89t="ie="v id cL72">o 7289ss=#892 < code=fmtoptiobase_addr="ie="v iPIBASEbase_addr = t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg & 0xffffc000;ut nam ajax_lookup" i#L76"v4.5.8923"vsubm89t="ie="v id cL73">o 7389ss=#893 if (!(t code=fmtoptiobase_addr_cfg="ie="v iPIBASEbase_addr_cfg & 1)) {ut nam ajax_lookup" i#L76"v4.5.8974"vsubm89t="ie="v id cL74">o 7489ss=#894 < code=fmtoptiodev_notice="ie="v iPIBASEdev_notice (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev , tspan"ie="v istring">"RCBA is disabled by "ut nam ajax_lookup" i#L76"v4.5.8953"vsubm89t="ie="v id cL75">o 7589"abo895 tspan"ie="v istring">"hardware/BIOS, device disabled\n");ut nam ajax_lookup" i#L76"v4.5.8916"vsubm89t="ie="v id cL76">o 7689ss=#896 < code=fmtoptioretalinp">ACPIBASEret = -< code=fmtoptioENODEValinp">ACPIBASEENODEV ;ut nam ajax_lookup" i#L76"v4.5.8974"vsubm89t="ie="v id cL77">o 7789ss=#897 goto < code=fmtoptiowdt_done="ie="v iPIBASEwdt_done ;ut nam ajax_lookup" i#L76"v4.5.8983"vsubm89t="ie="v id cL8">o 58a89"abo898 }ut nam ajax_lookup" i#L76"v4.5.8993"vsubm8tt="ie="v id cL19">o 198sss=#899 < code=fmtoptioresalinp">ACPIBASEres = < code=fmtoptiowdt_mem_res="ie="v iPIBASEwdt_mem_res (t code=fmtoptioICH_RES_MEM_GCSalinp">ACPIBASEICH_RES_MEM_GCS );ut nam ajax_lookup" i#L76"v4.5.9010"vsubm9tt="ie="v id cL10">o 1e9"ss=#900 t code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptiostartalinp">ACPIBASEstart = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr + t code=fmtoptioACPIBASE_GCS_OFF="ie="v iPIBASEACPIBASE_GCS_OFF ;ut nam ajax_lookup" i#L76"v4.5.9010"vsubm9tt="ie="v id cL71">o 71901s=#901 < code=fmtoptioresalinp">ACPIBASEres ->t code=fmtoptioendalinp">ACPIBASEend = t code=fmtoptiobase_addr="ie="v iPIBASEbase_addr + t code=fmtoptioACPIBASE_GCS_END="ie="v iPIBASEACPIBASE_GCS_END ;ut nam ajax_lookup" i#L76"v4.5.9020"vsubm9tt="ie="v id cL72">o 72902s=#902 }ut nam ajax_lookup" i#L76"v4.5.9030"vsubm9tt="ie="v id cL73">o 73903s=#903 ut nam ajax_lookup" i#L76"v4.5.9040"vsubm9tt="ie="v id cL74">o 74904s=#904 t code=fmtoptioi#L76"v_finalize_cellalinp">ACPIBASEi#L76"v_finalize_cell (t code=fmtoptiodevalinp">ACPIBASEdev , &t code=fmtoptioi#L76"v_cellsalinp">ACPIBASEi#L76"v_cells [< code=fmtoptioLPC_WDTalinp">ACPIBASELPC_WDT ]);ut nam ajax_lookup" i#L76"v4.5.9050"vsubm9tt="ie="v id cL75">o 75905s=#905 t code=fmtoptioretalinp">ACPIBASEret = t code=fmtoptioup"_add_devicesalinp">ACPIBASEup"_add_devices (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev , -1, &t code=fmtoptioi#L76"v_cellsalinp">ACPIBASEi#L76"v_cells [< code=fmtoptioLPC_WDTalinp">ACPIBASELPC_WDT ],ut nam ajax_lookup" i#L76"v4.5.9060"vsubm9tt="ie="v id cL76">o 76906s=#906 1, t code=fmtoptioNULLalinp">ACPIBASENULL , 0, t code=fmtoptioNULLalinp">ACPIBASENULL );ut nam ajax_lookup" i#L76"v4.5.9070"vsubm9tt="ie="v id cL77">o 77907s=#907 ut nam ajax_lookup" i#L76"v4.5.9080"vsubm9tt="ie="v id cL8">o 58a908s=#908 < code=fmtoptiowdt_done="ie="v iPIBASEwdt_done :ut nam ajax_lookup" i#L76"v4.5.9090"vsubm9tt="ie="v id cL19">o 19909s=#909 return < code=fmtoptioretalinp">ACPIBASEret ;ut nam ajax_lookup" i#L76"v4.5.9L10"vsubm9it="ie="v id cL10">o 1e9="abo910 }ut nam ajax_lookup" i#L76"v4.5.9L10"vsubm9tt="ie="v id cL11">o 119s1s=#911 ut nam ajax_lookup" i#L76"v4.5.9L20"vsubm9it="ie="v id cL12">o 129ass=s912 static int t code=fmtoptioi#L76"v_probealinp">ACPIBASEi#L76"v_probe (struct t code=fmtoptiopci_devalinp">ACPIBASEpci_dev *t code=fmtoptiodevalinp">ACPIBASEdev ,ut nam ajax_lookup" i#L76"v4.5.9L30"vsubm9it="ie="v id cL13">o 139ass=s913 const struct t code=fmtoptiopci_device_idalinp">ACPIBASEpci_device_id *t code=fmtoptioidalinp">ACPIBASEid )ut nam ajax_lookup" i#L76"v4.5.9L40"vsubm9it="ie="v id cL14">o 149ass=s914 {ut nam ajax_lookup" i#L76"v4.5.9L50"vsubm9it="ie="v id cL15">o 159ass=s915 struct t code=fmtoptioi#L76"v_pax_alinp">ACPIBASEi#L76"v_pax_ *t code=fmtoptiopax_alinp">ACPIBASEpax_ ;ut nam ajax_lookup" i#L76"v4.5.9L60"vsubm9it="ie="v id cL16">o 169ass=s916 int t code=fmtoptioretalinp">ACPIBASEret ;ut nam ajax_lookup" i#L76"v4.5.9L70"vsubm9it="ie="v id cL17">o 179ass=s917 t code=fmtoptioboolalinp">ACPIBASEbool t code=fmtoptiocell_addedalinp">ACPIBASEcell_added = t code=fmtoptiofalsealinp">ACPIBASEfalse ;ut nam ajax_lookup" i#L76"v4.5.9L80"vsubm9it="ie="v id cL18">o 189ass=s918 ut nam ajax_lookup" i#L76"v4.5.9L90"vsubm9it="ie="v id cL19">o 199ass=s919 t code=fmtoptiopax_alinp">ACPIBASEpax_ = t code=fmtoptiodevm_kzallocalinp">ACPIBASEdevm_kzalloc (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev ,ut nam ajax_lookup" i#L76"v4.5.9L20"vsubm9it="ie="v id cL20">o 209ass=s920 sizeof(struct t code=fmtoptioi#L76"v_pax_alinp">ACPIBASEi#L76"v_pax_ ), t code=fmtoptioGFP_KERNELalinp">ACPIBASEGFP_KERNEL );ut nam ajax_lookup" i#L76"v4.5.9L11"vsubm9it="ie="v id cL21">o 219ass=s921 if (!t code=fmtoptiopax_alinp">ACPIBASEpax_ )ut nam ajax_lookup" i#L76"v4.5.9L12"vsubm9tt="ie="v id cL12">o 129sss=s922 return -< code=fmtoptioENOMEMalinp">ACPIBASEENOMEM ;ut nam ajax_lookup" i#L76"v4.5.9L23"vsubm9it="ie="v id cL23">o 239ass=s923 ut nam ajax_lookup" i#L76"v4.5.9L43"vsubm9it="ie="v id cL24">o 249ass=s924 t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiochipsetalinp">ACPIBASEchipset = t code=fmtoptioidalinp">ACPIBASEid ->t code=fmtoptiodax_lo_dataalinp">ACPIBASEdax_lo_data ;ut nam ajax_lookup" i#L76"v4.5.9L50"vsubm9it="ie="v id cL25">o 259ass=s925 t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptiosavealinp">ACPIBASEsave = -1;ut nam ajax_lookup" i#L76"v4.5.9L60"vsubm9it="ie="v id cL26">o 269ass=s926 t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptiobase="ie="v iPIBASEbase = t code=fmtoptioACPIBASE="ie="v iPIBASEACPIBASE ;ut nam ajax_lookup" i#L76"v4.5.9L70"vsubm9it="ie="v id cL27">o 279ass=s927 t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptioacpialinp">ACPIBASEacpi .t code=fmtoptioctrlalinp">ACPIBASEctrl = t code=fmtoptioACPICTRLalinp">ACPIBASEACPICTRL ;ut nam ajax_lookup" i#L76"v4.5.9L80"vsubm9it="ie="v id cL28">o 289ass=s928 ut nam ajax_lookup" i#L76"v4.5.9L93"vsubm9it="ie="v id cL29">o 299ass=s929 t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptiosavealinp">ACPIBASEsave = -1;ut nam ajax_lookup" i#L76"v4.5.9L30"vsubm9it="ie="v id cL30">o 309ass=s930 if (t code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiochipsetalinp">ACPIBASEchipset <= t code=fmtoptioLPC_ICH5alinp">ACPIBASELPC_ICH5 ) {ut nam ajax_lookup" i#L76"v4.5.9L11"vsubm9it="ie="v id cL31">o 319ass=s931 < code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptiobase="ie="v iPIBASEbase = t code=fmtoptioGPIOBASE_ICH0="ie="v iPIBASEGPIOBASE_ICH0 ;ut nam ajax_lookup" i#L76"v4.5.9L12"vsubm9it="ie="v id cL32">o 329ass=s932 < code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptioctrlalinp">ACPIBASEctrl = t code=fmtoptioGPIOCTRL_ICH0="ie="v iPIBASEGPIOCTRL_ICH0 ;ut nam ajax_lookup" i#L76"v4.5.9L23"vsubm9tt="ie="v id cL13">o 139sss=s933 } else {ut nam ajax_lookup" i#L76"v4.5.9L43"vsubm9it="ie="v id cL34">o 349ass=s934 < code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptiobase="ie="v iPIBASEbase = t code=fmtoptioGPIOBASE_ICH6="ie="v iPIBASEGPIOBASE_ICH6 ;ut nam ajax_lookup" i#L76"v4.5.9L50"vsubm9it="ie="v id cL35">o 359ass=s935 < code=fmtoptiopax_alinp">ACPIBASEpax_ ->t code=fmtoptiogpioalinp">ACPIBASEgpio .t code=fmtoptioctrlalinp">ACPIBASEctrl = t code=fmtoptioGPIOCTRL_ICH6="ie="v iPIBASEGPIOCTRL_ICH6 ;ut nam ajax_lookup" i#L76"v4.5.9L60"vsubm9it="ie="v id cL36">o 369ass=s936 }ut nam ajax_lookup" i#L76"v4.5.9L73"vsubm9it="ie="v id cL37">o 379ass=s937 ut nam ajax_lookup" i#L76"v4.5.9L83"vsubm9it="ie="v id cL38">o 389ass=s938 t code=fmtoptiopci_set_drvdataalinp">ACPIBASEpci_set_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptiopax_alinp">ACPIBASEpax_ );ut nam ajax_lookup" i#L76"v4.5.9L93"vsubm9it="ie="v id cL39">o 399ass=s939 ut nam ajax_lookup" i#L76"v4.5.9L40"vsubm9it="ie="v id cL40">o 409ass=s940 t code=fmtoptioretalinp">ACPIBASEret = t code=fmtoptioi#L76"v_init_wdtalinp">ACPIBASEi#L76"v_init_wdt (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.9L11"vsubm9it="ie="v id cL41">o 419ass=s941 if (!t code=fmtoptioretalinp">ACPIBASEret )ut nam ajax_lookup" i#L76"v4.5.9L12"vsubm9it="ie="v id cL42">o 429ass=s942 < code=fmtoptiocell_addedalinp">ACPIBASEcell_added = t code=fmtoptiotrue="ie="v iPIBASEtrue ;ut nam ajax_lookup" i#L76"v4.5.9L23"vsubm9it="ie="v id cL43">o 439ass=s943 ut nam ajax_lookup" i#L76"v4.5.9L43"vsubm9tt="ie="v id cL14">o 149sss=s944 t code=fmtoptioretalinp">ACPIBASEret = t code=fmtoptioi#L76"v_init_gpioalinp">ACPIBASEi#L76"v_init_gpio (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.9L50"vsubm9it="ie="v id cL45">o 459ass=s945 if (!t code=fmtoptioretalinp">ACPIBASEret )ut nam ajax_lookup" i#L76"v4.5.9L60"vsubm9it="ie="v id cL46">o 469ass=s946 < code=fmtoptiocell_addedalinp">ACPIBASEcell_added = t code=fmtoptiotrue="ie="v iPIBASEtrue ;ut nam ajax_lookup" i#L76"v4.5.9L73"vsubm9it="ie="v id cL47">o 479ass=s947 ut nam ajax_lookup" i#L76"v4.5.9L83"vsubm9it="ie="v id cL48">o 489ass=s948 tspan"ie="v icomment">/*ut nam ajax_lookup" i#L76"v4.5.9L93"vsubm9it="ie="v id cL49">o 499ass=s949 * We only care if at least one or none of the cells registered span>ut nam ajax_lookup" i#L76"v4.5.9L50"vsubm9it="ie="v id cL50">o 509ass=s950 * successfully. span>ut nam ajax_lookup" i#L76"v4.5.9L11"vsubm9it="ie="v id cL51">o 519ass=s951 */ut nam ajax_lookup" i#L76"v4.5.9L12"vsubm9it="ie="v id cL52">o 529ass=s952 if (!t code=fmtoptiocell_addedalinp">ACPIBASEcell_added ) {ut nam ajax_lookup" i#L76"v4.5.9L23"vsubm9it="ie="v id cL53">o 539ass=s953 t code=fmtoptiodev_warnalinp">ACPIBASEdev_warn (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev , tspan"ie="v istring">"No MFD cells added\n");ut nam ajax_lookup" i#L76"v4.5.9L43"vsubm9it="ie="v id cL54">o 549ass=s954 < code=fmtoptioi#L76"v_restore_config_spacealinp">ACPIBASEi#L76"v_restore_config_space (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.9L53"vsubm9it="ie="v id cL55">o 559="abo955 < code=fmtoptiopci_set_drvdataalinp">ACPIBASEpci_set_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptioNULLalinp">ACPIBASENULL );ut nam ajax_lookup" i#L76"v4.5.9L63"vsubm9it="ie="v id cL56">o 569ass=#956 return -< code=fmtoptioENODEValinp">ACPIBASEENODEV ;ut nam ajax_lookup" i#L76"v4.5.9L73"vsubm9it="ie="v id cL57">o 579ass=o957 }ut nam ajax_lookup" i#L76"v4.5.9L83"vsubm9it="ie="v id cL58">o 589ass=#958 ut nam ajax_lookup" i#L76"v4.5.9L93"vsubm9it="ie="v id cL59">o 599ass=#959 return 0;ut nam ajax_lookup" i#L76"v4.5.9L60"vsubm9it="ie="v id cL60">o 609ass=#960 }ut nam ajax_lookup" i#L76"v4.5.9L11"vsubm9it="ie="v id cL61">o 619ass=#961 ut nam ajax_lookup" i#L76"v4.5.9L12"vsubm9it="ie="v id cL62">o 629ass=#962 static void < code=fmtoptioi#L76"v_removealinp">ACPIBASEi#L76"v_remove (struct t code=fmtoptiopci_devalinp">ACPIBASEpci_dev *t code=fmtoptiodevalinp">ACPIBASEdev )ut nam ajax_lookup" i#L76"v4.5.9L23"vsubm9it="ie="v id cL63">o 639ass=#963 {ut nam ajax_lookup" i#L76"v4.5.9L43"vsubm9it="ie="v id cL64">o 649ass=#964 t code=fmtoptioup"_remove_devicesalinp">ACPIBASEup"_remove_devices (&t code=fmtoptiodevalinp">ACPIBASEdev ->t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.9L53"vsubm9it="ie="v id cL65">o 659ass=#965 t code=fmtoptioi#L76"v_restore_config_spacealinp">ACPIBASEi#L76"v_restore_config_space (t code=fmtoptiodevalinp">ACPIBASEdev );ut nam ajax_lookup" i#L76"v4.5.9L63"vsubm9tt="ie="v id cL16">o 169sss=#966 t code=fmtoptiopci_set_drvdataalinp">ACPIBASEpci_set_drvdata (t code=fmtoptiodevalinp">ACPIBASEdev , t code=fmtoptioNULLalinp">ACPIBASENULL );ut nam ajax_lookup" i#L76"v4.5.9L73"vsubm9it="ie="v id cL67">o 679ass=#967 }ut nam ajax_lookup" i#L76"v4.5.9L83"vsubm9it="ie="v id cL68">o 689ass=#968 ut nam ajax_lookup" i#L76"v4.5.9L93"vsubm9it="ie="v id cL69">o 699ass=#969 static struct t code=fmtoptiopci_dax_loalinp">ACPIBASEpci_dax_lo t code=fmtoptioi#L76"v_dax_loalinp">ACPIBASEi#L76"v_dax_lo = {ut nam ajax_lookup" i#L76"v4.5.9L70"vsubm9it="ie="v id cL70">o 709ass=#970 .t code=fmtoption">oalinp">ACPIBASEn">o = tspan"ie="v istring">"i#L76"v",ut nam ajax_lookup" i#L76"v4.5.9L11"vsubm9it="ie="v id cL71">o 719ass=#971 .t code=fmtoptioid_tablealinp">ACPIBASEid_table = t code=fmtoptioi#L76"v_idsalinp">ACPIBASEi#L76"v_ids ,ut nam ajax_lookup" i#L76"v4.5.9L12"vsubm9ing">": "DH89x9ass=#972 .t code=fmtoptioprobealinp">ACPIBASEprobe = t code=fmtoptioi#L76"v_probealinp">ACPIBASEi#L76"v_probe ,ut nam ajax_lookup" i#L76"v4.5.9L23"vsubm9it="ie="v id cL73">o 739ass=#973 .t code=fmtoptioremovealinp">ACPIBASEremove = t code=fmtoptioi#L76"v_removealinp">ACPIBASEi#L76"v_remove ,ut nam ajax_lookup" i#L76"v4.5.9L43"vsubm9it="ie="v id cL74">o 749ass=#974 };ut nam ajax_lookup" i#L76"v4.5.9L53"vsubm9it="ie="v id cL75">o 759="abo975 ut nam ajax_lookup" i#L76"v4.5.9L26"vsubm9it="ie="v id cL76">o 769ass=#976 static int t code=fmtoptio__initalinp">ACPIBASE__init t code=fmtoptioi#L76"v_initalinp">ACPIBASEi#L76"v_init (void)ut nam ajax_lookup" i#L76"v4.5.9L73"vsubm9tt="ie="v id cL17">o 179sss=#977 {ut nam ajax_lookup" i#L76"v4.5.9L83"vsubm9it="ie="v id cL78">o 789="abo978 return < code=fmtoptiopci_register_dax_loalinp">ACPIBASEpci_register_dax_lo (&t code=fmtoptioi#L76"v_dax_loalinp">ACPIBASEi#L76"v_dax_lo );ut nam ajax_lookup" i#L76"v4.5.9L93"vsubm9it="ie="v id cL79">o 799ass=#979 }ut nam ajax_lookup" i#L76"v4.5.9870"vsubm98t="ie="v id cL70">o 7098ss=#980 ut nam ajax_lookup" i#L76"v4.5.9811"vsubm98t="ie="v id cL71">o 7198ss=#981 static void < code=fmtoptio__exitalinp">ACPIBASE__exit t code=fmtoptioi#L76"v_exitalinp">ACPIBASEi#L76"v_exit (void)ut nam ajax_lookup" i#L76"v4.5.9812"vsubm98t="ie="v id cL72">o 7298ss=#982 {ut nam ajax_lookup" i#L76"v4.5.9823"vsubm98t="ie="v id cL73">o 7398ss=#983 < code=fmtoptiopci_unregister_dax_loalinp">ACPIBASEpci_unregister_dax_lo (&t code=fmtoptioi#L76"v_dax_loalinp">ACPIBASEi#L76"v_dax_lo );ut nam ajax_lookup" i#L76"v4.5.9843"vsubm98t="ie="v id cL74">o 7498ss=#984 }ut nam ajax_lookup" i#L76"v4.5.9853"vsubm98t="ie="v id cL75">o 7598"abo985 ut nam ajax_lookup" i#L76"v4.5.9826"vsubm98t="ie="v id cL76">o 7698ss=#986 < code=fmtoptiouodule_initalinp">ACPIBASEuodule_init (t code=fmtoptioi#L76"v_initalinp">ACPIBASEi#L76"v_init );ut nam ajax_lookup" i#L76"v4.5.9873"vsubm98t="ie="v id cL77">o 7798ss=#987 < code=fmtoptiouodule_exitalinp">ACPIBASEuodule_exit (t code=fmtoptioi#L76"v_exitalinp">ACPIBASEi#L76"v_exit );ut nam ajax_lookup" i#L76"v4.5.9883"vsubm9tt="ie="v id cL18">o 189s"abo988 ut nam ajax_lookup" i#L76"v4.5.9893"vsubm98t="ie="v id cL79">o 7998ss=#989 t code=fmtoptioMODULE_AUTHORalinp">ACPIBASEMODULE_AUTHOR (tspan"ie="v istring">"Aaron Sierra <asierra@xes-inc.com>");ut nam ajax_lookup" i#L76"v4.5.9970"vsubm99t="ie="v id cL70">o 7099ss=#990 t code=fmtoptioMODULE_DESCRIPTIONalinp">ACPIBASEMODULE_DESCRIPTION (tspan"ie="v istring">"LPC interface for Intel ICH");ut nam ajax_lookup" i#L76"v4.5.9911"vsubm99t="ie="v id cL71">o 7199ss=#991 t code=fmtoptioMODULE_LICENSE="ie="v iPIBASEMODULE_LICENSE (tspan"ie="v istring">"GPL");ut nam ajax_lookup" i#L76"v4.5.9912"vsubm99t="ie="v id cL72">o 7299ss=#992
The original LXR software by the t nam ahttp://sourceforge.net/projects/lxr">LXR community , this experimental _looion by t nam amailto:lxr@d ux.noSEixr@d ux.no .
ixr.d ux.no kindly hosted by t nam ahttp://www.redpill-d pro.noSERedpill L pro AS , provider of L ux consulting and operations services since 1995.