Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
35d03a0d
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
35d03a0d
编写于
8月 04, 2010
作者:
J
Jiri Kosina
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'acrux' into for-linus
Conflicts: drivers/hid/hid-ids.h
上级
9929ffed
7d3d42a7
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
187 addition
and
1 deletion
+187
-1
drivers/hid/Kconfig
drivers/hid/Kconfig
+8
-0
drivers/hid/Makefile
drivers/hid/Makefile
+1
-0
drivers/hid/hid-axff.c
drivers/hid/hid-axff.c
+172
-0
drivers/hid/hid-core.c
drivers/hid/hid-core.c
+3
-0
drivers/hid/hid-ids.h
drivers/hid/hid-ids.h
+3
-1
未找到文件。
drivers/hid/Kconfig
浏览文件 @
35d03a0d
...
...
@@ -68,6 +68,14 @@ config HID_A4TECH
---help---
Support for A4 tech X5 and WOP-35 / Trust 450L mice.
config HID_ACRUX_FF
tristate "ACRUX force feedback support"
depends on USB_HID
select INPUT_FF_MEMLESS
---help---
Say Y here if you want to enable force feedback support for ACRUX
game controllers.
config HID_APPLE
tristate "Apple" if EMBEDDED
depends on (USB_HID || BT_HIDP)
...
...
drivers/hid/Makefile
浏览文件 @
35d03a0d
...
...
@@ -24,6 +24,7 @@ endif
obj-$(CONFIG_HID_3M_PCT)
+=
hid-3m-pct.o
obj-$(CONFIG_HID_A4TECH)
+=
hid-a4tech.o
obj-$(CONFIG_HID_ACRUX_FF)
+=
hid-axff.o
obj-$(CONFIG_HID_APPLE)
+=
hid-apple.o
obj-$(CONFIG_HID_BELKIN)
+=
hid-belkin.o
obj-$(CONFIG_HID_CANDO)
+=
hid-cando.o
...
...
drivers/hid/hid-axff.c
0 → 100644
浏览文件 @
35d03a0d
/*
* Force feedback support for ACRUX game controllers
*
* From what I have gathered, these devices are mass produced in China
* by several vendors. They often share the same design as the original
* Xbox 360 controller.
*
* 1a34:0802 "ACRUX USB GAMEPAD 8116"
* - tested with a EXEQ EQ-PCU-02090 game controller.
*
* Copyright (c) 2010 Sergei Kolzun <x0r@dv-life.ru>
*/
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/input.h>
#include <linux/slab.h>
#include <linux/usb.h>
#include <linux/hid.h>
#include "hid-ids.h"
#include "usbhid/usbhid.h"
struct
axff_device
{
struct
hid_report
*
report
;
};
static
int
axff_play
(
struct
input_dev
*
dev
,
void
*
data
,
struct
ff_effect
*
effect
)
{
struct
hid_device
*
hid
=
input_get_drvdata
(
dev
);
struct
axff_device
*
axff
=
data
;
int
left
,
right
;
left
=
effect
->
u
.
rumble
.
strong_magnitude
;
right
=
effect
->
u
.
rumble
.
weak_magnitude
;
dbg_hid
(
"called with 0x%04x 0x%04x"
,
left
,
right
);
left
=
left
*
0xff
/
0xffff
;
right
=
right
*
0xff
/
0xffff
;
axff
->
report
->
field
[
0
]
->
value
[
0
]
=
left
;
axff
->
report
->
field
[
1
]
->
value
[
0
]
=
right
;
axff
->
report
->
field
[
2
]
->
value
[
0
]
=
left
;
axff
->
report
->
field
[
3
]
->
value
[
0
]
=
right
;
dbg_hid
(
"running with 0x%02x 0x%02x"
,
left
,
right
);
usbhid_submit_report
(
hid
,
axff
->
report
,
USB_DIR_OUT
);
return
0
;
}
static
int
axff_init
(
struct
hid_device
*
hid
)
{
struct
axff_device
*
axff
;
struct
hid_report
*
report
;
struct
hid_input
*
hidinput
=
list_first_entry
(
&
hid
->
inputs
,
struct
hid_input
,
list
);
struct
list_head
*
report_list
=&
hid
->
report_enum
[
HID_OUTPUT_REPORT
].
report_list
;
struct
input_dev
*
dev
=
hidinput
->
input
;
int
error
;
if
(
list_empty
(
report_list
))
{
dev_err
(
&
hid
->
dev
,
"no output reports found
\n
"
);
return
-
ENODEV
;
}
report
=
list_first_entry
(
report_list
,
struct
hid_report
,
list
);
if
(
report
->
maxfield
<
4
)
{
dev_err
(
&
hid
->
dev
,
"no fields in the report: %d
\n
"
,
report
->
maxfield
);
return
-
ENODEV
;
}
axff
=
kzalloc
(
sizeof
(
struct
axff_device
),
GFP_KERNEL
);
if
(
!
axff
)
return
-
ENOMEM
;
set_bit
(
FF_RUMBLE
,
dev
->
ffbit
);
error
=
input_ff_create_memless
(
dev
,
axff
,
axff_play
);
if
(
error
)
goto
err_free_mem
;
axff
->
report
=
report
;
axff
->
report
->
field
[
0
]
->
value
[
0
]
=
0x00
;
axff
->
report
->
field
[
1
]
->
value
[
0
]
=
0x00
;
axff
->
report
->
field
[
2
]
->
value
[
0
]
=
0x00
;
axff
->
report
->
field
[
3
]
->
value
[
0
]
=
0x00
;
usbhid_submit_report
(
hid
,
axff
->
report
,
USB_DIR_OUT
);
dev_info
(
&
hid
->
dev
,
"Force Feedback for ACRUX game controllers by Sergei Kolzun<x0r@dv-life.ru>
\n
"
);
return
0
;
err_free_mem:
kfree
(
axff
);
return
error
;
}
static
int
ax_probe
(
struct
hid_device
*
hdev
,
const
struct
hid_device_id
*
id
)
{
int
error
;
dev_dbg
(
&
hdev
->
dev
,
"ACRUX HID hardware probe..."
);
error
=
hid_parse
(
hdev
);
if
(
error
)
{
dev_err
(
&
hdev
->
dev
,
"parse failed
\n
"
);
return
error
;
}
error
=
hid_hw_start
(
hdev
,
HID_CONNECT_DEFAULT
&
~
HID_CONNECT_FF
);
if
(
error
)
{
dev_err
(
&
hdev
->
dev
,
"hw start failed
\n
"
);
return
error
;
}
error
=
axff_init
(
hdev
);
if
(
error
)
{
/*
* Do not fail device initialization completely as device
* may still be partially operable, just warn.
*/
dev_warn
(
&
hdev
->
dev
,
"Failed to enable force feedback support, error: %d
\n
"
,
error
);
}
return
0
;
}
static
const
struct
hid_device_id
ax_devices
[]
=
{
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ACRUX
,
0x0802
),
},
{
}
};
MODULE_DEVICE_TABLE
(
hid
,
ax_devices
);
static
struct
hid_driver
ax_driver
=
{
.
name
=
"acrux"
,
.
id_table
=
ax_devices
,
.
probe
=
ax_probe
,
};
static
int
__init
ax_init
(
void
)
{
return
hid_register_driver
(
&
ax_driver
);
}
static
void
__exit
ax_exit
(
void
)
{
hid_unregister_driver
(
&
ax_driver
);
}
module_init
(
ax_init
);
module_exit
(
ax_exit
);
MODULE_AUTHOR
(
"Sergei Kolzun"
);
MODULE_DESCRIPTION
(
"Force feedback support for ACRUX game controllers"
);
MODULE_LICENSE
(
"GPL"
);
drivers/hid/hid-core.c
浏览文件 @
35d03a0d
...
...
@@ -1239,6 +1239,9 @@ static const struct hid_device_id hid_blacklist[] = {
{
HID_USB_DEVICE
(
USB_VENDOR_ID_3M
,
USB_DEVICE_ID_3M2256
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_A4TECH
,
USB_DEVICE_ID_A4TECH_WCP32PU
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_A4TECH
,
USB_DEVICE_ID_A4TECH_X5_005D
)
},
#if defined(CONFIG_HID_ACRUX_FF) || defined(CONFIG_HID_ACRUX_FF_MODULE)
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ACRUX
,
0x0802
)
},
#endif
{
HID_USB_DEVICE
(
USB_VENDOR_ID_APPLE
,
USB_DEVICE_ID_APPLE_ATV_IRCONTROL
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_APPLE
,
USB_DEVICE_ID_APPLE_IRCONTROL4
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_APPLE
,
USB_DEVICE_ID_APPLE_MIGHTYMOUSE
)
},
...
...
drivers/hid/hid-ids.h
浏览文件 @
35d03a0d
...
...
@@ -34,7 +34,9 @@
#define USB_DEVICE_ID_ACECAD_FLAIR 0x0004
#define USB_DEVICE_ID_ACECAD_302 0x0008
#define USB_VENDOR_ID_ADS_TECH 0x06e1
#define USB_VENDOR_ID_ACRUX 0x1a34
#define USB_VENDOR_ID_ADS_TECH 0x06e1
#define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155
#define USB_VENDOR_ID_AFATECH 0x15a4
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录