diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-30 18:32:18 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-03 17:53:37 -0400 |
commit | 8433b6a69347022822131891ea4ac30880108a6c (patch) | |
tree | 3febe38adf592dffe2cb7b0288cdb6f777f4b18e /drivers/staging | |
parent | f3415eeb2280592962b3e327294ddf32f025d72f (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.c | 102 |
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; | |||
230 | static int RS485mode = 0; | 230 | static int RS485mode = 0; |
231 | 231 | ||
232 | /* setting and get register values */ | 232 | /* setting and get register values */ |
233 | static int ATEN2011_set_reg_sync(struct usb_serial_port *port, __u16 reg, | ||
234 | __u16 val); | ||
235 | static int ATEN2011_get_reg_sync(struct usb_serial_port *port, __u16 reg, | 233 | static int ATEN2011_get_reg_sync(struct usb_serial_port *port, __u16 reg, |
236 | __u16 * val); | 234 | __u16 * val); |
237 | static int ATEN2011_set_Uart_Reg(struct usb_serial_port *port, __u16 reg, | 235 | static 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 | ||
271 | static int ATEN2011_set_reg_sync(struct usb_serial_port *port, __u16 reg, | 269 | static 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; |