Lines Matching refs:raw

56  * Add the raw data message to the list of received messages.
58 static int receive_data(struct gb_raw *raw, u32 len, u8 *data)
61 struct device *dev = &raw->connection->bundle->dev;
69 mutex_lock(&raw->list_lock);
70 if ((raw->list_data + len) > MAX_DATA_SIZE) {
82 raw->list_data += len;
86 list_add_tail(&raw_data->entry, &raw->list);
88 mutex_unlock(&raw->list_lock);
96 struct gb_raw *raw = greybus_get_drvdata(connection->bundle);
107 dev_err(dev, "raw receive request too small (%zu < %zu)\n",
114 dev_err(dev, "raw receive request wrong size %d vs %d\n", len,
119 dev_err(dev, "raw receive request of 0 bytes?\n");
123 return receive_data(raw, len, receive->data);
126 static int gb_raw_send(struct gb_raw *raw, u32 len, const char __user *data)
128 struct gb_connection *connection = raw->connection;
156 struct gb_raw *raw;
167 raw = kzalloc(sizeof(*raw), GFP_KERNEL);
168 if (!raw)
178 INIT_LIST_HEAD(&raw->list);
179 mutex_init(&raw->list_lock);
181 raw->connection = connection;
182 greybus_set_drvdata(bundle, raw);
190 raw->dev = MKDEV(raw_major, minor);
191 cdev_init(&raw->cdev, &raw_fops);
197 retval = cdev_add(&raw->cdev, raw->dev, 1);
201 raw->device = device_create(&raw_class, &connection->bundle->dev,
202 raw->dev, raw, "gb!raw%d", minor);
203 if (IS_ERR(raw->device)) {
204 retval = PTR_ERR(raw->device);
211 cdev_del(&raw->cdev);
223 kfree(raw);
229 struct gb_raw *raw = greybus_get_drvdata(bundle);
230 struct gb_connection *connection = raw->connection;
235 device_destroy(&raw_class, raw->dev);
236 cdev_del(&raw->cdev);
238 ida_free(&minors, MINOR(raw->dev));
241 mutex_lock(&raw->list_lock);
242 list_for_each_entry_safe(raw_data, temp, &raw->list, entry) {
246 mutex_unlock(&raw->list_lock);
248 kfree(raw);
263 struct gb_raw *raw = container_of(cdev, struct gb_raw, cdev);
265 file->private_data = raw;
272 struct gb_raw *raw = file->private_data;
281 retval = gb_raw_send(raw, count, buf);
291 struct gb_raw *raw = file->private_data;
295 mutex_lock(&raw->list_lock);
296 if (list_empty(&raw->list))
299 raw_data = list_first_entry(&raw->list, struct raw_data, entry);
311 raw->list_data -= raw_data->len;
316 mutex_unlock(&raw->list_lock);
335 .name = "raw",