|
@@ -4,7 +4,6 @@
|
|
|
|
|
|
#include <linux/kernel.h>
|
|
|
#include <linux/module.h>
|
|
|
-#include <linux/nx842.h>
|
|
|
#include <linux/sw842.h>
|
|
|
#include <linux/of.h>
|
|
|
#include <linux/slab.h>
|
|
@@ -12,6 +11,12 @@
|
|
|
#include <linux/mm.h>
|
|
|
#include <linux/ratelimit.h>
|
|
|
|
|
|
+#define __NX842_PSERIES_MEM_COMPRESS (10240)
|
|
|
+#define __NX842_POWERNV_MEM_COMPRESS (1024)
|
|
|
+
|
|
|
+#define NX842_MEM_COMPRESS (max_t(unsigned int, \
|
|
|
+ __NX842_PSERIES_MEM_COMPRESS, __NX842_POWERNV_MEM_COMPRESS))
|
|
|
+
|
|
|
/* Restrictions on Data Descriptor List (DDL) and Entry (DDE) buffers
|
|
|
*
|
|
|
* From NX P8 workbook, sec 4.9.1 "842 details"
|
|
@@ -104,6 +109,13 @@ static inline unsigned long nx842_get_pa(void *addr)
|
|
|
#define GET_FIELD(v, m) (((v) & (m)) >> MASK_LSH(m))
|
|
|
#define SET_FIELD(v, m, val) (((v) & ~(m)) | (((val) << MASK_LSH(m)) & (m)))
|
|
|
|
|
|
+struct nx842_constraints {
|
|
|
+ int alignment;
|
|
|
+ int multiple;
|
|
|
+ int minimum;
|
|
|
+ int maximum;
|
|
|
+};
|
|
|
+
|
|
|
struct nx842_driver {
|
|
|
char *name;
|
|
|
struct module *owner;
|
|
@@ -124,4 +136,11 @@ void nx842_platform_driver_unset(struct nx842_driver *driver);
|
|
|
bool nx842_platform_driver_get(void);
|
|
|
void nx842_platform_driver_put(void);
|
|
|
|
|
|
+int nx842_constraints(struct nx842_constraints *constraints);
|
|
|
+
|
|
|
+int nx842_compress(const unsigned char *in, unsigned int in_len,
|
|
|
+ unsigned char *out, unsigned int *out_len, void *wrkmem);
|
|
|
+int nx842_decompress(const unsigned char *in, unsigned int in_len,
|
|
|
+ unsigned char *out, unsigned int *out_len, void *wrkmem);
|
|
|
+
|
|
|
#endif /* __NX_842_H__ */
|