6 Commits

Author SHA1 Message Date
luffitys
4b1e292b77 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 22:53:23 +02:00
UtsavBalar1231
19b8f7bb76 disp: msm: Avoid Force allow panel phy power off on umi
- Fixes display flickering on UMI's TCL panel
2025-08-22 22:53:23 +02:00
Rocky7842
b6a3560c73 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 22:53:23 +02:00
UP5468-GE-ES44AC
cc846a3479 input: touchscreen: fts_spi: Report fp_state to sysfs
Change-Id: If5a7ab3adfdbbf44ea9940450fa388c4d03fa2ad
2025-08-22 22:53:23 +02:00
Ivan Vecera
8e45550cb9 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 22:53:23 +02:00
Danny Lin
cad5241b1f arm64: dts: kona: Power off DSI PHY during idle PC
On command mode panels, we can power off the DSI PHY entirely during
idle PC to save more power than ULPS.
2025-08-22 22:53:23 +02:00
7 changed files with 42 additions and 5 deletions

View File

@@ -692,6 +692,7 @@
00 00 0a 0a 00 00 0a 0a
00 00 8a 8a]; 00 00 8a 8a];
qcom,platform-regulator-settings = [1d 1d 1d 1d 1d]; qcom,platform-regulator-settings = [1d 1d 1d 1d 1d];
qcom,panel-allow-phy-poweroff;
qcom,phy-supply-entries { qcom,phy-supply-entries {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@@ -533,6 +533,22 @@ static struct tp_common_ops double_tap_ops = {
.show = double_tap_show, .show = double_tap_show,
.store = double_tap_store, .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 #endif
#ifdef GRIP_MODE #ifdef GRIP_MODE
@@ -4303,6 +4319,10 @@ static void fts_gesture_event_handler(struct fts_ts_info *info,
needCoords = 1; needCoords = 1;
#ifdef CONFIG_TOUCHSCREEN_FOD #ifdef CONFIG_TOUCHSCREEN_FOD
if (event[2] == GEST_ID_LONG_PRESS) { 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 && if (!info->fod_down &&
(info->fod_status == 1 || info->fod_status == 2)) { (info->fod_status == 1 || info->fod_status == 2)) {
MI_TOUCH_LOGI(1, "%s %s: FOD Down\n", tag, 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 && if ((info->sensor_sleep &&
!info->sleep_finger) || !info->sleep_finger) ||
!info->sensor_sleep) { !info->sensor_sleep) {
info->fod_pressed = true;
input_report_key(info->input_dev, input_report_key(info->input_dev,
BTN_INFO, 1); BTN_INFO, 1);
input_sync(info->input_dev); 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->sleep_finger = 0;
info->fod_overlap = 0; info->fod_overlap = 0;
info->fod_pressed = false; info->fod_pressed = false;
info->fod_pressed_x = 0;
info->fod_pressed_y = 0;
tp_common_notify_fp_state();
goto gesture_done; goto gesture_done;
} }
#endif #endif
@@ -8241,6 +8263,7 @@ static int fts_probe(struct spi_device *client)
tp_common_set_double_tap_ops(&double_tap_ops); tp_common_set_double_tap_ops(&double_tap_ops);
#ifdef CONFIG_TOUCHSCREEN_FOD #ifdef CONFIG_TOUCHSCREEN_FOD
tp_common_set_fod_status_ops(&fod_status_ops); tp_common_set_fod_status_ops(&fod_status_ops);
tp_common_set_fp_state_ops(&fp_state_ops);
#endif #endif
#endif #endif

View File

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

View File

@@ -13,10 +13,18 @@ struct kobject *touchpanel_kobj;
return sysfs_create_file(touchpanel_kobj, &kattr.attr); \ 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(capacitive_keys)
TS_ENABLE_FOPS(double_tap) TS_ENABLE_FOPS(double_tap)
TS_ENABLE_FOPS(fod_status) TS_ENABLE_FOPS(fod_status)
TS_ENABLE_FOPS(fp_state)
TS_ENABLE_FOPS(reversed_keys) TS_ENABLE_FOPS(reversed_keys)
TS_ENABLE_NOTIFY(fp_state)
static int __init tp_common_init(void) static int __init tp_common_init(void)
{ {

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); pr_err("pval.intval: %d\n", pval.intval);
if (pval.intval == 1)
return true; return true;
else
return false;
} }
/* get bq27z561 chip ok*/ /* get bq27z561 chip ok*/

View File

@@ -10,7 +10,9 @@ struct tp_common_ops {
const char *buf, size_t count); 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_capacitive_keys_ops(struct tp_common_ops *ops);
int tp_common_set_double_tap_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_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); int tp_common_set_reversed_keys_ops(struct tp_common_ops *ops);

View File

@@ -325,8 +325,12 @@ static int dsi_phy_settings_init(struct platform_device *pdev,
/* Actual timing values are dependent on panel */ /* Actual timing values are dependent on panel */
timing->count_per_lane = phy->ver_info->timing_cfg_count; timing->count_per_lane = phy->ver_info->timing_cfg_count;
#ifndef CONFIG_MACH_XIAOMI_UMI
phy->allow_phy_power_off = of_property_read_bool(pdev->dev.of_node, phy->allow_phy_power_off = of_property_read_bool(pdev->dev.of_node,
"qcom,panel-allow-phy-poweroff"); "qcom,panel-allow-phy-poweroff");
#else
phy->allow_phy_power_off = false;
#endif
of_property_read_u32(pdev->dev.of_node, of_property_read_u32(pdev->dev.of_node,
"qcom,dsi-phy-regulator-min-datarate-bps", "qcom,dsi-phy-regulator-min-datarate-bps",