6 Commits
vic ... ksu

Author SHA1 Message Date
luffitys
a63f456044 drivers: power: supply: ti: Force PD charging if compatible
Xiaomi only supports PD if the charger is deemed official.
Bypass this to unlock PD with unofficial chargers.
Safety measures are not bypassed, as seen in
pd_get_bms_digest_verified() and usbpd_pm_sm().

Change-Id: Icc99a39ae00ee466f223807621bf9601f44c75ba
2025-08-22 20:54:21 +02:00
Rocky7842
0222d10465 input: touchscreen: fts_spi: Always report fp_state
* fod_status is used to enable reporting of fingerprint event when finger
  is detected, while fp_state is used one step earlier to wake the device.

Change-Id: Ibf9736f305368672751426c107d6198694718092
2025-08-22 20:54:21 +02:00
UP5468-GE-ES44AC
9b1bd6fa6a input: touchscreen: fts_spi: Report fp_state to sysfs
Change-Id: If5a7ab3adfdbbf44ea9940450fa388c4d03fa2ad
2025-08-22 20:54:21 +02:00
Ivan Vecera
423451dde7 drivers: input: touchscreen: Extend common touchpanel interface by fp_state
* Add fp_state attribute to common touch panel interface
  that will be used by touchscreen drivers to notify
  userspace when finger is in FOD area. This sysfs knob
  is used to implement UDFPS sensor sub-HAL

Signed-off-by: Ivan Vecera <ivan@cera.cz>
Change-Id: Ic5fb0cf389779854a1c3b13833bcc1137e67c817
2025-08-22 20:54:21 +02:00
919a2a99ff KernelSU-Next: backport path_umount 2025-08-22 20:54:15 +02:00
b88cc47233 sm8250: Add KernelSU-Next Support 2025-08-22 20:04:58 +02:00
12 changed files with 80 additions and 5 deletions

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "KernelSU-Next"]
path = KernelSU-Next
url = https://github.com/KernelSU-Next/KernelSU-Next

1
KernelSU-Next Submodule

Submodule KernelSU-Next added at 2241696498

View File

@@ -234,4 +234,5 @@ source "drivers/sensors/Kconfig"
source "drivers/gpu/msm/Kconfig"
source "drivers/energy_model/Kconfig"
source "drivers/kernelsu/Kconfig"
endmenu

View File

@@ -193,3 +193,5 @@ obj-$(CONFIG_UNISYS_VISORBUS) += visorbus/
obj-$(CONFIG_SIOX) += siox/
obj-$(CONFIG_GNSS) += gnss/
obj-$(CONFIG_SENSORS_SSC) += sensors/
obj-$(CONFIG_KSU) += kernelsu/

View File

@@ -533,6 +533,22 @@ static struct tp_common_ops double_tap_ops = {
.show = double_tap_show,
.store = double_tap_store,
};
#ifdef CONFIG_TOUCHSCREEN_FOD
static ssize_t fp_state_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
{
if (!fts_info)
return -EINVAL;
return sprintf(buf, "%d,%d,%d\n", fts_info->fod_pressed_x, fts_info->fod_pressed_y,
fts_info->fod_pressed);
}
static struct tp_common_ops fp_state_ops = {
.show = fp_state_show,
};
#endif
#endif
#ifdef GRIP_MODE
@@ -4303,6 +4319,10 @@ static void fts_gesture_event_handler(struct fts_ts_info *info,
needCoords = 1;
#ifdef CONFIG_TOUCHSCREEN_FOD
if (event[2] == GEST_ID_LONG_PRESS) {
info->fod_pressed = true;
info->fod_pressed_x = x;
info->fod_pressed_y = y;
tp_common_notify_fp_state();
if (!info->fod_down &&
(info->fod_status == 1 || info->fod_status == 2)) {
MI_TOUCH_LOGI(1, "%s %s: FOD Down\n", tag,
@@ -4327,7 +4347,6 @@ static void fts_gesture_event_handler(struct fts_ts_info *info,
if ((info->sensor_sleep &&
!info->sleep_finger) ||
!info->sensor_sleep) {
info->fod_pressed = true;
input_report_key(info->input_dev,
BTN_INFO, 1);
input_sync(info->input_dev);
@@ -4422,6 +4441,9 @@ static void fts_gesture_event_handler(struct fts_ts_info *info,
info->sleep_finger = 0;
info->fod_overlap = 0;
info->fod_pressed = false;
info->fod_pressed_x = 0;
info->fod_pressed_y = 0;
tp_common_notify_fp_state();
goto gesture_done;
}
#endif
@@ -8241,6 +8263,7 @@ static int fts_probe(struct spi_device *client)
tp_common_set_double_tap_ops(&double_tap_ops);
#ifdef CONFIG_TOUCHSCREEN_FOD
tp_common_set_fod_status_ops(&fod_status_ops);
tp_common_set_fp_state_ops(&fp_state_ops);
#endif
#endif

View File

@@ -387,6 +387,8 @@ struct fts_ts_info {
unsigned long fod_id;
unsigned long fod_x;
unsigned long fod_y;
unsigned long fod_pressed_x;
unsigned long fod_pressed_y;
struct mutex fod_mutex;
struct mutex cmd_update_mutex;
bool fod_coordinate_update;

View File

@@ -13,10 +13,18 @@ struct kobject *touchpanel_kobj;
return sysfs_create_file(touchpanel_kobj, &kattr.attr); \
}
#define TS_ENABLE_NOTIFY(type) \
void tp_common_notify_##type(void) \
{ \
sysfs_notify(touchpanel_kobj, NULL, __stringify(type)); \
}
TS_ENABLE_FOPS(capacitive_keys)
TS_ENABLE_FOPS(double_tap)
TS_ENABLE_FOPS(fod_status)
TS_ENABLE_FOPS(fp_state)
TS_ENABLE_FOPS(reversed_keys)
TS_ENABLE_NOTIFY(fp_state)
static int __init tp_common_init(void)
{

1
drivers/kernelsu Symbolic link
View File

@@ -0,0 +1 @@
../KernelSU-Next/kernel

View File

@@ -387,10 +387,7 @@ static bool pd_get_bms_digest_verified(struct usbpd_pm *pdpm)
pr_err("pval.intval: %d\n", pval.intval);
if (pval.intval == 1)
return true;
else
return false;
return true;
}
/* get bq27z561 chip ok*/

View File

@@ -77,6 +77,7 @@ extern int finish_automount(struct vfsmount *, struct path *);
extern int sb_prepare_remount_readonly(struct super_block *);
extern void __init mnt_init(void);
int path_umount(struct path *path, int flags);
extern int __mnt_want_write_file(struct file *);
extern void __mnt_drop_write_file(struct file *);

View File

@@ -1645,6 +1645,40 @@ static inline bool may_mandlock(void)
}
#endif
static int can_umount(const struct path *path, int flags)
{
struct mount *mnt = real_mount(path->mnt);
if (flags & ~(MNT_FORCE | MNT_DETACH | MNT_EXPIRE | UMOUNT_NOFOLLOW))
return -EINVAL;
if (!may_mount())
return -EPERM;
if (path->dentry != path->mnt->mnt_root)
return -EINVAL;
if (!check_mnt(mnt))
return -EINVAL;
if (mnt->mnt.mnt_flags & MNT_LOCKED) /* Check optimistically */
return -EINVAL;
if (flags & MNT_FORCE && !capable(CAP_SYS_ADMIN))
return -EPERM;
return 0;
}
int path_umount(struct path *path, int flags)
{
struct mount *mnt = real_mount(path->mnt);
int ret;
ret = can_umount(path, flags);
if (!ret)
ret = do_umount(mnt, flags);
/* we mustn't call path_put() as that would clear mnt_expiry_mark */
dput(path->dentry);
mntput_no_expire(mnt);
return ret;
}
/*
* Now umount can handle mount points as well as block devices.
* This is important for filesystems which use unnamed block devices.

View File

@@ -10,7 +10,9 @@ struct tp_common_ops {
const char *buf, size_t count);
};
void tp_common_notify_fp_state(void);
int tp_common_set_capacitive_keys_ops(struct tp_common_ops *ops);
int tp_common_set_double_tap_ops(struct tp_common_ops *ops);
int tp_common_set_fod_status_ops(struct tp_common_ops *ops);
int tp_common_set_fp_state_ops(struct tp_common_ops *ops);
int tp_common_set_reversed_keys_ops(struct tp_common_ops *ops);