lsctl
struct hws_lsctl_request_block lsctl;
cpuhw->lsctl.tear = virt_to_phys((void *)base) + offset * sizeof(unsigned long);
cpuhw->lsctl.dear = virt_to_phys((void *)aux->sdb_index[head]);
lsctl(&sreq);
cpuhw->lsctl.cs = 1;
cpuhw->lsctl.cd = 1;
cpuhw->lsctl.cs = 0;
cpuhw->lsctl.cd = 0;
cpuhw->lsctl.s = 0;
cpuhw->lsctl.h = 1;
cpuhw->lsctl.interval = SAMPL_RATE(&event->hw);
cpuhw->lsctl.tear = virt_to_phys(cpuhw->sfb.sdbt);
cpuhw->lsctl.dear = *(unsigned long *)cpuhw->sfb.sdbt;
if (WARN_ON_ONCE(cpuhw->lsctl.es == 1 || cpuhw->lsctl.ed == 1)) {
cpuhw->lsctl.ed = 1;
cpuhw->lsctl.es = 1;
cpuhw->lsctl.es = 0;
cpuhw->lsctl.ed = 0;
cpuhw->lsctl.interval = SAMPL_RATE(hwc);
err = lsctl(&cpuhw->lsctl);
inactive = cpuhw->lsctl;
err = lsctl(&inactive);
cpuhw->lsctl.tear = si.tear;
cpuhw->lsctl.dear = si.dear;