disp: msm: dp: update altmode client registration

Update the altmode client registration by replacing the notifier
mechanism with a callback.

Change-Id: I550e8c1b58b5ccfd10e46f240ee54a8acdfe9bec
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
This commit is contained in:
Tatenda Chipeperekwa
2020-04-07 13:35:54 -07:00
committed by Gerrit - the friendly Code Review server
szülő 947fa56080
commit fb8034fea2

Fájl megtekintése

@@ -27,10 +27,7 @@ struct dp_altmode_private {
struct dp_hpd_cb *dp_cb; struct dp_hpd_cb *dp_cb;
struct dp_altmode dp_altmode; struct dp_altmode dp_altmode;
struct altmode_client *amclient; struct altmode_client *amclient;
struct altmode_client_data altmode;
const char *parent_name;
bool connected; bool connected;
struct notifier_block nb;
}; };
enum dp_altmode_pin_assignment { enum dp_altmode_pin_assignment {
@@ -201,25 +198,23 @@ ack:
return rc; return rc;
} }
static int dp_altmode_register(struct notifier_block *nb, unsigned long ebt, static void dp_altmode_register(void *priv)
void *pdev)
{ {
int rc; struct dp_altmode_private *altmode = priv;
struct platform_device *altmode_pdev = pdev; struct altmode_client_data cd = {
struct dp_altmode_private *altmode = container_of(nb, .callback = &dp_altmode_notify,
struct dp_altmode_private, nb); };
altmode->amclient = altmode_register_client(&altmode_pdev->dev, cd.name = "displayport";
&altmode->altmode); cd.svid = USB_SID_DISPLAYPORT;
if (IS_ERR_OR_NULL(altmode->amclient)) { cd.priv = altmode;
rc = PTR_ERR(altmode->amclient);
DP_ERR("failed to register dp altmode client: %d\n", rc);
return -EINVAL;
}
DP_DEBUG("success\n"); altmode->amclient = altmode_register_client(altmode->dev, &cd);
if (IS_ERR_OR_NULL(altmode->amclient))
return 0; DP_ERR("failed to register as client: %d\n",
PTR_ERR(altmode->amclient));
else
DP_DEBUG("success\n");
} }
static int dp_altmode_simulate_connect(struct dp_hpd *dp_hpd, bool hpd) static int dp_altmode_simulate_connect(struct dp_hpd *dp_hpd, bool hpd)
@@ -269,10 +264,6 @@ struct dp_hpd *dp_altmode_get(struct device *dev, struct dp_hpd_cb *cb)
int rc = 0; int rc = 0;
struct dp_altmode_private *altmode; struct dp_altmode_private *altmode;
struct dp_altmode *dp_altmode; struct dp_altmode *dp_altmode;
const char *altmode_str = "qcom,altmode-parent";
struct altmode_client_data client_data = {
.callback = &dp_altmode_notify,
};
if (!cb) { if (!cb) {
DP_ERR("invalid cb data\n"); DP_ERR("invalid cb data\n");
@@ -286,28 +277,12 @@ struct dp_hpd *dp_altmode_get(struct device *dev, struct dp_hpd_cb *cb)
altmode->dev = dev; altmode->dev = dev;
altmode->dp_cb = cb; altmode->dp_cb = cb;
client_data.name = "displayport";
client_data.svid = USB_SID_DISPLAYPORT;
client_data.priv = altmode;
altmode->altmode = client_data;
dp_altmode = &altmode->dp_altmode; dp_altmode = &altmode->dp_altmode;
dp_altmode->base.register_hpd = NULL; dp_altmode->base.register_hpd = NULL;
dp_altmode->base.simulate_connect = dp_altmode_simulate_connect; dp_altmode->base.simulate_connect = dp_altmode_simulate_connect;
dp_altmode->base.simulate_attention = dp_altmode_simulate_attention; dp_altmode->base.simulate_attention = dp_altmode_simulate_attention;
rc = of_property_read_string(altmode->dev->of_node, altmode_str, rc = altmode_register_notifier(dev, dp_altmode_register, altmode);
&altmode->parent_name);
if (rc < 0) {
DP_ERR("No altmode parent device specified\n");
goto error;
}
DP_DEBUG("parent_name=%s\n", altmode->parent_name);
altmode->nb.notifier_call = dp_altmode_register;
rc = altmode_register_notifier(altmode->parent_name, &altmode->nb);
if (rc < 0) { if (rc < 0) {
DP_ERR("altmode probe notifier registration failed: %d\n", rc); DP_ERR("altmode probe notifier registration failed: %d\n", rc);
goto error; goto error;