68 ddi_no_info,
69 nulldev,
70 nulldev,
71 cpunex_attach,
72 cpunex_detach,
73 nodev,
74 NULL,
75 &cpunex_bus_ops,
76 NULL,
77 ddi_quiesce_not_needed, /* quiesce */
78 };
79
80 static struct modldrv modldrv = {
81 &mod_driverops,
82 "cpu nexus driver",
83 &cpunex_ops
84 };
85
86 static struct modlinkage modlinkage = {
87 MODREV_1,
88 &modldrv,
89 NULL
90 };
91
92 /*
93 * cpunex_bus_ctl()
94 * This routine implements nexus bus ctl operations. Of importance are
95 * DDI_CTLOPS_REPORTDEV, DDI_CTLOPS_INITCHILD, DDI_CTLOPS_UNINITCHILD
96 * and DDI_CTLOPS_POWER. For DDI_CTLOPS_INITCHILD, it tries to lookup
97 * reg property on the child node and builds and sets the name.
98 */
99 static int
100 cpunex_bus_ctl(dev_info_t *dip, dev_info_t *rdip, ddi_ctl_enum_t op, void *arg,
101 void *result)
102 {
103 switch (op) {
104 case DDI_CTLOPS_REPORTDEV: {
105 dev_info_t *pdip = ddi_get_parent(rdip);
106 cmn_err(CE_CONT, "?%s%d at %s%d",
107 ddi_node_name(rdip), ddi_get_instance(rdip),
108 ddi_node_name(pdip), ddi_get_instance(pdip));
109 return (DDI_SUCCESS);
|
68 ddi_no_info,
69 nulldev,
70 nulldev,
71 cpunex_attach,
72 cpunex_detach,
73 nodev,
74 NULL,
75 &cpunex_bus_ops,
76 NULL,
77 ddi_quiesce_not_needed, /* quiesce */
78 };
79
80 static struct modldrv modldrv = {
81 &mod_driverops,
82 "cpu nexus driver",
83 &cpunex_ops
84 };
85
86 static struct modlinkage modlinkage = {
87 MODREV_1,
88 { &modldrv, NULL }
89 };
90
91 /*
92 * cpunex_bus_ctl()
93 * This routine implements nexus bus ctl operations. Of importance are
94 * DDI_CTLOPS_REPORTDEV, DDI_CTLOPS_INITCHILD, DDI_CTLOPS_UNINITCHILD
95 * and DDI_CTLOPS_POWER. For DDI_CTLOPS_INITCHILD, it tries to lookup
96 * reg property on the child node and builds and sets the name.
97 */
98 static int
99 cpunex_bus_ctl(dev_info_t *dip, dev_info_t *rdip, ddi_ctl_enum_t op, void *arg,
100 void *result)
101 {
102 switch (op) {
103 case DDI_CTLOPS_REPORTDEV: {
104 dev_info_t *pdip = ddi_get_parent(rdip);
105 cmn_err(CE_CONT, "?%s%d at %s%d",
106 ddi_node_name(rdip), ddi_get_instance(rdip),
107 ddi_node_name(pdip), ddi_get_instance(pdip));
108 return (DDI_SUCCESS);
|