diff options
Diffstat (limited to 'drivers/char/nozomi.c')
-rw-r--r-- | drivers/char/nozomi.c | 122 |
1 files changed, 36 insertions, 86 deletions
diff --git a/drivers/char/nozomi.c b/drivers/char/nozomi.c index 6076e662886..86ded7ed450 100644 --- a/drivers/char/nozomi.c +++ b/drivers/char/nozomi.c @@ -2,7 +2,7 @@ * nozomi.c -- HSDPA driver Broadband Wireless Data Card - Globe Trotter * * Written by: Ulf Jakobsson, - * Jan �erfeldt, + * Jan Åkerfeldt, * Stefan Thomasson, * * Maintained by: Paul Hardwick (p.hardwick@option.com) @@ -38,60 +38,6 @@ * -------------------------------------------------------------------------- */ -/* - * CHANGELOG - * Version 2.1d - * 11-November-2007 Jiri Slaby, Frank Seidel - * - Big rework of multicard support by Jiri - * - Major cleanups (semaphore to mutex, endianess, no major reservation) - * - Optimizations - * - * Version 2.1c - * 30-October-2007 Frank Seidel - * - Completed multicard support - * - Minor cleanups - * - * Version 2.1b - * 07-August-2007 Frank Seidel - * - Minor cleanups - * - theoretical multicard support - * - * Version 2.1 - * 03-July-2006 Paul Hardwick - * - * - Stability Improvements. Incorporated spinlock wraps patch. - * - Updated for newer 2.6.14+ kernels (tty_buffer_request_room) - * - using __devexit macro for tty - * - * - * Version 2.0 - * 08-feb-2006 15:34:10:Ulf - * - * -Fixed issue when not waking up line disipine layer, could probably result - * in better uplink performance for 2.4. - * - * -Fixed issue with big endian during initalization, now proper toggle flags - * are handled between preloader and maincode. - * - * -Fixed flow control issue. - * - * -Added support for setting DTR. - * - * -For 2.4 kernels, removing temporary buffer that's not needed. - * - * -Reading CTS only for modem port (only port that supports it). - * - * -Return 0 in write_room instead of netative value, it's not handled in - * upper layer. - * - * -------------------------------------------------------------------------- - * Version 1.0 - * - * First version of driver, only tested with card of type F32_2. - * Works fine with 2.4 and 2.6 kernels. - * Driver also support big endian architecture. - */ - /* Enable this to have a lot of debug printouts */ #define DEBUG @@ -143,8 +89,9 @@ do { \ /* Do we need this settable at runtime? */ static int debug = NOZOMI_DEBUG_LEVEL; -#define D(lvl, args...) do {if (lvl & debug) NFO(KERN_DEBUG, ##args); } \ - while (0) +#define D(lvl, args...) do \ + {if (lvl & debug) NFO(KERN_DEBUG, ##args); } \ + while (0) #define D_(lvl, args...) D(lvl, ##args) /* These printouts are always printed */ @@ -273,13 +220,13 @@ enum port_type { /* Big endian */ struct toggles { - unsigned enabled:5; /* + unsigned int enabled:5; /* * Toggle fields are valid if enabled is 0, * else A-channels must always be used. */ - unsigned diag_dl:1; - unsigned mdm_dl:1; - unsigned mdm_ul:1; + unsigned int diag_dl:1; + unsigned int mdm_dl:1; + unsigned int mdm_ul:1; } __attribute__ ((packed)); /* Configuration table to read at startup of card */ @@ -320,19 +267,19 @@ struct config_table { /* This stores all control downlink flags */ struct ctrl_dl { u8 port; - unsigned reserved:4; - unsigned CTS:1; - unsigned RI:1; - unsigned DCD:1; - unsigned DSR:1; + unsigned int reserved:4; + unsigned int CTS:1; + unsigned int RI:1; + unsigned int DCD:1; + unsigned int DSR:1; } __attribute__ ((packed)); /* This stores all control uplink flags */ struct ctrl_ul { u8 port; - unsigned reserved:6; - unsigned RTS:1; - unsigned DTR:1; + unsigned int reserved:6; + unsigned int RTS:1; + unsigned int DTR:1; } __attribute__ ((packed)); #else @@ -340,10 +287,10 @@ struct ctrl_ul { /* This represents the toggle information */ struct toggles { - unsigned mdm_ul:1; - unsigned mdm_dl:1; - unsigned diag_dl:1; - unsigned enabled:5; /* + unsigned int mdm_ul:1; + unsigned int mdm_dl:1; + unsigned int diag_dl:1; + unsigned int enabled:5; /* * Toggle fields are valid if enabled is 0, * else A-channels must always be used. */ @@ -379,19 +326,19 @@ struct config_table { /* This stores all control downlink flags */ struct ctrl_dl { - unsigned DSR:1; - unsigned DCD:1; - unsigned RI:1; - unsigned CTS:1; - unsigned reserverd:4; + unsigned int DSR:1; + unsigned int DCD:1; + unsigned int RI:1; + unsigned int CTS:1; + unsigned int reserverd:4; u8 port; } __attribute__ ((packed)); /* This stores all control uplink flags */ struct ctrl_ul { - unsigned DTR:1; - unsigned RTS:1; - unsigned reserved:6; + unsigned int DTR:1; + unsigned int RTS:1; + unsigned int reserved:6; u8 port; } __attribute__ ((packed)); #endif @@ -694,7 +641,7 @@ static void dump_table(const struct nozomi *dc) dc->config_table.ul_ctrl_len); } #else -static __inline__ void dump_table(const struct nozomi *dc) { } +static inline void dump_table(const struct nozomi *dc) { } #endif /* @@ -1102,7 +1049,7 @@ static int send_flow_control(struct nozomi *dc) } /* - * Handle donlink data, ports that are handled are modem and diagnostics + * Handle downlink data, ports that are handled are modem and diagnostics * Return 1 - ok * Return 0 - toggle fields are out of sync */ @@ -1363,7 +1310,7 @@ static ssize_t card_type_show(struct device *dev, struct device_attribute *attr, return sprintf(buf, "%d\n", dc->card_type); } -static DEVICE_ATTR(card_type, 0444, card_type_show, NULL); +static DEVICE_ATTR(card_type, S_IRUGO, card_type_show, NULL); static ssize_t open_ttys_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -1372,7 +1319,7 @@ static ssize_t open_ttys_show(struct device *dev, struct device_attribute *attr, return sprintf(buf, "%u\n", dc->open_ttys); } -static DEVICE_ATTR(open_ttys, 0444, open_ttys_show, NULL); +static DEVICE_ATTR(open_ttys, S_IRUGO, open_ttys_show, NULL); static void make_sysfs_files(struct nozomi *dc) { @@ -1882,7 +1829,10 @@ static void ntty_throttle(struct tty_struct *tty) /* just to discard single character writes */ static void ntty_put_char(struct tty_struct *tty, unsigned char c) { - /* FIXME !!! */ + /* + * card does not react correct when we write single chars + * to the card, so we discard them + */ DBG2("PUT CHAR Function: %c", c); } |