Lines Matching full:socket
96 struct pcmcia_socket *socket = dev_get_drvdata(dev); in pcmcia_release_socket() local
98 complete(&socket->socket_released); in pcmcia_release_socket()
104 * pcmcia_register_socket - add a new pcmcia socket device
105 * @socket: the &socket to register
107 int pcmcia_register_socket(struct pcmcia_socket *socket) in pcmcia_register_socket() argument
112 if (!socket || !socket->ops || !socket->dev.parent || !socket->resource_ops) in pcmcia_register_socket()
115 dev_dbg(&socket->dev, "pcmcia_register_socket(0x%p)\n", socket->ops); in pcmcia_register_socket()
117 /* try to obtain a socket number [yes, it gets ugly if we in pcmcia_register_socket()
119 * sockets... but the socket number is deprecated in pcmcia_register_socket()
123 socket->sock = 0; in pcmcia_register_socket()
135 socket->sock = i - 1; in pcmcia_register_socket()
137 list_add_tail(&socket->socket_list, &pcmcia_socket_list); in pcmcia_register_socket()
143 * the Cardbus socket capability is disabled. in pcmcia_register_socket()
145 socket->features &= ~SS_CAP_CARDBUS; in pcmcia_register_socket()
148 /* set proper values in socket->dev */ in pcmcia_register_socket()
149 dev_set_drvdata(&socket->dev, socket); in pcmcia_register_socket()
150 socket->dev.class = &pcmcia_socket_class; in pcmcia_register_socket()
151 dev_set_name(&socket->dev, "pcmcia_socket%u", socket->sock); in pcmcia_register_socket()
154 socket->cis_mem.flags = 0; in pcmcia_register_socket()
155 socket->cis_mem.speed = cis_speed; in pcmcia_register_socket()
157 INIT_LIST_HEAD(&socket->cis_cache); in pcmcia_register_socket()
159 init_completion(&socket->socket_released); in pcmcia_register_socket()
160 init_completion(&socket->thread_done); in pcmcia_register_socket()
161 mutex_init(&socket->skt_mutex); in pcmcia_register_socket()
162 mutex_init(&socket->ops_mutex); in pcmcia_register_socket()
163 spin_lock_init(&socket->thread_lock); in pcmcia_register_socket()
165 if (socket->resource_ops->init) { in pcmcia_register_socket()
166 mutex_lock(&socket->ops_mutex); in pcmcia_register_socket()
167 ret = socket->resource_ops->init(socket); in pcmcia_register_socket()
168 mutex_unlock(&socket->ops_mutex); in pcmcia_register_socket()
173 tsk = kthread_run(pccardd, socket, "pccardd"); in pcmcia_register_socket()
179 wait_for_completion(&socket->thread_done); in pcmcia_register_socket()
180 if (!socket->thread) { in pcmcia_register_socket()
181 dev_printk(KERN_WARNING, &socket->dev, in pcmcia_register_socket()
182 "PCMCIA: warning: socket thread did not start\n"); in pcmcia_register_socket()
186 pcmcia_parse_events(socket, SS_DETECT); in pcmcia_register_socket()
199 list_del(&socket->socket_list); in pcmcia_register_socket()
207 * pcmcia_unregister_socket - remove a pcmcia socket device
208 * @socket: the &socket to unregister
210 void pcmcia_unregister_socket(struct pcmcia_socket *socket) in pcmcia_unregister_socket() argument
212 if (!socket) in pcmcia_unregister_socket()
215 dev_dbg(&socket->dev, "pcmcia_unregister_socket(0x%p)\n", socket->ops); in pcmcia_unregister_socket()
217 if (socket->thread) in pcmcia_unregister_socket()
218 kthread_stop(socket->thread); in pcmcia_unregister_socket()
222 list_del(&socket->socket_list); in pcmcia_unregister_socket()
226 if (socket->resource_ops->exit) { in pcmcia_unregister_socket()
227 mutex_lock(&socket->ops_mutex); in pcmcia_unregister_socket()
228 socket->resource_ops->exit(socket); in pcmcia_unregister_socket()
229 mutex_unlock(&socket->ops_mutex); in pcmcia_unregister_socket()
231 wait_for_completion(&socket->socket_released); in pcmcia_unregister_socket()
259 skt->socket.flags |= SS_OUTPUT_ENA | SS_RESET; in socket_reset()
260 skt->ops->set_socket(skt, &skt->socket); in socket_reset()
263 skt->socket.flags &= ~SS_RESET; in socket_reset()
264 skt->ops->set_socket(skt, &skt->socket); in socket_reset()
286 * socket_setup() turns on socket power and resets the socket, in two stages.
287 * socket_shutdown() unconfigures a socket and turns off socket power.
303 /* Blank out the socket state */ in socket_shutdown()
304 s->socket = dead_socket; in socket_shutdown()
306 s->ops->set_socket(s, &s->socket); in socket_shutdown()
313 * pccardd thread) accesses this socket, and all (16-bit) in socket_shutdown()
324 /* give socket some time to power down */ in socket_shutdown()
330 "*** DANGER *** unable to remove socket power\n"); in socket_shutdown()
379 skt->socket.Vcc = skt->socket.Vpp = 33; in socket_setup()
381 skt->socket.Vcc = skt->socket.Vpp = 50; in socket_setup()
390 skt->socket.flags = 0; in socket_setup()
391 skt->ops->set_socket(skt, &skt->socket); in socket_setup()
413 * Handle card insertion. Setup the socket, reset the card,
465 skt->socket = dead_socket; in socket_suspend()
466 skt->ops->set_socket(skt, &skt->socket); in socket_suspend()
477 skt->socket = dead_socket; in socket_early_resume()
479 skt->ops->set_socket(skt, &skt->socket); in socket_early_resume()
531 * Resume a socket. If a card is present, verify its CIS against
552 * Process a socket card detect status change.
555 * about 20ms (to be on the safe side) before reading the socket status.
586 skt->socket = dead_socket; in pccardd()
588 skt->ops->set_socket(skt, &skt->socket); in pccardd()
594 "PCMCIA: unable to register socket\n"); in pccardd()
601 dev_warn(&skt->dev, "err %d adding socket attributes\n", ret); in pccardd()
669 /* shut down socket, if a device is still present */ in pccardd()
684 * Yenta (at least) probes interrupts before registering the socket and
703 * @s: the PCMCIA socket we wan't to command
765 dev_dbg(&skt->dev, "resetting socket\n"); in pcmcia_reset_card()