Loading drivers/staging/greybus/Makefile +1 −1 Original line number Diff line number Diff line greybus-y := core.o greybus-y := core.o gbuf.o obj-m += greybus.o obj-m += i2c-gb.o Loading drivers/staging/greybus/gbuf.c 0 → 100644 +42 −0 Original line number Diff line number Diff line /* * Greybus gbuf handling * * Copyright 2014 Google Inc. * * Released under the GPLv2 only. */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include <linux/types.h> #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/kernel.h> #include <linux/device.h> #include "greybus.h" struct gbuf *greybus_alloc_gbuf(struct greybus_device *gdev, struct cport *cport, gfp_t mem_flags) { return NULL; } void greybus_free_gbuf(struct gbuf *gbuf) { } int greybus_submit_gbuf(struct gbuf *gbuf, gfp_t mem_flags) { return -ENOMEM; } int greybus_kill_gbuf(struct gbuf *gbuf) { return -ENOMEM; } drivers/staging/greybus/greybus.h +50 −1 Original line number Diff line number Diff line Loading @@ -29,19 +29,68 @@ .match_flags = GREYBUS_DEVICE_ID_MATCH_SERIAL, \ .lSerial = (serial), struct greybus_descriptor { __u16 wVendor; __u16 wProduct; __u64 lSerialNumber; }; struct gbuf; struct cport { u16 number; // FIXME, what else? }; typedef void (*gbuf_complete_t)(struct gbuf *gbuf); struct gbuf { struct kref kref; void *hcpriv; struct list_head anchor_list; struct gbuf_anchor *anchor; // FIXME do we need? struct greybus_device *gdev; struct cport *cport; int status; void *transfer_buffer; u32 transfer_flags; /* flags for the transfer buffer */ u32 transfer_buffer_length; u32 actual_length; struct scatterlist *sg; // FIXME do we need? int num_sgs; void *context; gbuf_complete_t complete; }; /* * gbuf->transfer_flags */ #define GBUF_FREE_BUFFER BIT(0) /* Free the transfer buffer with the gbuf */ struct greybus_device { struct device dev; struct greybus_descriptor descriptor; int num_cport; struct cport cport[0]; }; #define to_greybus_device(d) container_of(d, struct greybus_device, dev) struct gbuf *greybus_alloc_gbuf(struct greybus_device *gdev, struct cport *cport, gfp_t mem_flags); void greybus_free_gbuf(struct gbuf *gbuf); int greybus_submit_gbuf(struct gbuf *gbuf, gfp_t mem_flags); int greybus_kill_gbuf(struct gbuf *gbuf); struct greybus_driver { const char *name; Loading Loading
drivers/staging/greybus/Makefile +1 −1 Original line number Diff line number Diff line greybus-y := core.o greybus-y := core.o gbuf.o obj-m += greybus.o obj-m += i2c-gb.o Loading
drivers/staging/greybus/gbuf.c 0 → 100644 +42 −0 Original line number Diff line number Diff line /* * Greybus gbuf handling * * Copyright 2014 Google Inc. * * Released under the GPLv2 only. */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include <linux/types.h> #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/kernel.h> #include <linux/device.h> #include "greybus.h" struct gbuf *greybus_alloc_gbuf(struct greybus_device *gdev, struct cport *cport, gfp_t mem_flags) { return NULL; } void greybus_free_gbuf(struct gbuf *gbuf) { } int greybus_submit_gbuf(struct gbuf *gbuf, gfp_t mem_flags) { return -ENOMEM; } int greybus_kill_gbuf(struct gbuf *gbuf) { return -ENOMEM; }
drivers/staging/greybus/greybus.h +50 −1 Original line number Diff line number Diff line Loading @@ -29,19 +29,68 @@ .match_flags = GREYBUS_DEVICE_ID_MATCH_SERIAL, \ .lSerial = (serial), struct greybus_descriptor { __u16 wVendor; __u16 wProduct; __u64 lSerialNumber; }; struct gbuf; struct cport { u16 number; // FIXME, what else? }; typedef void (*gbuf_complete_t)(struct gbuf *gbuf); struct gbuf { struct kref kref; void *hcpriv; struct list_head anchor_list; struct gbuf_anchor *anchor; // FIXME do we need? struct greybus_device *gdev; struct cport *cport; int status; void *transfer_buffer; u32 transfer_flags; /* flags for the transfer buffer */ u32 transfer_buffer_length; u32 actual_length; struct scatterlist *sg; // FIXME do we need? int num_sgs; void *context; gbuf_complete_t complete; }; /* * gbuf->transfer_flags */ #define GBUF_FREE_BUFFER BIT(0) /* Free the transfer buffer with the gbuf */ struct greybus_device { struct device dev; struct greybus_descriptor descriptor; int num_cport; struct cport cport[0]; }; #define to_greybus_device(d) container_of(d, struct greybus_device, dev) struct gbuf *greybus_alloc_gbuf(struct greybus_device *gdev, struct cport *cport, gfp_t mem_flags); void greybus_free_gbuf(struct gbuf *gbuf); int greybus_submit_gbuf(struct gbuf *gbuf, gfp_t mem_flags); int greybus_kill_gbuf(struct gbuf *gbuf); struct greybus_driver { const char *name; Loading