diff options
Diffstat (limited to 'drivers/char')
| -rw-r--r-- | drivers/char/agp/agp.h | 2 | ||||
| -rw-r--r-- | drivers/char/agp/ali-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/amd-k7-agp.c | 6 | ||||
| -rw-r--r-- | drivers/char/agp/amd64-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/ati-agp.c | 6 | ||||
| -rw-r--r-- | drivers/char/agp/backend.c | 6 | ||||
| -rw-r--r-- | drivers/char/agp/efficeon-agp.c | 2 | ||||
| -rw-r--r-- | drivers/char/agp/generic.c | 36 | ||||
| -rw-r--r-- | drivers/char/agp/hp-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/i460-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/intel-agp.c | 21 | ||||
| -rw-r--r-- | drivers/char/agp/sgi-agp.c | 12 | ||||
| -rw-r--r-- | drivers/char/agp/sworks-agp.c | 8 | ||||
| -rw-r--r-- | drivers/char/agp/uninorth-agp.c | 2 | ||||
| -rw-r--r-- | drivers/char/drm/drm_pciids.h | 1 | ||||
| -rw-r--r-- | drivers/char/drm/radeon_irq.c | 5 | ||||
| -rw-r--r-- | drivers/char/mxser.c | 38 | ||||
| -rw-r--r-- | drivers/char/vt.c | 4 |
18 files changed, 79 insertions, 86 deletions
diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h index ad9c11391d81..c1fe013c64f3 100644 --- a/drivers/char/agp/agp.h +++ b/drivers/char/agp/agp.h | |||
| @@ -278,6 +278,8 @@ void agp3_generic_cleanup(void); | |||
| 278 | #define AGP_GENERIC_SIZES_ENTRIES 11 | 278 | #define AGP_GENERIC_SIZES_ENTRIES 11 |
| 279 | extern struct aper_size_info_16 agp3_generic_sizes[]; | 279 | extern struct aper_size_info_16 agp3_generic_sizes[]; |
| 280 | 280 | ||
| 281 | #define virt_to_gart(x) (phys_to_gart(virt_to_phys(x))) | ||
| 282 | #define gart_to_virt(x) (phys_to_virt(gart_to_phys(x))) | ||
| 281 | 283 | ||
| 282 | extern int agp_off; | 284 | extern int agp_off; |
| 283 | extern int agp_try_unsupported_boot; | 285 | extern int agp_try_unsupported_boot; |
diff --git a/drivers/char/agp/ali-agp.c b/drivers/char/agp/ali-agp.c index 0212febda654..9c9c9c2247ce 100644 --- a/drivers/char/agp/ali-agp.c +++ b/drivers/char/agp/ali-agp.c | |||
| @@ -150,7 +150,7 @@ static void *m1541_alloc_page(struct agp_bridge_data *bridge) | |||
| 150 | pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp); | 150 | pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp); |
| 151 | pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, | 151 | pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, |
| 152 | (((temp & ALI_CACHE_FLUSH_ADDR_MASK) | | 152 | (((temp & ALI_CACHE_FLUSH_ADDR_MASK) | |
| 153 | virt_to_phys(addr)) | ALI_CACHE_FLUSH_EN )); | 153 | virt_to_gart(addr)) | ALI_CACHE_FLUSH_EN )); |
| 154 | return addr; | 154 | return addr; |
| 155 | } | 155 | } |
| 156 | 156 | ||
| @@ -174,7 +174,7 @@ static void m1541_destroy_page(void * addr) | |||
| 174 | pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp); | 174 | pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp); |
| 175 | pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, | 175 | pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, |
| 176 | (((temp & ALI_CACHE_FLUSH_ADDR_MASK) | | 176 | (((temp & ALI_CACHE_FLUSH_ADDR_MASK) | |
| 177 | virt_to_phys(addr)) | ALI_CACHE_FLUSH_EN)); | 177 | virt_to_gart(addr)) | ALI_CACHE_FLUSH_EN)); |
| 178 | agp_generic_destroy_page(addr); | 178 | agp_generic_destroy_page(addr); |
| 179 | } | 179 | } |
| 180 | 180 | ||
diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c index e62a3c2c44a9..3a41672e4d66 100644 --- a/drivers/char/agp/amd-k7-agp.c +++ b/drivers/char/agp/amd-k7-agp.c | |||
| @@ -43,7 +43,7 @@ static int amd_create_page_map(struct amd_page_map *page_map) | |||
| 43 | 43 | ||
| 44 | SetPageReserved(virt_to_page(page_map->real)); | 44 | SetPageReserved(virt_to_page(page_map->real)); |
| 45 | global_cache_flush(); | 45 | global_cache_flush(); |
| 46 | page_map->remapped = ioremap_nocache(virt_to_phys(page_map->real), | 46 | page_map->remapped = ioremap_nocache(virt_to_gart(page_map->real), |
| 47 | PAGE_SIZE); | 47 | PAGE_SIZE); |
| 48 | if (page_map->remapped == NULL) { | 48 | if (page_map->remapped == NULL) { |
| 49 | ClearPageReserved(virt_to_page(page_map->real)); | 49 | ClearPageReserved(virt_to_page(page_map->real)); |
| @@ -154,7 +154,7 @@ static int amd_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 154 | 154 | ||
| 155 | agp_bridge->gatt_table_real = (u32 *)page_dir.real; | 155 | agp_bridge->gatt_table_real = (u32 *)page_dir.real; |
| 156 | agp_bridge->gatt_table = (u32 __iomem *)page_dir.remapped; | 156 | agp_bridge->gatt_table = (u32 __iomem *)page_dir.remapped; |
| 157 | agp_bridge->gatt_bus_addr = virt_to_phys(page_dir.real); | 157 | agp_bridge->gatt_bus_addr = virt_to_gart(page_dir.real); |
| 158 | 158 | ||
| 159 | /* Get the address for the gart region. | 159 | /* Get the address for the gart region. |
| 160 | * This is a bus address even on the alpha, b/c its | 160 | * This is a bus address even on the alpha, b/c its |
| @@ -167,7 +167,7 @@ static int amd_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 167 | 167 | ||
| 168 | /* Calculate the agp offset */ | 168 | /* Calculate the agp offset */ |
| 169 | for (i = 0; i < value->num_entries / 1024; i++, addr += 0x00400000) { | 169 | for (i = 0; i < value->num_entries / 1024; i++, addr += 0x00400000) { |
| 170 | writel(virt_to_phys(amd_irongate_private.gatt_pages[i]->real) | 1, | 170 | writel(virt_to_gart(amd_irongate_private.gatt_pages[i]->real) | 1, |
| 171 | page_dir.remapped+GET_PAGE_DIR_OFF(addr)); | 171 | page_dir.remapped+GET_PAGE_DIR_OFF(addr)); |
| 172 | readl(page_dir.remapped+GET_PAGE_DIR_OFF(addr)); /* PCI Posting. */ | 172 | readl(page_dir.remapped+GET_PAGE_DIR_OFF(addr)); /* PCI Posting. */ |
| 173 | } | 173 | } |
diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c index 399c042f68f0..1407945a5892 100644 --- a/drivers/char/agp/amd64-agp.c +++ b/drivers/char/agp/amd64-agp.c | |||
| @@ -219,7 +219,7 @@ static struct aper_size_info_32 amd_8151_sizes[7] = | |||
| 219 | 219 | ||
| 220 | static int amd_8151_configure(void) | 220 | static int amd_8151_configure(void) |
| 221 | { | 221 | { |
| 222 | unsigned long gatt_bus = virt_to_phys(agp_bridge->gatt_table_real); | 222 | unsigned long gatt_bus = virt_to_gart(agp_bridge->gatt_table_real); |
| 223 | 223 | ||
| 224 | /* Configure AGP regs in each x86-64 host bridge. */ | 224 | /* Configure AGP regs in each x86-64 host bridge. */ |
| 225 | for_each_nb() { | 225 | for_each_nb() { |
| @@ -591,7 +591,7 @@ static void __devexit agp_amd64_remove(struct pci_dev *pdev) | |||
| 591 | { | 591 | { |
| 592 | struct agp_bridge_data *bridge = pci_get_drvdata(pdev); | 592 | struct agp_bridge_data *bridge = pci_get_drvdata(pdev); |
| 593 | 593 | ||
| 594 | release_mem_region(virt_to_phys(bridge->gatt_table_real), | 594 | release_mem_region(virt_to_gart(bridge->gatt_table_real), |
| 595 | amd64_aperture_sizes[bridge->aperture_size_idx].size); | 595 | amd64_aperture_sizes[bridge->aperture_size_idx].size); |
| 596 | agp_remove_bridge(bridge); | 596 | agp_remove_bridge(bridge); |
| 597 | agp_put_bridge(bridge); | 597 | agp_put_bridge(bridge); |
diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c index a65f8827c283..e572ced9100a 100644 --- a/drivers/char/agp/ati-agp.c +++ b/drivers/char/agp/ati-agp.c | |||
| @@ -61,7 +61,7 @@ static int ati_create_page_map(ati_page_map *page_map) | |||
| 61 | 61 | ||
| 62 | SetPageReserved(virt_to_page(page_map->real)); | 62 | SetPageReserved(virt_to_page(page_map->real)); |
| 63 | err = map_page_into_agp(virt_to_page(page_map->real)); | 63 | err = map_page_into_agp(virt_to_page(page_map->real)); |
| 64 | page_map->remapped = ioremap_nocache(virt_to_phys(page_map->real), | 64 | page_map->remapped = ioremap_nocache(virt_to_gart(page_map->real), |
| 65 | PAGE_SIZE); | 65 | PAGE_SIZE); |
| 66 | if (page_map->remapped == NULL || err) { | 66 | if (page_map->remapped == NULL || err) { |
| 67 | ClearPageReserved(virt_to_page(page_map->real)); | 67 | ClearPageReserved(virt_to_page(page_map->real)); |
| @@ -343,7 +343,7 @@ static int ati_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 343 | 343 | ||
| 344 | agp_bridge->gatt_table_real = (u32 *)page_dir.real; | 344 | agp_bridge->gatt_table_real = (u32 *)page_dir.real; |
| 345 | agp_bridge->gatt_table = (u32 __iomem *) page_dir.remapped; | 345 | agp_bridge->gatt_table = (u32 __iomem *) page_dir.remapped; |
| 346 | agp_bridge->gatt_bus_addr = virt_to_bus(page_dir.real); | 346 | agp_bridge->gatt_bus_addr = virt_to_gart(page_dir.real); |
| 347 | 347 | ||
| 348 | /* Write out the size register */ | 348 | /* Write out the size register */ |
| 349 | current_size = A_SIZE_LVL2(agp_bridge->current_size); | 349 | current_size = A_SIZE_LVL2(agp_bridge->current_size); |
| @@ -373,7 +373,7 @@ static int ati_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 373 | 373 | ||
| 374 | /* Calculate the agp offset */ | 374 | /* Calculate the agp offset */ |
| 375 | for(i = 0; i < value->num_entries / 1024; i++, addr += 0x00400000) { | 375 | for(i = 0; i < value->num_entries / 1024; i++, addr += 0x00400000) { |
| 376 | writel(virt_to_bus(ati_generic_private.gatt_pages[i]->real) | 1, | 376 | writel(virt_to_gart(ati_generic_private.gatt_pages[i]->real) | 1, |
| 377 | page_dir.remapped+GET_PAGE_DIR_OFF(addr)); | 377 | page_dir.remapped+GET_PAGE_DIR_OFF(addr)); |
| 378 | readl(page_dir.remapped+GET_PAGE_DIR_OFF(addr)); /* PCI Posting. */ | 378 | readl(page_dir.remapped+GET_PAGE_DIR_OFF(addr)); /* PCI Posting. */ |
| 379 | } | 379 | } |
diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index 2f3dfb63bdc6..4d4e602fdc7e 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c | |||
| @@ -148,7 +148,7 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 148 | return -ENOMEM; | 148 | return -ENOMEM; |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | bridge->scratch_page_real = virt_to_phys(addr); | 151 | bridge->scratch_page_real = virt_to_gart(addr); |
| 152 | bridge->scratch_page = | 152 | bridge->scratch_page = |
| 153 | bridge->driver->mask_memory(bridge, bridge->scratch_page_real, 0); | 153 | bridge->driver->mask_memory(bridge, bridge->scratch_page_real, 0); |
| 154 | } | 154 | } |
| @@ -189,7 +189,7 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge) | |||
| 189 | err_out: | 189 | err_out: |
| 190 | if (bridge->driver->needs_scratch_page) | 190 | if (bridge->driver->needs_scratch_page) |
| 191 | bridge->driver->agp_destroy_page( | 191 | bridge->driver->agp_destroy_page( |
| 192 | phys_to_virt(bridge->scratch_page_real)); | 192 | gart_to_virt(bridge->scratch_page_real)); |
| 193 | if (got_gatt) | 193 | if (got_gatt) |
| 194 | bridge->driver->free_gatt_table(bridge); | 194 | bridge->driver->free_gatt_table(bridge); |
| 195 | if (got_keylist) { | 195 | if (got_keylist) { |
| @@ -214,7 +214,7 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge) | |||
| 214 | if (bridge->driver->agp_destroy_page && | 214 | if (bridge->driver->agp_destroy_page && |
| 215 | bridge->driver->needs_scratch_page) | 215 | bridge->driver->needs_scratch_page) |
| 216 | bridge->driver->agp_destroy_page( | 216 | bridge->driver->agp_destroy_page( |
| 217 | phys_to_virt(bridge->scratch_page_real)); | 217 | gart_to_virt(bridge->scratch_page_real)); |
| 218 | } | 218 | } |
| 219 | 219 | ||
| 220 | /* When we remove the global variable agp_bridge from all drivers | 220 | /* When we remove the global variable agp_bridge from all drivers |
diff --git a/drivers/char/agp/efficeon-agp.c b/drivers/char/agp/efficeon-agp.c index 1383c3165ea1..ac19fdcd21c1 100644 --- a/drivers/char/agp/efficeon-agp.c +++ b/drivers/char/agp/efficeon-agp.c | |||
| @@ -219,7 +219,7 @@ static int efficeon_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 219 | 219 | ||
| 220 | efficeon_private.l1_table[index] = page; | 220 | efficeon_private.l1_table[index] = page; |
| 221 | 221 | ||
| 222 | value = __pa(page) | pati | present | index; | 222 | value = virt_to_gart(page) | pati | present | index; |
| 223 | 223 | ||
| 224 | pci_write_config_dword(agp_bridge->dev, | 224 | pci_write_config_dword(agp_bridge->dev, |
| 225 | EFFICEON_ATTPAGE, value); | 225 | EFFICEON_ATTPAGE, value); |
diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c index c321a924e38a..f0079e991bdc 100644 --- a/drivers/char/agp/generic.c +++ b/drivers/char/agp/generic.c | |||
| @@ -153,7 +153,7 @@ void agp_free_memory(struct agp_memory *curr) | |||
| 153 | } | 153 | } |
| 154 | if (curr->page_count != 0) { | 154 | if (curr->page_count != 0) { |
| 155 | for (i = 0; i < curr->page_count; i++) { | 155 | for (i = 0; i < curr->page_count; i++) { |
| 156 | curr->bridge->driver->agp_destroy_page(phys_to_virt(curr->memory[i])); | 156 | curr->bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[i])); |
| 157 | } | 157 | } |
| 158 | } | 158 | } |
| 159 | agp_free_key(curr->key); | 159 | agp_free_key(curr->key); |
| @@ -209,7 +209,7 @@ struct agp_memory *agp_allocate_memory(struct agp_bridge_data *bridge, | |||
| 209 | agp_free_memory(new); | 209 | agp_free_memory(new); |
| 210 | return NULL; | 210 | return NULL; |
| 211 | } | 211 | } |
| 212 | new->memory[i] = virt_to_phys(addr); | 212 | new->memory[i] = virt_to_gart(addr); |
| 213 | new->page_count++; | 213 | new->page_count++; |
| 214 | } | 214 | } |
| 215 | new->bridge = bridge; | 215 | new->bridge = bridge; |
| @@ -295,19 +295,6 @@ int agp_num_entries(void) | |||
| 295 | EXPORT_SYMBOL_GPL(agp_num_entries); | 295 | EXPORT_SYMBOL_GPL(agp_num_entries); |
| 296 | 296 | ||
| 297 | 297 | ||
| 298 | static int check_bridge_mode(struct pci_dev *dev) | ||
| 299 | { | ||
| 300 | u32 agp3; | ||
| 301 | u8 cap_ptr; | ||
| 302 | |||
| 303 | cap_ptr = pci_find_capability(dev, PCI_CAP_ID_AGP); | ||
| 304 | pci_read_config_dword(dev, cap_ptr+AGPSTAT, &agp3); | ||
| 305 | if (agp3 & AGPSTAT_MODE_3_0) | ||
| 306 | return 1; | ||
| 307 | return 0; | ||
| 308 | } | ||
| 309 | |||
| 310 | |||
| 311 | /** | 298 | /** |
| 312 | * agp_copy_info - copy bridge state information | 299 | * agp_copy_info - copy bridge state information |
| 313 | * | 300 | * |
| @@ -328,7 +315,7 @@ int agp_copy_info(struct agp_bridge_data *bridge, struct agp_kern_info *info) | |||
| 328 | info->version.minor = bridge->version->minor; | 315 | info->version.minor = bridge->version->minor; |
| 329 | info->chipset = SUPPORTED; | 316 | info->chipset = SUPPORTED; |
| 330 | info->device = bridge->dev; | 317 | info->device = bridge->dev; |
| 331 | if (check_bridge_mode(bridge->dev)) | 318 | if (bridge->mode & AGPSTAT_MODE_3_0) |
| 332 | info->mode = bridge->mode & ~AGP3_RESERVED_MASK; | 319 | info->mode = bridge->mode & ~AGP3_RESERVED_MASK; |
| 333 | else | 320 | else |
| 334 | info->mode = bridge->mode & ~AGP2_RESERVED_MASK; | 321 | info->mode = bridge->mode & ~AGP2_RESERVED_MASK; |
| @@ -661,7 +648,7 @@ u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 requested_mode | |||
| 661 | bridge_agpstat &= ~AGPSTAT_FW; | 648 | bridge_agpstat &= ~AGPSTAT_FW; |
| 662 | 649 | ||
| 663 | /* Check to see if we are operating in 3.0 mode */ | 650 | /* Check to see if we are operating in 3.0 mode */ |
| 664 | if (check_bridge_mode(agp_bridge->dev)) | 651 | if (agp_bridge->mode & AGPSTAT_MODE_3_0) |
| 665 | agp_v3_parse_one(&requested_mode, &bridge_agpstat, &vga_agpstat); | 652 | agp_v3_parse_one(&requested_mode, &bridge_agpstat, &vga_agpstat); |
| 666 | else | 653 | else |
| 667 | agp_v2_parse_one(&requested_mode, &bridge_agpstat, &vga_agpstat); | 654 | agp_v2_parse_one(&requested_mode, &bridge_agpstat, &vga_agpstat); |
| @@ -732,7 +719,7 @@ void agp_generic_enable(struct agp_bridge_data *bridge, u32 requested_mode) | |||
| 732 | 719 | ||
| 733 | /* Do AGP version specific frobbing. */ | 720 | /* Do AGP version specific frobbing. */ |
| 734 | if (bridge->major_version >= 3) { | 721 | if (bridge->major_version >= 3) { |
| 735 | if (check_bridge_mode(bridge->dev)) { | 722 | if (bridge->mode & AGPSTAT_MODE_3_0) { |
| 736 | /* If we have 3.5, we can do the isoch stuff. */ | 723 | /* If we have 3.5, we can do the isoch stuff. */ |
| 737 | if (bridge->minor_version >= 5) | 724 | if (bridge->minor_version >= 5) |
| 738 | agp_3_5_enable(bridge); | 725 | agp_3_5_enable(bridge); |
| @@ -806,8 +793,7 @@ int agp_generic_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 806 | break; | 793 | break; |
| 807 | } | 794 | } |
| 808 | 795 | ||
| 809 | table = (char *) __get_free_pages(GFP_KERNEL, | 796 | table = alloc_gatt_pages(page_order); |
| 810 | page_order); | ||
| 811 | 797 | ||
| 812 | if (table == NULL) { | 798 | if (table == NULL) { |
| 813 | i++; | 799 | i++; |
| @@ -838,7 +824,7 @@ int agp_generic_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 838 | size = ((struct aper_size_info_fixed *) temp)->size; | 824 | size = ((struct aper_size_info_fixed *) temp)->size; |
| 839 | page_order = ((struct aper_size_info_fixed *) temp)->page_order; | 825 | page_order = ((struct aper_size_info_fixed *) temp)->page_order; |
| 840 | num_entries = ((struct aper_size_info_fixed *) temp)->num_entries; | 826 | num_entries = ((struct aper_size_info_fixed *) temp)->num_entries; |
| 841 | table = (char *) __get_free_pages(GFP_KERNEL, page_order); | 827 | table = alloc_gatt_pages(page_order); |
| 842 | } | 828 | } |
| 843 | 829 | ||
| 844 | if (table == NULL) | 830 | if (table == NULL) |
| @@ -853,7 +839,7 @@ int agp_generic_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 853 | agp_gatt_table = (void *)table; | 839 | agp_gatt_table = (void *)table; |
| 854 | 840 | ||
| 855 | bridge->driver->cache_flush(); | 841 | bridge->driver->cache_flush(); |
| 856 | bridge->gatt_table = ioremap_nocache(virt_to_phys(table), | 842 | bridge->gatt_table = ioremap_nocache(virt_to_gart(table), |
| 857 | (PAGE_SIZE * (1 << page_order))); | 843 | (PAGE_SIZE * (1 << page_order))); |
| 858 | bridge->driver->cache_flush(); | 844 | bridge->driver->cache_flush(); |
| 859 | 845 | ||
| @@ -861,11 +847,11 @@ int agp_generic_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 861 | for (page = virt_to_page(table); page <= virt_to_page(table_end); page++) | 847 | for (page = virt_to_page(table); page <= virt_to_page(table_end); page++) |
| 862 | ClearPageReserved(page); | 848 | ClearPageReserved(page); |
| 863 | 849 | ||
| 864 | free_pages((unsigned long) table, page_order); | 850 | free_gatt_pages(table, page_order); |
| 865 | 851 | ||
| 866 | return -ENOMEM; | 852 | return -ENOMEM; |
| 867 | } | 853 | } |
| 868 | bridge->gatt_bus_addr = virt_to_phys(bridge->gatt_table_real); | 854 | bridge->gatt_bus_addr = virt_to_gart(bridge->gatt_table_real); |
| 869 | 855 | ||
| 870 | /* AK: bogus, should encode addresses > 4GB */ | 856 | /* AK: bogus, should encode addresses > 4GB */ |
| 871 | for (i = 0; i < num_entries; i++) { | 857 | for (i = 0; i < num_entries; i++) { |
| @@ -919,7 +905,7 @@ int agp_generic_free_gatt_table(struct agp_bridge_data *bridge) | |||
| 919 | for (page = virt_to_page(table); page <= virt_to_page(table_end); page++) | 905 | for (page = virt_to_page(table); page <= virt_to_page(table_end); page++) |
| 920 | ClearPageReserved(page); | 906 | ClearPageReserved(page); |
| 921 | 907 | ||
| 922 | free_pages((unsigned long) bridge->gatt_table_real, page_order); | 908 | free_gatt_pages(bridge->gatt_table_real, page_order); |
| 923 | 909 | ||
| 924 | agp_gatt_table = NULL; | 910 | agp_gatt_table = NULL; |
| 925 | bridge->gatt_table = NULL; | 911 | bridge->gatt_table = NULL; |
diff --git a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c index 6052bfa04c72..99762b6c19ae 100644 --- a/drivers/char/agp/hp-agp.c +++ b/drivers/char/agp/hp-agp.c | |||
| @@ -110,7 +110,7 @@ static int __init hp_zx1_ioc_shared(void) | |||
| 110 | hp->gart_size = HP_ZX1_GART_SIZE; | 110 | hp->gart_size = HP_ZX1_GART_SIZE; |
| 111 | hp->gatt_entries = hp->gart_size / hp->io_page_size; | 111 | hp->gatt_entries = hp->gart_size / hp->io_page_size; |
| 112 | 112 | ||
| 113 | hp->io_pdir = phys_to_virt(readq(hp->ioc_regs+HP_ZX1_PDIR_BASE)); | 113 | hp->io_pdir = gart_to_virt(readq(hp->ioc_regs+HP_ZX1_PDIR_BASE)); |
| 114 | hp->gatt = &hp->io_pdir[HP_ZX1_IOVA_TO_PDIR(hp->gart_base)]; | 114 | hp->gatt = &hp->io_pdir[HP_ZX1_IOVA_TO_PDIR(hp->gart_base)]; |
| 115 | 115 | ||
| 116 | if (hp->gatt[0] != HP_ZX1_SBA_IOMMU_COOKIE) { | 116 | if (hp->gatt[0] != HP_ZX1_SBA_IOMMU_COOKIE) { |
| @@ -248,7 +248,7 @@ hp_zx1_configure (void) | |||
| 248 | agp_bridge->mode = readl(hp->lba_regs+hp->lba_cap_offset+PCI_AGP_STATUS); | 248 | agp_bridge->mode = readl(hp->lba_regs+hp->lba_cap_offset+PCI_AGP_STATUS); |
| 249 | 249 | ||
| 250 | if (hp->io_pdir_owner) { | 250 | if (hp->io_pdir_owner) { |
| 251 | writel(virt_to_phys(hp->io_pdir), hp->ioc_regs+HP_ZX1_PDIR_BASE); | 251 | writel(virt_to_gart(hp->io_pdir), hp->ioc_regs+HP_ZX1_PDIR_BASE); |
| 252 | readl(hp->ioc_regs+HP_ZX1_PDIR_BASE); | 252 | readl(hp->ioc_regs+HP_ZX1_PDIR_BASE); |
| 253 | writel(hp->io_tlb_ps, hp->ioc_regs+HP_ZX1_TCNFG); | 253 | writel(hp->io_tlb_ps, hp->ioc_regs+HP_ZX1_TCNFG); |
| 254 | readl(hp->ioc_regs+HP_ZX1_TCNFG); | 254 | readl(hp->ioc_regs+HP_ZX1_TCNFG); |
diff --git a/drivers/char/agp/i460-agp.c b/drivers/char/agp/i460-agp.c index adbea896c0d2..94943298c03e 100644 --- a/drivers/char/agp/i460-agp.c +++ b/drivers/char/agp/i460-agp.c | |||
| @@ -372,7 +372,7 @@ static int i460_alloc_large_page (struct lp_desc *lp) | |||
| 372 | } | 372 | } |
| 373 | memset(lp->alloced_map, 0, map_size); | 373 | memset(lp->alloced_map, 0, map_size); |
| 374 | 374 | ||
| 375 | lp->paddr = virt_to_phys(lpage); | 375 | lp->paddr = virt_to_gart(lpage); |
| 376 | lp->refcount = 0; | 376 | lp->refcount = 0; |
| 377 | atomic_add(I460_KPAGES_PER_IOPAGE, &agp_bridge->current_memory_agp); | 377 | atomic_add(I460_KPAGES_PER_IOPAGE, &agp_bridge->current_memory_agp); |
| 378 | return 0; | 378 | return 0; |
| @@ -383,7 +383,7 @@ static void i460_free_large_page (struct lp_desc *lp) | |||
| 383 | kfree(lp->alloced_map); | 383 | kfree(lp->alloced_map); |
| 384 | lp->alloced_map = NULL; | 384 | lp->alloced_map = NULL; |
| 385 | 385 | ||
| 386 | free_pages((unsigned long) phys_to_virt(lp->paddr), I460_IO_PAGE_SHIFT - PAGE_SHIFT); | 386 | free_pages((unsigned long) gart_to_virt(lp->paddr), I460_IO_PAGE_SHIFT - PAGE_SHIFT); |
| 387 | atomic_sub(I460_KPAGES_PER_IOPAGE, &agp_bridge->current_memory_agp); | 387 | atomic_sub(I460_KPAGES_PER_IOPAGE, &agp_bridge->current_memory_agp); |
| 388 | } | 388 | } |
| 389 | 389 | ||
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index 8c7d727432bb..51266d6b4d78 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
| @@ -286,7 +286,7 @@ static struct agp_memory *alloc_agpphysmem_i8xx(size_t pg_count, int type) | |||
| 286 | if (new == NULL) | 286 | if (new == NULL) |
| 287 | return NULL; | 287 | return NULL; |
| 288 | 288 | ||
| 289 | new->memory[0] = virt_to_phys(addr); | 289 | new->memory[0] = virt_to_gart(addr); |
| 290 | if (pg_count == 4) { | 290 | if (pg_count == 4) { |
| 291 | /* kludge to get 4 physical pages for ARGB cursor */ | 291 | /* kludge to get 4 physical pages for ARGB cursor */ |
| 292 | new->memory[1] = new->memory[0] + PAGE_SIZE; | 292 | new->memory[1] = new->memory[0] + PAGE_SIZE; |
| @@ -329,10 +329,10 @@ static void intel_i810_free_by_type(struct agp_memory *curr) | |||
| 329 | agp_free_key(curr->key); | 329 | agp_free_key(curr->key); |
| 330 | if(curr->type == AGP_PHYS_MEMORY) { | 330 | if(curr->type == AGP_PHYS_MEMORY) { |
| 331 | if (curr->page_count == 4) | 331 | if (curr->page_count == 4) |
| 332 | i8xx_destroy_pages(phys_to_virt(curr->memory[0])); | 332 | i8xx_destroy_pages(gart_to_virt(curr->memory[0])); |
| 333 | else | 333 | else |
| 334 | agp_bridge->driver->agp_destroy_page( | 334 | agp_bridge->driver->agp_destroy_page( |
| 335 | phys_to_virt(curr->memory[0])); | 335 | gart_to_virt(curr->memory[0])); |
| 336 | vfree(curr->memory); | 336 | vfree(curr->memory); |
| 337 | } | 337 | } |
| 338 | kfree(curr); | 338 | kfree(curr); |
| @@ -418,7 +418,8 @@ static void intel_i830_init_gtt_entries(void) | |||
| 418 | case I915_GMCH_GMS_STOLEN_48M: | 418 | case I915_GMCH_GMS_STOLEN_48M: |
| 419 | /* Check it's really I915G */ | 419 | /* Check it's really I915G */ |
| 420 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915G_HB || | 420 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915G_HB || |
| 421 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB) | 421 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB || |
| 422 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945G_HB) | ||
| 422 | gtt_entries = MB(48) - KB(size); | 423 | gtt_entries = MB(48) - KB(size); |
| 423 | else | 424 | else |
| 424 | gtt_entries = 0; | 425 | gtt_entries = 0; |
| @@ -426,7 +427,8 @@ static void intel_i830_init_gtt_entries(void) | |||
| 426 | case I915_GMCH_GMS_STOLEN_64M: | 427 | case I915_GMCH_GMS_STOLEN_64M: |
| 427 | /* Check it's really I915G */ | 428 | /* Check it's really I915G */ |
| 428 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915G_HB || | 429 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915G_HB || |
| 429 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB) | 430 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB || |
| 431 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82945G_HB) | ||
| 430 | gtt_entries = MB(64) - KB(size); | 432 | gtt_entries = MB(64) - KB(size); |
| 431 | else | 433 | else |
| 432 | gtt_entries = 0; | 434 | gtt_entries = 0; |
| @@ -1662,6 +1664,14 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, | |||
| 1662 | } | 1664 | } |
| 1663 | name = "915GM"; | 1665 | name = "915GM"; |
| 1664 | break; | 1666 | break; |
| 1667 | case PCI_DEVICE_ID_INTEL_82945G_HB: | ||
| 1668 | if (find_i830(PCI_DEVICE_ID_INTEL_82945G_IG)) { | ||
| 1669 | bridge->driver = &intel_915_driver; | ||
| 1670 | } else { | ||
| 1671 | bridge->driver = &intel_845_driver; | ||
| 1672 | } | ||
| 1673 | name = "945G"; | ||
| 1674 | break; | ||
| 1665 | case PCI_DEVICE_ID_INTEL_7505_0: | 1675 | case PCI_DEVICE_ID_INTEL_7505_0: |
| 1666 | bridge->driver = &intel_7505_driver; | 1676 | bridge->driver = &intel_7505_driver; |
| 1667 | name = "E7505"; | 1677 | name = "E7505"; |
| @@ -1801,6 +1811,7 @@ static struct pci_device_id agp_intel_pci_table[] = { | |||
| 1801 | ID(PCI_DEVICE_ID_INTEL_7205_0), | 1811 | ID(PCI_DEVICE_ID_INTEL_7205_0), |
| 1802 | ID(PCI_DEVICE_ID_INTEL_82915G_HB), | 1812 | ID(PCI_DEVICE_ID_INTEL_82915G_HB), |
| 1803 | ID(PCI_DEVICE_ID_INTEL_82915GM_HB), | 1813 | ID(PCI_DEVICE_ID_INTEL_82915GM_HB), |
| 1814 | ID(PCI_DEVICE_ID_INTEL_82945G_HB), | ||
| 1804 | { } | 1815 | { } |
| 1805 | }; | 1816 | }; |
| 1806 | 1817 | ||
diff --git a/drivers/char/agp/sgi-agp.c b/drivers/char/agp/sgi-agp.c index 4b3eda267976..d3aa159c9dec 100644 --- a/drivers/char/agp/sgi-agp.c +++ b/drivers/char/agp/sgi-agp.c | |||
| @@ -133,11 +133,14 @@ static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start, | |||
| 133 | off_t j; | 133 | off_t j; |
| 134 | void *temp; | 134 | void *temp; |
| 135 | struct agp_bridge_data *bridge; | 135 | struct agp_bridge_data *bridge; |
| 136 | u64 *table; | ||
| 136 | 137 | ||
| 137 | bridge = mem->bridge; | 138 | bridge = mem->bridge; |
| 138 | if (!bridge) | 139 | if (!bridge) |
| 139 | return -EINVAL; | 140 | return -EINVAL; |
| 140 | 141 | ||
| 142 | table = (u64 *)bridge->gatt_table; | ||
| 143 | |||
| 141 | temp = bridge->current_size; | 144 | temp = bridge->current_size; |
| 142 | 145 | ||
| 143 | switch (bridge->driver->size_type) { | 146 | switch (bridge->driver->size_type) { |
| @@ -175,7 +178,7 @@ static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start, | |||
| 175 | j = pg_start; | 178 | j = pg_start; |
| 176 | 179 | ||
| 177 | while (j < (pg_start + mem->page_count)) { | 180 | while (j < (pg_start + mem->page_count)) { |
| 178 | if (*(bridge->gatt_table + j)) | 181 | if (table[j]) |
| 179 | return -EBUSY; | 182 | return -EBUSY; |
| 180 | j++; | 183 | j++; |
| 181 | } | 184 | } |
| @@ -186,7 +189,7 @@ static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start, | |||
| 186 | } | 189 | } |
| 187 | 190 | ||
| 188 | for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { | 191 | for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { |
| 189 | *(bridge->gatt_table + j) = | 192 | table[j] = |
| 190 | bridge->driver->mask_memory(bridge, mem->memory[i], | 193 | bridge->driver->mask_memory(bridge, mem->memory[i], |
| 191 | mem->type); | 194 | mem->type); |
| 192 | } | 195 | } |
| @@ -200,6 +203,7 @@ static int sgi_tioca_remove_memory(struct agp_memory *mem, off_t pg_start, | |||
| 200 | { | 203 | { |
| 201 | size_t i; | 204 | size_t i; |
| 202 | struct agp_bridge_data *bridge; | 205 | struct agp_bridge_data *bridge; |
| 206 | u64 *table; | ||
| 203 | 207 | ||
| 204 | bridge = mem->bridge; | 208 | bridge = mem->bridge; |
| 205 | if (!bridge) | 209 | if (!bridge) |
| @@ -209,8 +213,10 @@ static int sgi_tioca_remove_memory(struct agp_memory *mem, off_t pg_start, | |||
| 209 | return -EINVAL; | 213 | return -EINVAL; |
| 210 | } | 214 | } |
| 211 | 215 | ||
| 216 | table = (u64 *)bridge->gatt_table; | ||
| 217 | |||
| 212 | for (i = pg_start; i < (mem->page_count + pg_start); i++) { | 218 | for (i = pg_start; i < (mem->page_count + pg_start); i++) { |
| 213 | *(bridge->gatt_table + i) = 0; | 219 | table[i] = 0; |
| 214 | } | 220 | } |
| 215 | 221 | ||
| 216 | bridge->driver->tlb_flush(mem); | 222 | bridge->driver->tlb_flush(mem); |
diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c index 10c23302dd84..a9fb12c20eb7 100644 --- a/drivers/char/agp/sworks-agp.c +++ b/drivers/char/agp/sworks-agp.c | |||
| @@ -51,7 +51,7 @@ static int serverworks_create_page_map(struct serverworks_page_map *page_map) | |||
| 51 | } | 51 | } |
| 52 | SetPageReserved(virt_to_page(page_map->real)); | 52 | SetPageReserved(virt_to_page(page_map->real)); |
| 53 | global_cache_flush(); | 53 | global_cache_flush(); |
| 54 | page_map->remapped = ioremap_nocache(virt_to_phys(page_map->real), | 54 | page_map->remapped = ioremap_nocache(virt_to_gart(page_map->real), |
| 55 | PAGE_SIZE); | 55 | PAGE_SIZE); |
| 56 | if (page_map->remapped == NULL) { | 56 | if (page_map->remapped == NULL) { |
| 57 | ClearPageReserved(virt_to_page(page_map->real)); | 57 | ClearPageReserved(virt_to_page(page_map->real)); |
| @@ -162,7 +162,7 @@ static int serverworks_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 162 | /* Create a fake scratch directory */ | 162 | /* Create a fake scratch directory */ |
| 163 | for(i = 0; i < 1024; i++) { | 163 | for(i = 0; i < 1024; i++) { |
| 164 | writel(agp_bridge->scratch_page, serverworks_private.scratch_dir.remapped+i); | 164 | writel(agp_bridge->scratch_page, serverworks_private.scratch_dir.remapped+i); |
| 165 | writel(virt_to_phys(serverworks_private.scratch_dir.real) | 1, page_dir.remapped+i); | 165 | writel(virt_to_gart(serverworks_private.scratch_dir.real) | 1, page_dir.remapped+i); |
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | retval = serverworks_create_gatt_pages(value->num_entries / 1024); | 168 | retval = serverworks_create_gatt_pages(value->num_entries / 1024); |
| @@ -174,7 +174,7 @@ static int serverworks_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 174 | 174 | ||
| 175 | agp_bridge->gatt_table_real = (u32 *)page_dir.real; | 175 | agp_bridge->gatt_table_real = (u32 *)page_dir.real; |
| 176 | agp_bridge->gatt_table = (u32 __iomem *)page_dir.remapped; | 176 | agp_bridge->gatt_table = (u32 __iomem *)page_dir.remapped; |
| 177 | agp_bridge->gatt_bus_addr = virt_to_phys(page_dir.real); | 177 | agp_bridge->gatt_bus_addr = virt_to_gart(page_dir.real); |
| 178 | 178 | ||
| 179 | /* Get the address for the gart region. | 179 | /* Get the address for the gart region. |
| 180 | * This is a bus address even on the alpha, b/c its | 180 | * This is a bus address even on the alpha, b/c its |
| @@ -187,7 +187,7 @@ static int serverworks_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 187 | /* Calculate the agp offset */ | 187 | /* Calculate the agp offset */ |
| 188 | 188 | ||
| 189 | for(i = 0; i < value->num_entries / 1024; i++) | 189 | for(i = 0; i < value->num_entries / 1024; i++) |
| 190 | writel(virt_to_phys(serverworks_private.gatt_pages[i]->real)|1, page_dir.remapped+i); | 190 | writel(virt_to_gart(serverworks_private.gatt_pages[i]->real)|1, page_dir.remapped+i); |
| 191 | 191 | ||
| 192 | return 0; | 192 | return 0; |
| 193 | } | 193 | } |
diff --git a/drivers/char/agp/uninorth-agp.c b/drivers/char/agp/uninorth-agp.c index a673971f2a90..c8255312b8c1 100644 --- a/drivers/char/agp/uninorth-agp.c +++ b/drivers/char/agp/uninorth-agp.c | |||
| @@ -407,7 +407,7 @@ static int uninorth_create_gatt_table(struct agp_bridge_data *bridge) | |||
| 407 | 407 | ||
| 408 | bridge->gatt_table_real = (u32 *) table; | 408 | bridge->gatt_table_real = (u32 *) table; |
| 409 | bridge->gatt_table = (u32 *)table; | 409 | bridge->gatt_table = (u32 *)table; |
| 410 | bridge->gatt_bus_addr = virt_to_phys(table); | 410 | bridge->gatt_bus_addr = virt_to_gart(table); |
| 411 | 411 | ||
| 412 | for (i = 0; i < num_entries; i++) | 412 | for (i = 0; i < num_entries; i++) |
| 413 | bridge->gatt_table[i] = 0; | 413 | bridge->gatt_table[i] = 0; |
diff --git a/drivers/char/drm/drm_pciids.h b/drivers/char/drm/drm_pciids.h index 54a2914e3a32..11c6950158b3 100644 --- a/drivers/char/drm/drm_pciids.h +++ b/drivers/char/drm/drm_pciids.h | |||
| @@ -220,5 +220,6 @@ | |||
| 220 | {0x8086, 0x2572, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 220 | {0x8086, 0x2572, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
| 221 | {0x8086, 0x2582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 221 | {0x8086, 0x2582, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
| 222 | {0x8086, 0x2592, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | 222 | {0x8086, 0x2592, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ |
| 223 | {0x8086, 0x2772, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ | ||
| 223 | {0, 0, 0} | 224 | {0, 0, 0} |
| 224 | 225 | ||
diff --git a/drivers/char/drm/radeon_irq.c b/drivers/char/drm/radeon_irq.c index 5b18bee6492e..cd25f28e26a3 100644 --- a/drivers/char/drm/radeon_irq.c +++ b/drivers/char/drm/radeon_irq.c | |||
| @@ -123,11 +123,6 @@ static int radeon_wait_irq(drm_device_t *dev, int swi_nr) | |||
| 123 | 123 | ||
| 124 | dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE; | 124 | dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE; |
| 125 | 125 | ||
| 126 | /* This is a hack to work around mysterious freezes on certain | ||
| 127 | * systems: | ||
| 128 | */ | ||
| 129 | radeon_acknowledge_irqs( dev_priv ); | ||
| 130 | |||
| 131 | DRM_WAIT_ON( ret, dev_priv->swi_queue, 3 * DRM_HZ, | 126 | DRM_WAIT_ON( ret, dev_priv->swi_queue, 3 * DRM_HZ, |
| 132 | RADEON_READ( RADEON_LAST_SWI_REG ) >= swi_nr ); | 127 | RADEON_READ( RADEON_LAST_SWI_REG ) >= swi_nr ); |
| 133 | 128 | ||
diff --git a/drivers/char/mxser.c b/drivers/char/mxser.c index 7a245068e3e5..f022f0944434 100644 --- a/drivers/char/mxser.c +++ b/drivers/char/mxser.c | |||
| @@ -1995,9 +1995,6 @@ static void mxser_receive_chars(struct mxser_struct *info, int *status) | |||
| 1995 | unsigned char ch, gdl; | 1995 | unsigned char ch, gdl; |
| 1996 | int ignored = 0; | 1996 | int ignored = 0; |
| 1997 | int cnt = 0; | 1997 | int cnt = 0; |
| 1998 | unsigned char *cp; | ||
| 1999 | char *fp; | ||
| 2000 | int count; | ||
| 2001 | int recv_room; | 1998 | int recv_room; |
| 2002 | int max = 256; | 1999 | int max = 256; |
| 2003 | unsigned long flags; | 2000 | unsigned long flags; |
| @@ -2011,10 +2008,6 @@ static void mxser_receive_chars(struct mxser_struct *info, int *status) | |||
| 2011 | //return; | 2008 | //return; |
| 2012 | } | 2009 | } |
| 2013 | 2010 | ||
| 2014 | cp = tty->flip.char_buf; | ||
| 2015 | fp = tty->flip.flag_buf; | ||
| 2016 | count = 0; | ||
| 2017 | |||
| 2018 | // following add by Victor Yu. 09-02-2002 | 2011 | // following add by Victor Yu. 09-02-2002 |
| 2019 | if (info->IsMoxaMustChipFlag != MOXA_OTHER_UART) { | 2012 | if (info->IsMoxaMustChipFlag != MOXA_OTHER_UART) { |
| 2020 | 2013 | ||
| @@ -2041,12 +2034,10 @@ static void mxser_receive_chars(struct mxser_struct *info, int *status) | |||
| 2041 | } | 2034 | } |
| 2042 | while (gdl--) { | 2035 | while (gdl--) { |
| 2043 | ch = inb(info->base + UART_RX); | 2036 | ch = inb(info->base + UART_RX); |
| 2044 | count++; | 2037 | tty_insert_flip_char(tty, ch, 0); |
| 2045 | *cp++ = ch; | ||
| 2046 | *fp++ = 0; | ||
| 2047 | cnt++; | 2038 | cnt++; |
| 2048 | /* | 2039 | /* |
| 2049 | if((count>=HI_WATER) && (info->stop_rx==0)){ | 2040 | if((cnt>=HI_WATER) && (info->stop_rx==0)){ |
| 2050 | mxser_stoprx(tty); | 2041 | mxser_stoprx(tty); |
| 2051 | info->stop_rx=1; | 2042 | info->stop_rx=1; |
| 2052 | break; | 2043 | break; |
| @@ -2061,7 +2052,7 @@ intr_old: | |||
| 2061 | if (max-- < 0) | 2052 | if (max-- < 0) |
| 2062 | break; | 2053 | break; |
| 2063 | /* | 2054 | /* |
| 2064 | if((count>=HI_WATER) && (info->stop_rx==0)){ | 2055 | if((cnt>=HI_WATER) && (info->stop_rx==0)){ |
| 2065 | mxser_stoprx(tty); | 2056 | mxser_stoprx(tty); |
| 2066 | info->stop_rx=1; | 2057 | info->stop_rx=1; |
| 2067 | break; | 2058 | break; |
| @@ -2078,36 +2069,33 @@ intr_old: | |||
| 2078 | if (++ignored > 100) | 2069 | if (++ignored > 100) |
| 2079 | break; | 2070 | break; |
| 2080 | } else { | 2071 | } else { |
| 2081 | count++; | 2072 | char flag = 0; |
| 2082 | if (*status & UART_LSR_SPECIAL) { | 2073 | if (*status & UART_LSR_SPECIAL) { |
| 2083 | if (*status & UART_LSR_BI) { | 2074 | if (*status & UART_LSR_BI) { |
| 2084 | *fp++ = TTY_BREAK; | 2075 | flag = TTY_BREAK; |
| 2085 | /* added by casper 1/11/2000 */ | 2076 | /* added by casper 1/11/2000 */ |
| 2086 | info->icount.brk++; | 2077 | info->icount.brk++; |
| 2087 | |||
| 2088 | /* */ | 2078 | /* */ |
| 2089 | if (info->flags & ASYNC_SAK) | 2079 | if (info->flags & ASYNC_SAK) |
| 2090 | do_SAK(tty); | 2080 | do_SAK(tty); |
| 2091 | } else if (*status & UART_LSR_PE) { | 2081 | } else if (*status & UART_LSR_PE) { |
| 2092 | *fp++ = TTY_PARITY; | 2082 | flag = TTY_PARITY; |
| 2093 | /* added by casper 1/11/2000 */ | 2083 | /* added by casper 1/11/2000 */ |
| 2094 | info->icount.parity++; | 2084 | info->icount.parity++; |
| 2095 | /* */ | 2085 | /* */ |
| 2096 | } else if (*status & UART_LSR_FE) { | 2086 | } else if (*status & UART_LSR_FE) { |
| 2097 | *fp++ = TTY_FRAME; | 2087 | flag = TTY_FRAME; |
| 2098 | /* added by casper 1/11/2000 */ | 2088 | /* added by casper 1/11/2000 */ |
| 2099 | info->icount.frame++; | 2089 | info->icount.frame++; |
| 2100 | /* */ | 2090 | /* */ |
| 2101 | } else if (*status & UART_LSR_OE) { | 2091 | } else if (*status & UART_LSR_OE) { |
| 2102 | *fp++ = TTY_OVERRUN; | 2092 | flag = TTY_OVERRUN; |
| 2103 | /* added by casper 1/11/2000 */ | 2093 | /* added by casper 1/11/2000 */ |
| 2104 | info->icount.overrun++; | 2094 | info->icount.overrun++; |
| 2105 | /* */ | 2095 | /* */ |
| 2106 | } else | 2096 | } |
| 2107 | *fp++ = 0; | 2097 | } |
| 2108 | } else | 2098 | tty_insert_flip_char(tty, ch, flag); |
| 2109 | *fp++ = 0; | ||
| 2110 | *cp++ = ch; | ||
| 2111 | cnt++; | 2099 | cnt++; |
| 2112 | if (cnt >= recv_room) { | 2100 | if (cnt >= recv_room) { |
| 2113 | if (!info->ldisc_stop_rx) { | 2101 | if (!info->ldisc_stop_rx) { |
| @@ -2132,13 +2120,13 @@ intr_old: | |||
| 2132 | // above add by Victor Yu. 09-02-2002 | 2120 | // above add by Victor Yu. 09-02-2002 |
| 2133 | } while (*status & UART_LSR_DR); | 2121 | } while (*status & UART_LSR_DR); |
| 2134 | 2122 | ||
| 2135 | end_intr: // add by Victor Yu. 09-02-2002 | 2123 | end_intr: // add by Victor Yu. 09-02-2002 |
| 2136 | 2124 | ||
| 2137 | mxvar_log.rxcnt[info->port] += cnt; | 2125 | mxvar_log.rxcnt[info->port] += cnt; |
| 2138 | info->mon_data.rxcnt += cnt; | 2126 | info->mon_data.rxcnt += cnt; |
| 2139 | info->mon_data.up_rxcnt += cnt; | 2127 | info->mon_data.up_rxcnt += cnt; |
| 2140 | spin_unlock_irqrestore(&info->slock, flags); | 2128 | spin_unlock_irqrestore(&info->slock, flags); |
| 2141 | 2129 | ||
| 2142 | tty_flip_buffer_push(tty); | 2130 | tty_flip_buffer_push(tty); |
| 2143 | } | 2131 | } |
| 2144 | 2132 | ||
diff --git a/drivers/char/vt.c b/drivers/char/vt.c index e5ef1dfc5482..d7aa7a29f67e 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c | |||
| @@ -2867,6 +2867,10 @@ void unblank_screen(void) | |||
| 2867 | */ | 2867 | */ |
| 2868 | static void blank_screen_t(unsigned long dummy) | 2868 | static void blank_screen_t(unsigned long dummy) |
| 2869 | { | 2869 | { |
| 2870 | if (unlikely(!keventd_up())) { | ||
| 2871 | mod_timer(&console_timer, jiffies + blankinterval); | ||
| 2872 | return; | ||
| 2873 | } | ||
| 2870 | blank_timer_expired = 1; | 2874 | blank_timer_expired = 1; |
| 2871 | schedule_work(&console_work); | 2875 | schedule_work(&console_work); |
| 2872 | } | 2876 | } |
