diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-03-05 04:45:09 -0500 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-03-31 10:15:57 -0500 |
commit | fd238232cd0ff4840ae6946bb338502154096d88 (patch) | |
tree | d20e8f5871f7cff9d0867a84f6ba088fbffcbe28 /drivers/bluetooth/dtl1_cs.c | |
parent | a78f4dd331a4f6a396eb5849656a4a72a70a56d7 (diff) |
[PATCH] pcmcia: embed dev_link_t into struct pcmcia_device
Embed dev_link_t into struct pcmcia_device(), as they basically address the
same entity. The actual contents of dev_link_t will be cleaned up step by step.
This patch includes a bugfix from and signed-off-by Andrew Morton.
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/bluetooth/dtl1_cs.c')
-rw-r--r-- | drivers/bluetooth/dtl1_cs.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c index 86617ee80e59..389a68256fe4 100644 --- a/drivers/bluetooth/dtl1_cs.c +++ b/drivers/bluetooth/dtl1_cs.c | |||
@@ -68,7 +68,7 @@ MODULE_LICENSE("GPL"); | |||
68 | 68 | ||
69 | 69 | ||
70 | typedef struct dtl1_info_t { | 70 | typedef struct dtl1_info_t { |
71 | dev_link_t link; | 71 | struct pcmcia_device *p_dev; |
72 | dev_node_t node; | 72 | dev_node_t node; |
73 | 73 | ||
74 | struct hci_dev *hdev; | 74 | struct hci_dev *hdev; |
@@ -153,13 +153,13 @@ static void dtl1_write_wakeup(dtl1_info_t *info) | |||
153 | } | 153 | } |
154 | 154 | ||
155 | do { | 155 | do { |
156 | register unsigned int iobase = info->link.io.BasePort1; | 156 | register unsigned int iobase = info->p_dev->io.BasePort1; |
157 | register struct sk_buff *skb; | 157 | register struct sk_buff *skb; |
158 | register int len; | 158 | register int len; |
159 | 159 | ||
160 | clear_bit(XMIT_WAKEUP, &(info->tx_state)); | 160 | clear_bit(XMIT_WAKEUP, &(info->tx_state)); |
161 | 161 | ||
162 | if (!(info->link.state & DEV_PRESENT)) | 162 | if (!(info->p_dev->state & DEV_PRESENT)) |
163 | return; | 163 | return; |
164 | 164 | ||
165 | if (!(skb = skb_dequeue(&(info->txq)))) | 165 | if (!(skb = skb_dequeue(&(info->txq)))) |
@@ -218,7 +218,7 @@ static void dtl1_receive(dtl1_info_t *info) | |||
218 | return; | 218 | return; |
219 | } | 219 | } |
220 | 220 | ||
221 | iobase = info->link.io.BasePort1; | 221 | iobase = info->p_dev->io.BasePort1; |
222 | 222 | ||
223 | do { | 223 | do { |
224 | info->hdev->stat.byte_rx++; | 224 | info->hdev->stat.byte_rx++; |
@@ -305,7 +305,7 @@ static irqreturn_t dtl1_interrupt(int irq, void *dev_inst, struct pt_regs *regs) | |||
305 | return IRQ_NONE; | 305 | return IRQ_NONE; |
306 | } | 306 | } |
307 | 307 | ||
308 | iobase = info->link.io.BasePort1; | 308 | iobase = info->p_dev->io.BasePort1; |
309 | 309 | ||
310 | spin_lock(&(info->lock)); | 310 | spin_lock(&(info->lock)); |
311 | 311 | ||
@@ -458,7 +458,7 @@ static int dtl1_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long | |||
458 | static int dtl1_open(dtl1_info_t *info) | 458 | static int dtl1_open(dtl1_info_t *info) |
459 | { | 459 | { |
460 | unsigned long flags; | 460 | unsigned long flags; |
461 | unsigned int iobase = info->link.io.BasePort1; | 461 | unsigned int iobase = info->p_dev->io.BasePort1; |
462 | struct hci_dev *hdev; | 462 | struct hci_dev *hdev; |
463 | 463 | ||
464 | spin_lock_init(&(info->lock)); | 464 | spin_lock_init(&(info->lock)); |
@@ -504,7 +504,7 @@ static int dtl1_open(dtl1_info_t *info) | |||
504 | outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */ | 504 | outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */ |
505 | outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR); | 505 | outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR); |
506 | 506 | ||
507 | info->ri_latch = inb(info->link.io.BasePort1 + UART_MSR) & UART_MSR_RI; | 507 | info->ri_latch = inb(info->p_dev->io.BasePort1 + UART_MSR) & UART_MSR_RI; |
508 | 508 | ||
509 | /* Turn on interrupts */ | 509 | /* Turn on interrupts */ |
510 | outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER); | 510 | outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER); |
@@ -529,7 +529,7 @@ static int dtl1_open(dtl1_info_t *info) | |||
529 | static int dtl1_close(dtl1_info_t *info) | 529 | static int dtl1_close(dtl1_info_t *info) |
530 | { | 530 | { |
531 | unsigned long flags; | 531 | unsigned long flags; |
532 | unsigned int iobase = info->link.io.BasePort1; | 532 | unsigned int iobase = info->p_dev->io.BasePort1; |
533 | struct hci_dev *hdev = info->hdev; | 533 | struct hci_dev *hdev = info->hdev; |
534 | 534 | ||
535 | if (!hdev) | 535 | if (!hdev) |
@@ -558,14 +558,14 @@ static int dtl1_close(dtl1_info_t *info) | |||
558 | static int dtl1_attach(struct pcmcia_device *p_dev) | 558 | static int dtl1_attach(struct pcmcia_device *p_dev) |
559 | { | 559 | { |
560 | dtl1_info_t *info; | 560 | dtl1_info_t *info; |
561 | dev_link_t *link; | 561 | dev_link_t *link = dev_to_instance(p_dev); |
562 | 562 | ||
563 | /* Create new info device */ | 563 | /* Create new info device */ |
564 | info = kzalloc(sizeof(*info), GFP_KERNEL); | 564 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
565 | if (!info) | 565 | if (!info) |
566 | return -ENOMEM; | 566 | return -ENOMEM; |
567 | 567 | ||
568 | link = &info->link; | 568 | info->p_dev = p_dev; |
569 | link->priv = info; | 569 | link->priv = info; |
570 | 570 | ||
571 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 571 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
@@ -579,9 +579,6 @@ static int dtl1_attach(struct pcmcia_device *p_dev) | |||
579 | link->conf.Attributes = CONF_ENABLE_IRQ; | 579 | link->conf.Attributes = CONF_ENABLE_IRQ; |
580 | link->conf.IntType = INT_MEMORY_AND_IO; | 580 | link->conf.IntType = INT_MEMORY_AND_IO; |
581 | 581 | ||
582 | link->handle = p_dev; | ||
583 | p_dev->instance = link; | ||
584 | |||
585 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | 582 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; |
586 | dtl1_config(link); | 583 | dtl1_config(link); |
587 | 584 | ||
@@ -696,7 +693,7 @@ static void dtl1_config(dev_link_t *link) | |||
696 | goto failed; | 693 | goto failed; |
697 | 694 | ||
698 | strcpy(info->node.dev_name, info->hdev->name); | 695 | strcpy(info->node.dev_name, info->hdev->name); |
699 | link->dev = &info->node; | 696 | link->dev_node = &info->node; |
700 | link->state &= ~DEV_CONFIG_PENDING; | 697 | link->state &= ~DEV_CONFIG_PENDING; |
701 | 698 | ||
702 | return; | 699 | return; |