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
1f75e6bd
Commit
1f75e6bd
authored
Dec 21, 2005
by
Dmitry Torokhov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Input: m68kspkr - register with driver core as a platfrom device
Signed-off-by:
Dmitry Torokhov
<
dtor@mail.ru
>
parent
59317747
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
85 additions
and
17 deletions
+85
-17
drivers/input/misc/m68kspkr.c
drivers/input/misc/m68kspkr.c
+85
-17
No files found.
drivers/input/misc/m68kspkr.c
View file @
1f75e6bd
...
...
@@ -17,6 +17,7 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/input.h>
#include <linux/platform_device.h>
#include <asm/machdep.h>
#include <asm/io.h>
...
...
@@ -24,7 +25,7 @@ MODULE_AUTHOR("Richard Zidlicky <rz@linux-m68k.org>");
MODULE_DESCRIPTION
(
"m68k beeper driver"
);
MODULE_LICENSE
(
"GPL"
);
static
struct
input_dev
*
m68kspkr_dev
;
static
struct
platform_device
*
m68kspkr_platform_device
;
static
int
m68kspkr_event
(
struct
input_dev
*
dev
,
unsigned
int
type
,
unsigned
int
code
,
int
value
)
{
...
...
@@ -47,36 +48,103 @@ static int m68kspkr_event(struct input_dev *dev, unsigned int type, unsigned int
return
0
;
}
static
int
__devinit
m68kspkr_probe
(
struct
platform_device
*
dev
)
{
struct
input_dev
*
input_dev
;
int
err
;
input_dev
=
input_allocate_device
();
if
(
!
input_dev
)
return
-
ENOMEM
;
input_dev
->
name
=
"m68k beeper"
;
input_dev
->
phys
=
"m68k/generic"
;
input_dev
->
id
.
bustype
=
BUS_HOST
;
input_dev
->
id
.
vendor
=
0x001f
;
input_dev
->
id
.
product
=
0x0001
;
input_dev
->
id
.
version
=
0x0100
;
input_dev
->
cdev
.
dev
=
&
dev
->
dev
;
input_dev
->
evbit
[
0
]
=
BIT
(
EV_SND
);
input_dev
->
sndbit
[
0
]
=
BIT
(
SND_BELL
)
|
BIT
(
SND_TONE
);
input_dev
->
event
=
m68kspkr_event
;
err
=
input_register_device
(
input_dev
);
if
(
err
)
{
input_free_device
(
input_dev
);
return
err
;
}
platform_set_drvdata
(
dev
,
input_dev
);
return
0
;
}
static
int
__devexit
m68kspkr_remove
(
struct
platform_device
*
dev
)
{
struct
input_dev
*
input_dev
=
platform_get_drvdata
(
dev
);
input_unregister_device
(
input_dev
);
platform_set_drvdata
(
dev
,
NULL
);
/* turn off the speaker */
m68kspkr_event
(
NULL
,
EV_SND
,
SND_BELL
,
0
);
return
0
;
}
static
void
m68kspkr_shutdown
(
struct
platform_device
*
dev
)
{
/* turn off the speaker */
m68kspkr_event
(
NULL
,
EV_SND
,
SND_BELL
,
0
);
}
static
struct
platform_driver
m68kspkr_platform_driver
=
{
.
driver
=
{
.
name
=
"m68kspkr"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
m68kspkr_probe
,
.
remove
=
__devexit_p
(
m68kspkr_remove
),
.
shutdown
=
m68kspkr_shutdown
,
};
static
int
__init
m68kspkr_init
(
void
)
{
int
err
;
if
(
!
mach_beep
)
{
printk
(
KERN_INFO
"m68kspkr: no lowlevel beep support
\n
"
);
return
-
ENODEV
;
}
m68kspkr_dev
=
input_allocate_device
();
if
(
!
m68kspkr_dev
)
return
-
ENOMEM
;
m68kspkr_dev
->
name
=
"m68k beeper"
;
m68kspkr_dev
->
phys
=
"m68k/generic"
;
m68kspkr_dev
->
id
.
bustype
=
BUS_HOST
;
m68kspkr_dev
->
id
.
vendor
=
0x001f
;
m68kspkr_dev
->
id
.
product
=
0x0001
;
m68kspkr_dev
->
id
.
version
=
0x0100
;
err
=
platform_driver_register
(
&
m68kspkr_platform_driver
);
if
(
err
)
return
err
;
m68kspkr_dev
->
evbit
[
0
]
=
BIT
(
EV_SND
);
m68kspkr_dev
->
sndbit
[
0
]
=
BIT
(
SND_BELL
)
|
BIT
(
SND_TONE
);
m68kspkr_dev
->
event
=
m68kspkr_event
;
m68kspkr_platform_device
=
platform_device_alloc
(
"m68kspkr"
,
-
1
);
if
(
!
m68kspkr_platform_device
)
{
err
=
-
ENOMEM
;
goto
err_unregister_driver
;
}
input_register_device
(
m68kspkr_dev
);
err
=
platform_device_add
(
m68kspkr_platform_device
);
if
(
err
)
goto
err_free_device
;
return
0
;
err_free_device:
platform_device_put
(
m68kspkr_platform_device
);
err_unregister_driver:
platform_driver_unregister
(
&
m68kspkr_platform_driver
);
return
err
;
}
static
void
__exit
m68kspkr_exit
(
void
)
{
input_unregister_device
(
m68kspkr_dev
);
platform_device_unregister
(
m68kspkr_platform_device
);
platform_driver_unregister
(
&
m68kspkr_platform_driver
);
}
module_init
(
m68kspkr_init
);
...
...
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