Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: Driver core: Remove unneeded get_{device,driver}() calls. Driver core: Update some prototypes in platform.txt driver core: convert to use class_find_device api PM: Export device_pm_schedule_removal nozomi: finish constification nozomi: constify driver nozomi driver update Add ja_JP translation of stable_kernel_rules.txt kobject: kerneldoc comment fix kobject: Always build in kernel/ksysfs.o.
This commit is contained in:
commit
a6cc48eeea
10 changed files with 167 additions and 152 deletions
|
@ -122,15 +122,15 @@ None the less, there are some APIs to support such legacy drivers. Avoid
|
|||
using these calls except with such hotplug-deficient drivers.
|
||||
|
||||
struct platform_device *platform_device_alloc(
|
||||
char *name, unsigned id);
|
||||
const char *name, int id);
|
||||
|
||||
You can use platform_device_alloc() to dynamically allocate a device, which
|
||||
you will then initialize with resources and platform_device_register().
|
||||
A better solution is usually:
|
||||
|
||||
struct platform_device *platform_device_register_simple(
|
||||
char *name, unsigned id,
|
||||
struct resource *res, unsigned nres);
|
||||
const char *name, int id,
|
||||
struct resource *res, unsigned int nres);
|
||||
|
||||
You can use platform_device_register_simple() as a one-step call to allocate
|
||||
and register a device.
|
||||
|
|
79
Documentation/ja_JP/stable_kernel_rules.txt
Normal file
79
Documentation/ja_JP/stable_kernel_rules.txt
Normal file
|
@ -0,0 +1,79 @@
|
|||
NOTE:
|
||||
This is Japanese translated version of "Documentation/stable_kernel_rules.txt".
|
||||
This one is maintained by Tsugikazu Shibata <tshibata@ab.jp.nec.com>
|
||||
and JF Project team <www.linux.or.jp/JF>.
|
||||
If you find difference with original file or problem in translation,
|
||||
please contact maintainer of this file or JF project.
|
||||
|
||||
Please also note that purpose of this file is easier to read for non
|
||||
English natives and do no intended to fork. So, if you have any
|
||||
comment or update of this file, please try to update Original(English)
|
||||
file at first.
|
||||
|
||||
==================================
|
||||
ããã¯ã
|
||||
linux-2.6.24/Documentation/stable_kernel_rules.txt
|
||||
ã®å訳ã§ãã
|
||||
|
||||
翻訳å£ä½ï¼ JF ããã¸ã§ã¯ã < http://www.linux.or.jp/JF/ >
|
||||
翻訳æ¥ï¼ 2007/12/30
|
||||
翻訳è
ï¼ Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
|
||||
æ ¡æ£è
ï¼ æ¦äºä¼¸å
ããã<takei at webmasters dot gr dot jp>
|
||||
ããããã (Seiji Kaneko) <skaneko at a2 dot mbn dot or dot jp>
|
||||
å°æ é
å
¸ãã (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp>
|
||||
éå£ãã (Kenji Noguchi) <tokyo246 at gmail dot com>
|
||||
ç¥å®®ä¿¡å¤ªéãã <jin at libjingu dot jp>
|
||||
==================================
|
||||
|
||||
ãã£ã¨ç¥ãããã£ã Linux 2.6 -stable ãªãªã¼ã¹ã®å
¨ã¦
|
||||
|
||||
"-stable" ããªã¼ã«ã©ã®ãããªç¨®é¡ã®ããããåãå
¥ããããããã©ã®ãããª
|
||||
ãã®ãåãå
¥ããããªãããã«ã¤ãã¦ã®è¦å-
|
||||
|
||||
- æããã«æ£ããããã¹ãããã¦ãããã®ã§ãªããã°ãªããªãã
|
||||
- æè(å¤æ´è¡ã®åå¾)ãå«ã㦠100 è¡ãã大ããã¦ã¯ãããªãã
|
||||
- ãã ä¸åã®ãã¨ã ããä¿®æ£ãã¦ããã¹ãã
|
||||
- çãæ©ã¾ãã¦ããæ¬ç©ã®ãã°ãä¿®æ£ããªããã°ãªããªãã("ããã¯ãã°ã§
|
||||
ãããããããªãã..." ã®ãããªãã®ã§ã¯ãªã)
|
||||
- ãã«ãã¨ã©ã¼(CONFIG_BROKENã«ãªã£ã¦ãããã®ãé¤ã), oops, ãã³ã°ããã¼
|
||||
ã¿ç ´å£ãç¾å®ã®ã»ãã¥ãªãã£åé¡ããã®ä» "ãããããã¯ãã¡ã ã"ã¨ãã
|
||||
ãããªãã®ãä¿®æ£ããªããã°ãªããªããçãè¨ãã°ãé大ãªåé¡ã
|
||||
- ã©ã®ããã«ç«¶åç¶æ
ãçºçãããã®èª¬æãä¸ç·ã«æ¸ããã¦ããªãéãã
|
||||
"çè«çã«ã¯ç«¶åç¶æ
ã«ãªã"ãããªãã®ã¯ä¸å¯ã
|
||||
- ãããªãäºç´°ãªä¿®æ£ãå«ãããã¨ã¯ã§ããªãã(ã¹ãã«ã®ä¿®æ£ã空ç½ã®ã¯ãªã¼
|
||||
ã³ã¢ãããªã©)
|
||||
- 対å¿ãããµãã·ã¹ãã ã¡ã³ãããåãå
¥ãããã®ã§ãªããã°ãªããªãã
|
||||
- Documentation/SubmittingPatches ã®è¦åã«å¾ã£ããã®ã§ãªããã°ãªããªãã
|
||||
|
||||
-stable ããªã¼ã«ããããéä»ããæç¶ã-
|
||||
|
||||
- ä¸è¨ã®è¦åã«å¾ã£ã¦ãããã確èªããå¾ã«ãstable@kernel.org ã«ããã
|
||||
ãéãã
|
||||
- éä¿¡è
ã¯ãããããã¥ã¼ã«åãä»ããããéã«ã¯ ACK ããå´ä¸ãããå ´å
|
||||
ã«ã¯ NAK ãåãåãããã®åå¿ã¯éçºè
ãã¡ã®ã¹ã±ã¸ã¥ã¼ã«ã«ãã£ã¦ãæ°
|
||||
æ¥ãããå ´åãããã
|
||||
- ããåãåããããããããã¯ä»ã®éçºè
ãã¡ã®ã¬ãã¥ã¼ã®ããã«
|
||||
-stable ãã¥ã¼ã«è¿½å ãããã
|
||||
- ã»ãã¥ãªãã£ãããã¯ãã®ã¨ã¤ãªã¢ã¹ (stable@kernel.org) ã«éãããã¹
|
||||
ãã§ã¯ãªãã代ããã« security@kernel.org ã®ã¢ãã¬ã¹ã«éãããã
|
||||
|
||||
ã¬ãã¥ã¼ãµã¤ã¯ã«-
|
||||
|
||||
- -stable ã¡ã³ãããã¬ãã¥ã¼ãµã¤ã¯ã«ã決ããã¨ãããããã¯ã¬ãã¥ã¼å§
|
||||
å¡ä¼ã¨ããããå½±é¿ããé åã®ã¡ã³ãã(æä¾è
ããã®é åã®ã¡ã³ããã§ç¡
|
||||
ãéã)ã«éãããlinux-kernel ã¡ã¼ãªã³ã°ãªã¹ãã«CCãããã
|
||||
- ã¬ãã¥ã¼å§å¡ä¼ã¯ 48æéã®éã« ACK ã NAK ãåºãã
|
||||
- ããããããå§å¡ä¼ã®ã¡ã³ãããå´ä¸ããããã¡ã³ããéãã¡ã³ããæ°ä»
|
||||
ããªãã£ãåé¡ãæã¡ããããlinux-kernel ã¡ã³ãããããã«ç°è°ãå±ã
|
||||
ãå ´åã«ã¯ããããã¯ãã¥ã¼ããåé¤ãããã
|
||||
- ã¬ãã¥ã¼ãµã¤ã¯ã«ã®æå¾ã«ãACK ãåãããããã¯ææ°ã® -stable ãªãªã¼
|
||||
ã¹ã«è¿½å ããããã®å¾ã«æ°ãã -stable ãªãªã¼ã¹ãè¡ãããã
|
||||
- ã»ãã¥ãªãã£ãããã¯ãé常ã®ã¬ãã¥ã¼ãµã¤ã¯ã«ãéãããã»ãã¥ãªãã£
|
||||
ã«ã¼ãã«ãã¼ã ããç´æ¥ -stable ããªã¼ã«åãä»ããããã
|
||||
ãã®æç¶ãã®è©³ç´°ã«ã¤ãã¦ã¯ kernel security ãã¼ã ã«åãåããããã¨ã
|
||||
|
||||
ã¬ãã¥ã¼å§å¡ä¼-
|
||||
|
||||
- ãã®å§å¡ä¼ã¯ããã®ã¿ã¹ã¯ã«ã¤ãã¦æ´»åããå¤ãã®ãã©ã³ãã£ã¢ã¨ãå°æ°ã®
|
||||
éãã©ã³ãã£ã¢ã®ã«ã¼ãã«éçºè
éã§æ§æããã¦ããã
|
||||
|
|
@ -423,10 +423,8 @@ struct kset *devices_kset;
|
|||
int device_create_file(struct device *dev, struct device_attribute *attr)
|
||||
{
|
||||
int error = 0;
|
||||
if (get_device(dev)) {
|
||||
if (dev)
|
||||
error = sysfs_create_file(&dev->kobj, &attr->attr);
|
||||
put_device(dev);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -437,10 +435,8 @@ int device_create_file(struct device *dev, struct device_attribute *attr)
|
|||
*/
|
||||
void device_remove_file(struct device *dev, struct device_attribute *attr)
|
||||
{
|
||||
if (get_device(dev)) {
|
||||
if (dev)
|
||||
sysfs_remove_file(&dev->kobj, &attr->attr);
|
||||
put_device(dev);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1144,25 +1140,11 @@ struct device *device_create(struct class *class, struct device *parent,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(device_create);
|
||||
|
||||
/**
|
||||
* find_device - finds a device that was created with device_create()
|
||||
* @class: pointer to the struct class that this device was registered with
|
||||
* @devt: the dev_t of the device that was previously registered
|
||||
*/
|
||||
static struct device *find_device(struct class *class, dev_t devt)
|
||||
static int __match_devt(struct device *dev, void *data)
|
||||
{
|
||||
struct device *dev = NULL;
|
||||
struct device *dev_tmp;
|
||||
dev_t *devt = data;
|
||||
|
||||
down(&class->sem);
|
||||
list_for_each_entry(dev_tmp, &class->devices, node) {
|
||||
if (dev_tmp->devt == devt) {
|
||||
dev = dev_tmp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
up(&class->sem);
|
||||
return dev;
|
||||
return dev->devt == *devt;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1177,9 +1159,11 @@ void device_destroy(struct class *class, dev_t devt)
|
|||
{
|
||||
struct device *dev;
|
||||
|
||||
dev = find_device(class, devt);
|
||||
if (dev)
|
||||
dev = class_find_device(class, &devt, __match_devt);
|
||||
if (dev) {
|
||||
put_device(dev);
|
||||
device_unregister(dev);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(device_destroy);
|
||||
|
||||
|
@ -1203,9 +1187,11 @@ void destroy_suspended_device(struct class *class, dev_t devt)
|
|||
{
|
||||
struct device *dev;
|
||||
|
||||
dev = find_device(class, devt);
|
||||
if (dev)
|
||||
dev = class_find_device(class, &devt, __match_devt);
|
||||
if (dev) {
|
||||
device_pm_schedule_removal(dev);
|
||||
put_device(dev);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(destroy_suspended_device);
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
|
|
|
@ -97,10 +97,9 @@ int driver_create_file(struct device_driver *drv,
|
|||
struct driver_attribute *attr)
|
||||
{
|
||||
int error;
|
||||
if (get_driver(drv)) {
|
||||
if (drv)
|
||||
error = sysfs_create_file(&drv->p->kobj, &attr->attr);
|
||||
put_driver(drv);
|
||||
} else
|
||||
else
|
||||
error = -EINVAL;
|
||||
return error;
|
||||
}
|
||||
|
@ -114,10 +113,8 @@ EXPORT_SYMBOL_GPL(driver_create_file);
|
|||
void driver_remove_file(struct device_driver *drv,
|
||||
struct driver_attribute *attr)
|
||||
{
|
||||
if (get_driver(drv)) {
|
||||
if (drv)
|
||||
sysfs_remove_file(&drv->p->kobj, &attr->attr);
|
||||
put_driver(drv);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(driver_remove_file);
|
||||
|
||||
|
|
|
@ -129,6 +129,7 @@ void device_pm_schedule_removal(struct device *dev)
|
|||
list_move_tail(&dev->power.entry, &dpm_destroy);
|
||||
mutex_unlock(&dpm_list_mtx);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(device_pm_schedule_removal);
|
||||
|
||||
/**
|
||||
* pm_sleep_lock - mutual exclusion for registration and suspend
|
||||
|
|
|
@ -13,7 +13,6 @@ static inline struct device *to_device(struct list_head *entry)
|
|||
|
||||
extern void device_pm_add(struct device *);
|
||||
extern void device_pm_remove(struct device *);
|
||||
extern void device_pm_schedule_removal(struct device *);
|
||||
extern int pm_sleep_lock(void);
|
||||
extern void pm_sleep_unlock(void);
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* nozomi.c -- HSDPA driver Broadband Wireless Data Card - Globe Trotter
|
||||
*
|
||||
* Written by: Ulf Jakobsson,
|
||||
* Jan <EFBFBD>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
|
||||
|
@ -448,7 +395,7 @@ struct buffer {
|
|||
} __attribute__ ((packed));
|
||||
|
||||
/* Global variables */
|
||||
static struct pci_device_id nozomi_pci_tbl[] = {
|
||||
static const struct pci_device_id nozomi_pci_tbl[] __devinitconst = {
|
||||
{PCI_DEVICE(VENDOR1, DEVICE1)},
|
||||
{},
|
||||
};
|
||||
|
@ -524,12 +471,12 @@ static void read_mem32(u32 *buf, const void __iomem *mem_addr_start,
|
|||
* -Optimize
|
||||
* -Rewrite cleaner
|
||||
*/
|
||||
static u32 write_mem32(void __iomem *mem_addr_start, u32 *buf,
|
||||
static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf,
|
||||
u32 size_bytes)
|
||||
{
|
||||
u32 i = 0;
|
||||
u32 *ptr = (__force u32 *) mem_addr_start;
|
||||
u16 *buf16;
|
||||
const u16 *buf16;
|
||||
|
||||
if (unlikely(!ptr || !buf))
|
||||
return 0;
|
||||
|
@ -537,7 +484,7 @@ static u32 write_mem32(void __iomem *mem_addr_start, u32 *buf,
|
|||
/* shortcut for extremely often used cases */
|
||||
switch (size_bytes) {
|
||||
case 2: /* 2 bytes */
|
||||
buf16 = (u16 *) buf;
|
||||
buf16 = (const u16 *)buf;
|
||||
writew(__cpu_to_le16(*buf16), (void __iomem *)ptr);
|
||||
return 2;
|
||||
break;
|
||||
|
@ -554,7 +501,7 @@ static u32 write_mem32(void __iomem *mem_addr_start, u32 *buf,
|
|||
while (i < size_bytes) {
|
||||
if (size_bytes - i == 2) {
|
||||
/* 2 bytes */
|
||||
buf16 = (u16 *) buf;
|
||||
buf16 = (const u16 *)buf;
|
||||
writew(__cpu_to_le16(*buf16), (void __iomem *)ptr);
|
||||
i += 2;
|
||||
} else {
|
||||
|
@ -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
|
||||
|
||||
/*
|
||||
|
@ -776,8 +723,7 @@ static int nozomi_read_config_table(struct nozomi *dc)
|
|||
/* Enable uplink interrupts */
|
||||
static void enable_transmit_ul(enum port_type port, struct nozomi *dc)
|
||||
{
|
||||
u16 mask[NOZOMI_MAX_PORTS] = \
|
||||
{MDM_UL, DIAG_UL, APP1_UL, APP2_UL, CTRL_UL};
|
||||
static const u16 mask[] = {MDM_UL, DIAG_UL, APP1_UL, APP2_UL, CTRL_UL};
|
||||
|
||||
if (port < NOZOMI_MAX_PORTS) {
|
||||
dc->last_ier |= mask[port];
|
||||
|
@ -790,8 +736,8 @@ static void enable_transmit_ul(enum port_type port, struct nozomi *dc)
|
|||
/* Disable uplink interrupts */
|
||||
static void disable_transmit_ul(enum port_type port, struct nozomi *dc)
|
||||
{
|
||||
u16 mask[NOZOMI_MAX_PORTS] = \
|
||||
{~MDM_UL, ~DIAG_UL, ~APP1_UL, ~APP2_UL, ~CTRL_UL};
|
||||
static const u16 mask[] =
|
||||
{~MDM_UL, ~DIAG_UL, ~APP1_UL, ~APP2_UL, ~CTRL_UL};
|
||||
|
||||
if (port < NOZOMI_MAX_PORTS) {
|
||||
dc->last_ier &= mask[port];
|
||||
|
@ -804,8 +750,7 @@ static void disable_transmit_ul(enum port_type port, struct nozomi *dc)
|
|||
/* Enable downlink interrupts */
|
||||
static void enable_transmit_dl(enum port_type port, struct nozomi *dc)
|
||||
{
|
||||
u16 mask[NOZOMI_MAX_PORTS] = \
|
||||
{MDM_DL, DIAG_DL, APP1_DL, APP2_DL, CTRL_DL};
|
||||
static const u16 mask[] = {MDM_DL, DIAG_DL, APP1_DL, APP2_DL, CTRL_DL};
|
||||
|
||||
if (port < NOZOMI_MAX_PORTS) {
|
||||
dc->last_ier |= mask[port];
|
||||
|
@ -818,8 +763,8 @@ static void enable_transmit_dl(enum port_type port, struct nozomi *dc)
|
|||
/* Disable downlink interrupts */
|
||||
static void disable_transmit_dl(enum port_type port, struct nozomi *dc)
|
||||
{
|
||||
u16 mask[NOZOMI_MAX_PORTS] = \
|
||||
{~MDM_DL, ~DIAG_DL, ~APP1_DL, ~APP2_DL, ~CTRL_DL};
|
||||
static const u16 mask[] =
|
||||
{~MDM_DL, ~DIAG_DL, ~APP1_DL, ~APP2_DL, ~CTRL_DL};
|
||||
|
||||
if (port < NOZOMI_MAX_PORTS) {
|
||||
dc->last_ier &= mask[port];
|
||||
|
@ -833,13 +778,13 @@ static void disable_transmit_dl(enum port_type port, struct nozomi *dc)
|
|||
* Return 1 - send buffer to card and ack.
|
||||
* Return 0 - don't ack, don't send buffer to card.
|
||||
*/
|
||||
static int send_data(enum port_type index, struct nozomi *dc)
|
||||
static int send_data(enum port_type index, const struct nozomi *dc)
|
||||
{
|
||||
u32 size = 0;
|
||||
struct port *port = &dc->port[index];
|
||||
u8 toggle = port->toggle_ul;
|
||||
const struct port *port = &dc->port[index];
|
||||
const u8 toggle = port->toggle_ul;
|
||||
void __iomem *addr = port->ul_addr[toggle];
|
||||
u32 ul_size = port->ul_size[toggle];
|
||||
const u32 ul_size = port->ul_size[toggle];
|
||||
struct tty_struct *tty = port->tty;
|
||||
|
||||
/* Get data from tty and place in buf for now */
|
||||
|
@ -1102,7 +1047,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
|
||||
*/
|
||||
|
@ -1359,20 +1304,20 @@ static void nozomi_setup_private_data(struct nozomi *dc)
|
|||
static ssize_t card_type_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct nozomi *dc = pci_get_drvdata(to_pci_dev(dev));
|
||||
const struct nozomi *dc = pci_get_drvdata(to_pci_dev(dev));
|
||||
|
||||
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)
|
||||
{
|
||||
struct nozomi *dc = pci_get_drvdata(to_pci_dev(dev));
|
||||
const struct nozomi *dc = pci_get_drvdata(to_pci_dev(dev));
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -1735,7 +1680,7 @@ static int ntty_write_room(struct tty_struct *tty)
|
|||
{
|
||||
struct port *port = tty->driver_data;
|
||||
int room = 0;
|
||||
struct nozomi *dc = get_dc_by_tty(tty);
|
||||
const struct nozomi *dc = get_dc_by_tty(tty);
|
||||
|
||||
if (!dc || !port)
|
||||
return 0;
|
||||
|
@ -1755,9 +1700,9 @@ static int ntty_write_room(struct tty_struct *tty)
|
|||
/* Gets io control parameters */
|
||||
static int ntty_tiocmget(struct tty_struct *tty, struct file *file)
|
||||
{
|
||||
struct port *port = tty->driver_data;
|
||||
struct ctrl_dl *ctrl_dl = &port->ctrl_dl;
|
||||
struct ctrl_ul *ctrl_ul = &port->ctrl_ul;
|
||||
const struct port *port = tty->driver_data;
|
||||
const struct ctrl_dl *ctrl_dl = &port->ctrl_dl;
|
||||
const struct ctrl_ul *ctrl_ul = &port->ctrl_ul;
|
||||
|
||||
return (ctrl_ul->RTS ? TIOCM_RTS : 0) |
|
||||
(ctrl_ul->DTR ? TIOCM_DTR : 0) |
|
||||
|
@ -1787,7 +1732,7 @@ static int ntty_tiocmset(struct tty_struct *tty, struct file *file,
|
|||
static int ntty_cflags_changed(struct port *port, unsigned long flags,
|
||||
struct async_icount *cprev)
|
||||
{
|
||||
struct async_icount cnow = port->tty_icount;
|
||||
const struct async_icount cnow = port->tty_icount;
|
||||
int ret;
|
||||
|
||||
ret = ((flags & TIOCM_RNG) && (cnow.rng != cprev->rng)) ||
|
||||
|
@ -1802,7 +1747,7 @@ static int ntty_cflags_changed(struct port *port, unsigned long flags,
|
|||
|
||||
static int ntty_ioctl_tiocgicount(struct port *port, void __user *argp)
|
||||
{
|
||||
struct async_icount cnow = port->tty_icount;
|
||||
const struct async_icount cnow = port->tty_icount;
|
||||
struct serial_icounter_struct icount;
|
||||
|
||||
icount.cts = cnow.cts;
|
||||
|
@ -1882,7 +1827,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);
|
||||
}
|
||||
|
||||
|
@ -1910,7 +1858,7 @@ static s32 ntty_chars_in_buffer(struct tty_struct *tty)
|
|||
return rval;
|
||||
}
|
||||
|
||||
static struct tty_operations tty_ops = {
|
||||
static const struct tty_operations tty_ops = {
|
||||
.ioctl = ntty_ioctl,
|
||||
.open = ntty_open,
|
||||
.close = ntty_close,
|
||||
|
|
|
@ -534,11 +534,17 @@ extern struct device *device_create(struct class *cls, struct device *parent,
|
|||
extern void device_destroy(struct class *cls, dev_t devt);
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
extern void destroy_suspended_device(struct class *cls, dev_t devt);
|
||||
extern void device_pm_schedule_removal(struct device *);
|
||||
#else /* !CONFIG_PM_SLEEP */
|
||||
static inline void destroy_suspended_device(struct class *cls, dev_t devt)
|
||||
{
|
||||
device_destroy(cls, devt);
|
||||
}
|
||||
|
||||
static inline void device_pm_schedule_removal(struct device *dev)
|
||||
{
|
||||
device_unregister(dev);
|
||||
}
|
||||
#endif /* !CONFIG_PM_SLEEP */
|
||||
|
||||
/*
|
||||
|
|
|
@ -9,7 +9,7 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \
|
|||
rcupdate.o extable.o params.o posix-timers.o \
|
||||
kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
|
||||
hrtimer.o rwsem.o latency.o nsproxy.o srcu.o \
|
||||
utsname.o notifier.o
|
||||
utsname.o notifier.o ksysfs.o
|
||||
|
||||
obj-$(CONFIG_SYSCTL) += sysctl_check.o
|
||||
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
||||
|
@ -49,7 +49,6 @@ obj-$(CONFIG_AUDIT) += audit.o auditfilter.o
|
|||
obj-$(CONFIG_AUDITSYSCALL) += auditsc.o
|
||||
obj-$(CONFIG_AUDIT_TREE) += audit_tree.o
|
||||
obj-$(CONFIG_KPROBES) += kprobes.o
|
||||
obj-$(CONFIG_SYSFS) += ksysfs.o
|
||||
obj-$(CONFIG_DETECT_SOFTLOCKUP) += softlockup.o
|
||||
obj-$(CONFIG_GENERIC_HARDIRQS) += irq/
|
||||
obj-$(CONFIG_SECCOMP) += seccomp.o
|
||||
|
|
|
@ -637,7 +637,7 @@ struct kobject *kobject_create(void)
|
|||
* @name: the name for the kset
|
||||
* @parent: the parent kobject of this kobject, if any.
|
||||
*
|
||||
* This function creates a kset structure dynamically and registers it
|
||||
* This function creates a kobject structure dynamically and registers it
|
||||
* with sysfs. When you are finished with this structure, call
|
||||
* kobject_put() and the structure will be dynamically freed when
|
||||
* it is no longer being used.
|
||||
|
|
Loading…
Reference in a new issue