95 nulldev, /* probe */
96 appm_attach, /* attach */
97 appm_detach, /* detach */
98 nodev, /* reset */
99 &appm_cbops, /* cb_ops */
100 NULL, /* bus_ops */
101 NULL, /* power */
102 ddi_quiesce_not_needed, /* quiesce */
103 };
104
105 extern struct mod_ops mod_driverops;
106
107 static struct modldrv modldrv = {
108 &mod_driverops,
109 "ACPI ppm driver",
110 &appm_ops,
111 };
112
113 static struct modlinkage modlinkage = {
114 MODREV_1,
115 &modldrv,
116 NULL
117 };
118
119 /*
120 * Driver state structure
121 */
122 typedef struct {
123 dev_info_t *dip;
124 ddi_acc_handle_t devid_hndl;
125 ddi_acc_handle_t estar_hndl;
126 int lyropen; /* ref count */
127 } appm_unit;
128
129 /*
130 * Driver global variables
131 *
132 * appm_lock synchronize the access of lyr handle to each appm
133 * minor device, therefore write to tomatillo device is
134 * sequentialized. Lyr protocol requires pairing up lyr open
135 * and close, so only a single reference is allowed per minor node.
136 */
|
95 nulldev, /* probe */
96 appm_attach, /* attach */
97 appm_detach, /* detach */
98 nodev, /* reset */
99 &appm_cbops, /* cb_ops */
100 NULL, /* bus_ops */
101 NULL, /* power */
102 ddi_quiesce_not_needed, /* quiesce */
103 };
104
105 extern struct mod_ops mod_driverops;
106
107 static struct modldrv modldrv = {
108 &mod_driverops,
109 "ACPI ppm driver",
110 &appm_ops,
111 };
112
113 static struct modlinkage modlinkage = {
114 MODREV_1,
115 { &modldrv, NULL }
116 };
117
118 /*
119 * Driver state structure
120 */
121 typedef struct {
122 dev_info_t *dip;
123 ddi_acc_handle_t devid_hndl;
124 ddi_acc_handle_t estar_hndl;
125 int lyropen; /* ref count */
126 } appm_unit;
127
128 /*
129 * Driver global variables
130 *
131 * appm_lock synchronize the access of lyr handle to each appm
132 * minor device, therefore write to tomatillo device is
133 * sequentialized. Lyr protocol requires pairing up lyr open
134 * and close, so only a single reference is allowed per minor node.
135 */
|