return SH_CSS_ACC_SP_ARGS(firmware)[num];
}
+size_t
+sh_css_argument_get_size(struct sh_css_acc_fw *firmware, unsigned num)
+{
+ return firmware->header.sp_args[num].size;
+}
+
+unsigned
+sh_css_num_accelerator_args(struct sh_css_acc_fw *firmware)
+{
+ return firmware->header.sp.args_cnt;
+}
+
+void
+sh_css_acc_stabilize(struct sh_css_acc_fw *firmware, unsigned num, bool stable)
+{
+ firmware->header.sp_args[num].stable = stable;
+}
+
+bool
+sh_css_acc_is_stable(struct sh_css_acc_fw *firmware, unsigned num)
+{
+ return firmware->header.sp_args[num].stable;
+}
+
static void
copy_sp_arguments(struct sh_css_acc_fw *firmware, bool to_sp)
{
case SH_CSS_ACC_ARG_PTR_IN:
case SH_CSS_ACC_ARG_PTR_OUT:
case SH_CSS_ACC_ARG_PTR_IO:
+ case SH_CSS_ACC_ARG_PTR_NOFLUSH:
+ case SH_CSS_ACC_ARG_PTR_STABLE:
value = &firmware->header.sp_args[i].value;
size = sizeof(void *);
break;
void *
sh_css_argument_get_host(struct sh_css_acc_fw *firmware, unsigned num);
+/* Get size for argument <num> */
+size_t
+sh_css_argument_get_size(struct sh_css_acc_fw *firmware, unsigned num);
+
+/* Get the number of accelerator arguments */
+unsigned
+sh_css_num_accelerator_args(struct sh_css_acc_fw *firmware);
+
+/* Destabilize argument <num>, i.e. flush it from the cache */
+void
+sh_css_acc_stabilize(struct sh_css_acc_fw *firmware, unsigned num, bool stable);
+
+/* Check stability of argument <num> */
+bool
+sh_css_acc_is_stable(struct sh_css_acc_fw *firmware, unsigned num);
+
/* Start the sp, which will start the isp.
Load the firmware if not yet loaded.
*/
SH_CSS_ACC_ARG_PTR_IN, /* Pointer input argument */
SH_CSS_ACC_ARG_PTR_OUT, /* Pointer output argument */
SH_CSS_ACC_ARG_PTR_IO, /* Pointer in/output argument */
+ SH_CSS_ACC_ARG_PTR_NOFLUSH, /* Pointer argument will not be flushed */
+ SH_CSS_ACC_ARG_PTR_STABLE, /* Pointer input argument that is stable */
SH_CSS_ACC_ARG_FRAME /* Frame argument */
};
/* Descriptor for an SP argument */
struct sh_css_sp_arg {
- enum sh_css_acc_arg_type type; /* Type of SP argument */
- void *value; /* Value of SP argument */
- unsigned int size; /* Size of SP argument */
- void *host; /* Private data used by host */
+ enum sh_css_acc_arg_type type; /* Type of SP argument */
+ void *value; /* Value of SP argument */
+ bool stable; /* Pointer is stable */
+ unsigned int size; /* Size of SP argument */
+ void *host; /* Private data used by host */
};
struct sh_css_acc_fw;