Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
4dff4e7f
Commit
4dff4e7f
authored
Oct 22, 2008
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pnp-debug' into test
parents
5f50ef45
ac88a8f3
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
121 additions
and
125 deletions
+121
-125
Documentation/kernel-parameters.txt
Documentation/kernel-parameters.txt
+4
-0
drivers/pnp/Kconfig
drivers/pnp/Kconfig
+14
-6
drivers/pnp/Makefile
drivers/pnp/Makefile
+0
-4
drivers/pnp/base.h
drivers/pnp/base.h
+10
-0
drivers/pnp/core.c
drivers/pnp/core.c
+19
-10
drivers/pnp/driver.c
drivers/pnp/driver.c
+0
-4
drivers/pnp/isapnp/Makefile
drivers/pnp/isapnp/Makefile
+0
-4
drivers/pnp/isapnp/core.c
drivers/pnp/isapnp/core.c
+6
-6
drivers/pnp/manager.c
drivers/pnp/manager.c
+17
-17
drivers/pnp/pnpacpi/Makefile
drivers/pnp/pnpacpi/Makefile
+0
-4
drivers/pnp/pnpacpi/core.c
drivers/pnp/pnpacpi/core.c
+5
-5
drivers/pnp/pnpacpi/rsparser.c
drivers/pnp/pnpacpi/rsparser.c
+22
-21
drivers/pnp/pnpbios/Makefile
drivers/pnp/pnpbios/Makefile
+0
-4
drivers/pnp/pnpbios/core.c
drivers/pnp/pnpbios/core.c
+2
-2
drivers/pnp/pnpbios/rsparser.c
drivers/pnp/pnpbios/rsparser.c
+9
-9
drivers/pnp/quirks.c
drivers/pnp/quirks.c
+2
-4
drivers/pnp/resource.c
drivers/pnp/resource.c
+6
-6
drivers/pnp/support.c
drivers/pnp/support.c
+5
-9
include/linux/pnp.h
include/linux/pnp.h
+0
-10
No files found.
Documentation/kernel-parameters.txt
View file @
4dff4e7f
...
...
@@ -1687,6 +1687,10 @@ and is between 256 and 4096 characters. It is defined in the file
Override pmtimer IOPort with a hex value.
e.g. pmtmr=0x508
pnp.debug [PNP]
Enable PNP debug messages. This depends on the
CONFIG_PNP_DEBUG_MESSAGES option.
pnpacpi= [ACPI]
{ off }
...
...
drivers/pnp/Kconfig
View file @
4dff4e7f
...
...
@@ -20,13 +20,21 @@ menuconfig PNP
If unsure, say Y.
if PNP
config PNP_DEBUG
bool "PnP Debug Messages"
config PNP_DEBUG_MESSAGES
default y
bool "PNP debugging messages"
depends on PNP
help
Say Y if you want the Plug and Play Layer to print debug messages.
This is useful if you are developing a PnP driver or troubleshooting.
Say Y here if you want the PNP layer to be able to produce debugging
messages if needed. The messages can be enabled at boot-time with
the pnp.debug kernel parameter.
This option allows you to save a bit of space if you do not want
the messages to even be built into the kernel.
If you have any doubts about this, say Y here.
if PNP
comment "Protocols"
...
...
drivers/pnp/Makefile
View file @
4dff4e7f
...
...
@@ -7,7 +7,3 @@ obj-y := core.o card.o driver.o resource.o manager.o support.o interface.o quir
obj-$(CONFIG_PNPACPI)
+=
pnpacpi/
obj-$(CONFIG_PNPBIOS)
+=
pnpbios/
obj-$(CONFIG_ISAPNP)
+=
isapnp/
ifeq
($(CONFIG_PNP_DEBUG),y)
EXTRA_CFLAGS
+=
-DDEBUG
endif
drivers/pnp/base.h
View file @
4dff4e7f
...
...
@@ -166,3 +166,13 @@ struct pnp_resource *pnp_add_io_resource(struct pnp_dev *dev,
struct
pnp_resource
*
pnp_add_mem_resource
(
struct
pnp_dev
*
dev
,
resource_size_t
start
,
resource_size_t
end
,
int
flags
);
extern
int
pnp_debug
;
#if defined(CONFIG_PNP_DEBUG_MESSAGES)
#define pnp_dbg(dev, format, arg...) \
({ if (pnp_debug) dev_printk(KERN_DEBUG, dev, format, ## arg); 0; })
#else
#define pnp_dbg(dev, format, arg...) \
({ if (0) dev_printk(KERN_DEBUG, dev, format, ## arg); 0; })
#endif
drivers/pnp/core.c
View file @
4dff4e7f
...
...
@@ -185,6 +185,9 @@ int __pnp_add_device(struct pnp_dev *dev)
int
pnp_add_device
(
struct
pnp_dev
*
dev
)
{
int
ret
;
char
buf
[
128
];
int
len
=
0
;
struct
pnp_id
*
id
;
if
(
dev
->
card
)
return
-
EINVAL
;
...
...
@@ -193,17 +196,12 @@ int pnp_add_device(struct pnp_dev *dev)
if
(
ret
)
return
ret
;
#ifdef CONFIG_PNP_DEBUG
{
struct
pnp_id
*
id
;
buf
[
0
]
=
'\0'
;
for
(
id
=
dev
->
id
;
id
;
id
=
id
->
next
)
len
+=
scnprintf
(
buf
+
len
,
sizeof
(
buf
)
-
len
,
" %s"
,
id
->
id
)
;
dev_printk
(
KERN_DEBUG
,
&
dev
->
dev
,
"%s device, IDs"
,
dev
->
protocol
->
name
);
for
(
id
=
dev
->
id
;
id
;
id
=
id
->
next
)
printk
(
" %s"
,
id
->
id
);
printk
(
" (%s)
\n
"
,
dev
->
active
?
"active"
:
"disabled"
);
}
#endif
pnp_dbg
(
&
dev
->
dev
,
"%s device, IDs%s (%s)
\n
"
,
dev
->
protocol
->
name
,
buf
,
dev
->
active
?
"active"
:
"disabled"
);
return
0
;
}
...
...
@@ -223,3 +221,14 @@ static int __init pnp_init(void)
}
subsys_initcall
(
pnp_init
);
int
pnp_debug
;
#if defined(CONFIG_PNP_DEBUG_MESSAGES)
static
int
__init
pnp_debug_setup
(
char
*
__unused
)
{
pnp_debug
=
1
;
return
1
;
}
__setup
(
"pnp.debug"
,
pnp_debug_setup
);
#endif
drivers/pnp/driver.c
View file @
4dff4e7f
...
...
@@ -114,7 +114,6 @@ static int pnp_device_probe(struct device *dev)
}
else
goto
fail
;
dev_dbg
(
dev
,
"driver attached
\n
"
);
return
error
;
fail:
...
...
@@ -210,8 +209,6 @@ struct bus_type pnp_bus_type = {
int
pnp_register_driver
(
struct
pnp_driver
*
drv
)
{
pnp_dbg
(
"the driver '%s' has been registered"
,
drv
->
name
);
drv
->
driver
.
name
=
drv
->
name
;
drv
->
driver
.
bus
=
&
pnp_bus_type
;
...
...
@@ -221,7 +218,6 @@ int pnp_register_driver(struct pnp_driver *drv)
void
pnp_unregister_driver
(
struct
pnp_driver
*
drv
)
{
driver_unregister
(
&
drv
->
driver
);
pnp_dbg
(
"the driver '%s' has been unregistered"
,
drv
->
name
);
}
/**
...
...
drivers/pnp/isapnp/Makefile
View file @
4dff4e7f
...
...
@@ -5,7 +5,3 @@
isapnp-proc-$(CONFIG_PROC_FS)
=
proc.o
obj-y
:=
core.o compat.o
$
(
isapnp-proc-y
)
ifeq
($(CONFIG_PNP_DEBUG),y)
EXTRA_CFLAGS
+=
-DDEBUG
endif
drivers/pnp/isapnp/core.c
View file @
4dff4e7f
...
...
@@ -901,7 +901,7 @@ static int isapnp_get_resources(struct pnp_dev *dev)
{
int
i
,
ret
;
dev
_dbg
(
&
dev
->
dev
,
"get resources
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"get resources
\n
"
);
pnp_init_resources
(
dev
);
isapnp_cfg_begin
(
dev
->
card
->
number
,
dev
->
number
);
dev
->
active
=
isapnp_read_byte
(
ISAPNP_CFG_ACTIVATE
);
...
...
@@ -939,13 +939,13 @@ static int isapnp_set_resources(struct pnp_dev *dev)
struct
resource
*
res
;
int
tmp
;
dev
_dbg
(
&
dev
->
dev
,
"set resources
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"set resources
\n
"
);
isapnp_cfg_begin
(
dev
->
card
->
number
,
dev
->
number
);
dev
->
active
=
1
;
for
(
tmp
=
0
;
tmp
<
ISAPNP_MAX_PORT
;
tmp
++
)
{
res
=
pnp_get_resource
(
dev
,
IORESOURCE_IO
,
tmp
);
if
(
pnp_resource_enabled
(
res
))
{
dev
_dbg
(
&
dev
->
dev
,
" set io %d to %#llx
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" set io %d to %#llx
\n
"
,
tmp
,
(
unsigned
long
long
)
res
->
start
);
isapnp_write_word
(
ISAPNP_CFG_PORT
+
(
tmp
<<
1
),
res
->
start
);
...
...
@@ -957,14 +957,14 @@ static int isapnp_set_resources(struct pnp_dev *dev)
int
irq
=
res
->
start
;
if
(
irq
==
2
)
irq
=
9
;
dev
_dbg
(
&
dev
->
dev
,
" set irq %d to %d
\n
"
,
tmp
,
irq
);
pnp
_dbg
(
&
dev
->
dev
,
" set irq %d to %d
\n
"
,
tmp
,
irq
);
isapnp_write_byte
(
ISAPNP_CFG_IRQ
+
(
tmp
<<
1
),
irq
);
}
}
for
(
tmp
=
0
;
tmp
<
ISAPNP_MAX_DMA
;
tmp
++
)
{
res
=
pnp_get_resource
(
dev
,
IORESOURCE_DMA
,
tmp
);
if
(
pnp_resource_enabled
(
res
))
{
dev
_dbg
(
&
dev
->
dev
,
" set dma %d to %lld
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" set dma %d to %lld
\n
"
,
tmp
,
(
unsigned
long
long
)
res
->
start
);
isapnp_write_byte
(
ISAPNP_CFG_DMA
+
tmp
,
res
->
start
);
}
...
...
@@ -972,7 +972,7 @@ static int isapnp_set_resources(struct pnp_dev *dev)
for
(
tmp
=
0
;
tmp
<
ISAPNP_MAX_MEM
;
tmp
++
)
{
res
=
pnp_get_resource
(
dev
,
IORESOURCE_MEM
,
tmp
);
if
(
pnp_resource_enabled
(
res
))
{
dev
_dbg
(
&
dev
->
dev
,
" set mem %d to %#llx
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" set mem %d to %#llx
\n
"
,
tmp
,
(
unsigned
long
long
)
res
->
start
);
isapnp_write_word
(
ISAPNP_CFG_MEM
+
(
tmp
<<
3
),
(
res
->
start
>>
8
)
&
0xffff
);
...
...
drivers/pnp/manager.c
View file @
4dff4e7f
...
...
@@ -25,7 +25,7 @@ static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx)
res
=
pnp_get_resource
(
dev
,
IORESOURCE_IO
,
idx
);
if
(
res
)
{
dev
_dbg
(
&
dev
->
dev
,
" io %d already set to %#llx-%#llx "
pnp
_dbg
(
&
dev
->
dev
,
" io %d already set to %#llx-%#llx "
"flags %#lx
\n
"
,
idx
,
(
unsigned
long
long
)
res
->
start
,
(
unsigned
long
long
)
res
->
end
,
res
->
flags
);
return
0
;
...
...
@@ -38,7 +38,7 @@ static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx)
if
(
!
rule
->
size
)
{
res
->
flags
|=
IORESOURCE_DISABLED
;
dev
_dbg
(
&
dev
->
dev
,
" io %d disabled
\n
"
,
idx
);
pnp
_dbg
(
&
dev
->
dev
,
" io %d disabled
\n
"
,
idx
);
goto
__add
;
}
...
...
@@ -49,7 +49,7 @@ static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx)
res
->
start
+=
rule
->
align
;
res
->
end
=
res
->
start
+
rule
->
size
-
1
;
if
(
res
->
start
>
rule
->
max
||
!
rule
->
align
)
{
dev
_dbg
(
&
dev
->
dev
,
" couldn't assign io %d "
pnp
_dbg
(
&
dev
->
dev
,
" couldn't assign io %d "
"(min %#llx max %#llx)
\n
"
,
idx
,
(
unsigned
long
long
)
rule
->
min
,
(
unsigned
long
long
)
rule
->
max
);
...
...
@@ -68,7 +68,7 @@ static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx)
res
=
pnp_get_resource
(
dev
,
IORESOURCE_MEM
,
idx
);
if
(
res
)
{
dev
_dbg
(
&
dev
->
dev
,
" mem %d already set to %#llx-%#llx "
pnp
_dbg
(
&
dev
->
dev
,
" mem %d already set to %#llx-%#llx "
"flags %#lx
\n
"
,
idx
,
(
unsigned
long
long
)
res
->
start
,
(
unsigned
long
long
)
res
->
end
,
res
->
flags
);
return
0
;
...
...
@@ -90,7 +90,7 @@ static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx)
if
(
!
rule
->
size
)
{
res
->
flags
|=
IORESOURCE_DISABLED
;
dev
_dbg
(
&
dev
->
dev
,
" mem %d disabled
\n
"
,
idx
);
pnp
_dbg
(
&
dev
->
dev
,
" mem %d disabled
\n
"
,
idx
);
goto
__add
;
}
...
...
@@ -101,7 +101,7 @@ static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx)
res
->
start
+=
rule
->
align
;
res
->
end
=
res
->
start
+
rule
->
size
-
1
;
if
(
res
->
start
>
rule
->
max
||
!
rule
->
align
)
{
dev
_dbg
(
&
dev
->
dev
,
" couldn't assign mem %d "
pnp
_dbg
(
&
dev
->
dev
,
" couldn't assign mem %d "
"(min %#llx max %#llx)
\n
"
,
idx
,
(
unsigned
long
long
)
rule
->
min
,
(
unsigned
long
long
)
rule
->
max
);
...
...
@@ -126,7 +126,7 @@ static int pnp_assign_irq(struct pnp_dev *dev, struct pnp_irq *rule, int idx)
res
=
pnp_get_resource
(
dev
,
IORESOURCE_IRQ
,
idx
);
if
(
res
)
{
dev
_dbg
(
&
dev
->
dev
,
" irq %d already set to %d flags %#lx
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" irq %d already set to %d flags %#lx
\n
"
,
idx
,
(
int
)
res
->
start
,
res
->
flags
);
return
0
;
}
...
...
@@ -138,7 +138,7 @@ static int pnp_assign_irq(struct pnp_dev *dev, struct pnp_irq *rule, int idx)
if
(
bitmap_empty
(
rule
->
map
.
bits
,
PNP_IRQ_NR
))
{
res
->
flags
|=
IORESOURCE_DISABLED
;
dev
_dbg
(
&
dev
->
dev
,
" irq %d disabled
\n
"
,
idx
);
pnp
_dbg
(
&
dev
->
dev
,
" irq %d disabled
\n
"
,
idx
);
goto
__add
;
}
...
...
@@ -160,11 +160,11 @@ static int pnp_assign_irq(struct pnp_dev *dev, struct pnp_irq *rule, int idx)
res
->
start
=
-
1
;
res
->
end
=
-
1
;
res
->
flags
|=
IORESOURCE_DISABLED
;
dev
_dbg
(
&
dev
->
dev
,
" irq %d disabled (optional)
\n
"
,
idx
);
pnp
_dbg
(
&
dev
->
dev
,
" irq %d disabled (optional)
\n
"
,
idx
);
goto
__add
;
}
dev
_dbg
(
&
dev
->
dev
,
" couldn't assign irq %d
\n
"
,
idx
);
pnp
_dbg
(
&
dev
->
dev
,
" couldn't assign irq %d
\n
"
,
idx
);
return
-
EBUSY
;
__add:
...
...
@@ -184,7 +184,7 @@ static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
res
=
pnp_get_resource
(
dev
,
IORESOURCE_DMA
,
idx
);
if
(
res
)
{
dev
_dbg
(
&
dev
->
dev
,
" dma %d already set to %d flags %#lx
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" dma %d already set to %d flags %#lx
\n
"
,
idx
,
(
int
)
res
->
start
,
res
->
flags
);
return
0
;
}
...
...
@@ -205,7 +205,7 @@ static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
res
->
start
=
res
->
end
=
MAX_DMA_CHANNELS
;
#endif
res
->
flags
|=
IORESOURCE_DISABLED
;
dev
_dbg
(
&
dev
->
dev
,
" disable dma %d
\n
"
,
idx
);
pnp
_dbg
(
&
dev
->
dev
,
" disable dma %d
\n
"
,
idx
);
__add:
pnp_add_dma_resource
(
dev
,
res
->
start
,
res
->
flags
);
...
...
@@ -238,7 +238,7 @@ static int pnp_assign_resources(struct pnp_dev *dev, int set)
int
nport
=
0
,
nmem
=
0
,
nirq
=
0
,
ndma
=
0
;
int
ret
=
0
;
dev
_dbg
(
&
dev
->
dev
,
"pnp_assign_resources, try dependent set %d
\n
"
,
set
);
pnp
_dbg
(
&
dev
->
dev
,
"pnp_assign_resources, try dependent set %d
\n
"
,
set
);
mutex_lock
(
&
pnp_res_mutex
);
pnp_clean_resource_table
(
dev
);
...
...
@@ -270,7 +270,7 @@ static int pnp_assign_resources(struct pnp_dev *dev, int set)
mutex_unlock
(
&
pnp_res_mutex
);
if
(
ret
<
0
)
{
dev
_dbg
(
&
dev
->
dev
,
"pnp_assign_resources failed (%d)
\n
"
,
ret
);
pnp
_dbg
(
&
dev
->
dev
,
"pnp_assign_resources failed (%d)
\n
"
,
ret
);
pnp_clean_resource_table
(
dev
);
}
else
dbg_pnp_show_resources
(
dev
,
"pnp_assign_resources succeeded"
);
...
...
@@ -286,7 +286,7 @@ int pnp_auto_config_dev(struct pnp_dev *dev)
int
i
,
ret
;
if
(
!
pnp_can_configure
(
dev
))
{
dev
_dbg
(
&
dev
->
dev
,
"configuration not supported
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"configuration not supported
\n
"
);
return
-
ENODEV
;
}
...
...
@@ -313,7 +313,7 @@ int pnp_auto_config_dev(struct pnp_dev *dev)
int
pnp_start_dev
(
struct
pnp_dev
*
dev
)
{
if
(
!
pnp_can_write
(
dev
))
{
dev
_dbg
(
&
dev
->
dev
,
"activation not supported
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"activation not supported
\n
"
);
return
-
EINVAL
;
}
...
...
@@ -336,7 +336,7 @@ int pnp_start_dev(struct pnp_dev *dev)
int
pnp_stop_dev
(
struct
pnp_dev
*
dev
)
{
if
(
!
pnp_can_disable
(
dev
))
{
dev
_dbg
(
&
dev
->
dev
,
"disabling not supported
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"disabling not supported
\n
"
);
return
-
EINVAL
;
}
if
(
dev
->
protocol
->
disable
(
dev
)
<
0
)
{
...
...
drivers/pnp/pnpacpi/Makefile
View file @
4dff4e7f
...
...
@@ -3,7 +3,3 @@
#
obj-y
:=
core.o rsparser.o
ifeq
($(CONFIG_PNP_DEBUG),y)
EXTRA_CFLAGS
+=
-DDEBUG
endif
drivers/pnp/pnpacpi/core.c
View file @
4dff4e7f
...
...
@@ -75,7 +75,7 @@ static int __init ispnpidacpi(char *id)
static
int
pnpacpi_get_resources
(
struct
pnp_dev
*
dev
)
{
dev
_dbg
(
&
dev
->
dev
,
"get resources
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"get resources
\n
"
);
return
pnpacpi_parse_allocated_resource
(
dev
);
}
...
...
@@ -86,7 +86,7 @@ static int pnpacpi_set_resources(struct pnp_dev *dev)
int
ret
;
acpi_status
status
;
dev
_dbg
(
&
dev
->
dev
,
"set resources
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"set resources
\n
"
);
ret
=
pnpacpi_build_resource_template
(
dev
,
&
buffer
);
if
(
ret
)
return
ret
;
...
...
@@ -259,14 +259,14 @@ int pnpacpi_disabled __initdata;
static
int
__init
pnpacpi_init
(
void
)
{
if
(
acpi_disabled
||
pnpacpi_disabled
)
{
p
np_info
(
"PnP ACPI: disabled
"
);
p
rintk
(
KERN_INFO
"pnp: PnP ACPI: disabled
\n
"
);
return
0
;
}
p
np_info
(
"PnP ACPI init
"
);
p
rintk
(
KERN_INFO
"pnp: PnP ACPI init
\n
"
);
pnp_register_protocol
(
&
pnpacpi_protocol
);
register_acpi_bus_type
(
&
acpi_pnp_bus
);
acpi_get_devices
(
NULL
,
pnpacpi_add_device_handler
,
NULL
,
NULL
);
p
np_info
(
"PnP ACPI: found %d devices
"
,
num
);
p
rintk
(
KERN_INFO
"pnp: PnP ACPI: found %d devices
\n
"
,
num
);
unregister_acpi_bus_type
(
&
acpi_pnp_bus
);
pnp_platform_devices
=
1
;
return
0
;
...
...
drivers/pnp/pnpacpi/rsparser.c
View file @
4dff4e7f
...
...
@@ -132,7 +132,8 @@ static void pnpacpi_parse_allocated_irqresource(struct pnp_dev *dev,
pnp_add_irq_resource
(
dev
,
irq
,
flags
);
}
static
int
dma_flags
(
int
type
,
int
bus_master
,
int
transfer
)
static
int
dma_flags
(
struct
pnp_dev
*
dev
,
int
type
,
int
bus_master
,
int
transfer
)
{
int
flags
=
0
;
...
...
@@ -154,7 +155,7 @@ static int dma_flags(int type, int bus_master, int transfer)
default:
/* Set a default value ? */
flags
|=
IORESOURCE_DMA_COMPATIBLE
;
pnp_err
(
"Invalid DMA type"
);
dev_err
(
&
dev
->
dev
,
"invalid DMA type %d
\n
"
,
type
);
}
switch
(
transfer
)
{
case
ACPI_TRANSFER_8
:
...
...
@@ -169,7 +170,7 @@ static int dma_flags(int type, int bus_master, int transfer)
default:
/* Set a default value ? */
flags
|=
IORESOURCE_DMA_8AND16BIT
;
pnp_err
(
"Invalid DMA transfer type"
);
dev_err
(
&
dev
->
dev
,
"invalid DMA transfer type %d
\n
"
,
transfer
);
}
return
flags
;
...
...
@@ -336,7 +337,7 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
case
ACPI_RESOURCE_TYPE_DMA
:
dma
=
&
res
->
data
.
dma
;
if
(
dma
->
channel_count
>
0
&&
dma
->
channels
[
0
]
!=
(
u8
)
-
1
)
flags
=
dma_flags
(
dma
->
type
,
dma
->
bus_master
,
flags
=
dma_flags
(
d
ev
,
d
ma
->
type
,
dma
->
bus_master
,
dma
->
transfer
);
else
flags
=
IORESOURCE_DISABLED
;
...
...
@@ -449,7 +450,7 @@ int pnpacpi_parse_allocated_resource(struct pnp_dev *dev)
acpi_handle
handle
=
dev
->
data
;
acpi_status
status
;
dev
_dbg
(
&
dev
->
dev
,
"parse allocated resources
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"parse allocated resources
\n
"
);
pnp_init_resources
(
dev
);
...
...
@@ -477,7 +478,7 @@ static __init void pnpacpi_parse_dma_option(struct pnp_dev *dev,
for
(
i
=
0
;
i
<
p
->
channel_count
;
i
++
)
map
|=
1
<<
p
->
channels
[
i
];
flags
=
dma_flags
(
p
->
type
,
p
->
bus_master
,
p
->
transfer
);
flags
=
dma_flags
(
dev
,
p
->
type
,
p
->
bus_master
,
p
->
transfer
);
pnp_register_dma_resource
(
dev
,
option_flags
,
map
,
flags
);
}
...
...
@@ -608,8 +609,8 @@ static __init void pnpacpi_parse_address_option(struct pnp_dev *dev,
unsigned
char
flags
=
0
;
status
=
acpi_resource_to_address64
(
r
,
p
);
if
(
!
ACPI_SUCCESS
(
status
))
{
pnp_warn
(
"PnPACPI: failed to convert resource type %d
"
,
if
(
ACPI_FAILURE
(
status
))
{
dev_warn
(
&
dev
->
dev
,
"can't convert resource type %d
\n
"
,
r
->
type
);
return
;
}
...
...
@@ -735,7 +736,7 @@ int __init pnpacpi_parse_resource_option_data(struct pnp_dev *dev)
acpi_status
status
;
struct
acpipnp_parse_option_s
parse_data
;
dev
_dbg
(
&
dev
->
dev
,
"parse resource options
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"parse resource options
\n
"
);
parse_data
.
dev
=
dev
;
parse_data
.
option_flags
=
0
;
...
...
@@ -843,7 +844,7 @@ static void pnpacpi_encode_irq(struct pnp_dev *dev,
if
(
!
pnp_resource_enabled
(
p
))
{
irq
->
interrupt_count
=
0
;
dev
_dbg
(
&
dev
->
dev
,
" encode irq (%s)
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" encode irq (%s)
\n
"
,
p
?
"disabled"
:
"missing"
);
return
;
}
...
...
@@ -855,7 +856,7 @@ static void pnpacpi_encode_irq(struct pnp_dev *dev,
irq
->
interrupt_count
=
1
;
irq
->
interrupts
[
0
]
=
p
->
start
;
dev
_dbg
(
&
dev
->
dev
,
" encode irq %d %s %s %s (%d-byte descriptor)
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" encode irq %d %s %s %s (%d-byte descriptor)
\n
"
,
(
int
)
p
->
start
,
triggering
==
ACPI_LEVEL_SENSITIVE
?
"level"
:
"edge"
,
polarity
==
ACPI_ACTIVE_LOW
?
"low"
:
"high"
,
...
...
@@ -872,7 +873,7 @@ static void pnpacpi_encode_ext_irq(struct pnp_dev *dev,
if
(
!
pnp_resource_enabled
(
p
))
{
extended_irq
->
interrupt_count
=
0
;
dev
_dbg
(
&
dev
->
dev
,
" encode extended irq (%s)
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" encode extended irq (%s)
\n
"
,
p
?
"disabled"
:
"missing"
);
return
;
}
...
...
@@ -885,7 +886,7 @@ static void pnpacpi_encode_ext_irq(struct pnp_dev *dev,
extended_irq
->
interrupt_count
=
1
;
extended_irq
->
interrupts
[
0
]
=
p
->
start
;
dev
_dbg
(
&
dev
->
dev
,
" encode irq %d %s %s %s
\n
"
,
(
int
)
p
->
start
,
pnp
_dbg
(
&
dev
->
dev
,
" encode irq %d %s %s %s
\n
"
,
(
int
)
p
->
start
,
triggering
==
ACPI_LEVEL_SENSITIVE
?
"level"
:
"edge"
,
polarity
==
ACPI_ACTIVE_LOW
?
"low"
:
"high"
,
extended_irq
->
sharable
==
ACPI_SHARED
?
"shared"
:
"exclusive"
);
...
...
@@ -899,7 +900,7 @@ static void pnpacpi_encode_dma(struct pnp_dev *dev,
if
(
!
pnp_resource_enabled
(
p
))
{
dma
->
channel_count
=
0
;
dev
_dbg
(
&
dev
->
dev
,
" encode dma (%s)
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" encode dma (%s)
\n
"
,
p
?
"disabled"
:
"missing"
);
return
;
}
...
...
@@ -934,7 +935,7 @@ static void pnpacpi_encode_dma(struct pnp_dev *dev,
dma
->
channel_count
=
1
;
dma
->
channels
[
0
]
=
p
->
start
;
dev
_dbg
(
&
dev
->
dev
,
" encode dma %d "
pnp
_dbg
(
&
dev
->
dev
,
" encode dma %d "
"type %#x transfer %#x master %d
\n
"
,
(
int
)
p
->
start
,
dma
->
type
,
dma
->
transfer
,
dma
->
bus_master
);
}
...
...
@@ -958,7 +959,7 @@ static void pnpacpi_encode_io(struct pnp_dev *dev,
io
->
address_length
=
0
;
}
dev
_dbg
(
&
dev
->
dev
,
" encode io %#x-%#x decode %#x
\n
"
,
io
->
minimum
,
pnp
_dbg
(
&
dev
->
dev
,
" encode io %#x-%#x decode %#x
\n
"
,
io
->
minimum
,
io
->
minimum
+
io
->
address_length
-
1
,
io
->
io_decode
);
}
...
...
@@ -976,7 +977,7 @@ static void pnpacpi_encode_fixed_io(struct pnp_dev *dev,
fixed_io
->
address_length
=
0
;
}
dev
_dbg
(
&
dev
->
dev
,
" encode fixed_io %#x-%#x
\n
"
,
fixed_io
->
address
,
pnp
_dbg
(
&
dev
->
dev
,
" encode fixed_io %#x-%#x
\n
"
,
fixed_io
->
address
,
fixed_io
->
address
+
fixed_io
->
address_length
-
1
);
}
...
...
@@ -999,7 +1000,7 @@ static void pnpacpi_encode_mem24(struct pnp_dev *dev,
memory24
->
address_length
=
0
;
}
dev
_dbg
(
&
dev
->
dev
,
" encode mem24 %#x-%#x write_protect %#x
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" encode mem24 %#x-%#x write_protect %#x
\n
"
,
memory24
->
minimum
,
memory24
->
minimum
+
memory24
->
address_length
-
1
,
memory24
->
write_protect
);
...
...
@@ -1023,7 +1024,7 @@ static void pnpacpi_encode_mem32(struct pnp_dev *dev,
memory32
->
alignment
=
0
;
}
dev
_dbg
(
&
dev
->
dev
,
" encode mem32 %#x-%#x write_protect %#x
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" encode mem32 %#x-%#x write_protect %#x
\n
"
,
memory32
->
minimum
,
memory32
->
minimum
+
memory32
->
address_length
-
1
,
memory32
->
write_protect
);
...
...
@@ -1046,7 +1047,7 @@ static void pnpacpi_encode_fixed_mem32(struct pnp_dev *dev,
fixed_memory32
->
address_length
=
0
;
}
dev
_dbg
(
&
dev
->
dev
,
" encode fixed_mem32 %#x-%#x write_protect %#x
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" encode fixed_mem32 %#x-%#x write_protect %#x
\n
"
,
fixed_memory32
->
address
,
fixed_memory32
->
address
+
fixed_memory32
->
address_length
-
1
,
fixed_memory32
->
write_protect
);
...
...
@@ -1060,7 +1061,7 @@ int pnpacpi_encode_resources(struct pnp_dev *dev, struct acpi_buffer *buffer)
struct
acpi_resource
*
resource
=
buffer
->
pointer
;
int
port
=
0
,
irq
=
0
,
dma
=
0
,
mem
=
0
;
dev
_dbg
(
&
dev
->
dev
,
"encode %d resources
\n
"
,
res_cnt
);
pnp
_dbg
(
&
dev
->
dev
,
"encode %d resources
\n
"
,
res_cnt
);
while
(
i
<
res_cnt
)
{
switch
(
resource
->
type
)
{
case
ACPI_RESOURCE_TYPE_IRQ
:
...
...
drivers/pnp/pnpbios/Makefile
View file @
4dff4e7f
...
...
@@ -5,7 +5,3 @@
pnpbios-proc-$(CONFIG_PNPBIOS_PROC_FS)
=
proc.o
obj-y
:=
core.o bioscalls.o rsparser.o
$
(
pnpbios-proc-y
)
ifeq
($(CONFIG_PNP_DEBUG),y)
EXTRA_CFLAGS
+=
-DDEBUG
endif
drivers/pnp/pnpbios/core.c
View file @
4dff4e7f
...
...
@@ -211,7 +211,7 @@ static int pnpbios_get_resources(struct pnp_dev *dev)
if
(
!
pnpbios_is_dynamic
(
dev
))
return
-
EPERM
;
dev
_dbg
(
&
dev
->
dev
,
"get resources
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"get resources
\n
"
);
node
=
kzalloc
(
node_info
.
max_node_size
,
GFP_KERNEL
);
if
(
!
node
)
return
-
1
;
...
...
@@ -234,7 +234,7 @@ static int pnpbios_set_resources(struct pnp_dev *dev)
if
(
!
pnpbios_is_dynamic
(
dev
))
return
-
EPERM
;
dev
_dbg
(
&
dev
->
dev
,
"set resources
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"set resources
\n
"
);
node
=
kzalloc
(
node_info
.
max_node_size
,
GFP_KERNEL
);
if
(
!
node
)
return
-
1
;
...
...
drivers/pnp/pnpbios/rsparser.c
View file @
4dff4e7f
...
...
@@ -87,7 +87,7 @@ static unsigned char *pnpbios_parse_allocated_resource_data(struct pnp_dev *dev,
if
(
!
p
)
return
NULL
;
dev
_dbg
(
&
dev
->
dev
,
"parse allocated resources
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"parse allocated resources
\n
"
);
pnp_init_resources
(
dev
);
...
...
@@ -324,7 +324,7 @@ pnpbios_parse_resource_option_data(unsigned char *p, unsigned char *end,
if
(
!
p
)
return
NULL
;
dev
_dbg
(
&
dev
->
dev
,
"parse resource options
\n
"
);
pnp
_dbg
(
&
dev
->
dev
,
"parse resource options
\n
"
);
option_flags
=
0
;
while
((
char
*
)
p
<
(
char
*
)
end
)
{
...
...
@@ -519,7 +519,7 @@ static void pnpbios_encode_mem(struct pnp_dev *dev, unsigned char *p,
p
[
10
]
=
(
len
>>
8
)
&
0xff
;
p
[
11
]
=
((
len
>>
8
)
>>
8
)
&
0xff
;
dev
_dbg
(
&
dev
->
dev
,
" encode mem %#lx-%#lx
\n
"
,
base
,
base
+
len
-
1
);
pnp
_dbg
(
&
dev
->
dev
,
" encode mem %#lx-%#lx
\n
"
,
base
,
base
+
len
-
1
);
}
static
void
pnpbios_encode_mem32
(
struct
pnp_dev
*
dev
,
unsigned
char
*
p
,
...
...
@@ -549,7 +549,7 @@ static void pnpbios_encode_mem32(struct pnp_dev *dev, unsigned char *p,
p
[
18
]
=
(
len
>>
16
)
&
0xff
;
p
[
19
]
=
(
len
>>
24
)
&
0xff
;
dev
_dbg
(
&
dev
->
dev
,
" encode mem32 %#lx-%#lx
\n
"
,
base
,
base
+
len
-
1
);
pnp
_dbg
(
&
dev
->
dev
,
" encode mem32 %#lx-%#lx
\n
"
,
base
,
base
+
len
-
1
);
}
static
void
pnpbios_encode_fixed_mem32
(
struct
pnp_dev
*
dev
,
unsigned
char
*
p
,
...
...
@@ -575,7 +575,7 @@ static void pnpbios_encode_fixed_mem32(struct pnp_dev *dev, unsigned char *p,
p
[
10
]
=
(
len
>>
16
)
&
0xff
;
p
[
11
]
=
(
len
>>
24
)
&
0xff
;
dev
_dbg
(
&
dev
->
dev
,
" encode fixed_mem32 %#lx-%#lx
\n
"
,
base
,
pnp
_dbg
(
&
dev
->
dev
,
" encode fixed_mem32 %#lx-%#lx
\n
"
,
base
,
base
+
len
-
1
);
}
...
...
@@ -592,7 +592,7 @@ static void pnpbios_encode_irq(struct pnp_dev *dev, unsigned char *p,
p
[
1
]
=
map
&
0xff
;
p
[
2
]
=
(
map
>>
8
)
&
0xff
;
dev
_dbg
(
&
dev
->
dev
,
" encode irq mask %#lx
\n
"
,
map
);
pnp
_dbg
(
&
dev
->
dev
,
" encode irq mask %#lx
\n
"
,
map
);
}
static
void
pnpbios_encode_dma
(
struct
pnp_dev
*
dev
,
unsigned
char
*
p
,
...
...
@@ -607,7 +607,7 @@ static void pnpbios_encode_dma(struct pnp_dev *dev, unsigned char *p,
p
[
1
]
=
map
&
0xff
;
dev
_dbg
(
&
dev
->
dev
,
" encode dma mask %#lx
\n
"
,
map
);
pnp
_dbg
(
&
dev
->
dev
,
" encode dma mask %#lx
\n
"
,
map
);
}
static
void
pnpbios_encode_port
(
struct
pnp_dev
*
dev
,
unsigned
char
*
p
,
...
...
@@ -630,7 +630,7 @@ static void pnpbios_encode_port(struct pnp_dev *dev, unsigned char *p,
p
[
5
]
=
(
base
>>
8
)
&
0xff
;
p
[
7
]
=
len
&
0xff
;
dev
_dbg
(
&
dev
->
dev
,
" encode io %#lx-%#lx
\n
"
,
base
,
base
+
len
-
1
);
pnp
_dbg
(
&
dev
->
dev
,
" encode io %#lx-%#lx
\n
"
,
base
,
base
+
len
-
1
);
}
static
void
pnpbios_encode_fixed_port
(
struct
pnp_dev
*
dev
,
unsigned
char
*
p
,
...
...
@@ -651,7 +651,7 @@ static void pnpbios_encode_fixed_port(struct pnp_dev *dev, unsigned char *p,
p
[
2
]
=
(
base
>>
8
)
&
0xff
;
p
[
3
]
=
len
&
0xff
;
dev
_dbg
(
&
dev
->
dev
,
" encode fixed_io %#lx-%#lx
\n
"
,
base
,
pnp
_dbg
(
&
dev
->
dev
,
" encode fixed_io %#lx-%#lx
\n
"
,
base
,
base
+
len
-
1
);
}
...
...
drivers/pnp/quirks.c
View file @
4dff4e7f
...
...
@@ -337,10 +337,8 @@ void pnp_fixup_device(struct pnp_dev *dev)
for
(
f
=
pnp_fixups
;
*
f
->
id
;
f
++
)
{
if
(
!
compare_pnp_id
(
dev
->
id
,
f
->
id
))
continue
;
#ifdef DEBUG
dev_dbg
(
&
dev
->
dev
,
"%s: calling "
,
f
->
id
);
print_fn_descriptor_symbol
(
"%s
\n
"
,
f
->
quirk_function
);
#endif
pnp_dbg
(
&
dev
->
dev
,
"%s: calling %pF
\n
"
,
f
->
id
,
f
->
quirk_function
);
f
->
quirk_function
(
dev
);
}
}
drivers/pnp/resource.c
View file @
4dff4e7f
...
...
@@ -294,7 +294,7 @@ static int pci_dev_uses_irq(struct pnp_dev *pnp, struct pci_dev *pci,
u8
progif
;
if
(
pci
->
irq
==
irq
)
{
dev_dbg
(
&
pnp
->
dev
,
"
device %s using irq %d
\n
"
,
pnp_dbg
(
&
pnp
->
dev
,
"
device %s using irq %d
\n
"
,
pci_name
(
pci
),
irq
);
return
1
;
}
...
...
@@ -316,7 +316,7 @@ static int pci_dev_uses_irq(struct pnp_dev *pnp, struct pci_dev *pci,
if
((
progif
&
0x5
)
!=
0x5
)
if
(
pci_get_legacy_ide_irq
(
pci
,
0
)
==
irq
||
pci_get_legacy_ide_irq
(
pci
,
1
)
==
irq
)
{
dev_dbg
(
&
pnp
->
dev
,
"
legacy IDE device %s "
pnp_dbg
(
&
pnp
->
dev
,
"
legacy IDE device %s "
"using irq %d
\n
"
,
pci_name
(
pci
),
irq
);
return
1
;
}
...
...
@@ -517,7 +517,7 @@ struct pnp_resource *pnp_add_irq_resource(struct pnp_dev *dev, int irq,
res
->
start
=
irq
;
res
->
end
=
irq
;
dev
_dbg
(
&
dev
->
dev
,
" add irq %d flags %#x
\n
"
,
irq
,
flags
);
pnp
_dbg
(
&
dev
->
dev
,
" add irq %d flags %#x
\n
"
,
irq
,
flags
);
return
pnp_res
;
}
...
...
@@ -538,7 +538,7 @@ struct pnp_resource *pnp_add_dma_resource(struct pnp_dev *dev, int dma,
res
->
start
=
dma
;
res
->
end
=
dma
;
dev
_dbg
(
&
dev
->
dev
,
" add dma %d flags %#x
\n
"
,
dma
,
flags
);
pnp
_dbg
(
&
dev
->
dev
,
" add dma %d flags %#x
\n
"
,
dma
,
flags
);
return
pnp_res
;
}
...
...
@@ -562,7 +562,7 @@ struct pnp_resource *pnp_add_io_resource(struct pnp_dev *dev,
res
->
start
=
start
;
res
->
end
=
end
;
dev
_dbg
(
&
dev
->
dev
,
" add io %#llx-%#llx flags %#x
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" add io %#llx-%#llx flags %#x
\n
"
,
(
unsigned
long
long
)
start
,
(
unsigned
long
long
)
end
,
flags
);
return
pnp_res
;
}
...
...
@@ -587,7 +587,7 @@ struct pnp_resource *pnp_add_mem_resource(struct pnp_dev *dev,
res
->
start
=
start
;
res
->
end
=
end
;
dev
_dbg
(
&
dev
->
dev
,
" add mem %#llx-%#llx flags %#x
\n
"
,
pnp
_dbg
(
&
dev
->
dev
,
" add mem %#llx-%#llx flags %#x
\n
"
,
(
unsigned
long
long
)
start
,
(
unsigned
long
long
)
end
,
flags
);
return
pnp_res
;
}
...
...
drivers/pnp/support.c
View file @
4dff4e7f
...
...
@@ -75,18 +75,17 @@ char *pnp_resource_type_name(struct resource *res)
void
dbg_pnp_show_resources
(
struct
pnp_dev
*
dev
,
char
*
desc
)
{
#ifdef DEBUG
char
buf
[
128
];
int
len
;
struct
pnp_resource
*
pnp_res
;
struct
resource
*
res
;
if
(
list_empty
(
&
dev
->
resources
))
{
dev
_dbg
(
&
dev
->
dev
,
"%s: no current resources
\n
"
,
desc
);
pnp
_dbg
(
&
dev
->
dev
,
"%s: no current resources
\n
"
,
desc
);
return
;
}
dev
_dbg
(
&
dev
->
dev
,
"%s: current resources:
\n
"
,
desc
);
pnp
_dbg
(
&
dev
->
dev
,
"%s: current resources:
\n
"
,
desc
);
list_for_each_entry
(
pnp_res
,
&
dev
->
resources
,
list
)
{
res
=
&
pnp_res
->
res
;
len
=
0
;
...
...
@@ -95,7 +94,7 @@ void dbg_pnp_show_resources(struct pnp_dev *dev, char *desc)
pnp_resource_type_name
(
res
));
if
(
res
->
flags
&
IORESOURCE_DISABLED
)
{
dev
_dbg
(
&
dev
->
dev
,
"%sdisabled
\n
"
,
buf
);
pnp
_dbg
(
&
dev
->
dev
,
"%sdisabled
\n
"
,
buf
);
continue
;
}
...
...
@@ -116,9 +115,8 @@ void dbg_pnp_show_resources(struct pnp_dev *dev, char *desc)
res
->
flags
);
break
;
}
dev
_dbg
(
&
dev
->
dev
,
"%s
\n
"
,
buf
);
pnp
_dbg
(
&
dev
->
dev
,
"%s
\n
"
,
buf
);
}
#endif
}
char
*
pnp_option_priority_name
(
struct
pnp_option
*
option
)
...
...
@@ -136,7 +134,6 @@ char *pnp_option_priority_name(struct pnp_option *option)
void
dbg_pnp_show_option
(
struct
pnp_dev
*
dev
,
struct
pnp_option
*
option
)
{
#ifdef DEBUG
char
buf
[
128
];
int
len
=
0
,
i
;
struct
pnp_port
*
port
;
...
...
@@ -208,6 +205,5 @@ void dbg_pnp_show_option(struct pnp_dev *dev, struct pnp_option *option)
"flags %#x"
,
dma
->
map
,
dma
->
flags
);
break
;
}
dev_dbg
(
&
dev
->
dev
,
"%s
\n
"
,
buf
);
#endif
pnp_dbg
(
&
dev
->
dev
,
"%s
\n
"
,
buf
);
}
include/linux/pnp.h
View file @
4dff4e7f
...
...
@@ -483,14 +483,4 @@ static inline void pnp_unregister_driver(struct pnp_driver *drv) { }
#endif
/* CONFIG_PNP */
#define pnp_err(format, arg...) printk(KERN_ERR "pnp: " format "\n" , ## arg)
#define pnp_info(format, arg...) printk(KERN_INFO "pnp: " format "\n" , ## arg)
#define pnp_warn(format, arg...) printk(KERN_WARNING "pnp: " format "\n" , ## arg)
#ifdef CONFIG_PNP_DEBUG
#define pnp_dbg(format, arg...) printk(KERN_DEBUG "pnp: " format "\n" , ## arg)
#else
#define pnp_dbg(format, arg...) do {} while (0)
#endif
#endif
/* _LINUX_PNP_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment