aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/i2c/busses/i2c-omap.c73
-rw-r--r--drivers/input/keyboard/omap-keypad.c41
-rw-r--r--drivers/input/serio/Kconfig1
-rw-r--r--drivers/mtd/onenand/omap2.c3
-rw-r--r--drivers/serial/8250.c26
-rw-r--r--drivers/serial/omap-serial.c40
-rw-r--r--drivers/staging/tidspbridge/core/_tiomap.h15
7 files changed, 93 insertions, 106 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index b33c78586bfc..9d090833e245 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -39,6 +39,7 @@
39#include <linux/io.h> 39#include <linux/io.h>
40#include <linux/slab.h> 40#include <linux/slab.h>
41#include <linux/i2c-omap.h> 41#include <linux/i2c-omap.h>
42#include <linux/pm_runtime.h>
42 43
43/* I2C controller revisions */ 44/* I2C controller revisions */
44#define OMAP_I2C_REV_2 0x20 45#define OMAP_I2C_REV_2 0x20
@@ -175,8 +176,6 @@ struct omap_i2c_dev {
175 void __iomem *base; /* virtual */ 176 void __iomem *base; /* virtual */
176 int irq; 177 int irq;
177 int reg_shift; /* bit shift for I2C register addresses */ 178 int reg_shift; /* bit shift for I2C register addresses */
178 struct clk *iclk; /* Interface clock */
179 struct clk *fclk; /* Functional clock */
180 struct completion cmd_complete; 179 struct completion cmd_complete;
181 struct resource *ioarea; 180 struct resource *ioarea;
182 u32 latency; /* maximum mpu wkup latency */ 181 u32 latency; /* maximum mpu wkup latency */
@@ -265,45 +264,18 @@ static inline u16 omap_i2c_read_reg(struct omap_i2c_dev *i2c_dev, int reg)
265 (i2c_dev->regs[reg] << i2c_dev->reg_shift)); 264 (i2c_dev->regs[reg] << i2c_dev->reg_shift));
266} 265}
267 266
268static int __init omap_i2c_get_clocks(struct omap_i2c_dev *dev) 267static void omap_i2c_unidle(struct omap_i2c_dev *dev)
269{ 268{
270 int ret; 269 struct platform_device *pdev;
270 struct omap_i2c_bus_platform_data *pdata;
271 271
272 dev->iclk = clk_get(dev->dev, "ick"); 272 WARN_ON(!dev->idle);
273 if (IS_ERR(dev->iclk)) {
274 ret = PTR_ERR(dev->iclk);
275 dev->iclk = NULL;
276 return ret;
277 }
278 273
279 dev->fclk = clk_get(dev->dev, "fck"); 274 pdev = to_platform_device(dev->dev);
280 if (IS_ERR(dev->fclk)) { 275 pdata = pdev->dev.platform_data;
281 ret = PTR_ERR(dev->fclk);
282 if (dev->iclk != NULL) {
283 clk_put(dev->iclk);
284 dev->iclk = NULL;
285 }
286 dev->fclk = NULL;
287 return ret;
288 }
289 276
290 return 0; 277 pm_runtime_get_sync(&pdev->dev);
291}
292 278
293static void omap_i2c_put_clocks(struct omap_i2c_dev *dev)
294{
295 clk_put(dev->fclk);
296 dev->fclk = NULL;
297 clk_put(dev->iclk);
298 dev->iclk = NULL;
299}
300
301static void omap_i2c_unidle(struct omap_i2c_dev *dev)
302{
303 WARN_ON(!dev->idle);
304
305 clk_enable(dev->iclk);
306 clk_enable(dev->fclk);
307 if (cpu_is_omap34xx()) { 279 if (cpu_is_omap34xx()) {
308 omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); 280 omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
309 omap_i2c_write_reg(dev, OMAP_I2C_PSC_REG, dev->pscstate); 281 omap_i2c_write_reg(dev, OMAP_I2C_PSC_REG, dev->pscstate);
@@ -326,10 +298,15 @@ static void omap_i2c_unidle(struct omap_i2c_dev *dev)
326 298
327static void omap_i2c_idle(struct omap_i2c_dev *dev) 299static void omap_i2c_idle(struct omap_i2c_dev *dev)
328{ 300{
301 struct platform_device *pdev;
302 struct omap_i2c_bus_platform_data *pdata;
329 u16 iv; 303 u16 iv;
330 304
331 WARN_ON(dev->idle); 305 WARN_ON(dev->idle);
332 306
307 pdev = to_platform_device(dev->dev);
308 pdata = pdev->dev.platform_data;
309
333 dev->iestate = omap_i2c_read_reg(dev, OMAP_I2C_IE_REG); 310 dev->iestate = omap_i2c_read_reg(dev, OMAP_I2C_IE_REG);
334 if (dev->rev >= OMAP_I2C_REV_ON_4430) 311 if (dev->rev >= OMAP_I2C_REV_ON_4430)
335 omap_i2c_write_reg(dev, OMAP_I2C_IRQENABLE_CLR, 1); 312 omap_i2c_write_reg(dev, OMAP_I2C_IRQENABLE_CLR, 1);
@@ -345,8 +322,8 @@ static void omap_i2c_idle(struct omap_i2c_dev *dev)
345 omap_i2c_read_reg(dev, OMAP_I2C_STAT_REG); 322 omap_i2c_read_reg(dev, OMAP_I2C_STAT_REG);
346 } 323 }
347 dev->idle = 1; 324 dev->idle = 1;
348 clk_disable(dev->fclk); 325
349 clk_disable(dev->iclk); 326 pm_runtime_put_sync(&pdev->dev);
350} 327}
351 328
352static int omap_i2c_init(struct omap_i2c_dev *dev) 329static int omap_i2c_init(struct omap_i2c_dev *dev)
@@ -356,6 +333,7 @@ static int omap_i2c_init(struct omap_i2c_dev *dev)
356 unsigned long fclk_rate = 12000000; 333 unsigned long fclk_rate = 12000000;
357 unsigned long timeout; 334 unsigned long timeout;
358 unsigned long internal_clk = 0; 335 unsigned long internal_clk = 0;
336 struct clk *fclk;
359 337
360 if (dev->rev >= OMAP_I2C_REV_2) { 338 if (dev->rev >= OMAP_I2C_REV_2) {
361 /* Disable I2C controller before soft reset */ 339 /* Disable I2C controller before soft reset */
@@ -414,7 +392,9 @@ static int omap_i2c_init(struct omap_i2c_dev *dev)
414 * always returns 12MHz for the functional clock, we can 392 * always returns 12MHz for the functional clock, we can
415 * do this bit unconditionally. 393 * do this bit unconditionally.
416 */ 394 */
417 fclk_rate = clk_get_rate(dev->fclk); 395 fclk = clk_get(dev->dev, "fck");
396 fclk_rate = clk_get_rate(fclk);
397 clk_put(fclk);
418 398
419 /* TRM for 5912 says the I2C clock must be prescaled to be 399 /* TRM for 5912 says the I2C clock must be prescaled to be
420 * between 7 - 12 MHz. The XOR input clock is typically 400 * between 7 - 12 MHz. The XOR input clock is typically
@@ -443,7 +423,9 @@ static int omap_i2c_init(struct omap_i2c_dev *dev)
443 internal_clk = 9600; 423 internal_clk = 9600;
444 else 424 else
445 internal_clk = 4000; 425 internal_clk = 4000;
446 fclk_rate = clk_get_rate(dev->fclk) / 1000; 426 fclk = clk_get(dev->dev, "fck");
427 fclk_rate = clk_get_rate(fclk) / 1000;
428 clk_put(fclk);
447 429
448 /* Compute prescaler divisor */ 430 /* Compute prescaler divisor */
449 psc = fclk_rate / internal_clk; 431 psc = fclk_rate / internal_clk;
@@ -1048,14 +1030,12 @@ omap_i2c_probe(struct platform_device *pdev)
1048 else 1030 else
1049 dev->reg_shift = 2; 1031 dev->reg_shift = 2;
1050 1032
1051 if ((r = omap_i2c_get_clocks(dev)) != 0)
1052 goto err_iounmap;
1053
1054 if (cpu_is_omap44xx()) 1033 if (cpu_is_omap44xx())
1055 dev->regs = (u8 *) omap4_reg_map; 1034 dev->regs = (u8 *) omap4_reg_map;
1056 else 1035 else
1057 dev->regs = (u8 *) reg_map; 1036 dev->regs = (u8 *) reg_map;
1058 1037
1038 pm_runtime_enable(&pdev->dev);
1059 omap_i2c_unidle(dev); 1039 omap_i2c_unidle(dev);
1060 1040
1061 dev->rev = omap_i2c_read_reg(dev, OMAP_I2C_REV_REG) & 0xff; 1041 dev->rev = omap_i2c_read_reg(dev, OMAP_I2C_REV_REG) & 0xff;
@@ -1127,8 +1107,6 @@ err_free_irq:
1127err_unuse_clocks: 1107err_unuse_clocks:
1128 omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); 1108 omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
1129 omap_i2c_idle(dev); 1109 omap_i2c_idle(dev);
1130 omap_i2c_put_clocks(dev);
1131err_iounmap:
1132 iounmap(dev->base); 1110 iounmap(dev->base);
1133err_free_mem: 1111err_free_mem:
1134 platform_set_drvdata(pdev, NULL); 1112 platform_set_drvdata(pdev, NULL);
@@ -1150,7 +1128,6 @@ omap_i2c_remove(struct platform_device *pdev)
1150 free_irq(dev->irq, dev); 1128 free_irq(dev->irq, dev);
1151 i2c_del_adapter(&dev->adapter); 1129 i2c_del_adapter(&dev->adapter);
1152 omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); 1130 omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
1153 omap_i2c_put_clocks(dev);
1154 iounmap(dev->base); 1131 iounmap(dev->base);
1155 kfree(dev); 1132 kfree(dev);
1156 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1133 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -1162,7 +1139,7 @@ static struct platform_driver omap_i2c_driver = {
1162 .probe = omap_i2c_probe, 1139 .probe = omap_i2c_probe,
1163 .remove = omap_i2c_remove, 1140 .remove = omap_i2c_remove,
1164 .driver = { 1141 .driver = {
1165 .name = "i2c_omap", 1142 .name = "omap_i2c",
1166 .owner = THIS_MODULE, 1143 .owner = THIS_MODULE,
1167 }, 1144 },
1168}; 1145};
@@ -1184,4 +1161,4 @@ module_exit(omap_i2c_exit_driver);
1184MODULE_AUTHOR("MontaVista Software, Inc. (and others)"); 1161MODULE_AUTHOR("MontaVista Software, Inc. (and others)");
1185MODULE_DESCRIPTION("TI OMAP I2C bus adapter"); 1162MODULE_DESCRIPTION("TI OMAP I2C bus adapter");
1186MODULE_LICENSE("GPL"); 1163MODULE_LICENSE("GPL");
1187MODULE_ALIAS("platform:i2c_omap"); 1164MODULE_ALIAS("platform:omap_i2c");
diff --git a/drivers/input/keyboard/omap-keypad.c b/drivers/input/keyboard/omap-keypad.c
index a72e61ddca91..0e2a19cb43d8 100644
--- a/drivers/input/keyboard/omap-keypad.c
+++ b/drivers/input/keyboard/omap-keypad.c
@@ -65,7 +65,6 @@ struct omap_kp {
65 65
66static DECLARE_TASKLET_DISABLED(kp_tasklet, omap_kp_tasklet, 0); 66static DECLARE_TASKLET_DISABLED(kp_tasklet, omap_kp_tasklet, 0);
67 67
68static int *keymap;
69static unsigned int *row_gpios; 68static unsigned int *row_gpios;
70static unsigned int *col_gpios; 69static unsigned int *col_gpios;
71 70
@@ -162,20 +161,11 @@ static void omap_kp_scan_keypad(struct omap_kp *omap_kp, unsigned char *state)
162 } 161 }
163} 162}
164 163
165static inline int omap_kp_find_key(int col, int row)
166{
167 int i, key;
168
169 key = KEY(col, row, 0);
170 for (i = 0; keymap[i] != 0; i++)
171 if ((keymap[i] & 0xff000000) == key)
172 return keymap[i] & 0x00ffffff;
173 return -1;
174}
175
176static void omap_kp_tasklet(unsigned long data) 164static void omap_kp_tasklet(unsigned long data)
177{ 165{
178 struct omap_kp *omap_kp_data = (struct omap_kp *) data; 166 struct omap_kp *omap_kp_data = (struct omap_kp *) data;
167 unsigned short *keycodes = omap_kp_data->input->keycode;
168 unsigned int row_shift = get_count_order(omap_kp_data->cols);
179 unsigned char new_state[8], changed, key_down = 0; 169 unsigned char new_state[8], changed, key_down = 0;
180 int col, row; 170 int col, row;
181 int spurious = 0; 171 int spurious = 0;
@@ -199,7 +189,7 @@ static void omap_kp_tasklet(unsigned long data)
199 row, (new_state[col] & (1 << row)) ? 189 row, (new_state[col] & (1 << row)) ?
200 "pressed" : "released"); 190 "pressed" : "released");
201#else 191#else
202 key = omap_kp_find_key(col, row); 192 key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
203 if (key < 0) { 193 if (key < 0) {
204 printk(KERN_WARNING 194 printk(KERN_WARNING
205 "omap-keypad: Spurious key event %d-%d\n", 195 "omap-keypad: Spurious key event %d-%d\n",
@@ -298,13 +288,18 @@ static int __devinit omap_kp_probe(struct platform_device *pdev)
298 struct input_dev *input_dev; 288 struct input_dev *input_dev;
299 struct omap_kp_platform_data *pdata = pdev->dev.platform_data; 289 struct omap_kp_platform_data *pdata = pdev->dev.platform_data;
300 int i, col_idx, row_idx, irq_idx, ret; 290 int i, col_idx, row_idx, irq_idx, ret;
291 unsigned int row_shift, keycodemax;
301 292
302 if (!pdata->rows || !pdata->cols || !pdata->keymap) { 293 if (!pdata->rows || !pdata->cols || !pdata->keymap_data) {
303 printk(KERN_ERR "No rows, cols or keymap from pdata\n"); 294 printk(KERN_ERR "No rows, cols or keymap_data from pdata\n");
304 return -EINVAL; 295 return -EINVAL;
305 } 296 }
306 297
307 omap_kp = kzalloc(sizeof(struct omap_kp), GFP_KERNEL); 298 row_shift = get_count_order(pdata->cols);
299 keycodemax = pdata->rows << row_shift;
300
301 omap_kp = kzalloc(sizeof(struct omap_kp) +
302 keycodemax * sizeof(unsigned short), GFP_KERNEL);
308 input_dev = input_allocate_device(); 303 input_dev = input_allocate_device();
309 if (!omap_kp || !input_dev) { 304 if (!omap_kp || !input_dev) {
310 kfree(omap_kp); 305 kfree(omap_kp);
@@ -320,7 +315,9 @@ static int __devinit omap_kp_probe(struct platform_device *pdev)
320 if (!cpu_is_omap24xx()) 315 if (!cpu_is_omap24xx())
321 omap_writew(1, OMAP1_MPUIO_BASE + OMAP_MPUIO_KBD_MASKIT); 316 omap_writew(1, OMAP1_MPUIO_BASE + OMAP_MPUIO_KBD_MASKIT);
322 317
323 keymap = pdata->keymap; 318 input_dev->keycode = &omap_kp[1];
319 input_dev->keycodesize = sizeof(unsigned short);
320 input_dev->keycodemax = keycodemax;
324 321
325 if (pdata->rep) 322 if (pdata->rep)
326 __set_bit(EV_REP, input_dev->evbit); 323 __set_bit(EV_REP, input_dev->evbit);
@@ -374,8 +371,8 @@ static int __devinit omap_kp_probe(struct platform_device *pdev)
374 371
375 /* setup input device */ 372 /* setup input device */
376 __set_bit(EV_KEY, input_dev->evbit); 373 __set_bit(EV_KEY, input_dev->evbit);
377 for (i = 0; keymap[i] != 0; i++) 374 matrix_keypad_build_keymap(pdata->keymap_data, row_shift,
378 __set_bit(keymap[i] & KEY_MAX, input_dev->keybit); 375 input_dev->keycode, input_dev->keybit);
379 input_dev->name = "omap-keypad"; 376 input_dev->name = "omap-keypad";
380 input_dev->phys = "omap-keypad/input0"; 377 input_dev->phys = "omap-keypad/input0";
381 input_dev->dev.parent = &pdev->dev; 378 input_dev->dev.parent = &pdev->dev;
@@ -416,7 +413,7 @@ static int __devinit omap_kp_probe(struct platform_device *pdev)
416 return 0; 413 return 0;
417err5: 414err5:
418 for (i = irq_idx - 1; i >=0; i--) 415 for (i = irq_idx - 1; i >=0; i--)
419 free_irq(row_gpios[i], 0); 416 free_irq(row_gpios[i], NULL);
420err4: 417err4:
421 input_unregister_device(omap_kp->input); 418 input_unregister_device(omap_kp->input);
422 input_dev = NULL; 419 input_dev = NULL;
@@ -447,11 +444,11 @@ static int __devexit omap_kp_remove(struct platform_device *pdev)
447 gpio_free(col_gpios[i]); 444 gpio_free(col_gpios[i]);
448 for (i = 0; i < omap_kp->rows; i++) { 445 for (i = 0; i < omap_kp->rows; i++) {
449 gpio_free(row_gpios[i]); 446 gpio_free(row_gpios[i]);
450 free_irq(gpio_to_irq(row_gpios[i]), 0); 447 free_irq(gpio_to_irq(row_gpios[i]), NULL);
451 } 448 }
452 } else { 449 } else {
453 omap_writew(1, OMAP1_MPUIO_BASE + OMAP_MPUIO_KBD_MASKIT); 450 omap_writew(1, OMAP1_MPUIO_BASE + OMAP_MPUIO_KBD_MASKIT);
454 free_irq(omap_kp->irq, 0); 451 free_irq(omap_kp->irq, NULL);
455 } 452 }
456 453
457 del_timer_sync(&omap_kp->timer); 454 del_timer_sync(&omap_kp->timer);
diff --git a/drivers/input/serio/Kconfig b/drivers/input/serio/Kconfig
index 6256233d2bfb..bcb1fdedb595 100644
--- a/drivers/input/serio/Kconfig
+++ b/drivers/input/serio/Kconfig
@@ -214,7 +214,6 @@ config SERIO_AMS_DELTA
214 tristate "Amstrad Delta (E3) mailboard support" 214 tristate "Amstrad Delta (E3) mailboard support"
215 depends on MACH_AMS_DELTA 215 depends on MACH_AMS_DELTA
216 default y 216 default y
217 select AMS_DELTA_FIQ
218 ---help--- 217 ---help---
219 Say Y here if you have an E3 and want to use its mailboard, 218 Say Y here if you have an E3 and want to use its mailboard,
220 or any standard AT keyboard connected to the mailboard port. 219 or any standard AT keyboard connected to the mailboard port.
diff --git a/drivers/mtd/onenand/omap2.c b/drivers/mtd/onenand/omap2.c
index 9f322f1a7f22..d0894ca7798b 100644
--- a/drivers/mtd/onenand/omap2.c
+++ b/drivers/mtd/onenand/omap2.c
@@ -721,6 +721,9 @@ static int __devinit omap2_onenand_probe(struct platform_device *pdev)
721 case 3: 721 case 3:
722 c->freq = 83; 722 c->freq = 83;
723 break; 723 break;
724 case 4:
725 c->freq = 104;
726 break;
724 } 727 }
725 728
726#ifdef CONFIG_MTD_PARTITIONS 729#ifdef CONFIG_MTD_PARTITIONS
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 09a550860dcf..ee74c934de89 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -653,13 +653,13 @@ static void serial8250_set_sleep(struct uart_8250_port *p, int sleep)
653{ 653{
654 if (p->capabilities & UART_CAP_SLEEP) { 654 if (p->capabilities & UART_CAP_SLEEP) {
655 if (p->capabilities & UART_CAP_EFR) { 655 if (p->capabilities & UART_CAP_EFR) {
656 serial_outp(p, UART_LCR, 0xBF); 656 serial_outp(p, UART_LCR, UART_LCR_CONF_MODE_B);
657 serial_outp(p, UART_EFR, UART_EFR_ECB); 657 serial_outp(p, UART_EFR, UART_EFR_ECB);
658 serial_outp(p, UART_LCR, 0); 658 serial_outp(p, UART_LCR, 0);
659 } 659 }
660 serial_outp(p, UART_IER, sleep ? UART_IERX_SLEEP : 0); 660 serial_outp(p, UART_IER, sleep ? UART_IERX_SLEEP : 0);
661 if (p->capabilities & UART_CAP_EFR) { 661 if (p->capabilities & UART_CAP_EFR) {
662 serial_outp(p, UART_LCR, 0xBF); 662 serial_outp(p, UART_LCR, UART_LCR_CONF_MODE_B);
663 serial_outp(p, UART_EFR, 0); 663 serial_outp(p, UART_EFR, 0);
664 serial_outp(p, UART_LCR, 0); 664 serial_outp(p, UART_LCR, 0);
665 } 665 }
@@ -752,7 +752,7 @@ static int size_fifo(struct uart_8250_port *up)
752 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | 752 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO |
753 UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); 753 UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT);
754 serial_outp(up, UART_MCR, UART_MCR_LOOP); 754 serial_outp(up, UART_MCR, UART_MCR_LOOP);
755 serial_outp(up, UART_LCR, UART_LCR_DLAB); 755 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_A);
756 old_dl = serial_dl_read(up); 756 old_dl = serial_dl_read(up);
757 serial_dl_write(up, 0x0001); 757 serial_dl_write(up, 0x0001);
758 serial_outp(up, UART_LCR, 0x03); 758 serial_outp(up, UART_LCR, 0x03);
@@ -764,7 +764,7 @@ static int size_fifo(struct uart_8250_port *up)
764 serial_inp(up, UART_RX); 764 serial_inp(up, UART_RX);
765 serial_outp(up, UART_FCR, old_fcr); 765 serial_outp(up, UART_FCR, old_fcr);
766 serial_outp(up, UART_MCR, old_mcr); 766 serial_outp(up, UART_MCR, old_mcr);
767 serial_outp(up, UART_LCR, UART_LCR_DLAB); 767 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_A);
768 serial_dl_write(up, old_dl); 768 serial_dl_write(up, old_dl);
769 serial_outp(up, UART_LCR, old_lcr); 769 serial_outp(up, UART_LCR, old_lcr);
770 770
@@ -782,7 +782,7 @@ static unsigned int autoconfig_read_divisor_id(struct uart_8250_port *p)
782 unsigned int id; 782 unsigned int id;
783 783
784 old_lcr = serial_inp(p, UART_LCR); 784 old_lcr = serial_inp(p, UART_LCR);
785 serial_outp(p, UART_LCR, UART_LCR_DLAB); 785 serial_outp(p, UART_LCR, UART_LCR_CONF_MODE_A);
786 786
787 old_dll = serial_inp(p, UART_DLL); 787 old_dll = serial_inp(p, UART_DLL);
788 old_dlm = serial_inp(p, UART_DLM); 788 old_dlm = serial_inp(p, UART_DLM);
@@ -836,7 +836,7 @@ static void autoconfig_has_efr(struct uart_8250_port *up)
836 * recommended for new designs). 836 * recommended for new designs).
837 */ 837 */
838 up->acr = 0; 838 up->acr = 0;
839 serial_out(up, UART_LCR, 0xBF); 839 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
840 serial_out(up, UART_EFR, UART_EFR_ECB); 840 serial_out(up, UART_EFR, UART_EFR_ECB);
841 serial_out(up, UART_LCR, 0x00); 841 serial_out(up, UART_LCR, 0x00);
842 id1 = serial_icr_read(up, UART_ID1); 842 id1 = serial_icr_read(up, UART_ID1);
@@ -945,7 +945,7 @@ static void autoconfig_16550a(struct uart_8250_port *up)
945 * Check for presence of the EFR when DLAB is set. 945 * Check for presence of the EFR when DLAB is set.
946 * Only ST16C650V1 UARTs pass this test. 946 * Only ST16C650V1 UARTs pass this test.
947 */ 947 */
948 serial_outp(up, UART_LCR, UART_LCR_DLAB); 948 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_A);
949 if (serial_in(up, UART_EFR) == 0) { 949 if (serial_in(up, UART_EFR) == 0) {
950 serial_outp(up, UART_EFR, 0xA8); 950 serial_outp(up, UART_EFR, 0xA8);
951 if (serial_in(up, UART_EFR) != 0) { 951 if (serial_in(up, UART_EFR) != 0) {
@@ -963,7 +963,7 @@ static void autoconfig_16550a(struct uart_8250_port *up)
963 * Maybe it requires 0xbf to be written to the LCR. 963 * Maybe it requires 0xbf to be written to the LCR.
964 * (other ST16C650V2 UARTs, TI16C752A, etc) 964 * (other ST16C650V2 UARTs, TI16C752A, etc)
965 */ 965 */
966 serial_outp(up, UART_LCR, 0xBF); 966 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_B);
967 if (serial_in(up, UART_EFR) == 0 && !broken_efr(up)) { 967 if (serial_in(up, UART_EFR) == 0 && !broken_efr(up)) {
968 DEBUG_AUTOCONF("EFRv2 "); 968 DEBUG_AUTOCONF("EFRv2 ");
969 autoconfig_has_efr(up); 969 autoconfig_has_efr(up);
@@ -1024,7 +1024,7 @@ static void autoconfig_16550a(struct uart_8250_port *up)
1024 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR7_64BYTE); 1024 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR7_64BYTE);
1025 status1 = serial_in(up, UART_IIR) >> 5; 1025 status1 = serial_in(up, UART_IIR) >> 5;
1026 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); 1026 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO);
1027 serial_outp(up, UART_LCR, UART_LCR_DLAB); 1027 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_A);
1028 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR7_64BYTE); 1028 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO | UART_FCR7_64BYTE);
1029 status2 = serial_in(up, UART_IIR) >> 5; 1029 status2 = serial_in(up, UART_IIR) >> 5;
1030 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); 1030 serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO);
@@ -1183,7 +1183,7 @@ static void autoconfig(struct uart_8250_port *up, unsigned int probeflags)
1183 * We also initialise the EFR (if any) to zero for later. The 1183 * We also initialise the EFR (if any) to zero for later. The
1184 * EFR occupies the same register location as the FCR and IIR. 1184 * EFR occupies the same register location as the FCR and IIR.
1185 */ 1185 */
1186 serial_outp(up, UART_LCR, 0xBF); 1186 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_B);
1187 serial_outp(up, UART_EFR, 0); 1187 serial_outp(up, UART_EFR, 0);
1188 serial_outp(up, UART_LCR, 0); 1188 serial_outp(up, UART_LCR, 0);
1189 1189
@@ -1952,7 +1952,7 @@ static int serial8250_startup(struct uart_port *port)
1952 if (up->port.type == PORT_16C950) { 1952 if (up->port.type == PORT_16C950) {
1953 /* Wake up and initialize UART */ 1953 /* Wake up and initialize UART */
1954 up->acr = 0; 1954 up->acr = 0;
1955 serial_outp(up, UART_LCR, 0xBF); 1955 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_B);
1956 serial_outp(up, UART_EFR, UART_EFR_ECB); 1956 serial_outp(up, UART_EFR, UART_EFR_ECB);
1957 serial_outp(up, UART_IER, 0); 1957 serial_outp(up, UART_IER, 0);
1958 serial_outp(up, UART_LCR, 0); 1958 serial_outp(up, UART_LCR, 0);
@@ -2002,7 +2002,7 @@ static int serial8250_startup(struct uart_port *port)
2002 if (up->port.type == PORT_16850) { 2002 if (up->port.type == PORT_16850) {
2003 unsigned char fctr; 2003 unsigned char fctr;
2004 2004
2005 serial_outp(up, UART_LCR, 0xbf); 2005 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_B);
2006 2006
2007 fctr = serial_inp(up, UART_FCTR) & ~(UART_FCTR_RX|UART_FCTR_TX); 2007 fctr = serial_inp(up, UART_FCTR) & ~(UART_FCTR_RX|UART_FCTR_TX);
2008 serial_outp(up, UART_FCTR, fctr | UART_FCTR_TRGD | UART_FCTR_RX); 2008 serial_outp(up, UART_FCTR, fctr | UART_FCTR_TRGD | UART_FCTR_RX);
@@ -2363,7 +2363,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios,
2363 if (termios->c_cflag & CRTSCTS) 2363 if (termios->c_cflag & CRTSCTS)
2364 efr |= UART_EFR_CTS; 2364 efr |= UART_EFR_CTS;
2365 2365
2366 serial_outp(up, UART_LCR, 0xBF); 2366 serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_B);
2367 serial_outp(up, UART_EFR, efr); 2367 serial_outp(up, UART_EFR, efr);
2368 } 2368 }
2369 2369
diff --git a/drivers/serial/omap-serial.c b/drivers/serial/omap-serial.c
index 14365f72b664..1201eff1831e 100644
--- a/drivers/serial/omap-serial.c
+++ b/drivers/serial/omap-serial.c
@@ -570,7 +570,7 @@ serial_omap_configure_xonxoff
570 unsigned char efr = 0; 570 unsigned char efr = 0;
571 571
572 up->lcr = serial_in(up, UART_LCR); 572 up->lcr = serial_in(up, UART_LCR);
573 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 573 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
574 up->efr = serial_in(up, UART_EFR); 574 up->efr = serial_in(up, UART_EFR);
575 serial_out(up, UART_EFR, up->efr & ~UART_EFR_ECB); 575 serial_out(up, UART_EFR, up->efr & ~UART_EFR_ECB);
576 576
@@ -598,7 +598,7 @@ serial_omap_configure_xonxoff
598 efr |= OMAP_UART_SW_RX; 598 efr |= OMAP_UART_SW_RX;
599 599
600 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB); 600 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
601 serial_out(up, UART_LCR, UART_LCR_DLAB); 601 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
602 602
603 up->mcr = serial_in(up, UART_MCR); 603 up->mcr = serial_in(up, UART_MCR);
604 604
@@ -612,14 +612,14 @@ serial_omap_configure_xonxoff
612 up->mcr |= UART_MCR_XONANY; 612 up->mcr |= UART_MCR_XONANY;
613 613
614 serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR); 614 serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
615 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 615 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
616 serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG); 616 serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
617 /* Enable special char function UARTi.EFR_REG[5] and 617 /* Enable special char function UARTi.EFR_REG[5] and
618 * load the new software flow control mode IXON or IXOFF 618 * load the new software flow control mode IXON or IXOFF
619 * and restore the UARTi.EFR_REG[4] ENHANCED_EN value. 619 * and restore the UARTi.EFR_REG[4] ENHANCED_EN value.
620 */ 620 */
621 serial_out(up, UART_EFR, efr | UART_EFR_SCD); 621 serial_out(up, UART_EFR, efr | UART_EFR_SCD);
622 serial_out(up, UART_LCR, UART_LCR_DLAB); 622 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
623 623
624 serial_out(up, UART_MCR, up->mcr & ~UART_MCR_TCRTLR); 624 serial_out(up, UART_MCR, up->mcr & ~UART_MCR_TCRTLR);
625 serial_out(up, UART_LCR, up->lcr); 625 serial_out(up, UART_LCR, up->lcr);
@@ -724,22 +724,22 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
724 * baud clock is not running 724 * baud clock is not running
725 * DLL_REG and DLH_REG set to 0. 725 * DLL_REG and DLH_REG set to 0.
726 */ 726 */
727 serial_out(up, UART_LCR, UART_LCR_DLAB); 727 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
728 serial_out(up, UART_DLL, 0); 728 serial_out(up, UART_DLL, 0);
729 serial_out(up, UART_DLM, 0); 729 serial_out(up, UART_DLM, 0);
730 serial_out(up, UART_LCR, 0); 730 serial_out(up, UART_LCR, 0);
731 731
732 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 732 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
733 733
734 up->efr = serial_in(up, UART_EFR); 734 up->efr = serial_in(up, UART_EFR);
735 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB); 735 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
736 736
737 serial_out(up, UART_LCR, UART_LCR_DLAB); 737 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
738 up->mcr = serial_in(up, UART_MCR); 738 up->mcr = serial_in(up, UART_MCR);
739 serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR); 739 serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
740 /* FIFO ENABLE, DMA MODE */ 740 /* FIFO ENABLE, DMA MODE */
741 serial_out(up, UART_FCR, up->fcr); 741 serial_out(up, UART_FCR, up->fcr);
742 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 742 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
743 743
744 if (up->use_dma) { 744 if (up->use_dma) {
745 serial_out(up, UART_TI752_TLR, 0); 745 serial_out(up, UART_TI752_TLR, 0);
@@ -748,52 +748,52 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
748 } 748 }
749 749
750 serial_out(up, UART_EFR, up->efr); 750 serial_out(up, UART_EFR, up->efr);
751 serial_out(up, UART_LCR, UART_LCR_DLAB); 751 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
752 serial_out(up, UART_MCR, up->mcr); 752 serial_out(up, UART_MCR, up->mcr);
753 753
754 /* Protocol, Baud Rate, and Interrupt Settings */ 754 /* Protocol, Baud Rate, and Interrupt Settings */
755 755
756 serial_out(up, UART_OMAP_MDR1, OMAP_MDR1_DISABLE); 756 serial_out(up, UART_OMAP_MDR1, UART_OMAP_MDR1_DISABLE);
757 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 757 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
758 758
759 up->efr = serial_in(up, UART_EFR); 759 up->efr = serial_in(up, UART_EFR);
760 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB); 760 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
761 761
762 serial_out(up, UART_LCR, 0); 762 serial_out(up, UART_LCR, 0);
763 serial_out(up, UART_IER, 0); 763 serial_out(up, UART_IER, 0);
764 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 764 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
765 765
766 serial_out(up, UART_DLL, quot & 0xff); /* LS of divisor */ 766 serial_out(up, UART_DLL, quot & 0xff); /* LS of divisor */
767 serial_out(up, UART_DLM, quot >> 8); /* MS of divisor */ 767 serial_out(up, UART_DLM, quot >> 8); /* MS of divisor */
768 768
769 serial_out(up, UART_LCR, 0); 769 serial_out(up, UART_LCR, 0);
770 serial_out(up, UART_IER, up->ier); 770 serial_out(up, UART_IER, up->ier);
771 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 771 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
772 772
773 serial_out(up, UART_EFR, up->efr); 773 serial_out(up, UART_EFR, up->efr);
774 serial_out(up, UART_LCR, cval); 774 serial_out(up, UART_LCR, cval);
775 775
776 if (baud > 230400 && baud != 3000000) 776 if (baud > 230400 && baud != 3000000)
777 serial_out(up, UART_OMAP_MDR1, OMAP_MDR1_MODE13X); 777 serial_out(up, UART_OMAP_MDR1, UART_OMAP_MDR1_13X_MODE);
778 else 778 else
779 serial_out(up, UART_OMAP_MDR1, OMAP_MDR1_MODE16X); 779 serial_out(up, UART_OMAP_MDR1, UART_OMAP_MDR1_16X_MODE);
780 780
781 /* Hardware Flow Control Configuration */ 781 /* Hardware Flow Control Configuration */
782 782
783 if (termios->c_cflag & CRTSCTS) { 783 if (termios->c_cflag & CRTSCTS) {
784 efr |= (UART_EFR_CTS | UART_EFR_RTS); 784 efr |= (UART_EFR_CTS | UART_EFR_RTS);
785 serial_out(up, UART_LCR, UART_LCR_DLAB); 785 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
786 786
787 up->mcr = serial_in(up, UART_MCR); 787 up->mcr = serial_in(up, UART_MCR);
788 serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR); 788 serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
789 789
790 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 790 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
791 up->efr = serial_in(up, UART_EFR); 791 up->efr = serial_in(up, UART_EFR);
792 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB); 792 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
793 793
794 serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG); 794 serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
795 serial_out(up, UART_EFR, efr); /* Enable AUTORTS and AUTOCTS */ 795 serial_out(up, UART_EFR, efr); /* Enable AUTORTS and AUTOCTS */
796 serial_out(up, UART_LCR, UART_LCR_DLAB); 796 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
797 serial_out(up, UART_MCR, up->mcr | UART_MCR_RTS); 797 serial_out(up, UART_MCR, up->mcr | UART_MCR_RTS);
798 serial_out(up, UART_LCR, cval); 798 serial_out(up, UART_LCR, cval);
799 } 799 }
@@ -815,13 +815,13 @@ serial_omap_pm(struct uart_port *port, unsigned int state,
815 unsigned char efr; 815 unsigned char efr;
816 816
817 dev_dbg(up->port.dev, "serial_omap_pm+%d\n", up->pdev->id); 817 dev_dbg(up->port.dev, "serial_omap_pm+%d\n", up->pdev->id);
818 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 818 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
819 efr = serial_in(up, UART_EFR); 819 efr = serial_in(up, UART_EFR);
820 serial_out(up, UART_EFR, efr | UART_EFR_ECB); 820 serial_out(up, UART_EFR, efr | UART_EFR_ECB);
821 serial_out(up, UART_LCR, 0); 821 serial_out(up, UART_LCR, 0);
822 822
823 serial_out(up, UART_IER, (state != 0) ? UART_IERX_SLEEP : 0); 823 serial_out(up, UART_IER, (state != 0) ? UART_IERX_SLEEP : 0);
824 serial_out(up, UART_LCR, OMAP_UART_LCR_CONF_MDB); 824 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
825 serial_out(up, UART_EFR, efr); 825 serial_out(up, UART_EFR, efr);
826 serial_out(up, UART_LCR, 0); 826 serial_out(up, UART_LCR, 0);
827 /* Enable module level wake up */ 827 /* Enable module level wake up */
diff --git a/drivers/staging/tidspbridge/core/_tiomap.h b/drivers/staging/tidspbridge/core/_tiomap.h
index 1c1f157e167a..1159a500f49d 100644
--- a/drivers/staging/tidspbridge/core/_tiomap.h
+++ b/drivers/staging/tidspbridge/core/_tiomap.h
@@ -19,8 +19,19 @@
19#ifndef _TIOMAP_ 19#ifndef _TIOMAP_
20#define _TIOMAP_ 20#define _TIOMAP_
21 21
22#include <plat/powerdomain.h> 22/*
23#include <plat/clockdomain.h> 23 * XXX These powerdomain.h/clockdomain.h includes are wrong and should
24 * be removed. No driver should call pwrdm_* or clkdm_* functions
25 * directly; they should rely on OMAP core code to do this.
26 */
27#include <mach-omap2/powerdomain.h>
28#include <mach-omap2/clockdomain.h>
29/*
30 * XXX These mach-omap2/ includes are wrong and should be removed. No
31 * driver should read or write to PRM/CM registers directly; they
32 * should rely on OMAP core code to do this.
33 */
34#include <mach-omap2/cm2xxx_3xxx.h>
24#include <mach-omap2/prm-regbits-34xx.h> 35#include <mach-omap2/prm-regbits-34xx.h>
25#include <mach-omap2/cm-regbits-34xx.h> 36#include <mach-omap2/cm-regbits-34xx.h>
26#include <dspbridge/devdefs.h> 37#include <dspbridge/devdefs.h>