| /openbsd-src/sys/dev/fdt/ |
| H A D | com_fdt.c | 98 return (OF_is_compatible(faa->fa_node, "brcm,bcm2835-aux-uart") || in com_fdt_match() 99 OF_is_compatible(faa->fa_node, "marvell,armada-38x-uart") || in com_fdt_match() 100 OF_is_compatible(faa->fa_node, "mediatek,mt6577-uart") || in com_fdt_match() 101 OF_is_compatible(faa->fa_node, "ns16550a") || in com_fdt_match() 102 OF_is_compatible(faa->fa_node, "snps,dw-apb-uart") || in com_fdt_match() 103 OF_is_compatible(faa->fa_node, "ti,omap3-uart") || in com_fdt_match() 104 OF_is_compatible(faa->fa_node, "ti,omap4-uart")); in com_fdt_match() 118 clock_enable(faa->fa_node, NULL); in com_fdt_attach() 119 reset_deassert_all(faa->fa_node); in com_fdt_attach() 126 freq = OF_getpropint(faa->fa_node, "clock-frequency", 0); in com_fdt_attach() [all …]
|
| H A D | syscon.c | 66 return OF_is_compatible(faa->fa_node, "syscon") || in syscon_match() 67 OF_is_compatible(faa->fa_node, "syscon-reboot") || in syscon_match() 68 OF_is_compatible(faa->fa_node, "syscon-poweroff"); in syscon_match() 78 OF_getprop(faa->fa_node, "name", name, sizeof(name)); in syscon_attach() 81 if (OF_is_compatible(faa->fa_node, "syscon")) { in syscon_attach() 95 regmap_register(faa->fa_node, sc->sc_iot, sc->sc_ioh, in syscon_attach() 99 if (OF_is_compatible(faa->fa_node, "simple-mfd")) in syscon_attach() 104 if (OF_is_compatible(faa->fa_node, "syscon-reboot") || in syscon_attach() 105 OF_is_compatible(faa->fa_node, "syscon-poweroff")) { in syscon_attach() 106 sc->sc_regmap = OF_getpropint(faa->fa_node, "regmap", 0); in syscon_attach() [all …]
|
| H A D | sdhc_fdt.c | 129 return (OF_is_compatible(faa->fa_node, "arasan,sdhci-5.1") || in sdhc_fdt_match() 130 OF_is_compatible(faa->fa_node, "arasan,sdhci-8.9a") || in sdhc_fdt_match() 131 OF_is_compatible(faa->fa_node, "brcm,bcm2711-emmc2") || in sdhc_fdt_match() 132 OF_is_compatible(faa->fa_node, "brcm,bcm2835-sdhci") || in sdhc_fdt_match() 133 OF_is_compatible(faa->fa_node, "marvell,armada-3700-sdhci") || in sdhc_fdt_match() 134 OF_is_compatible(faa->fa_node, "marvell,armada-ap806-sdhci") || in sdhc_fdt_match() 135 OF_is_compatible(faa->fa_node, "marvell,armada-cp110-sdhci")); in sdhc_fdt_match() 155 sc->sc_node = faa->fa_node; in sdhc_fdt_attach() 163 pinctrl_byname(faa->fa_node, "default"); in sdhc_fdt_attach() 165 clock_set_assigned(faa->fa_node); in sdhc_fdt_attach() [all...] |
| H A D | if_dwqe_fdt.c | 90 return OF_is_compatible(faa->fa_node, "snps,dwmac-4.20a") || in dwqe_fdt_match() 91 OF_is_compatible(faa->fa_node, "snps,dwmac-5.20"); in dwqe_fdt_match() 106 sc->sc_node = faa->fa_node; in dwqe_fdt_attach() 134 OF_getprop(faa->fa_node, "phy-mode", phy_mode, sizeof(phy_mode)); in dwqe_fdt_attach() 149 phy = OF_getpropint(faa->fa_node, "phy", 0); in dwqe_fdt_attach() 151 phy = OF_getpropint(faa->fa_node, "phy-handle", 0); in dwqe_fdt_attach() 159 pinctrl_byname(faa->fa_node, "default"); in dwqe_fdt_attach() 162 clock_set_assigned(faa->fa_node); in dwqe_fdt_attach() 163 clock_enable(faa->fa_node, "stmmaceth"); in dwqe_fdt_attach() 164 clock_enable(faa->fa_node, "pclk"); in dwqe_fdt_attach() [all …]
|
| H A D | sxisid.c | 71 return (OF_is_compatible(faa->fa_node, "allwinner,sun4i-a10-sid") || in sxisid_match() 72 OF_is_compatible(faa->fa_node, "allwinner,sun7i-a20-sid") || in sxisid_match() 73 OF_is_compatible(faa->fa_node, "allwinner,sun8i-a83t-sid") || in sxisid_match() 74 OF_is_compatible(faa->fa_node, "allwinner,sun8i-h3-sid") || in sxisid_match() 75 OF_is_compatible(faa->fa_node, "allwinner,sun50i-a64-sid") || in sxisid_match() 76 OF_is_compatible(faa->fa_node, "allwinner,sun50i-h5-sid") || in sxisid_match() 77 OF_is_compatible(faa->fa_node, "allwinner,sun50i-h6-sid")); in sxisid_match() 102 if (OF_is_compatible(faa->fa_node, "allwinner,sun4i-a10-sid")) in sxisid_attach() 104 else if (OF_is_compatible(faa->fa_node, "allwinner,sun8i-a83t-sid") || in sxisid_attach() 105 OF_is_compatible(faa->fa_node, "allwinner,sun8i-h3-sid") || in sxisid_attach() [all …]
|
| H A D | sxirtc.c | 85 return (OF_is_compatible(faa->fa_node, "allwinner,sun4i-a10-rtc") || in sxirtc_match() 86 OF_is_compatible(faa->fa_node, "allwinner,sun7i-a20-rtc") || in sxirtc_match() 87 OF_is_compatible(faa->fa_node, "allwinner,sun6i-a31-rtc") || in sxirtc_match() 88 OF_is_compatible(faa->fa_node, "allwinner,sun8i-h3-rtc") || in sxirtc_match() 89 OF_is_compatible(faa->fa_node, "allwinner,sun50i-h5-rtc") || in sxirtc_match() 90 OF_is_compatible(faa->fa_node, "allwinner,sun50i-h616-rtc") || in sxirtc_match() 91 OF_is_compatible(faa->fa_node, "allwinner,sun50i-r329-rtc")); in sxirtc_match() 113 if (OF_is_compatible(faa->fa_node, "allwinner,sun6i-a31-rtc") || in sxirtc_attach() 114 OF_is_compatible(faa->fa_node, "allwinner,sun8i-h3-rtc") || in sxirtc_attach() 115 OF_is_compatible(faa->fa_node, "allwinner,sun50i-h5-rtc") || in sxirtc_attach() [all …]
|
| H A D | imxgpc.c | 59 return (OF_is_compatible(faa->fa_node, "fsl,imx6q-gpc") || in imxgpc_match() 60 OF_is_compatible(faa->fa_node, "fsl,imx7d-gpc") || in imxgpc_match() 61 OF_is_compatible(faa->fa_node, "fsl,imx8mm-gpc") || in imxgpc_match() 62 OF_is_compatible(faa->fa_node, "fsl,imx8mp-gpc") || in imxgpc_match() 63 OF_is_compatible(faa->fa_node, "fsl,imx8mq-gpc")); in imxgpc_match() 73 sc->sc_ic.ic_node = faa->fa_node; in imxgpc_attach() 82 if (OF_is_compatible(faa->fa_node, "fsl,imx8mm-gpc") || in imxgpc_attach() 83 OF_is_compatible(faa->fa_node, "fsl,imx8mp-gpc") || in imxgpc_attach() 84 OF_is_compatible(faa->fa_node, "fsl,imx8mq-gpc")) { in imxgpc_attach() 85 list = OF_child(faa->fa_node); in imxgpc_attach()
|
| H A D | imxiomuxc.c | 67 return (OF_is_compatible(faa->fa_node, "fsl,imx6q-iomuxc") || in imxiomuxc_match() 68 OF_is_compatible(faa->fa_node, "fsl,imx6dl-iomuxc") || in imxiomuxc_match() 69 OF_is_compatible(faa->fa_node, "fsl,imx6sl-iomuxc") || in imxiomuxc_match() 70 OF_is_compatible(faa->fa_node, "fsl,imx6sx-iomuxc") || in imxiomuxc_match() 71 OF_is_compatible(faa->fa_node, "fsl,imx6ul-iomuxc") || in imxiomuxc_match() 72 OF_is_compatible(faa->fa_node, "fsl,imx7d-iomuxc") || in imxiomuxc_match() 73 OF_is_compatible(faa->fa_node, "fsl,imx8mm-iomuxc") || in imxiomuxc_match() 74 OF_is_compatible(faa->fa_node, "fsl,imx8mp-iomuxc") || in imxiomuxc_match() 75 OF_is_compatible(faa->fa_node, "fsl,imx8mq-iomuxc")); in imxiomuxc_match() 91 pinctrl_register(faa->fa_node, imxiomuxc_pinctrl, sc); in imxiomuxc_attach() [all …]
|
| H A D | ahci_fdt.c | 57 return OF_is_compatible(faa->fa_node, "generic-ahci") || in ahci_fdt_match() 58 OF_is_compatible(faa->fa_node, "cavium,octeon-7130-ahci") || in ahci_fdt_match() 59 OF_is_compatible(faa->fa_node, "marvell,armada-3700-ahci") || in ahci_fdt_match() 60 OF_is_compatible(faa->fa_node, "snps,dwc-ahci"); in ahci_fdt_match() 81 sc->sc_ih = fdt_intr_establish(faa->fa_node, IPL_BIO, in ahci_fdt_attach() 88 clock_set_assigned(faa->fa_node); in ahci_fdt_attach() 89 clock_enable_all(faa->fa_node); in ahci_fdt_attach() 90 phy_enable(faa->fa_node, "sata-phy"); in ahci_fdt_attach() 93 pi = OF_getpropint(faa->fa_node, "ports-implemented", 0x0); in ahci_fdt_attach()
|
| H A D | pluart_fdt.c | 59 return OF_is_compatible(faa->fa_node, "arm,pl011"); in pluart_fdt_match() 74 if (OF_is_compatible(faa->fa_node, "arm,sbsa-uart")) { in pluart_fdt_attach() 77 clock_enable_all(faa->fa_node); in pluart_fdt_attach() 78 sc->sc_clkfreq = clock_get_frequency(faa->fa_node, "uartclk"); in pluart_fdt_attach() 81 periphid = OF_getpropint(faa->fa_node, "arm,primecell-periphid", 0); in pluart_fdt_attach() 85 sc->sc_irq = fdt_intr_establish(faa->fa_node, IPL_TTY, pluart_intr, in pluart_fdt_attach() 93 pinctrl_byname(faa->fa_node, "default"); in pluart_fdt_attach() 95 pluart_attach_common(sc, stdout_node == faa->fa_node); in pluart_fdt_attach()
|
| H A D | rkrng.c | 126 return OF_is_compatible(faa->fa_node, "rockchip,cryptov1-rng") || in rkrng_match() 127 OF_is_compatible(faa->fa_node, "rockchip,rk3288-crypto") || in rkrng_match() 128 OF_is_compatible(faa->fa_node, "rockchip,rk3328-crypto") || in rkrng_match() 129 OF_is_compatible(faa->fa_node, "rockchip,rk3399-crypto") || in rkrng_match() 130 OF_is_compatible(faa->fa_node, "rockchip,cryptov2-rng"); in rkrng_match() 139 if (OF_is_compatible(faa->fa_node, "rockchip,cryptov1-rng") || in rkrng_attach() 140 OF_is_compatible(faa->fa_node, "rockchip,rk3288-crypto") || in rkrng_attach() 141 OF_is_compatible(faa->fa_node, "rockchip,rk3328-crypto") || in rkrng_attach() 142 OF_is_compatible(faa->fa_node, "rockchip,rk3399-crypto")) in rkrng_attach() 144 else if (OF_is_compatible(faa->fa_node, "rockchip,cryptov2-rng")) in rkrng_attach() [all …]
|
| H A D | rkgrf.c | 54 return (OF_is_compatible(faa->fa_node, "rockchip,rk3288-grf") || in rkgrf_match() 55 OF_is_compatible(faa->fa_node, "rockchip,rk3288-pmu") || in rkgrf_match() 56 OF_is_compatible(faa->fa_node, "rockchip,rk3288-sgrf") || in rkgrf_match() 57 OF_is_compatible(faa->fa_node, "rockchip,rk3308-grf") || in rkgrf_match() 58 OF_is_compatible(faa->fa_node, "rockchip,rk3399-grf") || in rkgrf_match() 59 OF_is_compatible(faa->fa_node, "rockchip,rk3399-pmugrf")); in rkgrf_match() 81 regmap_register(faa->fa_node, sc->sc_iot, sc->sc_ioh, in rkgrf_attach()
|
| H A D | simplepanel.c | 77 return (OF_is_compatible(faa->fa_node, "simple-panel") || in simplepanel_match() 78 OF_is_compatible(faa->fa_node, "boe,nv140fhmn49")); in simplepanel_match() 91 pinctrl_byname(faa->fa_node, "default"); in simplepanel_attach() 93 power_supply = OF_getpropint(faa->fa_node, "power-supply", 0); in simplepanel_attach() 97 len = OF_getproplen(faa->fa_node, "enable-gpios"); in simplepanel_attach() 100 OF_getpropintarray(faa->fa_node, "enable-gpios", gpios, len); in simplepanel_attach() 106 if (OF_is_compatible(faa->fa_node, "boe,nv140fhmn49")) { in simplepanel_attach() 117 sc->sc_ports.dp_node = faa->fa_node; in simplepanel_attach()
|
| H A D | imxehci.c | 113 return (OF_is_compatible(faa->fa_node, "fsl,imx27-usb") || in imxehci_match() 114 OF_is_compatible(faa->fa_node, "fsl,imx7d-usb")); in imxehci_match() 133 if (OF_getpropintarray(faa->fa_node, "phys", in imxehci_attach() 135 if (OF_getpropintarray(faa->fa_node, "fsl,usbphy", in imxehci_attach() 140 if (OF_getpropintarray(faa->fa_node, "fsl,usbmisc", in imxehci_attach() 178 pinctrl_byname(faa->fa_node, "default"); in imxehci_attach() 179 power_domain_enable(faa->fa_node); in imxehci_attach() 180 clock_set_assigned(faa->fa_node); in imxehci_attach() 181 clock_enable(faa->fa_node, NULL); in imxehci_attach() 199 if (OF_getproplen(faa->fa_node, "disabl in imxehci_attach() [all...] |
| H A D | rkdwhdmi.c | 117 return OF_is_compatible(faa->fa_node, "rockchip,rk3399-dw-hdmi"); in rkdwhdmi_match() 135 clock_enable(faa->fa_node, "iahb"); in rkdwhdmi_attach() 136 clock_enable(faa->fa_node, "isfr"); in rkdwhdmi_attach() 137 clock_enable(faa->fa_node, "vpll"); in rkdwhdmi_attach() 138 clock_enable(faa->fa_node, "grf"); in rkdwhdmi_attach() 139 clock_enable(faa->fa_node, "cec"); in rkdwhdmi_attach() 142 OF_getpropint(faa->fa_node, "reg-io-width", 4); in rkdwhdmi_attach() 151 sc->sc_node = faa->fa_node; in rkdwhdmi_attach() 152 sc->sc_clk_vpll = OF_getindex(faa->fa_node, "vpll", "clock-names"); in rkdwhdmi_attach() 154 grf = OF_getpropint(faa->fa_node, "rockchi in rkdwhdmi_attach() [all...] |
| H A D | psci.c | 85 return OF_is_compatible(faa->fa_node, "arm,psci") || in psci_match() 86 OF_is_compatible(faa->fa_node, "arm,psci-0.2") || in psci_match() 87 OF_is_compatible(faa->fa_node, "arm,psci-1.0"); in psci_match() 98 if (OF_getprop(faa->fa_node, "method", method, sizeof(method))) { in psci_attach() 113 if (OF_is_compatible(faa->fa_node, "arm,psci-0.2") || in psci_attach() 114 OF_is_compatible(faa->fa_node, "arm,psci-1.0")) { in psci_attach() 121 } else if (OF_is_compatible(faa->fa_node, "arm,psci")) { in psci_attach() 122 sc->sc_system_off = OF_getpropint(faa->fa_node, in psci_attach() 124 sc->sc_system_reset = OF_getpropint(faa->fa_node, in psci_attach() 126 sc->sc_cpu_on = OF_getpropint(faa->fa_node, "cpu_on", 0); in psci_attach() [all …]
|
| H A D | mvpinctrl.c | 143 if (OF_is_compatible(faa->fa_node, mvpinctrl_pins[i].compat)) in mvpinctrl_match() 147 if (OF_is_compatible(faa->fa_node, "marvell,armada3710-nb-pinctrl") || in mvpinctrl_match() 148 OF_is_compatible(faa->fa_node, "marvell,armada3710-sb-pinctrl")) in mvpinctrl_match() 169 regmap_register(faa->fa_node, sc->sc_iot, sc->sc_ioh, in mvpinctrl_attach() 171 sc->sc_rm = regmap_bynode(faa->fa_node); in mvpinctrl_attach() 174 sc->sc_rm = regmap_bynode(OF_parent(faa->fa_node)); in mvpinctrl_attach() 184 if (OF_is_compatible(faa->fa_node, "marvell,armada3710-nb-pinctrl")) { in mvpinctrl_attach() 185 for (node = OF_child(faa->fa_node); node; node = OF_peer(node)) { in mvpinctrl_attach() 196 if (OF_is_compatible(faa->fa_node, "marvell,armada3710-nb-pinctrl") || in mvpinctrl_attach() 197 OF_is_compatible(faa->fa_node, "marvell,armada3710-sb-pinctrl")) { in mvpinctrl_attach() [all …]
|
| H A D | amldwusb.c | 139 return OF_is_compatible(faa->fa_node, "amlogic,meson-g12a-usb-ctrl"); in amldwusb_match() 162 power_domain_enable(faa->fa_node); in amldwusb_attach() 163 clock_enable_all(faa->fa_node); in amldwusb_attach() 165 reset_assert_all(faa->fa_node); in amldwusb_attach() 167 reset_deassert_all(faa->fa_node); in amldwusb_attach() 169 vbus_supply = OF_getpropint(faa->fa_node, "vbus-supply", 0); in amldwusb_attach() 188 phy_enable(faa->fa_node, "usb2-phy0"); in amldwusb_attach() 189 phy_enable(faa->fa_node, "usb2-phy1"); in amldwusb_attach() 192 if (OF_getindex(faa->fa_node, "usb3-phy0", "phy-names") >= 0) { in amldwusb_attach() 194 phy_enable(faa->fa_node, "usb3-phy0"); in amldwusb_attach()
|
| H A D | gpiorestart.c | 58 return OF_is_compatible(faa->fa_node, "gpio-restart"); in gpiorestart_match() 68 len = OF_getproplen(faa->fa_node, "gpios"); in gpiorestart_attach() 75 OF_getpropintarray(faa->fa_node, "gpios", sc->sc_gpio, len); in gpiorestart_attach() 78 OF_getpropint(faa->fa_node, "active-delay", 100) * 1000; in gpiorestart_attach() 80 OF_getpropint(faa->fa_node, "inactive-delay", 100) * 1000; in gpiorestart_attach() 82 OF_getpropint(faa->fa_node, "wait-delay", 3000) * 1000; in gpiorestart_attach()
|
| H A D | if_bse_fdt.c | 48 return (OF_is_compatible(faa->fa_node, "brcm,bcm2711-genet-v5") || in bse_fdt_match() 49 OF_is_compatible(faa->fa_node, "brcm,genet-v5")); in bse_fdt_match() 75 sc->sc_ih = fdt_intr_establish(faa->fa_node, IPL_NET, in bse_fdt_attach() 82 if (OF_getprop(faa->fa_node, "local-mac-address", in bse_fdt_attach() 86 OF_getprop(faa->fa_node, "phy-mode", phy_mode, sizeof(phy_mode)); in bse_fdt_attach() 97 phy = OF_getpropint(faa->fa_node, "phy-handle", 0); in bse_fdt_attach()
|
| H A D | sxitwi.c | 173 return (OF_is_compatible(faa->fa_node, "allwinner,sun4i-a10-i2c") || in sxitwi_match() 174 OF_is_compatible(faa->fa_node, "allwinner,sun6i-a31-i2c") || in sxitwi_match() 175 OF_is_compatible(faa->fa_node, "allwinner,sun7i-a20-i2c") || in sxitwi_match() 176 OF_is_compatible(faa->fa_node, "marvell,mv78230-i2c") || in sxitwi_match() 177 OF_is_compatible(faa->fa_node, "marvell,mv78230-a0-i2c")); in sxitwi_match() 203 if (OF_is_compatible(faa->fa_node, "marvell,mv78230-i2c") || in sxitwi_attach() 204 OF_is_compatible(faa->fa_node, "marvell,mv78230-a0-i2c")) { in sxitwi_attach() 221 parent_freq = clock_get_frequency(faa->fa_node, NULL); in sxitwi_attach() 222 freq = OF_getpropint(faa->fa_node, "clock-frequency", 100000); in sxitwi_attach() 237 sc->sc_node = faa->fa_node; in sxitwi_attach() [all …]
|
| H A D | amlpwrc.c | 85 return (OF_is_compatible(faa->fa_node, "amlogic,meson-g12a-pwrc") || in amlpwrc_match() 86 OF_is_compatible(faa->fa_node, "amlogic,meson-sm1-pwrc")); in amlpwrc_match() 99 sc->sc_rm_hhi = regmap_bynode(OF_parent(faa->fa_node)); in amlpwrc_attach() 100 sc->sc_ao = OF_getpropint(faa->fa_node, "amlogic,ao-sysctrl", 0); in amlpwrc_attach() 106 sc->sc_node = faa->fa_node; in amlpwrc_attach() 109 sc->sc_pd.pd_node = faa->fa_node; in amlpwrc_attach() 111 if (OF_is_compatible(faa->fa_node, "amlogic,meson-g12a-pwrc")) in amlpwrc_attach() 113 else if (OF_is_compatible(faa->fa_node, "amlogic,meson-sm1-pwrc")) in amlpwrc_attach()
|
| H A D | rkanxdp.c | 94 return OF_is_compatible(faa->fa_node, "rockchip,rk3399-edp"); in rkanxdp_match() 109 pinctrl_byname(faa->fa_node, "default"); in rkanxdp_attach() 111 reset_deassert(faa->fa_node, "dp"); in rkanxdp_attach() 113 clock_enable(faa->fa_node, "pclk"); in rkanxdp_attach() 114 clock_enable(faa->fa_node, "dp"); in rkanxdp_attach() 115 clock_enable(faa->fa_node, "grf"); in rkanxdp_attach() 124 grf = OF_getpropint(faa->fa_node, "rockchip,grf", 0); in rkanxdp_attach() 141 sc->sc_ports.dp_node = faa->fa_node; in rkanxdp_attach()
|
| /openbsd-src/sys/arch/arm64/dev/ |
| H A D | smmu_fdt.c | 56 return (OF_is_compatible(faa->fa_node, "arm,smmu-v2") || in smmu_fdt_match() 57 OF_is_compatible(faa->fa_node, "arm,mmu-500")); in smmu_fdt_match() 82 if (OF_is_compatible(faa->fa_node, "arm,mmu-500")) in smmu_fdt_attach() 84 if (OF_is_compatible(faa->fa_node, "marvell,ap806-smmu-500")) in smmu_fdt_attach() 86 if (OF_is_compatible(faa->fa_node, "qcom,sc8280xp-smmu-500") || in smmu_fdt_attach() 87 OF_is_compatible(faa->fa_node, "qcom,x1e80100-smmu-500")) in smmu_fdt_attach() 89 if (OF_getproplen(faa->fa_node, "dma-coherent") == 0) in smmu_fdt_attach() 100 ngirq = OF_getpropint(faa->fa_node, "#global-interrupts", 1); in smmu_fdt_attach() 102 fdt_intr_establish_idx(faa->fa_node, i, IPL_TTY, in smmu_fdt_attach() 110 if (fdt_intr_establish_idx(faa->fa_node, i, IPL_TTY, in smmu_fdt_attach() [all …]
|
| /openbsd-src/sys/arch/armv7/omap/ |
| H A D | omsysc.c | 57 node = OF_child(faa->fa_node); in omsysc_match() 63 return OF_is_compatible(faa->fa_node, "ti,sysc"); in omsysc_match() 72 if (OF_getproplen(faa->fa_node, "ti,hwmods") < 0 && in omsysc_attach() 73 OF_is_compatible(faa->fa_node, "ti,sysc-omap2")) in omsysc_attach() 74 clock_enable(faa->fa_node, "fck"); in omsysc_attach()
|