Lines Matching refs:skt
34 static inline u32 pcmcia_readl(struct bcm63xx_pcmcia_socket *skt, u32 off)
36 return bcm_readl(skt->base + off);
39 static inline void pcmcia_writel(struct bcm63xx_pcmcia_socket *skt,
42 bcm_writel(val, skt->base + off);
78 struct bcm63xx_pcmcia_socket *skt;
82 skt = sock->driver_data;
84 spin_lock_irqsave(&skt->lock, flags);
90 val = pcmcia_readl(skt, PCMCIA_C1_REG);
97 if (skt->card_detected && (skt->card_type & CARD_CARDBUS))
100 pcmcia_writel(skt, val, PCMCIA_C1_REG);
103 skt->requested_state = *state;
105 spin_unlock_irqrestore(&skt->lock, flags);
162 static unsigned int __get_socket_status(struct bcm63xx_pcmcia_socket *skt)
170 val = pcmcia_readl(skt, PCMCIA_C1_REG);
176 if ((stat & SS_DETECT) && !skt->card_detected) {
182 pcmcia_writel(skt, val, PCMCIA_C1_REG);
186 val = pcmcia_readl(skt, PCMCIA_C1_REG);
193 pcmcia_writel(skt, val, PCMCIA_C1_REG);
197 val = pcmcia_readl(skt, PCMCIA_C1_REG);
204 pcmcia_writel(skt, val, PCMCIA_C1_REG);
208 val = pcmcia_readl(skt, PCMCIA_C1_REG);
213 skt->card_type = vscd_to_cardtype[stat];
214 if (!skt->card_type)
215 dev_err(&skt->socket.dev, "unsupported card type\n");
222 if (skt->card_type & CARD_PCCARD)
227 pcmcia_writel(skt, val, PCMCIA_C1_REG);
229 skt->card_detected = (stat & SS_DETECT) ? 1 : 0;
232 if (skt->card_type & CARD_CARDBUS)
234 if (skt->card_type & CARD_3V)
236 if (skt->card_type & CARD_XV)
240 if (gpio_get_value(skt->pd->ready_gpio))
252 struct bcm63xx_pcmcia_socket *skt;
254 skt = sock->driver_data;
256 spin_lock_bh(&skt->lock);
257 *status = __get_socket_status(skt);
258 spin_unlock_bh(&skt->lock);
268 struct bcm63xx_pcmcia_socket *skt;
271 skt = from_timer(skt, t, timer);
273 spin_lock_bh(&skt->lock);
275 stat = __get_socket_status(skt);
279 events = (stat ^ skt->old_status) & skt->requested_state.csc_mask;
280 skt->old_status = stat;
281 spin_unlock_bh(&skt->lock);
284 pcmcia_parse_events(&skt->socket, events);
286 mod_timer(&skt->timer,
301 struct bcm63xx_pcmcia_socket *skt;
304 skt = sock->driver_data;
306 res = skt->attr_res;
308 res = skt->common_res;
328 struct bcm63xx_pcmcia_socket *skt;
336 skt = kzalloc(sizeof(*skt), GFP_KERNEL);
337 if (!skt)
339 spin_lock_init(&skt->lock);
340 sock = &skt->socket;
341 sock->driver_data = skt;
344 skt->common_res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
345 skt->attr_res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
347 skt->pd = pdev->dev.platform_data;
348 if (!skt->common_res || !skt->attr_res || (irq < 0) || !skt->pd) {
360 skt->reg_res = res;
362 skt->base = ioremap(res->start, regmem_size);
363 if (!skt->base) {
371 skt->io_base = ioremap(res->start, iomem_size);
372 if (!skt->io_base) {
383 sock->io_offset = (unsigned long)skt->io_base;
393 sock->map_size = resource_size(skt->common_res);
396 timer_setup(&skt->timer, bcm63xx_pcmcia_poll, 0);
401 val = pcmcia_readl(skt, PCMCIA_C1_REG);
404 pcmcia_writel(skt, val, PCMCIA_C1_REG);
416 pcmcia_writel(skt, val, PCMCIA_C2_REG);
423 mod_timer(&skt->timer,
426 platform_set_drvdata(pdev, skt);
430 if (skt->io_base)
431 iounmap(skt->io_base);
432 if (skt->base)
433 iounmap(skt->base);
434 if (skt->reg_res)
435 release_mem_region(skt->reg_res->start, regmem_size);
436 kfree(skt);
442 struct bcm63xx_pcmcia_socket *skt;
445 skt = platform_get_drvdata(pdev);
446 timer_shutdown_sync(&skt->timer);
447 iounmap(skt->base);
448 iounmap(skt->io_base);
449 res = skt->reg_res;
451 kfree(skt);