152 */
153 (void) ddi_hold_driver(ddi_name_to_major("mc-us3"));
154 (void) ddi_hold_driver(ddi_name_to_major("ssc050"));
155
156 /* Gain access into the ssc050_get_port function */
157 cherry_ssc050_get_port_bit = (int (*) (dev_info_t *, int, int,
158 uint8_t *, int)) modgetsymvalue("ssc050_get_port_bit", 0);
159 if (cherry_ssc050_get_port_bit == NULL) {
160 cmn_err(CE_WARN, "cannot find ssc050_get_port_bit");
161 return;
162 }
163
164 e_ddi_walk_driver("i2c-ssc050", cherry_dev_search, (void *)&keysw_dip);
165 ASSERT(keysw_dip != NULL);
166
167 /*
168 * prevent detach of i2c-ssc050
169 */
170 e_ddi_hold_devi(keysw_dip);
171
172 keypoll_timeout_hz = drv_usectohz(10 * MICROSEC);
173 keyswitch_poll(keysw_dip);
174 abort_seq_handler = cherry_abort_seq_handler;
175
176 /*
177 * Figure out which pcf8584_dip is shared with OBP for the nvram
178 * device, so the lock can be acquired.
179 */
180
181 i2cnexus_dip = e_ddi_hold_devi_by_path(SHARED_PCF8584_PATH, 0);
182
183 ASSERT(i2cnexus_dip != NULL);
184 shared_pcf8584_dip = ddi_get_parent(i2cnexus_dip);
185
186 ndi_hold_devi(shared_pcf8584_dip);
187 ndi_rele_devi(i2cnexus_dip);
188 }
189
190 static int
191 cherry_dev_search(dev_info_t *dip, void *arg)
192 {
|
152 */
153 (void) ddi_hold_driver(ddi_name_to_major("mc-us3"));
154 (void) ddi_hold_driver(ddi_name_to_major("ssc050"));
155
156 /* Gain access into the ssc050_get_port function */
157 cherry_ssc050_get_port_bit = (int (*) (dev_info_t *, int, int,
158 uint8_t *, int)) modgetsymvalue("ssc050_get_port_bit", 0);
159 if (cherry_ssc050_get_port_bit == NULL) {
160 cmn_err(CE_WARN, "cannot find ssc050_get_port_bit");
161 return;
162 }
163
164 e_ddi_walk_driver("i2c-ssc050", cherry_dev_search, (void *)&keysw_dip);
165 ASSERT(keysw_dip != NULL);
166
167 /*
168 * prevent detach of i2c-ssc050
169 */
170 e_ddi_hold_devi(keysw_dip);
171
172 keypoll_timeout_hz = drv_sectohz(10);
173 keyswitch_poll(keysw_dip);
174 abort_seq_handler = cherry_abort_seq_handler;
175
176 /*
177 * Figure out which pcf8584_dip is shared with OBP for the nvram
178 * device, so the lock can be acquired.
179 */
180
181 i2cnexus_dip = e_ddi_hold_devi_by_path(SHARED_PCF8584_PATH, 0);
182
183 ASSERT(i2cnexus_dip != NULL);
184 shared_pcf8584_dip = ddi_get_parent(i2cnexus_dip);
185
186 ndi_hold_devi(shared_pcf8584_dip);
187 ndi_rele_devi(i2cnexus_dip);
188 }
189
190 static int
191 cherry_dev_search(dev_info_t *dip, void *arg)
192 {
|