Lines Matching refs:n

53 	struct cec_notifier *n;  in cec_notifier_get_conn()  local
56 list_for_each_entry(n, &cec_notifiers, head) { in cec_notifier_get_conn()
57 if (n->hdmi_dev == hdmi_dev && in cec_notifier_get_conn()
59 (n->port_name && !strcmp(n->port_name, port_name)))) { in cec_notifier_get_conn()
60 kref_get(&n->kref); in cec_notifier_get_conn()
62 return n; in cec_notifier_get_conn()
65 n = kzalloc(sizeof(*n), GFP_KERNEL); in cec_notifier_get_conn()
66 if (!n) in cec_notifier_get_conn()
68 n->hdmi_dev = hdmi_dev; in cec_notifier_get_conn()
70 n->port_name = kstrdup(port_name, GFP_KERNEL); in cec_notifier_get_conn()
71 if (!n->port_name) { in cec_notifier_get_conn()
72 kfree(n); in cec_notifier_get_conn()
73 n = NULL; in cec_notifier_get_conn()
77 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_get_conn()
79 mutex_init(&n->lock); in cec_notifier_get_conn()
80 kref_init(&n->kref); in cec_notifier_get_conn()
81 list_add_tail(&n->head, &cec_notifiers); in cec_notifier_get_conn()
84 return n; in cec_notifier_get_conn()
89 struct cec_notifier *n = in cec_notifier_release() local
92 list_del(&n->head); in cec_notifier_release()
93 kfree(n->port_name); in cec_notifier_release()
94 kfree(n); in cec_notifier_release()
97 static void cec_notifier_put(struct cec_notifier *n) in cec_notifier_put() argument
100 kref_put(&n->kref, cec_notifier_release); in cec_notifier_put()
108 struct cec_notifier *n = cec_notifier_get_conn(hdmi_dev, port_name); in cec_notifier_conn_register() local
110 if (!n) in cec_notifier_conn_register()
111 return n; in cec_notifier_conn_register()
113 mutex_lock(&n->lock); in cec_notifier_conn_register()
114 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_conn_register()
116 n->conn_info = *conn_info; in cec_notifier_conn_register()
118 memset(&n->conn_info, 0, sizeof(n->conn_info)); in cec_notifier_conn_register()
119 if (n->cec_adap) { in cec_notifier_conn_register()
120 if (!n->cec_adap->adap_controls_phys_addr) in cec_notifier_conn_register()
121 cec_phys_addr_invalidate(n->cec_adap); in cec_notifier_conn_register()
122 cec_s_conn_info(n->cec_adap, conn_info); in cec_notifier_conn_register()
124 mutex_unlock(&n->lock); in cec_notifier_conn_register()
125 return n; in cec_notifier_conn_register()
129 void cec_notifier_conn_unregister(struct cec_notifier *n) in cec_notifier_conn_unregister() argument
131 if (!n) in cec_notifier_conn_unregister()
134 mutex_lock(&n->lock); in cec_notifier_conn_unregister()
135 memset(&n->conn_info, 0, sizeof(n->conn_info)); in cec_notifier_conn_unregister()
136 n->phys_addr = CEC_PHYS_ADDR_INVALID; in cec_notifier_conn_unregister()
137 if (n->cec_adap) { in cec_notifier_conn_unregister()
138 if (!n->cec_adap->adap_controls_phys_addr) in cec_notifier_conn_unregister()
139 cec_phys_addr_invalidate(n->cec_adap); in cec_notifier_conn_unregister()
140 cec_s_conn_info(n->cec_adap, NULL); in cec_notifier_conn_unregister()
142 mutex_unlock(&n->lock); in cec_notifier_conn_unregister()
143 cec_notifier_put(n); in cec_notifier_conn_unregister()
151 struct cec_notifier *n; in cec_notifier_cec_adap_register() local
156 n = cec_notifier_get_conn(hdmi_dev, port_name); in cec_notifier_cec_adap_register()
157 if (!n) in cec_notifier_cec_adap_register()
158 return n; in cec_notifier_cec_adap_register()
160 mutex_lock(&n->lock); in cec_notifier_cec_adap_register()
161 n->cec_adap = adap; in cec_notifier_cec_adap_register()
162 adap->conn_info = n->conn_info; in cec_notifier_cec_adap_register()
163 adap->notifier = n; in cec_notifier_cec_adap_register()
165 cec_s_phys_addr(adap, n->phys_addr, false); in cec_notifier_cec_adap_register()
166 mutex_unlock(&n->lock); in cec_notifier_cec_adap_register()
167 return n; in cec_notifier_cec_adap_register()
171 void cec_notifier_cec_adap_unregister(struct cec_notifier *n, in cec_notifier_cec_adap_unregister() argument
174 if (!n) in cec_notifier_cec_adap_unregister()
177 mutex_lock(&n->lock); in cec_notifier_cec_adap_unregister()
179 n->cec_adap = NULL; in cec_notifier_cec_adap_unregister()
180 mutex_unlock(&n->lock); in cec_notifier_cec_adap_unregister()
181 cec_notifier_put(n); in cec_notifier_cec_adap_unregister()
185 void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa) in cec_notifier_set_phys_addr() argument
187 if (n == NULL) in cec_notifier_set_phys_addr()
190 mutex_lock(&n->lock); in cec_notifier_set_phys_addr()
191 n->phys_addr = pa; in cec_notifier_set_phys_addr()
192 if (n->cec_adap && !n->cec_adap->adap_controls_phys_addr) in cec_notifier_set_phys_addr()
193 cec_s_phys_addr(n->cec_adap, n->phys_addr, false); in cec_notifier_set_phys_addr()
194 mutex_unlock(&n->lock); in cec_notifier_set_phys_addr()
198 void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, in cec_notifier_set_phys_addr_from_edid() argument
203 if (n == NULL) in cec_notifier_set_phys_addr_from_edid()
209 cec_notifier_set_phys_addr(n, pa); in cec_notifier_set_phys_addr_from_edid()