Index: pucdata.c =================================================================== --- pucdata.c (revision 185784) +++ pucdata.c (working copy) @@ -1145,6 +1145,10 @@ case PUC_CFG_GET_TYPE: *res = PUC_TYPE_SERIAL; return (0); + case PUC_CFG_INIT_PORT: + bus_write_1((struct res *)res, 1 /* IER */, + (port >= 2) ? 0x10 : 0); + return (0); default: break; } Index: puc_cfg.c =================================================================== --- puc_cfg.c (revision 185784) +++ puc_cfg.c (working copy) @@ -166,6 +166,8 @@ } *r = PUC_TYPE_SERIAL; return (0); + case PUC_CFG_INIT_PORT: + return (0); case PUC_CFG_SETUP: *r = ENXIO; return (0); Index: puc.c =================================================================== --- puc.c (revision 185784) +++ puc.c (working copy) @@ -296,6 +296,9 @@ goto fail; port->p_rclk = res; + (void)puc_config(sc, PUC_CFG_INIT_PORT, idx, + (void *)port->p_rres); + port->p_dev = device_add_child(dev, NULL, -1); if (port->p_dev != NULL) device_set_ivars(port->p_dev, (void *)port); Index: puc_cfg.h =================================================================== --- puc_cfg.h (revision 185784) +++ puc_cfg.h (working copy) @@ -62,6 +62,7 @@ PUC_CFG_GET_OFS, PUC_CFG_GET_RID, PUC_CFG_GET_TYPE, + PUC_CFG_INIT_PORT, PUC_CFG_SETUP };