diff options
author | Kyle McMartin <kyle@parisc-linux.org> | 2007-02-17 00:18:23 -0500 |
---|---|---|
committer | Kyle McMartin <kyle@parisc-linux.org> | 2007-02-17 00:18:23 -0500 |
commit | e7b3ca08549caccf5d6e1cf066780bf4f0ae77a7 (patch) | |
tree | 7e5745bea06675cfce60d6813ee3b4d5e19cbb56 /drivers/parisc | |
parent | 62d0cfcb27cf755cebdc93ca95dabc83608007cd (diff) | |
parent | cb6efb39163bfb6bb6475fa7c8a5e08e44dbf14a (diff) |
Merge branch 'parisc' from /home/kyle/repos/parisc-2.6.git
Conflicts:
arch/parisc/hpux/sys_hpux.c
arch/parisc/mm/ioremap.c
Diffstat (limited to 'drivers/parisc')
-rw-r--r-- | drivers/parisc/hppb.c | 14 | ||||
-rw-r--r-- | drivers/parisc/iosapic_private.h | 2 | ||||
-rw-r--r-- | drivers/parisc/lba_pci.c | 34 | ||||
-rw-r--r-- | drivers/parisc/led.c | 12 | ||||
-rw-r--r-- | drivers/parisc/power.c | 4 | ||||
-rw-r--r-- | drivers/parisc/sba_iommu.c | 4 |
6 files changed, 37 insertions, 33 deletions
diff --git a/drivers/parisc/hppb.c b/drivers/parisc/hppb.c index 07dc2b6d4e9..9bb4db552f3 100644 --- a/drivers/parisc/hppb.c +++ b/drivers/parisc/hppb.c | |||
@@ -10,10 +10,6 @@ | |||
10 | ** the Free Software Foundation; either version 2 of the License, or | 10 | ** the Free Software Foundation; either version 2 of the License, or |
11 | ** (at your option) any later version. | 11 | ** (at your option) any later version. |
12 | ** | 12 | ** |
13 | ** This Driver currently only supports the console (port 0) on the MUX. | ||
14 | ** Additional work will be needed on this driver to enable the full | ||
15 | ** functionality of the MUX. | ||
16 | ** | ||
17 | */ | 13 | */ |
18 | 14 | ||
19 | #include <linux/types.h> | 15 | #include <linux/types.h> |
@@ -67,7 +63,7 @@ static int hppb_probe(struct parisc_device *dev) | |||
67 | } | 63 | } |
68 | card = card->next; | 64 | card = card->next; |
69 | } | 65 | } |
70 | printk(KERN_INFO "Found GeckoBoa at 0x%lx\n", dev->hpa.start); | 66 | printk(KERN_INFO "Found GeckoBoa at 0x%x\n", dev->hpa.start); |
71 | 67 | ||
72 | card->hpa = dev->hpa.start; | 68 | card->hpa = dev->hpa.start; |
73 | card->mmio_region.name = "HP-PB Bus"; | 69 | card->mmio_region.name = "HP-PB Bus"; |
@@ -78,16 +74,18 @@ static int hppb_probe(struct parisc_device *dev) | |||
78 | 74 | ||
79 | status = ccio_request_resource(dev, &card->mmio_region); | 75 | status = ccio_request_resource(dev, &card->mmio_region); |
80 | if(status < 0) { | 76 | if(status < 0) { |
81 | printk(KERN_ERR "%s: failed to claim HP-PB bus space (%08lx, %08lx)\n", | 77 | printk(KERN_ERR "%s: failed to claim HP-PB bus space (%08x, %08x)\n", |
82 | __FILE__, card->mmio_region.start, card->mmio_region.end); | 78 | __FILE__, card->mmio_region.start, card->mmio_region.end); |
83 | } | 79 | } |
84 | 80 | ||
85 | return 0; | 81 | return 0; |
86 | } | 82 | } |
87 | 83 | ||
88 | |||
89 | static struct parisc_device_id hppb_tbl[] = { | 84 | static struct parisc_device_id hppb_tbl[] = { |
90 | { HPHW_BCPORT, HVERSION_REV_ANY_ID, 0x500, 0xc }, | 85 | { HPHW_BCPORT, HVERSION_REV_ANY_ID, 0x500, 0xc }, /* E25 and K */ |
86 | { HPHW_BCPORT, 0x0, 0x501, 0xc }, /* E35 */ | ||
87 | { HPHW_BCPORT, 0x0, 0x502, 0xc }, /* E45 */ | ||
88 | { HPHW_BCPORT, 0x0, 0x503, 0xc }, /* E55 */ | ||
91 | { 0, } | 89 | { 0, } |
92 | }; | 90 | }; |
93 | 91 | ||
diff --git a/drivers/parisc/iosapic_private.h b/drivers/parisc/iosapic_private.h index 41e7ec2a44a..6e05e30a245 100644 --- a/drivers/parisc/iosapic_private.h +++ b/drivers/parisc/iosapic_private.h | |||
@@ -132,7 +132,7 @@ struct iosapic_irt { | |||
132 | struct vector_info { | 132 | struct vector_info { |
133 | struct iosapic_info *iosapic; /* I/O SAPIC this vector is on */ | 133 | struct iosapic_info *iosapic; /* I/O SAPIC this vector is on */ |
134 | struct irt_entry *irte; /* IRT entry */ | 134 | struct irt_entry *irte; /* IRT entry */ |
135 | u32 *eoi_addr; /* precalculate EOI reg address */ | 135 | u32 __iomem *eoi_addr; /* precalculate EOI reg address */ |
136 | u32 eoi_data; /* IA64: ? PA: swapped txn_data */ | 136 | u32 eoi_data; /* IA64: ? PA: swapped txn_data */ |
137 | int txn_irq; /* virtual IRQ number for processor */ | 137 | int txn_irq; /* virtual IRQ number for processor */ |
138 | ulong txn_addr; /* IA64: id_eid PA: partial HPA */ | 138 | ulong txn_addr; /* IA64: id_eid PA: partial HPA */ |
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c index ba6769934c7..eae0812f01a 100644 --- a/drivers/parisc/lba_pci.c +++ b/drivers/parisc/lba_pci.c | |||
@@ -980,7 +980,7 @@ LBA_PORT_IN(32, 0) | |||
980 | #define LBA_PORT_OUT(size, mask) \ | 980 | #define LBA_PORT_OUT(size, mask) \ |
981 | static void lba_pat_out##size (struct pci_hba_data *l, u16 addr, u##size val) \ | 981 | static void lba_pat_out##size (struct pci_hba_data *l, u16 addr, u##size val) \ |
982 | { \ | 982 | { \ |
983 | void *where = (void *) PIOP_TO_GMMIO(LBA_DEV(l), addr); \ | 983 | void __iomem *where = PIOP_TO_GMMIO(LBA_DEV(l), addr); \ |
984 | DBG_PORT("%s(0x%p, 0x%x, 0x%x)\n", __FUNCTION__, l, addr, val); \ | 984 | DBG_PORT("%s(0x%p, 0x%x, 0x%x)\n", __FUNCTION__, l, addr, val); \ |
985 | WRITE_REG##size(val, where); \ | 985 | WRITE_REG##size(val, where); \ |
986 | /* flush the I/O down to the elroy at least */ \ | 986 | /* flush the I/O down to the elroy at least */ \ |
@@ -1406,13 +1406,20 @@ lba_hw_init(struct lba_device *d) | |||
1406 | return 0; | 1406 | return 0; |
1407 | } | 1407 | } |
1408 | 1408 | ||
1409 | 1409 | /* | |
1410 | * Unfortunately, when firmware numbers busses, it doesn't take into account | ||
1411 | * Cardbus bridges. So we have to renumber the busses to suit ourselves. | ||
1412 | * Elroy/Mercury don't actually know what bus number they're attached to; | ||
1413 | * we use bus 0 to indicate the directly attached bus and any other bus | ||
1414 | * number will be taken care of by the PCI-PCI bridge. | ||
1415 | */ | ||
1416 | static unsigned int lba_next_bus = 0; | ||
1410 | 1417 | ||
1411 | /* | 1418 | /* |
1412 | ** Determine if lba should claim this chip (return 0) or not (return 1). | 1419 | * Determine if lba should claim this chip (return 0) or not (return 1). |
1413 | ** If so, initialize the chip and tell other partners in crime they | 1420 | * If so, initialize the chip and tell other partners in crime they |
1414 | ** have work to do. | 1421 | * have work to do. |
1415 | */ | 1422 | */ |
1416 | static int __init | 1423 | static int __init |
1417 | lba_driver_probe(struct parisc_device *dev) | 1424 | lba_driver_probe(struct parisc_device *dev) |
1418 | { | 1425 | { |
@@ -1478,9 +1485,7 @@ lba_driver_probe(struct parisc_device *dev) | |||
1478 | return -ENODEV; | 1485 | return -ENODEV; |
1479 | } | 1486 | } |
1480 | 1487 | ||
1481 | /* | 1488 | /* Tell I/O SAPIC driver we have a IRQ handler/region. */ |
1482 | ** Tell I/O SAPIC driver we have a IRQ handler/region. | ||
1483 | */ | ||
1484 | tmp_obj = iosapic_register(dev->hpa.start + LBA_IOSAPIC_BASE); | 1489 | tmp_obj = iosapic_register(dev->hpa.start + LBA_IOSAPIC_BASE); |
1485 | 1490 | ||
1486 | /* NOTE: PCI devices (e.g. 103c:1005 graphics card) which don't | 1491 | /* NOTE: PCI devices (e.g. 103c:1005 graphics card) which don't |
@@ -1529,16 +1534,17 @@ lba_driver_probe(struct parisc_device *dev) | |||
1529 | lba_legacy_resources(dev, lba_dev); | 1534 | lba_legacy_resources(dev, lba_dev); |
1530 | } | 1535 | } |
1531 | 1536 | ||
1532 | /* | 1537 | if (lba_dev->hba.bus_num.start < lba_next_bus) |
1533 | ** Tell PCI support another PCI bus was found. | 1538 | lba_dev->hba.bus_num.start = lba_next_bus; |
1534 | ** Walks PCI bus for us too. | 1539 | |
1535 | */ | ||
1536 | dev->dev.platform_data = lba_dev; | 1540 | dev->dev.platform_data = lba_dev; |
1537 | lba_bus = lba_dev->hba.hba_bus = | 1541 | lba_bus = lba_dev->hba.hba_bus = |
1538 | pci_scan_bus_parented(&dev->dev, lba_dev->hba.bus_num.start, | 1542 | pci_scan_bus_parented(&dev->dev, lba_dev->hba.bus_num.start, |
1539 | cfg_ops, NULL); | 1543 | cfg_ops, NULL); |
1540 | if (lba_bus) | 1544 | if (lba_bus) { |
1545 | lba_next_bus = lba_bus->subordinate + 1; | ||
1541 | pci_bus_add_devices(lba_bus); | 1546 | pci_bus_add_devices(lba_bus); |
1547 | } | ||
1542 | 1548 | ||
1543 | /* This is in lieu of calling pci_assign_unassigned_resources() */ | 1549 | /* This is in lieu of calling pci_assign_unassigned_resources() */ |
1544 | if (is_pdc_pat()) { | 1550 | if (is_pdc_pat()) { |
diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index 8dac2ba82bb..6818c10c0c4 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c | |||
@@ -66,8 +66,8 @@ static char lcd_text_default[32] __read_mostly; | |||
66 | 66 | ||
67 | 67 | ||
68 | static struct workqueue_struct *led_wq; | 68 | static struct workqueue_struct *led_wq; |
69 | static void led_work_func(void *); | 69 | static void led_work_func(struct work_struct *); |
70 | static DECLARE_WORK(led_task, led_work_func, NULL); | 70 | static DECLARE_DELAYED_WORK(led_task, led_work_func); |
71 | 71 | ||
72 | #if 0 | 72 | #if 0 |
73 | #define DPRINTK(x) printk x | 73 | #define DPRINTK(x) printk x |
@@ -136,7 +136,7 @@ static int start_task(void) | |||
136 | 136 | ||
137 | /* Create the work queue and queue the LED task */ | 137 | /* Create the work queue and queue the LED task */ |
138 | led_wq = create_singlethread_workqueue("led_wq"); | 138 | led_wq = create_singlethread_workqueue("led_wq"); |
139 | queue_work(led_wq, &led_task); | 139 | queue_delayed_work(led_wq, &led_task, 0); |
140 | 140 | ||
141 | return 0; | 141 | return 0; |
142 | } | 142 | } |
@@ -443,7 +443,7 @@ static __inline__ int led_get_diskio_activity(void) | |||
443 | 443 | ||
444 | #define LED_UPDATE_INTERVAL (1 + (HZ*19/1000)) | 444 | #define LED_UPDATE_INTERVAL (1 + (HZ*19/1000)) |
445 | 445 | ||
446 | static void led_work_func (void *unused) | 446 | static void led_work_func (struct work_struct *unused) |
447 | { | 447 | { |
448 | static unsigned long last_jiffies; | 448 | static unsigned long last_jiffies; |
449 | static unsigned long count_HZ; /* counter in range 0..HZ */ | 449 | static unsigned long count_HZ; /* counter in range 0..HZ */ |
@@ -590,7 +590,7 @@ int __init register_led_driver(int model, unsigned long cmd_reg, unsigned long d | |||
590 | 590 | ||
591 | /* Ensure the work is queued */ | 591 | /* Ensure the work is queued */ |
592 | if (led_wq) { | 592 | if (led_wq) { |
593 | queue_work(led_wq, &led_task); | 593 | queue_delayed_work(led_wq, &led_task, 0); |
594 | } | 594 | } |
595 | 595 | ||
596 | return 0; | 596 | return 0; |
@@ -660,7 +660,7 @@ int lcd_print( char *str ) | |||
660 | 660 | ||
661 | /* re-queue the work */ | 661 | /* re-queue the work */ |
662 | if (led_wq) { | 662 | if (led_wq) { |
663 | queue_work(led_wq, &led_task); | 663 | queue_delayed_work(led_wq, &led_task, 0); |
664 | } | 664 | } |
665 | 665 | ||
666 | return lcd_info.lcd_width; | 666 | return lcd_info.lcd_width; |
diff --git a/drivers/parisc/power.c b/drivers/parisc/power.c index 97e9dc066f9..9228e210c3b 100644 --- a/drivers/parisc/power.c +++ b/drivers/parisc/power.c | |||
@@ -82,7 +82,7 @@ | |||
82 | } ) | 82 | } ) |
83 | 83 | ||
84 | 84 | ||
85 | static void deferred_poweroff(void *dummy) | 85 | static void deferred_poweroff(struct work_struct *unused) |
86 | { | 86 | { |
87 | if (kill_cad_pid(SIGINT, 1)) { | 87 | if (kill_cad_pid(SIGINT, 1)) { |
88 | /* just in case killing init process failed */ | 88 | /* just in case killing init process failed */ |
@@ -96,7 +96,7 @@ static void deferred_poweroff(void *dummy) | |||
96 | * use schedule_work(). | 96 | * use schedule_work(). |
97 | */ | 97 | */ |
98 | 98 | ||
99 | static DECLARE_WORK(poweroff_work, deferred_poweroff, NULL); | 99 | static DECLARE_WORK(poweroff_work, deferred_poweroff); |
100 | 100 | ||
101 | static void poweroff(void) | 101 | static void poweroff(void) |
102 | { | 102 | { |
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c index f1e7ccd5475..26fece45e73 100644 --- a/drivers/parisc/sba_iommu.c +++ b/drivers/parisc/sba_iommu.c | |||
@@ -109,7 +109,7 @@ static unsigned long piranha_bad_128k = 0; | |||
109 | 109 | ||
110 | #ifdef SBA_AGP_SUPPORT | 110 | #ifdef SBA_AGP_SUPPORT |
111 | static int sba_reserve_agpgart = 1; | 111 | static int sba_reserve_agpgart = 1; |
112 | module_param(sba_reserve_agpgart, int, 1); | 112 | module_param(sba_reserve_agpgart, int, 0444); |
113 | MODULE_PARM_DESC(sba_reserve_agpgart, "Reserve half of IO pdir as AGPGART"); | 113 | MODULE_PARM_DESC(sba_reserve_agpgart, "Reserve half of IO pdir as AGPGART"); |
114 | #endif | 114 | #endif |
115 | 115 | ||
@@ -846,7 +846,7 @@ static void *sba_alloc_consistent(struct device *hwdev, size_t size, | |||
846 | if (!hwdev) { | 846 | if (!hwdev) { |
847 | /* only support PCI */ | 847 | /* only support PCI */ |
848 | *dma_handle = 0; | 848 | *dma_handle = 0; |
849 | return 0; | 849 | return NULL; |
850 | } | 850 | } |
851 | 851 | ||
852 | ret = (void *) __get_free_pages(gfp, get_order(size)); | 852 | ret = (void *) __get_free_pages(gfp, get_order(size)); |