aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/Kconfig2
-rw-r--r--drivers/char/hw_random/Kconfig2
-rw-r--r--drivers/edac/Kconfig6
-rw-r--r--drivers/i2c/busses/Kconfig2
-rw-r--r--drivers/net/ethernet/octeon/Kconfig2
-rw-r--r--drivers/net/phy/Kconfig2
-rw-r--r--drivers/rapidio/switches/idt_gen2.c2
-rw-r--r--drivers/spi/Kconfig2
-rw-r--r--drivers/ssb/Kconfig2
-rw-r--r--drivers/staging/octeon/Kconfig2
-rw-r--r--drivers/tty/serial/8250/8250_dw.c108
-rw-r--r--drivers/usb/host/Kconfig4
-rw-r--r--drivers/watchdog/Kconfig2
-rw-r--r--drivers/watchdog/sb_wdog.c2
14 files changed, 86 insertions, 54 deletions
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index aba6e93b0502..80dc988f01e4 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -160,7 +160,7 @@ config PDC_ADMA
160 160
161config PATA_OCTEON_CF 161config PATA_OCTEON_CF
162 tristate "OCTEON Boot Bus Compact Flash support" 162 tristate "OCTEON Boot Bus Compact Flash support"
163 depends on CPU_CAVIUM_OCTEON 163 depends on CAVIUM_OCTEON_SOC
164 help 164 help
165 This option enables a polled compact flash driver for use with 165 This option enables a polled compact flash driver for use with
166 compact flash cards attached to the OCTEON boot bus. 166 compact flash cards attached to the OCTEON boot bus.
diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 2f9dbf7568fb..40a865449f35 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -167,7 +167,7 @@ config HW_RANDOM_OMAP
167 167
168config HW_RANDOM_OCTEON 168config HW_RANDOM_OCTEON
169 tristate "Octeon Random Number Generator support" 169 tristate "Octeon Random Number Generator support"
170 depends on HW_RANDOM && CPU_CAVIUM_OCTEON 170 depends on HW_RANDOM && CAVIUM_OCTEON_SOC
171 default HW_RANDOM 171 default HW_RANDOM
172 ---help--- 172 ---help---
173 This driver provides kernel-side support for the Random Number 173 This driver provides kernel-side support for the Random Number
diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig
index a697a64d5383..878f09005fad 100644
--- a/drivers/edac/Kconfig
+++ b/drivers/edac/Kconfig
@@ -349,21 +349,21 @@ config EDAC_OCTEON_PC
349 349
350config EDAC_OCTEON_L2C 350config EDAC_OCTEON_L2C
351 tristate "Cavium Octeon Secondary Caches (L2C)" 351 tristate "Cavium Octeon Secondary Caches (L2C)"
352 depends on EDAC_MM_EDAC && CPU_CAVIUM_OCTEON 352 depends on EDAC_MM_EDAC && CAVIUM_OCTEON_SOC
353 help 353 help
354 Support for error detection and correction on the 354 Support for error detection and correction on the
355 Cavium Octeon family of SOCs. 355 Cavium Octeon family of SOCs.
356 356
357config EDAC_OCTEON_LMC 357config EDAC_OCTEON_LMC
358 tristate "Cavium Octeon DRAM Memory Controller (LMC)" 358 tristate "Cavium Octeon DRAM Memory Controller (LMC)"
359 depends on EDAC_MM_EDAC && CPU_CAVIUM_OCTEON 359 depends on EDAC_MM_EDAC && CAVIUM_OCTEON_SOC
360 help 360 help
361 Support for error detection and correction on the 361 Support for error detection and correction on the
362 Cavium Octeon family of SOCs. 362 Cavium Octeon family of SOCs.
363 363
364config EDAC_OCTEON_PCI 364config EDAC_OCTEON_PCI
365 tristate "Cavium Octeon PCI Controller" 365 tristate "Cavium Octeon PCI Controller"
366 depends on EDAC_MM_EDAC && PCI && CPU_CAVIUM_OCTEON 366 depends on EDAC_MM_EDAC && PCI && CAVIUM_OCTEON_SOC
367 help 367 help
368 Support for error detection and correction on the 368 Support for error detection and correction on the
369 Cavium Octeon family of SOCs. 369 Cavium Octeon family of SOCs.
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index fdc2ab4af315..dc6dea614abd 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -739,7 +739,7 @@ config I2C_WMT
739 739
740config I2C_OCTEON 740config I2C_OCTEON
741 tristate "Cavium OCTEON I2C bus support" 741 tristate "Cavium OCTEON I2C bus support"
742 depends on CPU_CAVIUM_OCTEON 742 depends on CAVIUM_OCTEON_SOC
743 help 743 help
744 Say yes if you want to support the I2C serial bus on Cavium 744 Say yes if you want to support the I2C serial bus on Cavium
745 OCTEON SOC. 745 OCTEON SOC.
diff --git a/drivers/net/ethernet/octeon/Kconfig b/drivers/net/ethernet/octeon/Kconfig
index 3de52ffd2872..a7aa28054cc1 100644
--- a/drivers/net/ethernet/octeon/Kconfig
+++ b/drivers/net/ethernet/octeon/Kconfig
@@ -4,7 +4,7 @@
4 4
5config OCTEON_MGMT_ETHERNET 5config OCTEON_MGMT_ETHERNET
6 tristate "Octeon Management port ethernet driver (CN5XXX, CN6XXX)" 6 tristate "Octeon Management port ethernet driver (CN5XXX, CN6XXX)"
7 depends on CPU_CAVIUM_OCTEON 7 depends on CAVIUM_OCTEON_SOC
8 select PHYLIB 8 select PHYLIB
9 select MDIO_OCTEON 9 select MDIO_OCTEON
10 default y 10 default y
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 3a316b30089f..342561ad3158 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -135,7 +135,7 @@ config MDIO_GPIO
135 135
136config MDIO_OCTEON 136config MDIO_OCTEON
137 tristate "Support for MDIO buses on Octeon SOCs" 137 tristate "Support for MDIO buses on Octeon SOCs"
138 depends on CPU_CAVIUM_OCTEON 138 depends on CAVIUM_OCTEON_SOC
139 default y 139 default y
140 help 140 help
141 141
diff --git a/drivers/rapidio/switches/idt_gen2.c b/drivers/rapidio/switches/idt_gen2.c
index 00a71ebb5cac..9f7fe21580bb 100644
--- a/drivers/rapidio/switches/idt_gen2.c
+++ b/drivers/rapidio/switches/idt_gen2.c
@@ -16,6 +16,8 @@
16#include <linux/rio_drv.h> 16#include <linux/rio_drv.h>
17#include <linux/rio_ids.h> 17#include <linux/rio_ids.h>
18#include <linux/delay.h> 18#include <linux/delay.h>
19
20#include <asm/page.h>
19#include "../rio.h" 21#include "../rio.h"
20 22
21#define LOCAL_RTE_CONF_DESTID_SEL 0x010070 23#define LOCAL_RTE_CONF_DESTID_SEL 0x010070
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index 10f99f45a29b..89cbbabaff44 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -266,7 +266,7 @@ config SPI_OC_TINY
266 266
267config SPI_OCTEON 267config SPI_OCTEON
268 tristate "Cavium OCTEON SPI controller" 268 tristate "Cavium OCTEON SPI controller"
269 depends on CPU_CAVIUM_OCTEON 269 depends on CAVIUM_OCTEON_SOC
270 help 270 help
271 SPI host driver for the hardware found on some Cavium OCTEON 271 SPI host driver for the hardware found on some Cavium OCTEON
272 SOCs. 272 SOCs.
diff --git a/drivers/ssb/Kconfig b/drivers/ssb/Kconfig
index 5ff3a4f19443..36171fd2826b 100644
--- a/drivers/ssb/Kconfig
+++ b/drivers/ssb/Kconfig
@@ -144,7 +144,7 @@ config SSB_SFLASH
144# Assumption: We are on embedded, if we compile the MIPS core. 144# Assumption: We are on embedded, if we compile the MIPS core.
145config SSB_EMBEDDED 145config SSB_EMBEDDED
146 bool 146 bool
147 depends on SSB_DRIVER_MIPS 147 depends on SSB_DRIVER_MIPS && SSB_PCICORE_HOSTMODE
148 default y 148 default y
149 149
150config SSB_DRIVER_EXTIF 150config SSB_DRIVER_EXTIF
diff --git a/drivers/staging/octeon/Kconfig b/drivers/staging/octeon/Kconfig
index 9493128e5fd2..6e1d5f8d3ec1 100644
--- a/drivers/staging/octeon/Kconfig
+++ b/drivers/staging/octeon/Kconfig
@@ -1,6 +1,6 @@
1config OCTEON_ETHERNET 1config OCTEON_ETHERNET
2 tristate "Cavium Networks Octeon Ethernet support" 2 tristate "Cavium Networks Octeon Ethernet support"
3 depends on CPU_CAVIUM_OCTEON && NETDEVICES 3 depends on CAVIUM_OCTEON_SOC && NETDEVICES
4 select PHYLIB 4 select PHYLIB
5 select MDIO_OCTEON 5 select MDIO_OCTEON
6 help 6 help
diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
index d07b6af3a937..76a8daadff47 100644
--- a/drivers/tty/serial/8250/8250_dw.c
+++ b/drivers/tty/serial/8250/8250_dw.c
@@ -29,6 +29,8 @@
29#include <linux/clk.h> 29#include <linux/clk.h>
30#include <linux/pm_runtime.h> 30#include <linux/pm_runtime.h>
31 31
32#include <asm/byteorder.h>
33
32#include "8250.h" 34#include "8250.h"
33 35
34/* Offsets for the DesignWare specific registers */ 36/* Offsets for the DesignWare specific registers */
@@ -57,6 +59,7 @@ struct dw8250_data {
57 int last_lcr; 59 int last_lcr;
58 int line; 60 int line;
59 struct clk *clk; 61 struct clk *clk;
62 u8 usr_reg;
60}; 63};
61 64
62static void dw8250_serial_out(struct uart_port *p, int offset, int value) 65static void dw8250_serial_out(struct uart_port *p, int offset, int value)
@@ -77,6 +80,13 @@ static unsigned int dw8250_serial_in(struct uart_port *p, int offset)
77 return readb(p->membase + offset); 80 return readb(p->membase + offset);
78} 81}
79 82
83/* Read Back (rb) version to ensure register access ording. */
84static void dw8250_serial_out_rb(struct uart_port *p, int offset, int value)
85{
86 dw8250_serial_out(p, offset, value);
87 dw8250_serial_in(p, UART_LCR);
88}
89
80static void dw8250_serial_out32(struct uart_port *p, int offset, int value) 90static void dw8250_serial_out32(struct uart_port *p, int offset, int value)
81{ 91{
82 struct dw8250_data *d = p->private_data; 92 struct dw8250_data *d = p->private_data;
@@ -104,7 +114,7 @@ static int dw8250_handle_irq(struct uart_port *p)
104 return 1; 114 return 1;
105 } else if ((iir & UART_IIR_BUSY) == UART_IIR_BUSY) { 115 } else if ((iir & UART_IIR_BUSY) == UART_IIR_BUSY) {
106 /* Clear the USR and write the LCR again. */ 116 /* Clear the USR and write the LCR again. */
107 (void)p->serial_in(p, DW_UART_USR); 117 (void)p->serial_in(p, d->usr_reg);
108 p->serial_out(p, UART_LCR, d->last_lcr); 118 p->serial_out(p, UART_LCR, d->last_lcr);
109 119
110 return 1; 120 return 1;
@@ -125,12 +135,60 @@ dw8250_do_pm(struct uart_port *port, unsigned int state, unsigned int old)
125 pm_runtime_put_sync_suspend(port->dev); 135 pm_runtime_put_sync_suspend(port->dev);
126} 136}
127 137
128static int dw8250_probe_of(struct uart_port *p) 138static void dw8250_setup_port(struct uart_8250_port *up)
139{
140 struct uart_port *p = &up->port;
141 u32 reg = readl(p->membase + DW_UART_UCV);
142
143 /*
144 * If the Component Version Register returns zero, we know that
145 * ADDITIONAL_FEATURES are not enabled. No need to go any further.
146 */
147 if (!reg)
148 return;
149
150 dev_dbg_ratelimited(p->dev, "Designware UART version %c.%c%c\n",
151 (reg >> 24) & 0xff, (reg >> 16) & 0xff, (reg >> 8) & 0xff);
152
153 reg = readl(p->membase + DW_UART_CPR);
154 if (!reg)
155 return;
156
157 /* Select the type based on fifo */
158 if (reg & DW_UART_CPR_FIFO_MODE) {
159 p->type = PORT_16550A;
160 p->flags |= UPF_FIXED_TYPE;
161 p->fifosize = DW_UART_CPR_FIFO_SIZE(reg);
162 up->tx_loadsz = p->fifosize;
163 up->capabilities = UART_CAP_FIFO;
164 }
165
166 if (reg & DW_UART_CPR_AFCE_MODE)
167 up->capabilities |= UART_CAP_AFE;
168}
169
170static int dw8250_probe_of(struct uart_port *p,
171 struct dw8250_data *data)
129{ 172{
130 struct device_node *np = p->dev->of_node; 173 struct device_node *np = p->dev->of_node;
131 u32 val; 174 u32 val;
132 175 bool has_ucv = true;
133 if (!of_property_read_u32(np, "reg-io-width", &val)) { 176
177 if (of_device_is_compatible(np, "cavium,octeon-3860-uart")) {
178#ifdef __BIG_ENDIAN
179 /*
180 * Low order bits of these 64-bit registers, when
181 * accessed as a byte, are 7 bytes further down in the
182 * address space in big endian mode.
183 */
184 p->membase += 7;
185#endif
186 p->serial_out = dw8250_serial_out_rb;
187 p->flags = ASYNC_SKIP_TEST | UPF_SHARE_IRQ | UPF_FIXED_TYPE;
188 p->type = PORT_OCTEON;
189 data->usr_reg = 0x27;
190 has_ucv = false;
191 } else if (!of_property_read_u32(np, "reg-io-width", &val)) {
134 switch (val) { 192 switch (val) {
135 case 1: 193 case 1:
136 break; 194 break;
@@ -144,6 +202,8 @@ static int dw8250_probe_of(struct uart_port *p)
144 return -EINVAL; 202 return -EINVAL;
145 } 203 }
146 } 204 }
205 if (has_ucv)
206 dw8250_setup_port(container_of(p, struct uart_8250_port, port));
147 207
148 if (!of_property_read_u32(np, "reg-shift", &val)) 208 if (!of_property_read_u32(np, "reg-shift", &val))
149 p->regshift = val; 209 p->regshift = val;
@@ -168,6 +228,8 @@ static int dw8250_probe_acpi(struct uart_8250_port *up)
168 const struct acpi_device_id *id; 228 const struct acpi_device_id *id;
169 struct uart_port *p = &up->port; 229 struct uart_port *p = &up->port;
170 230
231 dw8250_setup_port(up);
232
171 id = acpi_match_device(p->dev->driver->acpi_match_table, p->dev); 233 id = acpi_match_device(p->dev->driver->acpi_match_table, p->dev);
172 if (!id) 234 if (!id)
173 return -ENODEV; 235 return -ENODEV;
@@ -196,38 +258,6 @@ static inline int dw8250_probe_acpi(struct uart_8250_port *up)
196} 258}
197#endif /* CONFIG_ACPI */ 259#endif /* CONFIG_ACPI */
198 260
199static void dw8250_setup_port(struct uart_8250_port *up)
200{
201 struct uart_port *p = &up->port;
202 u32 reg = readl(p->membase + DW_UART_UCV);
203
204 /*
205 * If the Component Version Register returns zero, we know that
206 * ADDITIONAL_FEATURES are not enabled. No need to go any further.
207 */
208 if (!reg)
209 return;
210
211 dev_dbg_ratelimited(p->dev, "Designware UART version %c.%c%c\n",
212 (reg >> 24) & 0xff, (reg >> 16) & 0xff, (reg >> 8) & 0xff);
213
214 reg = readl(p->membase + DW_UART_CPR);
215 if (!reg)
216 return;
217
218 /* Select the type based on fifo */
219 if (reg & DW_UART_CPR_FIFO_MODE) {
220 p->type = PORT_16550A;
221 p->flags |= UPF_FIXED_TYPE;
222 p->fifosize = DW_UART_CPR_FIFO_SIZE(reg);
223 up->tx_loadsz = p->fifosize;
224 up->capabilities = UART_CAP_FIFO;
225 }
226
227 if (reg & DW_UART_CPR_AFCE_MODE)
228 up->capabilities |= UART_CAP_AFE;
229}
230
231static int dw8250_probe(struct platform_device *pdev) 261static int dw8250_probe(struct platform_device *pdev)
232{ 262{
233 struct uart_8250_port uart = {}; 263 struct uart_8250_port uart = {};
@@ -259,6 +289,7 @@ static int dw8250_probe(struct platform_device *pdev)
259 if (!data) 289 if (!data)
260 return -ENOMEM; 290 return -ENOMEM;
261 291
292 data->usr_reg = DW_UART_USR;
262 data->clk = devm_clk_get(&pdev->dev, NULL); 293 data->clk = devm_clk_get(&pdev->dev, NULL);
263 if (!IS_ERR(data->clk)) { 294 if (!IS_ERR(data->clk)) {
264 clk_prepare_enable(data->clk); 295 clk_prepare_enable(data->clk);
@@ -270,10 +301,8 @@ static int dw8250_probe(struct platform_device *pdev)
270 uart.port.serial_out = dw8250_serial_out; 301 uart.port.serial_out = dw8250_serial_out;
271 uart.port.private_data = data; 302 uart.port.private_data = data;
272 303
273 dw8250_setup_port(&uart);
274
275 if (pdev->dev.of_node) { 304 if (pdev->dev.of_node) {
276 err = dw8250_probe_of(&uart.port); 305 err = dw8250_probe_of(&uart.port, data);
277 if (err) 306 if (err)
278 return err; 307 return err;
279 } else if (ACPI_HANDLE(&pdev->dev)) { 308 } else if (ACPI_HANDLE(&pdev->dev)) {
@@ -362,6 +391,7 @@ static const struct dev_pm_ops dw8250_pm_ops = {
362 391
363static const struct of_device_id dw8250_of_match[] = { 392static const struct of_device_id dw8250_of_match[] = {
364 { .compatible = "snps,dw-apb-uart" }, 393 { .compatible = "snps,dw-apb-uart" },
394 { .compatible = "cavium,octeon-3860-uart" },
365 { /* Sentinel */ } 395 { /* Sentinel */ }
366}; 396};
367MODULE_DEVICE_TABLE(of, dw8250_of_match); 397MODULE_DEVICE_TABLE(of, dw8250_of_match);
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 2817013bceb1..4263d011392c 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -283,7 +283,7 @@ config USB_EHCI_HCD_PLATFORM
283 283
284config USB_OCTEON_EHCI 284config USB_OCTEON_EHCI
285 bool "Octeon on-chip EHCI support" 285 bool "Octeon on-chip EHCI support"
286 depends on CPU_CAVIUM_OCTEON 286 depends on CAVIUM_OCTEON_SOC
287 default n 287 default n
288 select USB_EHCI_BIG_ENDIAN_MMIO 288 select USB_EHCI_BIG_ENDIAN_MMIO
289 help 289 help
@@ -488,7 +488,7 @@ config USB_OHCI_HCD_PLATFORM
488 488
489config USB_OCTEON_OHCI 489config USB_OCTEON_OHCI
490 bool "Octeon on-chip OHCI support" 490 bool "Octeon on-chip OHCI support"
491 depends on CPU_CAVIUM_OCTEON 491 depends on CAVIUM_OCTEON_SOC
492 default USB_OCTEON_EHCI 492 default USB_OCTEON_EHCI
493 select USB_OHCI_BIG_ENDIAN_MMIO 493 select USB_OHCI_BIG_ENDIAN_MMIO
494 select USB_OHCI_LITTLE_ENDIAN 494 select USB_OHCI_LITTLE_ENDIAN
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 8519bc696a6f..362085d7ad8f 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -1074,7 +1074,7 @@ config TXX9_WDT
1074 1074
1075config OCTEON_WDT 1075config OCTEON_WDT
1076 tristate "Cavium OCTEON SOC family Watchdog Timer" 1076 tristate "Cavium OCTEON SOC family Watchdog Timer"
1077 depends on CPU_CAVIUM_OCTEON 1077 depends on CAVIUM_OCTEON_SOC
1078 default y 1078 default y
1079 select EXPORT_UASM if OCTEON_WDT = m 1079 select EXPORT_UASM if OCTEON_WDT = m
1080 help 1080 help
diff --git a/drivers/watchdog/sb_wdog.c b/drivers/watchdog/sb_wdog.c
index 25c7a3f9652d..ea5d84a1fdad 100644
--- a/drivers/watchdog/sb_wdog.c
+++ b/drivers/watchdog/sb_wdog.c
@@ -208,7 +208,7 @@ static long sbwdog_ioctl(struct file *file, unsigned int cmd,
208 * get the remaining count from the ... count register 208 * get the remaining count from the ... count register
209 * which is 1*8 before the config register 209 * which is 1*8 before the config register
210 */ 210 */
211 ret = put_user(__raw_readq(user_dog - 8) / 1000000, p); 211 ret = put_user((u32)__raw_readq(user_dog - 8) / 1000000, p);
212 break; 212 break;
213 } 213 }
214 return ret; 214 return ret;