From owner-p4-projects@FreeBSD.ORG Fri Sep 8 04:46:34 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6F31816A4E0; Fri, 8 Sep 2006 04:46:34 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 32C1C16A4DD for ; Fri, 8 Sep 2006 04:46:34 +0000 (UTC) (envelope-from trhodes@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C56F743D4C for ; Fri, 8 Sep 2006 04:46:33 +0000 (GMT) (envelope-from trhodes@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k884kXxv021010 for ; Fri, 8 Sep 2006 04:46:33 GMT (envelope-from trhodes@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k884kWWW021007 for perforce@freebsd.org; Fri, 8 Sep 2006 04:46:32 GMT (envelope-from trhodes@freebsd.org) Date: Fri, 8 Sep 2006 04:46:32 GMT Message-Id: <200609080446.k884kWWW021007@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trhodes@freebsd.org using -f From: Tom Rhodes To: Perforce Change Reviews Cc: Subject: PERFORCE change 105832 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Sep 2006 04:46:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=105832 Change 105832 by trhodes@trhodes_local on 2006/09/08 04:45:55 Diff reduction to head, mostly whitespace, return __FBSDID to it's rightful place, add/remove lines and spaces. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/README#7 edit .. //depot/projects/usb/src/sys/dev/usb/dsbr100io.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/ehci.c#9 edit .. //depot/projects/usb/src/sys/dev/usb/ehci.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/if_aue.c#8 edit .. //depot/projects/usb/src/sys/dev/usb/if_auereg.h#6 edit .. //depot/projects/usb/src/sys/dev/usb/if_axe.c#7 edit .. //depot/projects/usb/src/sys/dev/usb/if_axereg.h#5 edit .. //depot/projects/usb/src/sys/dev/usb/if_cdce.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/if_cdcereg.h#5 edit .. //depot/projects/usb/src/sys/dev/usb/if_cue.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/if_cuereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/if_kue.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/if_kuefw.h#2 edit .. //depot/projects/usb/src/sys/dev/usb/if_kuereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/if_rue.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/if_ruereg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/if_udav.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/if_udavreg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/if_ural.c#9 edit .. //depot/projects/usb/src/sys/dev/usb/if_uralreg.h#5 edit .. //depot/projects/usb/src/sys/dev/usb/if_uralvar.h#5 edit .. //depot/projects/usb/src/sys/dev/usb/ohci.c#9 edit .. //depot/projects/usb/src/sys/dev/usb/ohci.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/sl811hs.c#4 edit .. //depot/projects/usb/src/sys/dev/usb/slhci_pccard.c#4 edit .. //depot/projects/usb/src/sys/dev/usb/ubsa.c#8 edit .. //depot/projects/usb/src/sys/dev/usb/ubser.c#4 edit .. //depot/projects/usb/src/sys/dev/usb/ucom.c#7 edit .. //depot/projects/usb/src/sys/dev/usb/ucomvar.h#5 edit .. //depot/projects/usb/src/sys/dev/usb/ucycom.c#5 edit .. //depot/projects/usb/src/sys/dev/usb/udbp.c#4 edit .. //depot/projects/usb/src/sys/dev/usb/ufm.c#5 edit .. //depot/projects/usb/src/sys/dev/usb/ufoma.c#5 edit .. //depot/projects/usb/src/sys/dev/usb/uftdi.c#5 edit .. //depot/projects/usb/src/sys/dev/usb/uftdireg.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/ugen.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/uhci.c#9 edit .. //depot/projects/usb/src/sys/dev/usb/uhci.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/uhid.c#9 edit .. //depot/projects/usb/src/sys/dev/usb/uhub.c#6 edit .. //depot/projects/usb/src/sys/dev/usb/ukbd.c#10 edit .. //depot/projects/usb/src/sys/dev/usb/ulpt.c#13 edit .. //depot/projects/usb/src/sys/dev/usb/umass.c#4 edit .. //depot/projects/usb/src/sys/dev/usb/umct.c#5 edit .. //depot/projects/usb/src/sys/dev/usb/umodem.c#10 edit .. //depot/projects/usb/src/sys/dev/usb/ums.c#10 edit .. //depot/projects/usb/src/sys/dev/usb/uplcom.c#9 edit .. //depot/projects/usb/src/sys/dev/usb/urio.c#4 edit .. //depot/projects/usb/src/sys/dev/usb/usb.c#7 edit .. //depot/projects/usb/src/sys/dev/usb/usb.h#5 edit .. //depot/projects/usb/src/sys/dev/usb/usb_cdc.h#2 edit .. //depot/projects/usb/src/sys/dev/usb/usb_cdev.c#7 edit .. //depot/projects/usb/src/sys/dev/usb/usb_hid.c#3 edit .. //depot/projects/usb/src/sys/dev/usb/usb_hid.h#4 edit .. //depot/projects/usb/src/sys/dev/usb/usb_if.m#3 edit .. //depot/projects/usb/src/sys/dev/usb/usb_port.h#8 edit .. //depot/projects/usb/src/sys/dev/usb/usb_quirks.c#4 edit .. //depot/projects/usb/src/sys/dev/usb/usb_quirks.h#3 edit .. //depot/projects/usb/src/sys/dev/usb/usb_rdesc.h#2 edit .. //depot/projects/usb/src/sys/dev/usb/usb_requests.c#3 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#15 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#21 edit .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#14 edit .. //depot/projects/usb/src/sys/dev/usb/usbdevs#2 edit .. //depot/projects/usb/src/sys/dev/usb/uscanner.c#5 edit .. //depot/projects/usb/src/sys/dev/usb/uvisor.c#8 edit .. //depot/projects/usb/src/sys/dev/usb/uvscom.c#10 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/README#7 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/dsbr100io.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ehci.c#9 (text+ko) ==== @@ -326,7 +326,7 @@ EHCI_CMD_PSE | EHCI_CMD_RS); - /* take over port ownership */ + /* Take over port ownership */ EOWRITE4(sc, EHCI_CONFIGFLAG, EHCI_CONF_CF); for(i = 0; i < 100; i++) @@ -605,11 +605,11 @@ { link = le32toh(link); printf("0x%08x", link); - if(link & EHCI_LINK_TERMINATE) + if (link & EHCI_LINK_TERMINATE) printf(""); else { printf("<"); - if(type) { + if (type) { switch (EHCI_LINK_TYPE(link)) { case EHCI_LINK_ITD: printf("ITD"); break; case EHCI_LINK_QH: printf("QH"); break; @@ -890,7 +890,6 @@ #endif return(sqh); } -/**/ #define EHCI_REMOVE_FS_TD(std,last) (last) = _ehci_remove_fs_td(std,last) static ehci_sitd_t * @@ -2781,8 +2780,7 @@ 1 /* # of configurations */ }; -static const -usb_device_qualifier_t ehci_odevd = +static usb_device_qualifier_t ehci_odevd = { sizeof(usb_device_qualifier_t), UDESC_DEVICE_QUALIFIER, /* type */ @@ -2795,8 +2793,7 @@ 0 }; -static const -usb_config_descriptor_t ehci_confd = +static usb_config_descriptor_t ehci_confd = { sizeof(usb_config_descriptor_t), UDESC_CONFIG, @@ -2810,8 +2807,7 @@ 0 /* max power */ }; -static const -usb_interface_descriptor_t ehci_ifcd = +static usb_interface_descriptor_t ehci_ifcd = { sizeof(usb_interface_descriptor_t), UDESC_INTERFACE, @@ -2824,8 +2820,7 @@ 0 }; -static const -usb_endpoint_descriptor_t ehci_endpd = +static usb_endpoint_descriptor_t ehci_endpd = { sizeof(usb_endpoint_descriptor_t), UDESC_ENDPOINT, @@ -2835,8 +2830,7 @@ 255 }; -static const -usb_hub_descriptor_t ehci_hubd = +static usb_hub_descriptor_t ehci_hubd = { 0, /* dynamic length */ UDESC_HUB, ==== //depot/projects/usb/src/sys/dev/usb/ehci.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#6 (text+ko) ==== @@ -49,9 +49,12 @@ * sharing of code between *BSD's */ +#include +__FBSDID("$FreeBSD: src/sys/dev/usb/ehci_pci.c,v 1.23 2006/09/07 00:06:41 imp Ex +p $"); + #include "opt_bus.h" -#include #include #include #include @@ -67,8 +70,6 @@ #include #include -__FBSDID("$FreeBSD: src/sys/dev/usb2/ehci_pci.c,v 1.14 2004/08/02 15:37:34 iedowse Exp $"); - #define PCI_EHCI_VENDORID_ACERLABS 0x10b9 #define PCI_EHCI_VENDORID_AMD 0x1022 #define PCI_EHCI_VENDORID_APPLE 0x106b @@ -93,10 +94,8 @@ int err; err = bus_generic_suspend(self); - if(err) - { + if (err) return (err); - } ehci_suspend(sc); return 0; } @@ -110,6 +109,7 @@ ehci_resume(sc); bus_generic_resume(self); + return 0; } @@ -120,10 +120,8 @@ int err; err = bus_generic_shutdown(self); - if(err) - { + if (err) return (err); - } ehci_shutdown(sc); ehci_pci_givecontroller(self); @@ -146,7 +144,8 @@ { return ("EHCI (generic) USB 2.0 controller"); } - return NULL; + + return NULL; /* dunno */ } static int @@ -154,13 +153,10 @@ { const char *desc = ehci_pci_match(self); - if(desc) - { + if (desc) { device_set_desc(self, desc); return 0; - } - else - { + } else { return ENXIO; } } @@ -285,11 +281,9 @@ sprintf(sc->sc_vendor, "VIA"); break; default: - if(bootverbose) - { + if (bootverbose) device_printf(self, "(New EHCI DeviceId=0x%08x)\n", - pci_get_devid(self)); - } + pci_get_devid(self)); sprintf(sc->sc_vendor, "(0x%04x)", pci_get_vendor(self)); } @@ -304,13 +298,11 @@ ehci_pci_takecontroller(self); err = ehci_init(sc); - if(!err) - { + if (!err) { err = device_probe_and_attach(sc->sc_bus.bdev); } - if(err) - { + if (err) { device_printf(self, "USB init failed err=%d\n", err); goto error; } @@ -351,31 +343,25 @@ int err = bus_teardown_intr(self, sc->irq_res, sc->ih); - if(err) - { + if (err) /* XXX or should we panic? */ device_printf(self, "Could not tear down irq, %d\n", - err); - } + err); sc->ih = NULL; } - if(sc->irq_res) - { + if (sc->irq_res) { bus_release_resource(self, SYS_RES_IRQ, 0, sc->irq_res); sc->irq_res = NULL; } - if(sc->io_res) - { + if (sc->io_res) { bus_release_resource(self, SYS_RES_MEMORY, PCI_CBMEM, - sc->io_res); + sc->io_res); sc->io_res = NULL; } - if(sc->sc_bus.dma_tag) - { + if (sc->sc_bus.dma_tag) { usbd_dma_tag_free(sc->sc_bus.dma_tag); } - mtx_destroy(&sc->sc_bus.mtx); usbd_mem_free(sc, sizeof(*sc)); @@ -393,7 +379,7 @@ cparams = EREAD4(sc, EHCI_HCCPARAMS); - /* Synchronize with the BIOS if it owns the controller. */ + /* Synchronise with the BIOS if it owns the controller. */ for (eecp = EHCI_HCC_EECP(cparams); eecp != 0; eecp = EHCI_EECP_NEXT(eec)) { ==== //depot/projects/usb/src/sys/dev/usb/if_aue.c#8 (text+ko) ==== @@ -28,9 +28,11 @@ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. - * */ +#include +__FBSDID("$FreeBSD: src/sys/dev/usb/if_aue.c,v 1.99 2006/09/07 00:06:41 imp Exp $"); + /* * ADMtek AN986 Pegasus and AN8511 Pegasus II USB to ethernet driver. * Datasheet is available from http://www.admtek.com.tw. @@ -65,7 +67,6 @@ * be called from within the config thread function ! */ -#include #include #include #include @@ -101,8 +102,6 @@ /* "device miibus" required. See GENERIC if you get errors here. */ #include "miibus_if.h" -__FBSDID("$FreeBSD: src/sys/dev/usb/if_aue.c,v 1.96 2006/02/14 12:44:55 glebius Exp $"); - MODULE_DEPEND(aue, usb, 1, 1, 1); MODULE_DEPEND(aue, ether, 1, 1, 1); MODULE_DEPEND(aue, miibus, 1, 1, 1); @@ -190,8 +189,6 @@ }; #define aue_lookup(v, p) ((const struct aue_type *)usb_lookup(aue_devs, v, p)) -/* prototypes */ - static device_probe_t aue_probe; static device_attach_t aue_attach; static device_detach_t aue_detach; ==== //depot/projects/usb/src/sys/dev/usb/if_auereg.h#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_axe.c#7 (text+ko) ==== @@ -30,6 +30,9 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ +#include +__FBSDID("$FreeBSD: src/sys/dev/usb/if_axe.c,v 1.40 2006/09/07 00:06:41 imp Exp $"); + /* * ASIX Electronics AX88172 USB 2.0 ethernet driver. Used in the * LinkSys USB200M and various other adapters. @@ -105,8 +108,6 @@ #include -__FBSDID("$FreeBSD: src/sys/dev/usb/if_axe.c,v 1.36 2006/02/14 12:44:55 glebius Exp $"); - MODULE_DEPEND(axe, usb, 1, 1, 1); MODULE_DEPEND(axe, ether, 1, 1, 1); MODULE_DEPEND(axe, miibus, 1, 1, 1); @@ -141,8 +142,6 @@ { 0, 0 } }; -/* prototypes */ - static device_probe_t axe_probe; static device_attach_t axe_attach; static device_detach_t axe_detach; ==== //depot/projects/usb/src/sys/dev/usb/if_axereg.h#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_cdce.c#6 (text+ko) ==== @@ -40,12 +40,15 @@ */ #include +__FBSDID("$FreeBSD: src/sys/dev/usb/if_cdce.c,v 1.14 2006/09/07 00:06:41 imp Exp $"); + #include #include #include #include #include #include +#include #include #include @@ -66,10 +69,6 @@ #include -__FBSDID("$FreeBSD: src/sys/dev/usb/if_cdce.c,v 1.12 2005/12/29 17:29:18 netchild Exp $"); - -/* prototypes */ - static device_probe_t cdce_probe; static device_attach_t cdce_attach; static device_detach_t cdce_detach; @@ -435,7 +434,7 @@ mtx_destroy(&(sc->sc_mtx)); - return 0; + return (0); } static void @@ -799,6 +798,7 @@ static int cdce_ifmedia_upd_cb(struct ifnet *ifp) { + /* no-op, cdce has only 1 possible media type */ return 0; } @@ -806,7 +806,7 @@ static void cdce_ifmedia_sts_cb(struct ifnet * const ifp, struct ifmediareq *req) { + req->ifm_status = IFM_AVALID | IFM_ACTIVE; req->ifm_active = IFM_ETHER | IFM_10_T; - return; } ==== //depot/projects/usb/src/sys/dev/usb/if_cdcereg.h#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_cue.c#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_cuereg.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_kue.c#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_kuefw.h#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_kuereg.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_rue.c#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_ruereg.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_udav.c#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_udavreg.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_ural.c#9 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_uralreg.h#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/if_uralvar.h#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ohci.c#9 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ohci.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/sl811hs.c#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/slhci_pccard.c#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ubsa.c#8 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ubser.c#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ucom.c#7 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ucomvar.h#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ucycom.c#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/udbp.c#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ufm.c#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ufoma.c#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uftdi.c#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uftdireg.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ugen.c#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uhci.c#9 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uhci.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uhid.c#9 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uhub.c#6 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ukbd.c#10 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ulpt.c#13 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/umass.c#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/umct.c#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/umodem.c#10 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/ums.c#10 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uplcom.c#9 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/urio.c#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb.c#7 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb.h#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_cdc.h#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_cdev.c#7 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_hid.c#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_hid.h#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_if.m#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_port.h#8 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_quirks.c#4 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_quirks.h#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_rdesc.h#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_requests.c#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.c#15 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.h#21 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#14 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/usbdevs#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uscanner.c#5 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uvisor.c#8 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb/uvscom.c#10 (text+ko) ====