Compare commits

...

5 Commits

Author SHA1 Message Date
Simon1511 9001f824d7 sm7125: drm: msm: samsung_lego: reset finger mask state on screen off 1 month ago
Tim Zimmermann 0a8f5fc069 input: Sync switch event codes with upstream linux 1 month ago
Todd Kjos 2e36663481 Revert "Revert "Revert "ANDROID: ALSA: jack: Update supported ja..." 1 month ago
Simon1511 fc5d1262f3 sm7125: input: stm: force enable hover proximity sensor 1 month ago
Davide Garberi fa0f035c02 drm: msm: sde: Fallback to PCC for color invert 1 month ago
  1. 6
      drivers/gpu/drm/msm/samsung_lego/ss_dsi_panel_common.c
  2. 13
      drivers/gpu/drm/msm/sde/sde_color_processing.c
  3. 1
      drivers/gpu/drm/msm/sde/sde_crtc.h
  4. 12
      drivers/gpu/drm/msm/sde/sde_plane.c
  5. 6
      drivers/input/keyboard/certify_hall_ic.c
  6. 5
      drivers/input/touchscreen/stm/fts5cu56a/fts_sec.c
  7. 16
      drivers/input/touchscreen/stm/fts5cu56a/fts_ts.c
  8. 2
      include/linux/mod_devicetable.h
  9. 3
      include/sound/jack.h
  10. 9
      include/uapi/linux/input-event-codes.h
  11. 10
      include/uapi/linux/input.h
  12. 8
      sound/core/jack.c

@ -2997,6 +2997,12 @@ int ss_panel_off_post(struct samsung_display_driver_data *vdd)
LCD_INFO("[DISPLAY_%d] +\n", vdd->ndx); LCD_INFO("[DISPLAY_%d] +\n", vdd->ndx);
if (vdd->finger_mask)
vdd->finger_mask = 0;
if (vdd->br_info.common_br.finger_mask_bl_level)
vdd->br_info.common_br.finger_mask_bl_level = 0;
if (vdd->mdnie.support_trans_dimming) if (vdd->mdnie.support_trans_dimming)
vdd->mdnie.disable_trans_dimming = true; vdd->mdnie.disable_trans_dimming = true;

@ -642,13 +642,22 @@ static void sde_cp_crtc_setfeature(struct sde_cp_node *prop_node,
bool feature_enabled = false; bool feature_enabled = false;
int ret = 0; int ret = 0;
struct sde_ad_hw_cfg ad_cfg; struct sde_ad_hw_cfg ad_cfg;
struct drm_property_blob *blob;
struct drm_msm_pcc *pcc_cfg;
sde_cp_get_hw_payload(prop_node, &hw_cfg, &feature_enabled); sde_cp_get_hw_payload(prop_node, &hw_cfg, &feature_enabled);
hw_cfg.num_of_mixers = sde_crtc->num_mixers; hw_cfg.num_of_mixers = sde_crtc->num_mixers;
hw_cfg.last_feature = 0; hw_cfg.last_feature = 0;
if (prop_node->feature == SDE_CP_CRTC_DSPP_PCC) if (prop_node->feature == SDE_CP_CRTC_DSPP_PCC) {
return; blob = prop_node->blob_ptr;
pcc_cfg = (struct drm_msm_pcc*)blob->data;
if (pcc_cfg->r.c == 0 && pcc_cfg->b.c == 0 && pcc_cfg->g.c == 0) {
hw_cfg.payload = NULL;
hw_cfg.len = 0;
}
}
for (i = 0; i < num_mixers && !ret; i++) { for (i = 0; i < num_mixers && !ret; i++) {
hw_lm = sde_crtc->mixers[i].hw_lm; hw_lm = sde_crtc->mixers[i].hw_lm;

@ -438,6 +438,7 @@ struct sde_crtc_state {
u32 padding_dummy; u32 padding_dummy;
struct sde_crtc_respool rp; struct sde_crtc_respool rp;
bool color_invert_on;
}; };
enum sde_crtc_irq_state { enum sde_crtc_irq_state {

@ -3964,11 +3964,13 @@ struct sde_csc_cfg *sde_plane_get_csc_cfg(struct drm_plane *plane)
struct sde_plane_state *pstate; struct sde_plane_state *pstate;
struct sde_csc_cfg *csc_ptr; struct sde_csc_cfg *csc_ptr;
struct sde_plane *psde; struct sde_plane *psde;
struct drm_crtc *drm_crtc = plane->state->crtc;
struct sde_crtc_state *cstate = to_sde_crtc_state(drm_crtc->state);
psde = to_sde_plane(plane); psde = to_sde_plane(plane);
pstate = to_sde_plane_state(plane->state); pstate = to_sde_plane_state(plane->state);
if (sde_plane_is_fod_layer(&pstate->base)) if (sde_plane_is_fod_layer(&pstate->base) || cstate->color_invert_on)
csc_ptr = NULL; csc_ptr = NULL;
else if (psde->csc_pcc_ptr) else if (psde->csc_pcc_ptr)
csc_ptr = psde->csc_pcc_ptr; csc_ptr = psde->csc_pcc_ptr;
@ -4032,10 +4034,18 @@ static inline void _sde_plane_set_csc_pcc(struct sde_plane *psde,
struct drm_crtc *crtc) struct drm_crtc *crtc)
{ {
const struct drm_msm_pcc *pcc_cfg = sde_cp_crtc_get_pcc_cfg(crtc); const struct drm_msm_pcc *pcc_cfg = sde_cp_crtc_get_pcc_cfg(crtc);
struct sde_crtc_state *cstate = to_sde_crtc_state(crtc->state);
if (pcc_cfg == psde->pcc_cfg) if (pcc_cfg == psde->pcc_cfg)
return; return;
if (pcc_cfg->r.c != 0 || pcc_cfg->b.c != 0 || pcc_cfg->g.c != 0) {
cstate->color_invert_on = true;
return;
}
cstate->color_invert_on = false;
psde->pcc_cfg = pcc_cfg; psde->pcc_cfg = pcc_cfg;
if (pcc_cfg) { if (pcc_cfg) {

@ -76,7 +76,7 @@ static void certify_cover_work(struct work_struct *work)
if (first == second) { if (first == second) {
certify_cover = first; certify_cover = first;
input_report_switch(ddata->input, SW_CERTIFYHALL, certify_cover); input_report_switch(ddata->input, SW_MACHINE_COVER, certify_cover);
input_sync(ddata->input); input_sync(ddata->input);
#if defined(CONFIG_SUPPORT_HALL_ABNORMAL_TEST) #if defined(CONFIG_SUPPORT_HALL_ABNORMAL_TEST)
/* send uevent for hall ic */ /* send uevent for hall ic */
@ -100,7 +100,7 @@ static void certify_cover_work(struct work_struct *work)
certify_cover = first; certify_cover = first;
input_report_switch(ddata->input, input_report_switch(ddata->input,
SW_CERTIFYHALL, certify_cover); SW_MACHINE_COVER, certify_cover);
input_sync(ddata->input); input_sync(ddata->input);
} }
#endif #endif
@ -237,7 +237,7 @@ static int certify_hall_probe(struct platform_device *pdev)
input->dev.parent = &pdev->dev; input->dev.parent = &pdev->dev;
input->evbit[0] |= BIT_MASK(EV_SW); input->evbit[0] |= BIT_MASK(EV_SW);
input_set_capability(input, EV_SW, SW_CERTIFYHALL); input_set_capability(input, EV_SW, SW_MACHINE_COVER);
input->open = certify_hall_open; input->open = certify_hall_open;
input->close = certify_hall_close; input->close = certify_hall_close;

@ -7447,7 +7447,10 @@ static void ear_detect_enable(void *device_data)
snprintf(buff, sizeof(buff), "NG"); snprintf(buff, sizeof(buff), "NG");
sec->cmd_state = SEC_CMD_STATUS_FAIL; sec->cmd_state = SEC_CMD_STATUS_FAIL;
} else { } else {
info->ed_enable = sec->cmd_param[0]; if (info->fts_power_state == FTS_POWER_STATE_LOWPOWER)
info->ed_enable = sec->cmd_param[0];
else
info->ed_enable = sec->cmd_param[0] != 0 ? 3 : 0;
snprintf(buff, sizeof(buff), "OK"); snprintf(buff, sizeof(buff), "OK");
data[0] = FTS_CMD_SET_EAR_DETECT; data[0] = FTS_CMD_SET_EAR_DETECT;

@ -1820,21 +1820,15 @@ static u8 fts_event_handler_type_b(struct fts_ts_info *info)
if (p_event_status->stype == FTS_EVENT_STATUSTYPE_VENDORINFO) { if (p_event_status->stype == FTS_EVENT_STATUSTYPE_VENDORINFO) {
if (info->board->support_ear_detect) { if (info->board->support_ear_detect) {
if (p_event_status->status_id == 0x6A) { if (p_event_status->status_id == 0x6A) {
if (info->fts_power_state == FTS_POWER_STATE_LOWPOWER || info->finger[TouchID].y < 700 && info->finger[TouchID].x > 900 if (info->fts_power_state == FTS_POWER_STATE_LOWPOWER || !info->touch_count) {
&& info->finger[TouchID].x < 3000) { // Report actual range when the area around the sensor is touched,
// Report actual range when either the area around the sensor is touched or if panel is in LPM state // when panel is in LPM state or when the screen isn't touched
p_event_status->status_data_1 = p_event_status->status_data_1 == 5 || !p_event_status->status_data_1; p_event_status->status_data_1 = p_event_status->status_data_1 == 5 || !p_event_status->status_data_1;
info->hover_event = p_event_status->status_data_1; info->hover_event = p_event_status->status_data_1;
input_report_abs(info->input_dev_proximity, ABS_MT_CUSTOM, p_event_status->status_data_1); input_report_abs(info->input_dev_proximity, ABS_MT_CUSTOM, p_event_status->status_data_1);
input_sync(info->input_dev_proximity); input_sync(info->input_dev_proximity);
} else { input_info(true, &info->client->dev, "%s: proximity: %d\n", __func__, p_event_status->status_data_1);
// Properly reset to 1cm
p_event_status->status_data_1 = 1;
info->hover_event = p_event_status->status_data_1;
input_report_abs(info->input_dev_proximity, ABS_MT_CUSTOM, p_event_status->status_data_1);
input_sync(info->input_dev_proximity);
} }
input_info(true, &info->client->dev, "%s: proximity: %d\n", __func__, p_event_status->status_data_1);
} }
} }
} }
@ -4152,6 +4146,8 @@ int fts_set_lowpowermode(struct fts_ts_info *info, u8 mode)
} }
if (mode == TO_LOWPOWER_MODE) { if (mode == TO_LOWPOWER_MODE) {
info->fod_pressed = 0;
if (device_may_wakeup(&info->client->dev)) if (device_may_wakeup(&info->client->dev))
enable_irq_wake(info->irq); enable_irq_wake(info->irq);

@ -293,7 +293,7 @@ struct pcmcia_device_id {
#define INPUT_DEVICE_ID_LED_MAX 0x0f #define INPUT_DEVICE_ID_LED_MAX 0x0f
#define INPUT_DEVICE_ID_SND_MAX 0x07 #define INPUT_DEVICE_ID_SND_MAX 0x07
#define INPUT_DEVICE_ID_FF_MAX 0x7f #define INPUT_DEVICE_ID_FF_MAX 0x7f
#define INPUT_DEVICE_ID_SW_MAX 0x20 #define INPUT_DEVICE_ID_SW_MAX 0x10
#define INPUT_DEVICE_ID_PROP_MAX 0x1f #define INPUT_DEVICE_ID_PROP_MAX 0x1f
#define INPUT_DEVICE_ID_MATCH_BUS 1 #define INPUT_DEVICE_ID_MATCH_BUS 1

@ -105,6 +105,9 @@ enum snd_jack_types {
#endif #endif
/* Keep in sync with definitions above */
#define SND_JACK_SWITCH_TYPES 6
struct snd_jack { struct snd_jack {
struct list_head kctl_list; struct list_head kctl_list;
struct snd_card *card; struct snd_card *card;

@ -824,13 +824,8 @@
#define SW_LINEIN_INSERT 0x0d /* set = inserted */ #define SW_LINEIN_INSERT 0x0d /* set = inserted */
#define SW_MUTE_DEVICE 0x0e /* set = device disabled */ #define SW_MUTE_DEVICE 0x0e /* set = device disabled */
#define SW_PEN_INSERTED 0x0f /* set = pen inserted */ #define SW_PEN_INSERTED 0x0f /* set = pen inserted */
#define SW_HPHL_OVERCURRENT 0x10 /* set = over current on left hph */ #define SW_MACHINE_COVER 0x10 /* set = cover closed */
#define SW_HPHR_OVERCURRENT 0x11 /* set = over current on right hph */ #define SW_MAX 0x10
#define SW_MICROPHONE2_INSERT 0x12 /* set = inserted */
#define SW_UNSUPPORT_INSERT 0x13 /* set = unsupported device inserted */
#define SW_MACHINE_COVER 0x14 /* set = cover closed */
#define SW_GLOVE 0x20 /* set = glove mode */
#define SW_MAX 0x20
#define SW_CNT (SW_MAX+1) #define SW_CNT (SW_MAX+1)
/* /*

@ -329,16 +329,6 @@ struct input_mask {
#define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */ #define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */
/*
* Switch events
*/
#define SW_FLIP 0x15 /* set = flip cover open, close*/
#define SW_CERTIFYHALL 0x1b /* set = certify_hall attach/detach */
#define SW_SLIDINGUPHALL 0x1c /* set = sliding_up_hall attach/detach */
#define SW_SLIDINGDOWNHALL 0x1d /* set = sliding_down_hall attach/detach */
#define SW_DIGITALUPHALL 0x1e /* set = digital_up_hall attach/detach */
#define SW_DIGITALDOWNHALL 0x1f /* set = digital_down_hall attach/detach */
/* /*
* IDs. * IDs.
*/ */

@ -33,17 +33,13 @@ struct snd_jack_kctl {
}; };
#ifdef CONFIG_SND_JACK_INPUT_DEV #ifdef CONFIG_SND_JACK_INPUT_DEV
static int jack_switch_types[] = { static int jack_switch_types[SND_JACK_SWITCH_TYPES] = {
SW_HEADPHONE_INSERT, SW_HEADPHONE_INSERT,
SW_MICROPHONE_INSERT, SW_MICROPHONE_INSERT,
SW_LINEOUT_INSERT, SW_LINEOUT_INSERT,
SW_JACK_PHYSICAL_INSERT, SW_JACK_PHYSICAL_INSERT,
SW_VIDEOOUT_INSERT, SW_VIDEOOUT_INSERT,
SW_LINEIN_INSERT, SW_LINEIN_INSERT,
SW_HPHL_OVERCURRENT,
SW_HPHR_OVERCURRENT,
SW_UNSUPPORT_INSERT,
SW_MICROPHONE2_INSERT,
}; };
#endif /* CONFIG_SND_JACK_INPUT_DEV */ #endif /* CONFIG_SND_JACK_INPUT_DEV */
@ -254,7 +250,7 @@ int snd_jack_new(struct snd_card *card, const char *id, int type,
jack->type = type; jack->type = type;
for (i = 0; i < ARRAY_SIZE(jack_switch_types); i++) for (i = 0; i < SND_JACK_SWITCH_TYPES; i++)
if (type & (1 << i)) if (type & (1 << i))
input_set_capability(jack->input_dev, EV_SW, input_set_capability(jack->input_dev, EV_SW,
jack_switch_types[i]); jack_switch_types[i]);

Loading…
Cancel
Save