Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
27167e0e
Commit
27167e0e
authored
Aug 27, 2008
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
parport_sunbpp: Convert to pure OF driver.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
8e912b33
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
27 deletions
+20
-27
drivers/parport/parport_sunbpp.c
drivers/parport/parport_sunbpp.c
+20
-27
No files found.
drivers/parport/parport_sunbpp.c
View file @
27167e0e
...
@@ -26,6 +26,8 @@
...
@@ -26,6 +26,8 @@
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/parport.h>
#include <linux/parport.h>
...
@@ -34,7 +36,6 @@
...
@@ -34,7 +36,6 @@
#include <asm/io.h>
#include <asm/io.h>
#include <asm/oplib.h>
/* OpenProm Library */
#include <asm/oplib.h>
/* OpenProm Library */
#include <asm/sbus.h>
#include <asm/dma.h>
/* BPP uses LSI 64854 for DMA */
#include <asm/dma.h>
/* BPP uses LSI 64854 for DMA */
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/sunbpp.h>
#include <asm/sunbpp.h>
...
@@ -285,38 +286,37 @@ static struct parport_operations parport_sunbpp_ops =
...
@@ -285,38 +286,37 @@ static struct parport_operations parport_sunbpp_ops =
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
};
};
static
int
__devinit
init_one_port
(
struct
sbus_dev
*
sdev
)
static
int
__devinit
bpp_probe
(
struct
of_device
*
op
,
const
struct
of_device_id
*
match
)
{
{
struct
parport
*
p
;
/* at least in theory there may be a "we don't dma" case */
struct
parport_operations
*
ops
;
struct
parport_operations
*
ops
;
void
__iomem
*
base
;
int
irq
,
dma
,
err
=
0
,
size
;
struct
bpp_regs
__iomem
*
regs
;
struct
bpp_regs
__iomem
*
regs
;
int
irq
,
dma
,
err
=
0
,
size
;
unsigned
char
value_tcr
;
unsigned
char
value_tcr
;
void
__iomem
*
base
;
struct
parport
*
p
;
irq
=
sdev
->
irqs
[
0
];
irq
=
op
->
irqs
[
0
];
base
=
sbus_ioremap
(
&
sdev
->
resource
[
0
],
0
,
base
=
of_ioremap
(
&
op
->
resource
[
0
],
0
,
sdev
->
reg_addrs
[
0
].
reg_size
,
resource_size
(
&
op
->
resource
[
0
]),
"sunbpp"
);
"sunbpp"
);
if
(
!
base
)
if
(
!
base
)
return
-
ENODEV
;
return
-
ENODEV
;
size
=
sdev
->
reg_addrs
[
0
].
reg_size
;
size
=
resource_size
(
&
op
->
resource
[
0
])
;
dma
=
PARPORT_DMA_NONE
;
dma
=
PARPORT_DMA_NONE
;
ops
=
kmalloc
(
sizeof
(
struct
parport_operations
),
GFP_KERNEL
);
ops
=
kmalloc
(
sizeof
(
struct
parport_operations
),
GFP_KERNEL
);
if
(
!
ops
)
if
(
!
ops
)
goto
out_unmap
;
goto
out_unmap
;
memcpy
(
ops
,
&
parport_sunbpp_ops
,
sizeof
(
struct
parport_operations
));
memcpy
(
ops
,
&
parport_sunbpp_ops
,
sizeof
(
struct
parport_operations
));
dprintk
((
"register_port
\n
"
));
dprintk
((
"register_port
\n
"
));
if
(
!
(
p
=
parport_register_port
((
unsigned
long
)
base
,
irq
,
dma
,
ops
)))
if
(
!
(
p
=
parport_register_port
((
unsigned
long
)
base
,
irq
,
dma
,
ops
)))
goto
out_free_ops
;
goto
out_free_ops
;
p
->
size
=
size
;
p
->
size
=
size
;
p
->
dev
=
&
sdev
->
ofdev
.
dev
;
p
->
dev
=
&
op
->
dev
;
if
((
err
=
request_irq
(
p
->
irq
,
parport_irq_handler
,
if
((
err
=
request_irq
(
p
->
irq
,
parport_irq_handler
,
IRQF_SHARED
,
p
->
name
,
p
))
!=
0
)
{
IRQF_SHARED
,
p
->
name
,
p
))
!=
0
)
{
...
@@ -333,7 +333,7 @@ static int __devinit init_one_port(struct sbus_dev *sdev)
...
@@ -333,7 +333,7 @@ static int __devinit init_one_port(struct sbus_dev *sdev)
printk
(
KERN_INFO
"%s: sunbpp at 0x%lx
\n
"
,
p
->
name
,
p
->
base
);
printk
(
KERN_INFO
"%s: sunbpp at 0x%lx
\n
"
,
p
->
name
,
p
->
base
);
dev_set_drvdata
(
&
sdev
->
ofdev
.
dev
,
p
);
dev_set_drvdata
(
&
op
->
dev
,
p
);
parport_announce_port
(
p
);
parport_announce_port
(
p
);
...
@@ -346,21 +346,14 @@ out_free_ops:
...
@@ -346,21 +346,14 @@ out_free_ops:
kfree
(
ops
);
kfree
(
ops
);
out_unmap:
out_unmap:
sbus_iounmap
(
base
,
size
);
of_iounmap
(
&
op
->
resource
[
0
],
base
,
size
);
return
err
;
return
err
;
}
}
static
int
__devinit
bpp_probe
(
struct
of_device
*
dev
,
const
struct
of_device_id
*
match
)
static
int
__devexit
bpp_remove
(
struct
of_device
*
op
)
{
struct
sbus_dev
*
sdev
=
to_sbus_device
(
&
dev
->
dev
);
return
init_one_port
(
sdev
);
}
static
int
__devexit
bpp_remove
(
struct
of_device
*
dev
)
{
{
struct
parport
*
p
=
dev_get_drvdata
(
&
dev
->
dev
);
struct
parport
*
p
=
dev_get_drvdata
(
&
op
->
dev
);
struct
parport_operations
*
ops
=
p
->
ops
;
struct
parport_operations
*
ops
=
p
->
ops
;
parport_remove_port
(
p
);
parport_remove_port
(
p
);
...
@@ -370,11 +363,11 @@ static int __devexit bpp_remove(struct of_device *dev)
...
@@ -370,11 +363,11 @@ static int __devexit bpp_remove(struct of_device *dev)
free_irq
(
p
->
irq
,
p
);
free_irq
(
p
->
irq
,
p
);
}
}
sbus_iounmap
(
(
void
__iomem
*
)
p
->
base
,
p
->
size
);
of_iounmap
(
&
op
->
resource
[
0
],
(
void
__iomem
*
)
p
->
base
,
p
->
size
);
parport_put_port
(
p
);
parport_put_port
(
p
);
kfree
(
ops
);
kfree
(
ops
);
dev_set_drvdata
(
&
dev
->
dev
,
NULL
);
dev_set_drvdata
(
&
op
->
dev
,
NULL
);
return
0
;
return
0
;
}
}
...
@@ -397,7 +390,7 @@ static struct of_platform_driver bpp_sbus_driver = {
...
@@ -397,7 +390,7 @@ static struct of_platform_driver bpp_sbus_driver = {
static
int
__init
parport_sunbpp_init
(
void
)
static
int
__init
parport_sunbpp_init
(
void
)
{
{
return
of_register_driver
(
&
bpp_sbus_driver
,
&
sbus
_bus_type
);
return
of_register_driver
(
&
bpp_sbus_driver
,
&
of
_bus_type
);
}
}
static
void
__exit
parport_sunbpp_exit
(
void
)
static
void
__exit
parport_sunbpp_exit
(
void
)
...
...
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