Lines Matching refs:n

52 	struct cec_notifier *n;  in cec_notifier_get_conn()  local
55 list_for_each_entry(n, &cec_notifiers, head) { in cec_notifier_get_conn()
56 if (n->hdmi_dev == hdmi_dev && in cec_notifier_get_conn()
58 (n->port_name && !strcmp(n->port_name, port_name)))) { in cec_notifier_get_conn()
59 kref_get(&n->kref); in cec_notifier_get_conn()
61 return n; in cec_notifier_get_conn()
64 n = kzalloc(sizeof(*n), GFP_KERNEL); in cec_notifier_get_conn()
65 if (!n) in cec_notifier_get_conn()
67 n->hdmi_dev = hdmi_dev; in cec_notifier_get_conn()
69 n->port_name = kstrdup(port_name, GFP_KERNEL); in cec_notifier_get_conn()
70 if (!n->port_name) { in cec_notifier_get_conn()
71 kfree(n); in cec_notifier_get_conn()
72 n = NULL; in cec_notifier_get_conn()
76 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_get_conn()
78 mutex_init(&n->lock); in cec_notifier_get_conn()
79 kref_init(&n->kref); in cec_notifier_get_conn()
80 list_add_tail(&n->head, &cec_notifiers); in cec_notifier_get_conn()
83 return n; in cec_notifier_get_conn()
88 struct cec_notifier *n = in cec_notifier_release() local
91 list_del(&n->head); in cec_notifier_release()
92 kfree(n->port_name); in cec_notifier_release()
93 kfree(n); in cec_notifier_release()
96 static void cec_notifier_put(struct cec_notifier *n) in cec_notifier_put() argument
99 kref_put(&n->kref, cec_notifier_release); in cec_notifier_put()
107 struct cec_notifier *n = cec_notifier_get_conn(hdmi_dev, port_name); in cec_notifier_conn_register() local
109 if (!n) in cec_notifier_conn_register()
110 return n; in cec_notifier_conn_register()
112 mutex_lock(&n->lock); in cec_notifier_conn_register()
113 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_conn_register()
115 n->conn_info = *conn_info; in cec_notifier_conn_register()
117 memset(&n->conn_info, 0, sizeof(n->conn_info)); in cec_notifier_conn_register()
118 if (n->cec_adap) { in cec_notifier_conn_register()
119 if (!n->cec_adap->adap_controls_phys_addr) in cec_notifier_conn_register()
120 cec_phys_addr_invalidate(n->cec_adap); in cec_notifier_conn_register()
121 cec_s_conn_info(n->cec_adap, conn_info); in cec_notifier_conn_register()
123 mutex_unlock(&n->lock); in cec_notifier_conn_register()
124 return n; in cec_notifier_conn_register()
128 void cec_notifier_conn_unregister(struct cec_notifier *n) in cec_notifier_conn_unregister() argument
130 if (!n) in cec_notifier_conn_unregister()
133 mutex_lock(&n->lock); in cec_notifier_conn_unregister()
134 memset(&n->conn_info, 0, sizeof(n->conn_info)); in cec_notifier_conn_unregister()
135 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_conn_unregister()
136 if (n->cec_adap) { in cec_notifier_conn_unregister()
137 if (!n->cec_adap->adap_controls_phys_addr) in cec_notifier_conn_unregister()
138 cec_phys_addr_invalidate(n->cec_adap); in cec_notifier_conn_unregister()
139 cec_s_conn_info(n->cec_adap, NULL); in cec_notifier_conn_unregister()
141 mutex_unlock(&n->lock); in cec_notifier_conn_unregister()
142 cec_notifier_put(n); in cec_notifier_conn_unregister()
150 struct cec_notifier *n; in cec_notifier_cec_adap_register() local
155 n = cec_notifier_get_conn(hdmi_dev, port_name); in cec_notifier_cec_adap_register()
156 if (!n) in cec_notifier_cec_adap_register()
157 return n; in cec_notifier_cec_adap_register()
159 mutex_lock(&n->lock); in cec_notifier_cec_adap_register()
160 n->cec_adap = adap; in cec_notifier_cec_adap_register()
161 adap->conn_info = n->conn_info; in cec_notifier_cec_adap_register()
162 adap->notifier = n; in cec_notifier_cec_adap_register()
164 cec_s_phys_addr(adap, n->phys_addr, false); in cec_notifier_cec_adap_register()
165 mutex_unlock(&n->lock); in cec_notifier_cec_adap_register()
166 return n; in cec_notifier_cec_adap_register()
170 void cec_notifier_cec_adap_unregister(struct cec_notifier *n, in cec_notifier_cec_adap_unregister() argument
173 if (!n) in cec_notifier_cec_adap_unregister()
176 mutex_lock(&n->lock); in cec_notifier_cec_adap_unregister()
178 n->cec_adap = NULL; in cec_notifier_cec_adap_unregister()
179 mutex_unlock(&n->lock); in cec_notifier_cec_adap_unregister()
180 cec_notifier_put(n); in cec_notifier_cec_adap_unregister()
184 void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa) in cec_notifier_set_phys_addr() argument
186 if (n == NULL) in cec_notifier_set_phys_addr()
189 mutex_lock(&n->lock); in cec_notifier_set_phys_addr()
190 n->phys_addr = pa; in cec_notifier_set_phys_addr()
191 if (n->cec_adap && !n->cec_adap->adap_controls_phys_addr) in cec_notifier_set_phys_addr()
192 cec_s_phys_addr(n->cec_adap, n->phys_addr, false); in cec_notifier_set_phys_addr()
193 mutex_unlock(&n->lock); in cec_notifier_set_phys_addr()
197 void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, in cec_notifier_set_phys_addr_from_edid() argument
202 if (n == NULL) in cec_notifier_set_phys_addr_from_edid()
208 cec_notifier_set_phys_addr(n, pa); in cec_notifier_set_phys_addr_from_edid()