aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2009-01-30 18:32:18 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2009-04-03 17:53:37 -0400
commit8433b6a69347022822131891ea4ac30880108a6c (patch)
tree3febe38adf592dffe2cb7b0288cdb6f777f4b18e /drivers/staging
parentf3415eeb2280592962b3e327294ddf32f025d72f (diff)
Staging: aten2011: fix up the set_reg_sync function
Name it something sane, and fix up the code to be cleaner. Cc: Russell Lang <gsview@ghostgum.com.au> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/uc2322/aten2011.c102
1 files changed, 33 insertions, 69 deletions
diff --git a/drivers/staging/uc2322/aten2011.c b/drivers/staging/uc2322/aten2011.c
index 3078587eab5..bc212f798e4 100644
--- a/drivers/staging/uc2322/aten2011.c
+++ b/drivers/staging/uc2322/aten2011.c
@@ -230,8 +230,6 @@ static int debug = 0;
230static int RS485mode = 0; 230static int RS485mode = 0;
231 231
232/* setting and get register values */ 232/* setting and get register values */
233static int ATEN2011_set_reg_sync(struct usb_serial_port *port, __u16 reg,
234 __u16 val);
235static int ATEN2011_get_reg_sync(struct usb_serial_port *port, __u16 reg, 233static int ATEN2011_get_reg_sync(struct usb_serial_port *port, __u16 reg,
236 __u16 * val); 234 __u16 * val);
237static int ATEN2011_set_Uart_Reg(struct usb_serial_port *port, __u16 reg, 235static int ATEN2011_set_Uart_Reg(struct usb_serial_port *port, __u16 reg,
@@ -268,12 +266,12 @@ static inline struct ATENINTL_port *ATEN2011_get_port_private(struct
268 return (struct ATENINTL_port *)usb_get_serial_port_data(port); 266 return (struct ATENINTL_port *)usb_get_serial_port_data(port);
269} 267}
270 268
271static int ATEN2011_set_reg_sync(struct usb_serial_port *port, __u16 reg, 269static int set_reg_sync(struct usb_serial_port *port, __u16 reg, __u16 val)
272 __u16 val)
273{ 270{
274 struct usb_device *dev = port->serial->dev; 271 struct usb_device *dev = port->serial->dev;
275 val = val & 0x00ff; 272 val = val & 0x00ff;
276 DPRINTK("ATEN2011_set_reg_sync offset is %x, value %x\n", reg, val); 273
274 dbg("%s: is %x, value %x\n", __func__, reg, val);
277 275
278 return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), ATEN_WRREQ, 276 return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), ATEN_WRREQ,
279 ATEN_WR_RTYPE, val, reg, NULL, 0, 277 ATEN_WR_RTYPE, val, reg, NULL, 0,
@@ -867,14 +865,14 @@ static int ATEN2011_open(struct tty_struct *tty, struct usb_serial_port *port,
867 return -1; 865 return -1;
868 } 866 }
869 Data |= 0x80; 867 Data |= 0x80;
870 status = ATEN2011_set_reg_sync(port, ATEN2011_port->SpRegOffset, Data); 868 status = set_reg_sync(port, ATEN2011_port->SpRegOffset, Data);
871 if (status < 0) { 869 if (status < 0) {
872 DPRINTK("writing Spreg failed\n"); 870 DPRINTK("writing Spreg failed\n");
873 return -1; 871 return -1;
874 } 872 }
875 873
876 Data &= ~0x80; 874 Data &= ~0x80;
877 status = ATEN2011_set_reg_sync(port, ATEN2011_port->SpRegOffset, Data); 875 status = set_reg_sync(port, ATEN2011_port->SpRegOffset, Data);
878 if (status < 0) { 876 if (status < 0) {
879 DPRINTK("writing Spreg failed\n"); 877 DPRINTK("writing Spreg failed\n");
880 return -1; 878 return -1;
@@ -908,17 +906,10 @@ static int ATEN2011_open(struct tty_struct *tty, struct usb_serial_port *port,
908 return -1; 906 return -1;
909 } 907 }
910 Data |= 0x08; //Driver done bit 908 Data |= 0x08; //Driver done bit
911 /*
912 status = ATEN2011_set_reg_sync(port,ATEN2011_port->ControlRegOffset,Data);
913 if(status<0){
914 DPRINTK("writing Controlreg failed\n");
915 return -1;
916 }
917 */
918 Data |= 0x20; //rx_disable 909 Data |= 0x20; //rx_disable
919 status = 0; 910 status = 0;
920 status = 911 status =
921 ATEN2011_set_reg_sync(port, ATEN2011_port->ControlRegOffset, Data); 912 set_reg_sync(port, ATEN2011_port->ControlRegOffset, Data);
922 if (status < 0) { 913 if (status < 0) {
923 DPRINTK("writing Controlreg failed\n"); 914 DPRINTK("writing Controlreg failed\n");
924 return -1; 915 return -1;
@@ -998,11 +989,11 @@ static int ATEN2011_open(struct tty_struct *tty, struct usb_serial_port *port,
998 989
999 Data = Data | 0x0c; 990 Data = Data | 0x0c;
1000 status = 0; 991 status = 0;
1001 status = ATEN2011_set_reg_sync(port, ATEN2011_port->SpRegOffset, Data); 992 status = set_reg_sync(port, ATEN2011_port->SpRegOffset, Data);
1002 993
1003 Data = Data & ~0x0c; 994 Data = Data & ~0x0c;
1004 status = 0; 995 status = 0;
1005 status = ATEN2011_set_reg_sync(port, ATEN2011_port->SpRegOffset, Data); 996 status = set_reg_sync(port, ATEN2011_port->SpRegOffset, Data);
1006 //Finally enable all interrupts 997 //Finally enable all interrupts
1007 Data = 0x0; 998 Data = 0x0;
1008 Data = 0x0c; 999 Data = 0x0c;
@@ -1016,8 +1007,7 @@ static int ATEN2011_open(struct tty_struct *tty, struct usb_serial_port *port,
1016 ATEN2011_get_reg_sync(port, ATEN2011_port->ControlRegOffset, &Data); 1007 ATEN2011_get_reg_sync(port, ATEN2011_port->ControlRegOffset, &Data);
1017 Data = Data & ~0x20; 1008 Data = Data & ~0x20;
1018 status = 0; 1009 status = 0;
1019 status = 1010 status = set_reg_sync(port, ATEN2011_port->ControlRegOffset, Data);
1020 ATEN2011_set_reg_sync(port, ATEN2011_port->ControlRegOffset, Data);
1021 1011
1022 // rx_negate 1012 // rx_negate
1023 Data = 0x0; 1013 Data = 0x0;
@@ -1026,8 +1016,7 @@ static int ATEN2011_open(struct tty_struct *tty, struct usb_serial_port *port,
1026 ATEN2011_get_reg_sync(port, ATEN2011_port->ControlRegOffset, &Data); 1016 ATEN2011_get_reg_sync(port, ATEN2011_port->ControlRegOffset, &Data);
1027 Data = Data | 0x10; 1017 Data = Data | 0x10;
1028 status = 0; 1018 status = 0;
1029 status = 1019 status = set_reg_sync(port, ATEN2011_port->ControlRegOffset, Data);
1030 ATEN2011_set_reg_sync(port, ATEN2011_port->ControlRegOffset, Data);
1031 1020
1032 /* force low_latency on so that our tty_push actually forces * 1021 /* force low_latency on so that our tty_push actually forces *
1033 * the data through,otherwise it is scheduled, and with * 1022 * the data through,otherwise it is scheduled, and with *
@@ -2154,10 +2143,7 @@ static int ATEN2011_send_cmd_write_baud_rate(struct ATENINTL_port
2154 return -1; 2143 return -1;
2155 } 2144 }
2156 Data = (Data & 0x8f) | clk_sel_val; 2145 Data = (Data & 0x8f) | clk_sel_val;
2157 status = 0; 2146 status = set_reg_sync(port, ATEN2011_port->SpRegOffset, Data);
2158 status =
2159 ATEN2011_set_reg_sync(port, ATEN2011_port->SpRegOffset,
2160 Data);
2161 if (status < 0) { 2147 if (status < 0) {
2162 DPRINTK("Writing spreg failed in set_serial_baud\n"); 2148 DPRINTK("Writing spreg failed in set_serial_baud\n");
2163 return -1; 2149 return -1;
@@ -2516,11 +2502,8 @@ static int ATEN2011_startup(struct usb_serial *serial)
2516 Data |= 0x04; //sp1_bit to have cts change reflect in modem status reg 2502 Data |= 0x04; //sp1_bit to have cts change reflect in modem status reg
2517 2503
2518 //Data |= 0x20; //rx_disable bit 2504 //Data |= 0x20; //rx_disable bit
2519 status = 0; 2505 status = set_reg_sync(serial->port[i],
2520 status = 2506 ATEN2011_port->ControlRegOffset, Data);
2521 ATEN2011_set_reg_sync(serial->port[i],
2522 ATEN2011_port->ControlRegOffset,
2523 Data);
2524 if (status < 0) { 2507 if (status < 0) {
2525 DPRINTK 2508 DPRINTK
2526 ("Writing ControlReg failed(rx_disable) status-0x%x\n", 2509 ("Writing ControlReg failed(rx_disable) status-0x%x\n",
@@ -2533,11 +2516,9 @@ static int ATEN2011_startup(struct usb_serial *serial)
2533 2516
2534 //Write default values in DCR (i.e 0x01 in DCR0, 0x05 in DCR2 and 0x24 in DCR3 2517 //Write default values in DCR (i.e 0x01 in DCR0, 0x05 in DCR2 and 0x24 in DCR3
2535 Data = 0x01; 2518 Data = 0x01;
2536 status = 0; 2519 status = set_reg_sync(serial->port[i],
2537 status = 2520 (__u16)(ATEN2011_port->DcrRegOffset + 0),
2538 ATEN2011_set_reg_sync(serial->port[i], 2521 Data);
2539 (__u16) (ATEN2011_port->DcrRegOffset +
2540 0), Data);
2541 if (status < 0) { 2522 if (status < 0) {
2542 DPRINTK("Writing DCR0 failed status-0x%x\n", status); 2523 DPRINTK("Writing DCR0 failed status-0x%x\n", status);
2543 break; 2524 break;
@@ -2545,11 +2526,9 @@ static int ATEN2011_startup(struct usb_serial *serial)
2545 DPRINTK("DCR0 Writing success status%d\n", status); 2526 DPRINTK("DCR0 Writing success status%d\n", status);
2546 2527
2547 Data = 0x05; 2528 Data = 0x05;
2548 status = 0; 2529 status = set_reg_sync(serial->port[i],
2549 status = 2530 (__u16)(ATEN2011_port->DcrRegOffset + 1),
2550 ATEN2011_set_reg_sync(serial->port[i], 2531 Data);
2551 (__u16) (ATEN2011_port->DcrRegOffset +
2552 1), Data);
2553 if (status < 0) { 2532 if (status < 0) {
2554 DPRINTK("Writing DCR1 failed status-0x%x\n", status); 2533 DPRINTK("Writing DCR1 failed status-0x%x\n", status);
2555 break; 2534 break;
@@ -2557,11 +2536,9 @@ static int ATEN2011_startup(struct usb_serial *serial)
2557 DPRINTK("DCR1 Writing success status%d\n", status); 2536 DPRINTK("DCR1 Writing success status%d\n", status);
2558 2537
2559 Data = 0x24; 2538 Data = 0x24;
2560 status = 0; 2539 status = set_reg_sync(serial->port[i],
2561 status = 2540 (__u16)(ATEN2011_port->DcrRegOffset + 2),
2562 ATEN2011_set_reg_sync(serial->port[i], 2541 Data);
2563 (__u16) (ATEN2011_port->DcrRegOffset +
2564 2), Data);
2565 if (status < 0) { 2542 if (status < 0) {
2566 DPRINTK("Writing DCR2 failed status-0x%x\n", status); 2543 DPRINTK("Writing DCR2 failed status-0x%x\n", status);
2567 break; 2544 break;
@@ -2570,10 +2547,8 @@ static int ATEN2011_startup(struct usb_serial *serial)
2570 2547
2571 // write values in clkstart0x0 and clkmulti 0x20 2548 // write values in clkstart0x0 and clkmulti 0x20
2572 Data = 0x0; 2549 Data = 0x0;
2573 status = 0; 2550 status = set_reg_sync(serial->port[i], CLK_START_VALUE_REGISTER,
2574 status = 2551 Data);
2575 ATEN2011_set_reg_sync(serial->port[i],
2576 CLK_START_VALUE_REGISTER, Data);
2577 if (status < 0) { 2552 if (status < 0) {
2578 DPRINTK 2553 DPRINTK
2579 ("Writing CLK_START_VALUE_REGISTER failed status-0x%x\n", 2554 ("Writing CLK_START_VALUE_REGISTER failed status-0x%x\n",
@@ -2585,10 +2560,8 @@ static int ATEN2011_startup(struct usb_serial *serial)
2585 status); 2560 status);
2586 2561
2587 Data = 0x20; 2562 Data = 0x20;
2588 status = 0; 2563 status = set_reg_sync(serial->port[i], CLK_MULTI_REGISTER,
2589 status = 2564 Data);
2590 ATEN2011_set_reg_sync(serial->port[i], CLK_MULTI_REGISTER,
2591 Data);
2592 if (status < 0) { 2565 if (status < 0) {
2593 DPRINTK 2566 DPRINTK
2594 ("Writing CLK_MULTI_REGISTER failed status-0x%x\n", 2567 ("Writing CLK_MULTI_REGISTER failed status-0x%x\n",
@@ -2603,13 +2576,9 @@ static int ATEN2011_startup(struct usb_serial *serial)
2603 && (ATEN2011_serial->ATEN2011_spectrum_2or4ports == 2)) { 2576 && (ATEN2011_serial->ATEN2011_spectrum_2or4ports == 2)) {
2604 2577
2605 Data = 0xff; 2578 Data = 0xff;
2606 status = 0; 2579 status = set_reg_sync(serial->port[i],
2607 status = ATEN2011_set_reg_sync(serial->port[i], 2580 (__u16)(ZLP_REG1 + ((__u16)ATEN2011_port->port_num)),
2608 (__u16) (ZLP_REG1 + 2581 Data);
2609 ((__u16)
2610 ATEN2011_port->
2611 port_num)),
2612 Data);
2613 DPRINTK("ZLIP offset%x\n", 2582 DPRINTK("ZLIP offset%x\n",
2614 (__u16) (ZLP_REG1 + 2583 (__u16) (ZLP_REG1 +
2615 ((__u16) ATEN2011_port->port_num))); 2584 ((__u16) ATEN2011_port->port_num)));
@@ -2623,13 +2592,9 @@ static int ATEN2011_startup(struct usb_serial *serial)
2623 i + 2, status); 2592 i + 2, status);
2624 } else { 2593 } else {
2625 Data = 0xff; 2594 Data = 0xff;
2626 status = 0; 2595 status = set_reg_sync(serial->port[i],
2627 status = ATEN2011_set_reg_sync(serial->port[i], 2596 (__u16)(ZLP_REG1 + ((__u16)ATEN2011_port->port_num) - 0x1),
2628 (__u16) (ZLP_REG1 + 2597 Data);
2629 ((__u16)
2630 ATEN2011_port->
2631 port_num) -
2632 0x1), Data);
2633 DPRINTK("ZLIP offset%x\n", 2598 DPRINTK("ZLIP offset%x\n",
2634 (__u16) (ZLP_REG1 + 2599 (__u16) (ZLP_REG1 +
2635 ((__u16) ATEN2011_port->port_num) - 2600 ((__u16) ATEN2011_port->port_num) -
@@ -2651,8 +2616,7 @@ static int ATEN2011_startup(struct usb_serial *serial)
2651 2616
2652 //Zero Length flag enable 2617 //Zero Length flag enable
2653 Data = 0x0f; 2618 Data = 0x0f;
2654 status = 0; 2619 status = set_reg_sync(serial->port[0], ZLP_REG5, Data);
2655 status = ATEN2011_set_reg_sync(serial->port[0], ZLP_REG5, Data);
2656 if (status < 0) { 2620 if (status < 0) {
2657 DPRINTK("Writing ZLP_REG5 failed status-0x%x\n", status); 2621 DPRINTK("Writing ZLP_REG5 failed status-0x%x\n", status);
2658 return -1; 2622 return -1;