Loading arch/arm64/boot/dts/qcom/sdm670-camera-sensor-cdp.dtsi +1 −1 Original line number Diff line number Diff line Loading @@ -294,7 +294,7 @@ eeprom-src = <&eeprom_rear>; cam_vio-supply = <&camera_vio_ldo>; cam_vana-supply = <&camera_vana_ldo>; cam_vdig-supply = <&camera_rear_ldo>; cam_vdig-supply = <&camera_ldo>; cam_clk-supply = <&titan_top_gdsc>; regulator-names = "cam_vio", "cam_vana", "cam_vdig", "cam_clk"; Loading drivers/char/adsprpc.c +11 −0 Original line number Diff line number Diff line /* * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -3476,6 +3477,7 @@ static ssize_t fastrpc_debugfs_read(struct file *filp, char __user *buffer, len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); spin_lock(&me->hlock); hlist_for_each_entry_safe(gmaps, n, &me->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20d|0x%-18llX|0x%-18X|0x%-20lX\n\n", Loading @@ -3483,18 +3485,21 @@ static ssize_t fastrpc_debugfs_read(struct file *filp, char __user *buffer, (uint32_t)gmaps->size, gmaps->va); } spin_unlock(&me->hlock); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20s|%-20s|%-20s|%-20s\n", "len", "refs", "raddr", "flags"); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); spin_lock(&me->hlock); hlist_for_each_entry_safe(gmaps, n, &me->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "0x%-18X|%-20d|%-20lu|%-20u\n", (uint32_t)gmaps->len, gmaps->refs, gmaps->raddr, gmaps->flags); } spin_unlock(&me->hlock); } else { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "\n%s %13s %d\n", "cid", ":", fl->cid); Loading Loading @@ -3544,12 +3549,14 @@ static ssize_t fastrpc_debugfs_read(struct file *filp, char __user *buffer, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); mutex_lock(&fl->map_mutex); hlist_for_each_entry_safe(map, n, &fl->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "0x%-20lX|0x%-20llX|0x%-20zu\n\n", map->va, map->phys, map->size); } mutex_unlock(&fl->map_mutex); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20s|%-20s|%-20s|%-20s\n", "len", "refs", Loading @@ -3558,23 +3565,27 @@ static ssize_t fastrpc_debugfs_read(struct file *filp, char __user *buffer, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); mutex_lock(&fl->map_mutex); hlist_for_each_entry_safe(map, n, &fl->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20zu|%-20d|0x%-20lX|%-20d\n\n", map->len, map->refs, map->raddr, map->uncached); } mutex_unlock(&fl->map_mutex); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20s|%-20s\n", "secure", "attr"); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); mutex_lock(&fl->map_mutex); hlist_for_each_entry_safe(map, n, &fl->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20d|0x%-20lX\n\n", map->secure, map->attr); } mutex_unlock(&fl->map_mutex); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%s %d\n\n", "KERNEL MEMORY ALLOCATION:", 1); Loading drivers/gpu/drm/drm_dp_helper.c +24 −0 Original line number Diff line number Diff line Loading @@ -411,6 +411,30 @@ int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link) } EXPORT_SYMBOL(drm_dp_link_power_down); int drm_dp_link_power_down_aux_up(struct drm_dp_aux *aux, struct drm_dp_link *link) { u8 value; int err; if (link->revision < 0x11) return 0; err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); if (err < 0) return err; value &= ~DP_SET_POWER_MASK; value |= DP_SET_POWER_D5; err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); if (err < 0) return err; return 0; } EXPORT_SYMBOL(drm_dp_link_power_down_aux_up); /** * drm_dp_link_configure() - configure a DisplayPort link * @aux: DisplayPort AUX channel Loading drivers/gpu/drm/msm/dp/dp_debug.c +99 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ #include "sde_connector.h" #include "dp_display.h" #include <drm/drm_dp_helper.h> #define DEBUG_NAME "drm_dp" struct dp_debug_private { Loading @@ -50,6 +52,13 @@ struct dp_debug_private { struct work_struct sim_work; struct dp_debug dp_debug; struct mutex lock; struct dp_ctrl *ctrl; }; enum dpms_mode_status { DRM_DPMS_ON = 1, DRM_DPMS_OFF = 2, DRM_DPMS_SUSPEND = 5, }; static int dp_debug_get_edid_buf(struct dp_debug_private *debug) Loading Loading @@ -985,6 +994,77 @@ static ssize_t dp_debug_write_attention(struct file *file, return len; } static ssize_t dp_debug_write_dpms(struct file *file, const char __user *user_buff, size_t count, loff_t *ppos) { int dpms_mode; struct dp_debug_private *debug = file->private_data; char buf[SZ_8]; size_t len = 0; enum dpms_mode_status mode_status; len = min_t(size_t, count, SZ_8-1); if (copy_from_user(buf, user_buff, len)) goto end; buf[len] = '\0'; if (kstrtoint(buf, 8, &dpms_mode)) { pr_err("offset kstrtoint error\n"); return 0; } if (!debug->aux || !debug->aux->drm_aux || !debug->panel) return 0; pr_info("dpms_mode = %d", dpms_mode); mode_status = dpms_mode; switch (mode_status) { case DRM_DPMS_ON: drm_dp_link_power_up(debug->aux->drm_aux, &debug->panel->link_info); debug->ctrl->link_maintenance(debug->ctrl); break; case DRM_DPMS_OFF: drm_dp_link_power_down(debug->aux->drm_aux, &debug->panel->link_info); break; case DRM_DPMS_SUSPEND: drm_dp_link_power_down_aux_up(debug->aux->drm_aux, &debug->panel->link_info); break; default: pr_err("Invalid values\n"); } end: return count; } static ssize_t dp_debug_read_dpms(struct file *file, char __user *user_buff, size_t count, loff_t *ppos) { u8 value; int err, len; char buf[SZ_8]; struct dp_debug_private *debug = file->private_data; err = drm_dp_dpcd_readb(debug->aux->drm_aux, DP_SET_POWER, &value); if (err < 0) return err; if (*ppos) return 0; len += snprintf(buf, SZ_8, "%d\n", value); len = min_t(size_t, count, len); if (copy_to_user(user_buff, buf, len)) return -EFAULT; *ppos += len; return len; } static ssize_t dp_debug_write_dump(struct file *file, const char __user *user_buff, size_t count, loff_t *ppos) { Loading Loading @@ -1121,6 +1201,12 @@ static const struct file_operations dump_fops = { .read = dp_debug_read_dump, }; static const struct file_operations dpms_mode_fops = { .open = simple_open, .write = dp_debug_write_dpms, .read = dp_debug_read_dpms, }; static int dp_debug_init(struct dp_debug *dp_debug) { int rc = 0; Loading Loading @@ -1260,6 +1346,16 @@ static int dp_debug_init(struct dp_debug *dp_debug) goto error_remove_dir; } file = debugfs_create_file("dpms_mode", 0644, dir, debug, &dpms_mode_fops); if (IS_ERR_OR_NULL(file)) { rc = PTR_ERR(file); pr_err("[%s] debugfs dpms failed, rc=%d\n", DEBUG_NAME, rc); goto error_remove_dir; } return 0; error_remove_dir: Loading @@ -1281,13 +1377,13 @@ static void dp_debug_sim_work(struct work_struct *work) struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel, struct dp_usbpd *usbpd, struct dp_link *link, struct dp_aux *aux, struct drm_connector **connector, struct dp_catalog *catalog) struct dp_catalog *catalog, struct dp_ctrl *ctrl) { int rc = 0; struct dp_debug_private *debug; struct dp_debug *dp_debug; if (!dev || !panel || !usbpd || !link || !catalog) { if (!dev || !panel || !usbpd || !link || !catalog || !ctrl) { pr_err("invalid input\n"); rc = -EINVAL; goto error; Loading @@ -1309,6 +1405,7 @@ struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel, debug->dev = dev; debug->connector = connector; debug->catalog = catalog; debug->ctrl = ctrl; dp_debug = &debug->dp_debug; dp_debug->vdisplay = 0; Loading drivers/gpu/drm/msm/dp/dp_debug.h +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include "dp_link.h" #include "dp_usbpd.h" #include "dp_aux.h" #include "dp_ctrl.h" /** * struct dp_debug Loading Loading @@ -56,7 +57,7 @@ struct dp_debug { struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel, struct dp_usbpd *usbpd, struct dp_link *link, struct dp_aux *aux, struct drm_connector **connector, struct dp_catalog *catalog); struct dp_catalog *catalog, struct dp_ctrl *ctrl); /** * dp_debug_put() * Loading Loading
arch/arm64/boot/dts/qcom/sdm670-camera-sensor-cdp.dtsi +1 −1 Original line number Diff line number Diff line Loading @@ -294,7 +294,7 @@ eeprom-src = <&eeprom_rear>; cam_vio-supply = <&camera_vio_ldo>; cam_vana-supply = <&camera_vana_ldo>; cam_vdig-supply = <&camera_rear_ldo>; cam_vdig-supply = <&camera_ldo>; cam_clk-supply = <&titan_top_gdsc>; regulator-names = "cam_vio", "cam_vana", "cam_vdig", "cam_clk"; Loading
drivers/char/adsprpc.c +11 −0 Original line number Diff line number Diff line /* * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -3476,6 +3477,7 @@ static ssize_t fastrpc_debugfs_read(struct file *filp, char __user *buffer, len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); spin_lock(&me->hlock); hlist_for_each_entry_safe(gmaps, n, &me->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20d|0x%-18llX|0x%-18X|0x%-20lX\n\n", Loading @@ -3483,18 +3485,21 @@ static ssize_t fastrpc_debugfs_read(struct file *filp, char __user *buffer, (uint32_t)gmaps->size, gmaps->va); } spin_unlock(&me->hlock); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20s|%-20s|%-20s|%-20s\n", "len", "refs", "raddr", "flags"); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); spin_lock(&me->hlock); hlist_for_each_entry_safe(gmaps, n, &me->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "0x%-18X|%-20d|%-20lu|%-20u\n", (uint32_t)gmaps->len, gmaps->refs, gmaps->raddr, gmaps->flags); } spin_unlock(&me->hlock); } else { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "\n%s %13s %d\n", "cid", ":", fl->cid); Loading Loading @@ -3544,12 +3549,14 @@ static ssize_t fastrpc_debugfs_read(struct file *filp, char __user *buffer, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); mutex_lock(&fl->map_mutex); hlist_for_each_entry_safe(map, n, &fl->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "0x%-20lX|0x%-20llX|0x%-20zu\n\n", map->va, map->phys, map->size); } mutex_unlock(&fl->map_mutex); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20s|%-20s|%-20s|%-20s\n", "len", "refs", Loading @@ -3558,23 +3565,27 @@ static ssize_t fastrpc_debugfs_read(struct file *filp, char __user *buffer, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); mutex_lock(&fl->map_mutex); hlist_for_each_entry_safe(map, n, &fl->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20zu|%-20d|0x%-20lX|%-20d\n\n", map->len, map->refs, map->raddr, map->uncached); } mutex_unlock(&fl->map_mutex); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20s|%-20s\n", "secure", "attr"); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%s%s%s%s%s\n", single_line, single_line, single_line, single_line, single_line); mutex_lock(&fl->map_mutex); hlist_for_each_entry_safe(map, n, &fl->maps, hn) { len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%-20d|0x%-20lX\n\n", map->secure, map->attr); } mutex_unlock(&fl->map_mutex); len += scnprintf(fileinfo + len, DEBUGFS_SIZE - len, "%s %d\n\n", "KERNEL MEMORY ALLOCATION:", 1); Loading
drivers/gpu/drm/drm_dp_helper.c +24 −0 Original line number Diff line number Diff line Loading @@ -411,6 +411,30 @@ int drm_dp_link_power_down(struct drm_dp_aux *aux, struct drm_dp_link *link) } EXPORT_SYMBOL(drm_dp_link_power_down); int drm_dp_link_power_down_aux_up(struct drm_dp_aux *aux, struct drm_dp_link *link) { u8 value; int err; if (link->revision < 0x11) return 0; err = drm_dp_dpcd_readb(aux, DP_SET_POWER, &value); if (err < 0) return err; value &= ~DP_SET_POWER_MASK; value |= DP_SET_POWER_D5; err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); if (err < 0) return err; return 0; } EXPORT_SYMBOL(drm_dp_link_power_down_aux_up); /** * drm_dp_link_configure() - configure a DisplayPort link * @aux: DisplayPort AUX channel Loading
drivers/gpu/drm/msm/dp/dp_debug.c +99 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ #include "sde_connector.h" #include "dp_display.h" #include <drm/drm_dp_helper.h> #define DEBUG_NAME "drm_dp" struct dp_debug_private { Loading @@ -50,6 +52,13 @@ struct dp_debug_private { struct work_struct sim_work; struct dp_debug dp_debug; struct mutex lock; struct dp_ctrl *ctrl; }; enum dpms_mode_status { DRM_DPMS_ON = 1, DRM_DPMS_OFF = 2, DRM_DPMS_SUSPEND = 5, }; static int dp_debug_get_edid_buf(struct dp_debug_private *debug) Loading Loading @@ -985,6 +994,77 @@ static ssize_t dp_debug_write_attention(struct file *file, return len; } static ssize_t dp_debug_write_dpms(struct file *file, const char __user *user_buff, size_t count, loff_t *ppos) { int dpms_mode; struct dp_debug_private *debug = file->private_data; char buf[SZ_8]; size_t len = 0; enum dpms_mode_status mode_status; len = min_t(size_t, count, SZ_8-1); if (copy_from_user(buf, user_buff, len)) goto end; buf[len] = '\0'; if (kstrtoint(buf, 8, &dpms_mode)) { pr_err("offset kstrtoint error\n"); return 0; } if (!debug->aux || !debug->aux->drm_aux || !debug->panel) return 0; pr_info("dpms_mode = %d", dpms_mode); mode_status = dpms_mode; switch (mode_status) { case DRM_DPMS_ON: drm_dp_link_power_up(debug->aux->drm_aux, &debug->panel->link_info); debug->ctrl->link_maintenance(debug->ctrl); break; case DRM_DPMS_OFF: drm_dp_link_power_down(debug->aux->drm_aux, &debug->panel->link_info); break; case DRM_DPMS_SUSPEND: drm_dp_link_power_down_aux_up(debug->aux->drm_aux, &debug->panel->link_info); break; default: pr_err("Invalid values\n"); } end: return count; } static ssize_t dp_debug_read_dpms(struct file *file, char __user *user_buff, size_t count, loff_t *ppos) { u8 value; int err, len; char buf[SZ_8]; struct dp_debug_private *debug = file->private_data; err = drm_dp_dpcd_readb(debug->aux->drm_aux, DP_SET_POWER, &value); if (err < 0) return err; if (*ppos) return 0; len += snprintf(buf, SZ_8, "%d\n", value); len = min_t(size_t, count, len); if (copy_to_user(user_buff, buf, len)) return -EFAULT; *ppos += len; return len; } static ssize_t dp_debug_write_dump(struct file *file, const char __user *user_buff, size_t count, loff_t *ppos) { Loading Loading @@ -1121,6 +1201,12 @@ static const struct file_operations dump_fops = { .read = dp_debug_read_dump, }; static const struct file_operations dpms_mode_fops = { .open = simple_open, .write = dp_debug_write_dpms, .read = dp_debug_read_dpms, }; static int dp_debug_init(struct dp_debug *dp_debug) { int rc = 0; Loading Loading @@ -1260,6 +1346,16 @@ static int dp_debug_init(struct dp_debug *dp_debug) goto error_remove_dir; } file = debugfs_create_file("dpms_mode", 0644, dir, debug, &dpms_mode_fops); if (IS_ERR_OR_NULL(file)) { rc = PTR_ERR(file); pr_err("[%s] debugfs dpms failed, rc=%d\n", DEBUG_NAME, rc); goto error_remove_dir; } return 0; error_remove_dir: Loading @@ -1281,13 +1377,13 @@ static void dp_debug_sim_work(struct work_struct *work) struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel, struct dp_usbpd *usbpd, struct dp_link *link, struct dp_aux *aux, struct drm_connector **connector, struct dp_catalog *catalog) struct dp_catalog *catalog, struct dp_ctrl *ctrl) { int rc = 0; struct dp_debug_private *debug; struct dp_debug *dp_debug; if (!dev || !panel || !usbpd || !link || !catalog) { if (!dev || !panel || !usbpd || !link || !catalog || !ctrl) { pr_err("invalid input\n"); rc = -EINVAL; goto error; Loading @@ -1309,6 +1405,7 @@ struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel, debug->dev = dev; debug->connector = connector; debug->catalog = catalog; debug->ctrl = ctrl; dp_debug = &debug->dp_debug; dp_debug->vdisplay = 0; Loading
drivers/gpu/drm/msm/dp/dp_debug.h +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include "dp_link.h" #include "dp_usbpd.h" #include "dp_aux.h" #include "dp_ctrl.h" /** * struct dp_debug Loading Loading @@ -56,7 +57,7 @@ struct dp_debug { struct dp_debug *dp_debug_get(struct device *dev, struct dp_panel *panel, struct dp_usbpd *usbpd, struct dp_link *link, struct dp_aux *aux, struct drm_connector **connector, struct dp_catalog *catalog); struct dp_catalog *catalog, struct dp_ctrl *ctrl); /** * dp_debug_put() * Loading