/* * Send a new CC to the device. */ static int cbaf_cc_upload(struct cbaf *cbaf) { int result; struct device *dev = &cbaf->usb_iface->dev; struct wusb_cbaf_cc_data *ccd; char pr_cdid[WUSB_CKHDID_STRSIZE]; ccd = cbaf->buffer; *ccd = cbaf_cc_data_defaults; ccd->CHID = cbaf->chid; ccd->CDID = cbaf->cdid; ccd->CK = cbaf->ck; ccd->BandGroups = cpu_to_le16(cbaf->host_band_groups); dev_dbg(dev, "Trying to upload CC:\n"); ckhdid_printf(pr_cdid, sizeof(pr_cdid), &ccd->CHID); dev_dbg(dev, " CHID %s\n", pr_cdid); ckhdid_printf(pr_cdid, sizeof(pr_cdid), &ccd->CDID); dev_dbg(dev, " CDID %s\n", pr_cdid); dev_dbg(dev, " Bandgroups 0x%04x\n", cbaf->host_band_groups); result = usb_control_msg( cbaf->usb_dev, usb_sndctrlpipe(cbaf->usb_dev, 0), CBAF_REQ_SET_ASSOCIATION_RESPONSE, USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0x0201, cbaf->usb_iface->cur_altsetting->desc.bInterfaceNumber, ccd, sizeof(*ccd), USB_CTRL_SET_TIMEOUT); return result; }
static ssize_t cbaf_wusb_cdid_show(struct device *dev, struct device_attribute *attr, char *buf) { struct usb_interface *iface = to_usb_interface(dev); struct cbaf *cbaf = usb_get_intfdata(iface); char pr_cdid[WUSB_CKHDID_STRSIZE]; ckhdid_printf(pr_cdid, sizeof(pr_cdid), &cbaf->cdid); return scnprintf(buf, PAGE_SIZE, "%s\n", pr_cdid); }
static ssize_t wusb_cdid_show(struct device *dev, struct device_attribute *attr, char *buf) { ssize_t result; struct wusb_dev *wusb_dev; wusb_dev = wusb_dev_get_by_usb_dev(to_usb_device(dev)); if (wusb_dev == NULL) return -ENODEV; result = ckhdid_printf(buf, PAGE_SIZE, &wusb_dev->cdid); strcat(buf, "\n"); wusb_dev_put(wusb_dev); return result + 1; }
/* * Show the current WUSB CHID. */ static ssize_t wusb_chid_show(struct device *dev, struct device_attribute *attr, char *buf) { struct wusbhc *wusbhc = usbhc_dev_to_wusbhc(dev); const struct wusb_ckhdid *chid; ssize_t result = 0; if (wusbhc->wuie_host_info != NULL) chid = &wusbhc->wuie_host_info->CHID; else chid = &wusb_ckhdid_zero; result += ckhdid_printf(buf, PAGE_SIZE, chid); result += sprintf(buf + result, "\n"); return result; }