From: fei fei <cyfei1982@gmail.com>
To: roderick.colenbrander@sony.com
Cc: linux-input@vger.kernel.org
Subject: help needed in this part of code regarding FF in hid-sony.c
Date: Mon, 30 Aug 2021 15:10:44 +0800 [thread overview]
Message-ID: <CAGfCfjjZac9Z8X6GiSHesrQUj8_NiTPOrjCuU7P-g522pQ85Cw@mail.gmail.com> (raw)
4th attempt......
Hello to Mr. Roderick or to whom it may concren,
I am fei, a novice self-studied programming enthusiast, I need help
with hid-sony.c, but there is no relevant maintainer found in the
MAINTAINERS list, the closest is you, Mr. Roderick as the maintainer
of hid-playstation.c, so I just try my luck here, hope you don't mind.
The scenario as follow:
I have added a feature to make initial rumble vibrates when devices
are connected, code as follow (sony_play_effect() as reference) :
add delay.h
-----------------------------
#include <linux/delay.h>
-----------------------------
define a global variable "init_rumble"
------------------------------
......#define SONY_FF_SUPPORT (SIXAXIS_CONTROLLER | DUALSHOCK4_CONTROLLER)
bool init_rumble;
#define SONY_BT_DEVICE......
------------------------------
declare "init_rumble = true;" in sony_probe()
actual part
------------------------------
static int sony_init_ff_play(struct input_dev *dev)
{
struct hid_device *hid = input_get_drvdata(dev);
struct sony_sc *sc = hid_get_drvdata(hid);
sc->left = 255;
sc->right = 255;
/*needed for non bt connection or else won't work, reason unknown*/
if (!(sc->quirks & SONY_BT_DEVICE))
sony_schedule_work(sc, SONY_WORKER_STATE);
/*length-ing magnitude above*/
msleep(350);
sc->left = 0;
sc->right = 0;
sony_schedule_work(sc, SONY_WORKER_STATE);
init_rumble = false;
return 0;
}
-------------------------------
and called from sony_init_ff()
--------------------------------
......input_set_capability(input_dev, EV_FF, FF_RUMBLE);
if (init_rumble == true) {
sony_init_ff_play(input_dev);
}
return input_ff_create_memless(input_dev......
--------------------------------
it works flawlessly without any error. Since it's identical to
sony_play_effect(), so i just tried to merge them together into
sony_play_effect() to reduce redundancy as follow:
------------------------------------
static int sony_play_effect(struct input_dev *dev, void *data,
struct ff_effect *effect)
{
struct hid_device *hid = input_get_drvdata(dev);
struct sony_sc *sc = hid_get_drvdata(hid);
if (effect->type != FF_RUMBLE)
return 0;
if (init_rumble == true)
{
sc->left = 255;
sc->right = 255;
if (!(sc->quirks & SONY_BT_DEVICE))
sony_schedule_work(sc, SONY_WORKER_STATE);
msleep(400);
sc->left = 0;
sc->right = 0;
sony_schedule_work(sc, SONY_WORKER_STATE);
init_rumble = false;
return 0;
}
sc->left = effect->u.rumble.strong_magnitude / 256;
sc->right = effect->u.rumble.weak_magnitude / 256;
sony_schedule_work(sc, SONY_WORKER_STATE);
return 0;
}
-----------------------------------------------
called it from sony_init_ff()
----------------------------------------------
......input_set_capability(input_dev, EV_FF, FF_RUMBLE);
if (init_rumble == true) {
sony_play_effect(input_dev, NULL, NULL);
}
return input_ff_create_memless(input_dev......
------------------------------------------------
but end up whole system being freezed up, what could possibly going
wrong here? Thx in advance.
Regards,
fei
next reply other threads:[~2021-08-30 7:11 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-30 7:10 fei fei [this message]
2021-08-30 23:12 ` help needed in this part of code regarding FF in hid-sony.c Roderick Colenbrander
2021-08-31 5:23 ` fei fei
2021-09-01 21:37 ` Roderick Colenbrander
2021-09-02 14:33 ` fei fei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAGfCfjjZac9Z8X6GiSHesrQUj8_NiTPOrjCuU7P-g522pQ85Cw@mail.gmail.com \
--to=cyfei1982@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=roderick.colenbrander@sony.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).