Lines Matching refs:n
54 struct cec_notifier *n; in cec_notifier_get_conn() local
57 list_for_each_entry(n, &cec_notifiers, head) { in cec_notifier_get_conn()
58 if (n->hdmi_dev == hdmi_dev && in cec_notifier_get_conn()
60 (n->port_name && !strcmp(n->port_name, port_name)))) { in cec_notifier_get_conn()
61 kref_get(&n->kref); in cec_notifier_get_conn()
63 return n; in cec_notifier_get_conn()
66 n = kzalloc(sizeof(*n), GFP_KERNEL); in cec_notifier_get_conn()
67 if (!n) in cec_notifier_get_conn()
69 n->hdmi_dev = hdmi_dev; in cec_notifier_get_conn()
71 n->port_name = kstrdup(port_name, GFP_KERNEL); in cec_notifier_get_conn()
72 if (!n->port_name) { in cec_notifier_get_conn()
73 kfree(n); in cec_notifier_get_conn()
74 n = NULL; in cec_notifier_get_conn()
78 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_get_conn()
80 mutex_init(&n->lock); in cec_notifier_get_conn()
81 kref_init(&n->kref); in cec_notifier_get_conn()
82 list_add_tail(&n->head, &cec_notifiers); in cec_notifier_get_conn()
85 return n; in cec_notifier_get_conn()
90 struct cec_notifier *n = in cec_notifier_release() local
93 list_del(&n->head); in cec_notifier_release()
94 kfree(n->port_name); in cec_notifier_release()
95 kfree(n); in cec_notifier_release()
98 static void cec_notifier_put(struct cec_notifier *n) in cec_notifier_put() argument
101 kref_put(&n->kref, cec_notifier_release); in cec_notifier_put()
109 struct cec_notifier *n = cec_notifier_get_conn(hdmi_dev, port_name); in cec_notifier_conn_register() local
111 if (!n) in cec_notifier_conn_register()
112 return n; in cec_notifier_conn_register()
114 mutex_lock(&n->lock); in cec_notifier_conn_register()
115 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_conn_register()
117 n->conn_info = *conn_info; in cec_notifier_conn_register()
119 memset(&n->conn_info, 0, sizeof(n->conn_info)); in cec_notifier_conn_register()
120 if (n->cec_adap) { in cec_notifier_conn_register()
121 if (!n->cec_adap->adap_controls_phys_addr) in cec_notifier_conn_register()
122 cec_phys_addr_invalidate(n->cec_adap); in cec_notifier_conn_register()
123 cec_s_conn_info(n->cec_adap, conn_info); in cec_notifier_conn_register()
125 mutex_unlock(&n->lock); in cec_notifier_conn_register()
126 return n; in cec_notifier_conn_register()
130 void cec_notifier_conn_unregister(struct cec_notifier *n) in cec_notifier_conn_unregister() argument
132 if (!n) in cec_notifier_conn_unregister()
135 mutex_lock(&n->lock); in cec_notifier_conn_unregister()
136 memset(&n->conn_info, 0, sizeof(n->conn_info)); in cec_notifier_conn_unregister()
137 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_conn_unregister()
138 if (n->cec_adap) { in cec_notifier_conn_unregister()
139 if (!n->cec_adap->adap_controls_phys_addr) in cec_notifier_conn_unregister()
140 cec_phys_addr_invalidate(n->cec_adap); in cec_notifier_conn_unregister()
141 cec_s_conn_info(n->cec_adap, NULL); in cec_notifier_conn_unregister()
143 mutex_unlock(&n->lock); in cec_notifier_conn_unregister()
144 cec_notifier_put(n); in cec_notifier_conn_unregister()
152 struct cec_notifier *n; in cec_notifier_cec_adap_register() local
157 n = cec_notifier_get_conn(hdmi_dev, port_name); in cec_notifier_cec_adap_register()
158 if (!n) in cec_notifier_cec_adap_register()
159 return n; in cec_notifier_cec_adap_register()
161 mutex_lock(&n->lock); in cec_notifier_cec_adap_register()
162 n->cec_adap = adap; in cec_notifier_cec_adap_register()
163 adap->conn_info = n->conn_info; in cec_notifier_cec_adap_register()
164 adap->notifier = n; in cec_notifier_cec_adap_register()
166 cec_s_phys_addr(adap, n->phys_addr, false); in cec_notifier_cec_adap_register()
167 mutex_unlock(&n->lock); in cec_notifier_cec_adap_register()
168 return n; in cec_notifier_cec_adap_register()
172 void cec_notifier_cec_adap_unregister(struct cec_notifier *n, in cec_notifier_cec_adap_unregister() argument
175 if (!n) in cec_notifier_cec_adap_unregister()
178 mutex_lock(&n->lock); in cec_notifier_cec_adap_unregister()
180 n->cec_adap = NULL; in cec_notifier_cec_adap_unregister()
181 mutex_unlock(&n->lock); in cec_notifier_cec_adap_unregister()
182 cec_notifier_put(n); in cec_notifier_cec_adap_unregister()
186 void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa) in cec_notifier_set_phys_addr() argument
188 if (n == NULL) in cec_notifier_set_phys_addr()
191 mutex_lock(&n->lock); in cec_notifier_set_phys_addr()
192 n->phys_addr = pa; in cec_notifier_set_phys_addr()
193 if (n->cec_adap && !n->cec_adap->adap_controls_phys_addr) in cec_notifier_set_phys_addr()
194 cec_s_phys_addr(n->cec_adap, n->phys_addr, false); in cec_notifier_set_phys_addr()
195 mutex_unlock(&n->lock); in cec_notifier_set_phys_addr()
199 void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, in cec_notifier_set_phys_addr_from_edid() argument
204 if (n == NULL) in cec_notifier_set_phys_addr_from_edid()
210 cec_notifier_set_phys_addr(n, pa); in cec_notifier_set_phys_addr_from_edid()