From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pekka Paalanen Subject: Re: [PATCH v7 09/11] drm: uevent for connector status change Date: Thu, 4 Jul 2019 14:12:27 +0300 Message-ID: <20190704141227.048bbef5@eldfell.localdomain> References: <20190507162745.25600-1-ramalingam.c@intel.com> <20190507162745.25600-10-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0785312603==" Return-path: In-Reply-To: <20190507162745.25600-10-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C Cc: daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org --===============0785312603== Content-Type: multipart/signed; micalg=pgp-sha256; boundary="Sig_/iCEpovGxtrtcHj9QbJ=dTwz"; protocol="application/pgp-signature" --Sig_/iCEpovGxtrtcHj9QbJ=dTwz Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Tue, 7 May 2019 21:57:43 +0530 Ramalingam C wrote: > DRM API for generating uevent for a status changes of connector's > property. >=20 > This uevent will have following details related to the status change: >=20 > HOTPLUG=3D1, CONNECTOR=3D and PROPERTY=3D >=20 > Need ACK from this uevent from userspace consumer. >=20 > v2: > Minor fixes at KDoc comments [Daniel] > v3: > Check the property is really attached with connector [Daniel] >=20 > Signed-off-by: Ramalingam C > Reviewed-by: Daniel Vetter > --- > drivers/gpu/drm/drm_sysfs.c | 35 +++++++++++++++++++++++++++++++++++ > include/drm/drm_sysfs.h | 5 ++++- > 2 files changed, 39 insertions(+), 1 deletion(-) >=20 > diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c > index 18b1ac442997..63fa951a20db 100644 > --- a/drivers/gpu/drm/drm_sysfs.c > +++ b/drivers/gpu/drm/drm_sysfs.c > @@ -21,6 +21,7 @@ > #include > #include > #include "drm_internal.h" > +#include "drm_crtc_internal.h" > =20 > #define to_drm_minor(d) dev_get_drvdata(d) > #define to_drm_connector(d) dev_get_drvdata(d) > @@ -320,6 +321,9 @@ void drm_sysfs_lease_event(struct drm_device *dev) > * Send a uevent for the DRM device specified by @dev. Currently we only > * set HOTPLUG=3D1 in the uevent environment, but this could be expanded= to > * deal with other types of events. > + * > + * Any new uapi should be using the drm_sysfs_connector_status_event() > + * for uevents on connector status change. > */ > void drm_sysfs_hotplug_event(struct drm_device *dev) > { > @@ -332,6 +336,37 @@ void drm_sysfs_hotplug_event(struct drm_device *dev) > } > EXPORT_SYMBOL(drm_sysfs_hotplug_event); > =20 > +/** > + * drm_sysfs_connector_status_event - generate a DRM uevent for connector > + * property status change > + * @connector: connector on which property status changed > + * @property: connector property whoes status changed. > + * > + * Send a uevent for the DRM device specified by @dev. Currently we > + * set HOTPLUG=3D1 and connector id along with the attached property id > + * related to the status change. > + */ > +void drm_sysfs_connector_status_event(struct drm_connector *connector, > + struct drm_property *property) > +{ > + struct drm_device *dev =3D connector->dev; > + char hotplug_str[] =3D "HOTPLUG=3D1", conn_id[30], prop_id[30]; > + char *envp[4] =3D { hotplug_str, conn_id, prop_id, NULL }; > + > + WARN_ON(!drm_mode_obj_find_prop_id(&connector->base, > + property->base.id)); > + > + snprintf(conn_id, ARRAY_SIZE(conn_id), > + "CONNECTOR=3D%u", connector->base.id); > + snprintf(prop_id, ARRAY_SIZE(prop_id), > + "PROPERTY=3D%u", property->base.id); > + > + DRM_DEBUG("generating connector status event\n"); > + > + kobject_uevent_env(&dev->primary->kdev->kobj, KOBJ_CHANGE, envp); > +} > +EXPORT_SYMBOL(drm_sysfs_connector_status_event); > + > static void drm_sysfs_release(struct device *dev) > { > kfree(dev); > diff --git a/include/drm/drm_sysfs.h b/include/drm/drm_sysfs.h > index 4f311e836cdc..d454ef617b2c 100644 > --- a/include/drm/drm_sysfs.h > +++ b/include/drm/drm_sysfs.h > @@ -4,10 +4,13 @@ > =20 > struct drm_device; > struct device; > +struct drm_connector; > +struct drm_property; > =20 > int drm_class_device_register(struct device *dev); > void drm_class_device_unregister(struct device *dev); > =20 > void drm_sysfs_hotplug_event(struct drm_device *dev); > - > +void drm_sysfs_connector_status_event(struct drm_connector *connector, > + struct drm_property *property); > #endif Hi, this patch is completely missing the UAPI documentation. Weston in https://gitlab.freedesktop.org/wayland/weston/merge_requests/48 does have good looking code to parse this event. Thanks, pq --Sig_/iCEpovGxtrtcHj9QbJ=dTwz Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEJQjwWQChkWOYOIONI1/ltBGqqqcFAl0d3xsACgkQI1/ltBGq qqcOGRAAqGi8Fq0WjMV9B/lSxAggL7TAvXpcq1I35SmuAXu1XZyFRbO6fj+fI0pQ 6pV91Z2qb1beCZm8nS5CV3l9wQXsxuLqMZJTc2Lk6TxLhmQbaM1/i1LHuL5DWzbe 6VDLh7gWie1Osqu2qmxl0glbPJyx5GBbmysoXHoKqQmr1/s5v0sakL00AA/gWwml kEThnPfzcSsmWJeVNIKYqcrluslomuUgz3VLmhAuTSM2rMN1ffj4gEDTEx2VmYQq Dug2px6MWMSrSnSHUuG3+GLVz1hrX8tsURLeyeF0G2tw6JdZgvKH9Gj5OH7AQqrw zStNvCHbbs/hniW3gwIi/2rnrfpZquVhwYkrQP0qA7XbKQ3N1qcszcuZP8hRIn3D Ed5xX+4Q1pS8lkPIHwzzwXAu98IshSk4PXyMmLtm5z4YTbVDnx2OiKrcE0b3B9KH MCooeZmG9eQ2N5e7gIbe7YULTfLlbJb3LOMopmuLZRNILX7xnYq+29rorPu5hse6 oTU6WOSKFHzzTgVdaXRC7F5DgFyN6wmkI2SxPUHHlgQqxKbnmaTTYtjGhdYKcIy+ pQt+OkTEZ8z6Ki3cSRoIeiZ6HpCkbKXjWeduG6MaYo31uQrCzDRSbBnnyU769AJ4 2jY02NAuNEZTi6IjowyBs3tPFgycPWxqqNNsIxvNkvdOTJE2FhM= =j3uw -----END PGP SIGNATURE----- --Sig_/iCEpovGxtrtcHj9QbJ=dTwz-- --===============0785312603== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 --===============0785312603==--