-/*
- * Set a scalar group value or a whole group.
- */
-int i2o_parm_field_set(struct i2o_device *i2o_dev, int group, int field,
- void *buf, int buflen)
-{
- u16 *opblk;
- u8 resblk[8 + buflen]; /* 8 bytes for header */
- int size;
-
- opblk = kmalloc(buflen + 64, GFP_KERNEL);
- if (opblk == NULL) {
- printk(KERN_ERR "i2o: no memory for operation buffer.\n");
- return -ENOMEM;
- }
-
- opblk[0] = 1; /* operation count */
- opblk[1] = 0; /* pad */
- opblk[2] = I2O_PARAMS_FIELD_SET;
- opblk[3] = group;
-
- if (field == -1) { /* whole group */
- opblk[4] = -1;
- memcpy(opblk + 5, buf, buflen);
- } else { /* single field */
-
- opblk[4] = 1;
- opblk[5] = field;
- memcpy(opblk + 6, buf, buflen);
- }
-
- size = i2o_parm_issue(i2o_dev, I2O_CMD_UTIL_PARAMS_SET, opblk,
- 12 + buflen, resblk, sizeof(resblk));
-
- kfree(opblk);
- if (size > buflen)
- return buflen;
-
- return size;
-}
-