Update of /cvsroot/gc-linux/linux/include/asm-powerpc
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv22259/include/asm-powerpc
Modified Files:
starlet.h
Log Message:
- added starlet_kzalloc/starlet_kfree interfaces
- added async ipc calls
- added async ioctl api
- added ioctlv apis
- added useful hardware fixups
- stop dvd motor (to preserve the dvd unit)
- disconnect wiimote (to preserve batteries)
- turn off the front blue light (to preserve the led)
- added module information
Index: starlet.h
===================================================================
RCS file: /cvsroot/gc-linux/linux/include/asm-powerpc/starlet.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- starlet.h 26 Mar 2008 20:15:23 -0000 1.2
+++ starlet.h 4 Apr 2008 19:19:55 -0000 1.3
@@ -20,6 +20,7 @@
#include <linux/dmapool.h>
#include <linux/list.h>
#include <linux/platform_device.h>
+#include <linux/scatterlist.h>
#define STARLET_IPC_DMA_ALIGN 0x1f /* 32 bytes */
@@ -42,15 +43,100 @@
};
+struct starlet_iovec {
+ dma_addr_t dma_addr;
+ u32 dma_len;
+};
+
+struct starlet_ipc_request;
+typedef int (*starlet_ipc_callback_t)(struct starlet_ipc_request *req);
+
+struct starlet_ipc_request {
+ /* begin starlet firmware request format */
+ u32 cmd;
+ s32 result;
+ union {
+ s32 fd;
+ u32 req_cmd;
+ };
+ union {
+ struct {
+ dma_addr_t pathname;
+ u32 mode;
+ } open;
+ struct {
+ u32 request;
+ dma_addr_t ibuf;
+ u32 ilen;
+ dma_addr_t obuf;
+ u32 olen;
+ } ioctl;
+ struct {
+ u32 request;
+ u32 argc_in;
+ u32 argc_out;
+ dma_addr_t iovec_da;
+ } ioctlv;
+ u32 argv[5];
+ };
+ /* end starlet firmware request format */
+
+ dma_addr_t dma_addr; /* request dma address */
+
+ /* ioctlv related data */
+ struct starlet_iovec *iovec;
+ size_t iovec_size;
+
+ struct scatterlist *sgl_in;
+ unsigned sgl_nents_in;
+ struct scatterlist *sgl_out;
+ unsigned sgl_nents_out;
+
+ void *done_data;
+ starlet_ipc_callback_t done;
+
+ struct list_head node; /* for queueing */
+
+ struct starlet_ipc_device *ipc_dev;
+};
+
+
+
/* from starlet-ipc.c */
+extern void *starlet_kzalloc(size_t size, gfp_t flags);
+extern void starlet_kfree(void *ptr);
+
extern struct starlet_ipc_device *starlet_ipc_get_device(void);
+extern void *starlet_ipc_request_priv(struct starlet_ipc_request *req);
+extern void starlet_ipc_free_request(struct starlet_ipc_request *req);
+
extern int starlet_ios_open(const char *pathname, int flags);
extern int starlet_ios_close(int fd);
+
extern int starlet_ios_ioctl(int fd, int request,
void *ibuf, size_t ilen,
void *obuf, size_t olen);
+extern int starlet_ios_ioctl_nowait(int fd, int request,
+ void *ibuf, size_t ilen,
+ void *obuf, size_t olen,
+ starlet_ipc_callback_t callback,
+ void *arg);
+
+extern int starlet_ios_ioctlv(int fd, int request,
+ unsigned int nents_in,
+ struct scatterlist *sgl_in,
+ unsigned int nents_out,
+ struct scatterlist *sgl_out);
+extern int starlet_ios_ioctlv_nowait(int fd, int request,
+ unsigned int nents_in,
+ struct scatterlist *sgl_in,
+ unsigned int nents_out,
+ struct scatterlist *sgl_out,
+ starlet_ipc_callback_t callback,
+ void *arg);
+extern void starlet_ios_ioctlv_complete(struct starlet_ipc_request *req);
/* from starlet-stm.c */
|