~ubuntu-branches/ubuntu/trusty/linux-linaro-omap/trusty

« back to all changes in this revision

Viewing changes to drivers/staging/gma500/psb_gtt.h

  • Committer: Package Import Robot
  • Author(s): John Rigby, John Rigby
  • Date: 2011-09-26 10:44:23 UTC
  • Revision ID: package-import@ubuntu.com-20110926104423-57i0gl3v99b3lkfg
Tags: 3.0.0-1007.9
[ John Rigby ]

Enable crypto modules and remove crypto-modules from
exclude-module files
LP: #826021

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
#include <drm/drmP.h>
24
24
 
25
 
/*#include "img_types.h"*/
26
 
 
27
25
struct psb_gtt {
28
26
        struct drm_device *dev;
29
 
        int initialized;
30
27
        uint32_t gatt_start;
31
28
        uint32_t mmu_gatt_start;
32
 
        uint32_t ci_start;
33
 
        uint32_t rar_start;
34
29
        uint32_t gtt_start;
35
30
        uint32_t gtt_phys_start;
36
31
        unsigned gtt_pages;
37
32
        unsigned gatt_pages;
38
 
        uint32_t stolen_base;
39
 
        void *vram_addr;
40
 
        uint32_t pge_ctl;
41
 
        u16 gmch_ctrl;
42
33
        unsigned long stolen_size;
43
34
        unsigned long vram_stolen_size;
44
 
        unsigned long ci_stolen_size;
45
 
        unsigned long rar_stolen_size;
46
 
        uint32_t *gtt_map;
47
35
        struct rw_semaphore sem;
48
36
};
49
37
 
50
 
struct psb_gtt_mm {
51
 
        struct drm_mm base;
52
 
        struct drm_open_hash hash;
53
 
        uint32_t count;
54
 
        spinlock_t lock;
55
 
};
56
 
 
57
 
struct psb_gtt_hash_entry {
58
 
        struct drm_open_hash ht;
59
 
        uint32_t count;
60
 
        struct drm_hash_item item;
61
 
};
62
 
 
63
 
struct psb_gtt_mem_mapping {
64
 
        struct drm_mm_node *node;
65
 
        struct drm_hash_item item;
66
 
};
67
 
 
68
38
/*Exported functions*/
69
 
extern int psb_gtt_init(struct psb_gtt *pg, int resume);
70
 
extern int psb_gtt_insert_pages(struct psb_gtt *pg, struct page **pages,
71
 
                                unsigned offset_pages, unsigned num_pages,
72
 
                                unsigned desired_tile_stride,
73
 
                                unsigned hw_tile_stride, int type);
74
 
extern int psb_gtt_remove_pages(struct psb_gtt *pg, unsigned offset_pages,
75
 
                                unsigned num_pages,
76
 
                                unsigned desired_tile_stride,
77
 
                                unsigned hw_tile_stride,
78
 
                                int rc_prot);
79
 
 
80
 
extern struct psb_gtt *psb_gtt_alloc(struct drm_device *dev);
81
 
extern void psb_gtt_takedown(struct psb_gtt *pg, int free);
82
 
extern int psb_gtt_map_meminfo(struct drm_device *dev,
83
 
                                void * hKernelMemInfo,
84
 
                                uint32_t *offset);
85
 
extern int psb_gtt_unmap_meminfo(struct drm_device *dev,
86
 
                                 void * hKernelMemInfo);
87
 
extern int psb_gtt_map_meminfo_ioctl(struct drm_device *dev, void *data,
88
 
                                     struct drm_file *file_priv);
89
 
extern int psb_gtt_unmap_meminfo_ioctl(struct drm_device *dev, void *data,
90
 
                                       struct drm_file *file_priv);
91
 
extern int psb_gtt_mm_init(struct psb_gtt *pg);
92
 
extern void psb_gtt_mm_takedown(void);
93
 
 
94
 
extern int psb_gtt_map_pvr_memory(struct drm_device *dev,
95
 
                                                                  unsigned int hHandle,
96
 
                                                                  unsigned int ui32TaskId,
97
 
                                                                  dma_addr_t *pPages,
98
 
                                                                  unsigned int ui32PagesNum,
99
 
                                                                  unsigned int *ui32Offset);
100
 
 
101
 
extern int psb_gtt_unmap_pvr_memory(struct drm_device *dev,
102
 
                                                                        unsigned int hHandle,
103
 
                                                                        unsigned int ui32TaskId);
 
39
extern int psb_gtt_init(struct drm_device *dev, int resume);
 
40
extern void psb_gtt_takedown(struct drm_device *dev);
 
41
 
 
42
/* Each gtt_range describes an allocation in the GTT area */
 
43
struct gtt_range {
 
44
        struct resource resource;
 
45
        u32 offset;
 
46
        struct kref kref;
 
47
        struct drm_gem_object gem;      /* GEM high level stuff */
 
48
        int in_gart;                    /* Currently in the GART (ref ct) */
 
49
        bool stolen;                    /* Backed from stolen RAM */
 
50
        bool mmapping;                  /* Is mmappable */
 
51
        struct page **pages;            /* Backing pages if present */
 
52
};
 
53
 
 
54
extern struct gtt_range *psb_gtt_alloc_range(struct drm_device *dev, int len,
 
55
                                                const char *name, int backed);
 
56
extern void psb_gtt_kref_put(struct gtt_range *gt);
 
57
extern void psb_gtt_free_range(struct drm_device *dev, struct gtt_range *gt);
 
58
extern int psb_gtt_pin(struct gtt_range *gt);
 
59
extern void psb_gtt_unpin(struct gtt_range *gt);
104
60
 
105
61
#endif