diff options
Diffstat (limited to 'arch/sh/drivers')
-rw-r--r-- | arch/sh/drivers/dma/Kconfig | 6 | ||||
-rw-r--r-- | arch/sh/drivers/heartbeat.c | 10 | ||||
-rw-r--r-- | arch/sh/drivers/pci/pci.c | 4 |
3 files changed, 17 insertions, 3 deletions
diff --git a/arch/sh/drivers/dma/Kconfig b/arch/sh/drivers/dma/Kconfig index 63e9dd30b41c..b91fa8dbf047 100644 --- a/arch/sh/drivers/dma/Kconfig +++ b/arch/sh/drivers/dma/Kconfig | |||
@@ -27,12 +27,12 @@ config NR_ONCHIP_DMA_CHANNELS | |||
27 | default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R || \ | 27 | default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R || \ |
28 | CPU_SUBTYPE_SH7760 | 28 | CPU_SUBTYPE_SH7760 |
29 | default "12" if CPU_SUBTYPE_SH7723 || CPU_SUBTYPE_SH7780 || \ | 29 | default "12" if CPU_SUBTYPE_SH7723 || CPU_SUBTYPE_SH7780 || \ |
30 | CPU_SUBTYPE_SH7785 | 30 | CPU_SUBTYPE_SH7785 || CPU_SUBTYPE_SH7724 |
31 | default "6" | 31 | default "6" |
32 | help | 32 | help |
33 | This allows you to specify the number of channels that the on-chip | 33 | This allows you to specify the number of channels that the on-chip |
34 | DMAC supports. This will be 4 for SH7091/SH7750/SH7751 and 8 for the | 34 | DMAC supports. This will be 4 for SH7750/SH7751/Sh7750S/SH7091 and 8 for the |
35 | SH7750R/SH7751R. | 35 | SH7750R/SH7751R/SH7760, 12 for the SH7723/SH7780/SH7785/SH7724, default is 6. |
36 | 36 | ||
37 | config NR_DMA_CHANNELS_BOOL | 37 | config NR_DMA_CHANNELS_BOOL |
38 | depends on SH_DMA | 38 | depends on SH_DMA |
diff --git a/arch/sh/drivers/heartbeat.c b/arch/sh/drivers/heartbeat.c index 938817e34e2b..a9339a6174fc 100644 --- a/arch/sh/drivers/heartbeat.c +++ b/arch/sh/drivers/heartbeat.c | |||
@@ -40,14 +40,19 @@ static inline void heartbeat_toggle_bit(struct heartbeat_data *hd, | |||
40 | if (inverted) | 40 | if (inverted) |
41 | new = ~new; | 41 | new = ~new; |
42 | 42 | ||
43 | new &= hd->mask; | ||
44 | |||
43 | switch (hd->regsize) { | 45 | switch (hd->regsize) { |
44 | case 32: | 46 | case 32: |
47 | new |= ioread32(hd->base) & ~hd->mask; | ||
45 | iowrite32(new, hd->base); | 48 | iowrite32(new, hd->base); |
46 | break; | 49 | break; |
47 | case 16: | 50 | case 16: |
51 | new |= ioread16(hd->base) & ~hd->mask; | ||
48 | iowrite16(new, hd->base); | 52 | iowrite16(new, hd->base); |
49 | break; | 53 | break; |
50 | default: | 54 | default: |
55 | new |= ioread8(hd->base) & ~hd->mask; | ||
51 | iowrite8(new, hd->base); | 56 | iowrite8(new, hd->base); |
52 | break; | 57 | break; |
53 | } | 58 | } |
@@ -72,6 +77,7 @@ static int heartbeat_drv_probe(struct platform_device *pdev) | |||
72 | { | 77 | { |
73 | struct resource *res; | 78 | struct resource *res; |
74 | struct heartbeat_data *hd; | 79 | struct heartbeat_data *hd; |
80 | int i; | ||
75 | 81 | ||
76 | if (unlikely(pdev->num_resources != 1)) { | 82 | if (unlikely(pdev->num_resources != 1)) { |
77 | dev_err(&pdev->dev, "invalid number of resources\n"); | 83 | dev_err(&pdev->dev, "invalid number of resources\n"); |
@@ -107,6 +113,10 @@ static int heartbeat_drv_probe(struct platform_device *pdev) | |||
107 | hd->nr_bits = ARRAY_SIZE(default_bit_pos); | 113 | hd->nr_bits = ARRAY_SIZE(default_bit_pos); |
108 | } | 114 | } |
109 | 115 | ||
116 | hd->mask = 0; | ||
117 | for (i = 0; i < hd->nr_bits; i++) | ||
118 | hd->mask |= (1 << hd->bit_pos[i]); | ||
119 | |||
110 | if (!hd->regsize) | 120 | if (!hd->regsize) |
111 | hd->regsize = 8; /* default access size */ | 121 | hd->regsize = 8; /* default access size */ |
112 | 122 | ||
diff --git a/arch/sh/drivers/pci/pci.c b/arch/sh/drivers/pci/pci.c index 9a1c423ad167..c481df639022 100644 --- a/arch/sh/drivers/pci/pci.c +++ b/arch/sh/drivers/pci/pci.c | |||
@@ -295,6 +295,8 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | |||
295 | vma->vm_page_prot); | 295 | vma->vm_page_prot); |
296 | } | 296 | } |
297 | 297 | ||
298 | #ifndef CONFIG_GENERIC_IOMAP | ||
299 | |||
298 | static void __iomem *ioport_map_pci(struct pci_dev *dev, | 300 | static void __iomem *ioport_map_pci(struct pci_dev *dev, |
299 | unsigned long port, unsigned int nr) | 301 | unsigned long port, unsigned int nr) |
300 | { | 302 | { |
@@ -346,6 +348,8 @@ void pci_iounmap(struct pci_dev *dev, void __iomem *addr) | |||
346 | } | 348 | } |
347 | EXPORT_SYMBOL(pci_iounmap); | 349 | EXPORT_SYMBOL(pci_iounmap); |
348 | 350 | ||
351 | #endif /* CONFIG_GENERIC_IOMAP */ | ||
352 | |||
349 | #ifdef CONFIG_HOTPLUG | 353 | #ifdef CONFIG_HOTPLUG |
350 | EXPORT_SYMBOL(pcibios_resource_to_bus); | 354 | EXPORT_SYMBOL(pcibios_resource_to_bus); |
351 | EXPORT_SYMBOL(pcibios_bus_to_resource); | 355 | EXPORT_SYMBOL(pcibios_bus_to_resource); |