Lines Matching +refs:port +refs:id +refs:attrs
61 static void gth_output_set(struct gth_device *gth, int port, in gth_output_set() argument
64 unsigned long reg = port & 4 ? REG_GTH_GTHOPT1 : REG_GTH_GTHOPT0; in gth_output_set()
66 int shift = (port & 3) * 8; in gth_output_set()
74 static unsigned int gth_output_get(struct gth_device *gth, int port) in gth_output_get() argument
76 unsigned long reg = port & 4 ? REG_GTH_GTHOPT1 : REG_GTH_GTHOPT0; in gth_output_get()
78 int shift = (port & 3) * 8; in gth_output_get()
87 static void gth_smcfreq_set(struct gth_device *gth, int port, in gth_smcfreq_set() argument
90 unsigned long reg = REG_GTH_SMCR0 + ((port / 2) * 4); in gth_smcfreq_set()
91 int shift = (port & 1) * 16; in gth_smcfreq_set()
100 static unsigned int gth_smcfreq_get(struct gth_device *gth, int port) in gth_smcfreq_get() argument
102 unsigned long reg = REG_GTH_SMCR0 + ((port / 2) * 4); in gth_smcfreq_get()
103 int shift = (port & 1) * 16; in gth_smcfreq_get()
124 gth_master_set(struct gth_device *gth, unsigned int master, int port) in gth_master_set() argument
137 if (port >= 0) in gth_master_set()
138 val |= (0x8 | port) << shift; in gth_master_set()
150 int port; in master_attr_show() local
153 port = gth->master[ma->master]; in master_attr_show()
156 if (port >= 0) in master_attr_show()
157 count = snprintf(buf, PAGE_SIZE, "%x\n", port); in master_attr_show()
171 int old_port, port; in master_attr_store() local
173 if (kstrtoint(buf, 10, &port) < 0) in master_attr_store()
176 if (port >= TH_POSSIBLE_OUTPUTS || port < -1) in master_attr_store()
196 if (port >= 0) { in master_attr_store()
198 if (!gth->output[port].output) { in master_attr_store()
203 set_bit(ma->master, gth->output[port].master); in master_attr_store()
206 if (gth->output[port].output->active) in master_attr_store()
207 gth_master_set(gth, ma->master, port); in master_attr_store()
210 gth->master[ma->master] = port; in master_attr_store()
221 unsigned int port; member
235 unsigned int (*get)(struct gth_device *gth, int port);
236 void (*set)(struct gth_device *gth, int port,
242 OUTPUT_PARM(port, 0x7, 1, 0, output),
251 gth_output_parm_set(struct gth_device *gth, int port, unsigned int parm, in gth_output_parm_set() argument
254 unsigned int config = output_parms[parm].get(gth, port); in gth_output_parm_set()
260 output_parms[parm].set(gth, port, config); in gth_output_parm_set()
264 gth_output_parm_get(struct gth_device *gth, int port, unsigned int parm) in gth_output_parm_get() argument
266 unsigned int config = output_parms[parm].get(gth, port); in gth_output_parm_get()
281 int port, i; in intel_th_gth_reset() local
292 for (port = 0; port < 8; port++) { in intel_th_gth_reset()
293 if (gth_output_parm_get(gth, port, TH_OUTPUT_PARM(port)) == in intel_th_gth_reset()
297 gth_output_set(gth, port, 0); in intel_th_gth_reset()
298 gth_smcfreq_set(gth, port, 16); in intel_th_gth_reset()
336 gth_output_parm_get(gth, oa->port, oa->parm)); in output_attr_show()
359 gth_output_parm_set(gth, oa->port, oa->parm, config); in output_attr_store()
370 struct attribute **attrs; in intel_th_master_attributes() local
373 attrs = devm_kcalloc(gth->dev, nattrs, sizeof(void *), GFP_KERNEL); in intel_th_master_attributes()
374 if (!attrs) in intel_th_master_attributes()
397 attrs[i] = &master_attrs[i].attr.attr; in intel_th_master_attributes()
404 gth->master_group.attrs = attrs; in intel_th_master_attributes()
412 struct attribute **attrs; in intel_th_output_attributes() local
417 attrs = devm_kcalloc(gth->dev, nattrs, sizeof(void *), GFP_KERNEL); in intel_th_output_attributes()
418 if (!attrs) in intel_th_output_attributes()
450 attrs[idx] = &out_attrs[idx].attr.attr; in intel_th_output_attributes()
453 out_attrs[idx].port = i; in intel_th_output_attributes()
459 gth->output_group.attrs = attrs; in intel_th_output_attributes()
490 count && !(reg & BIT(output->port)); count--) { in intel_th_gth_stop()
497 output->port); in intel_th_gth_stop()
545 for_each_set_bit(master, gth->output[output->port].master, in intel_th_gth_disable()
578 count && !(gth_output_get(gth, output->port) & BIT(5)); count--) in intel_th_gth_prepare()
599 for_each_set_bit(master, gth->output[output->port].master, in intel_th_gth_enable()
601 gth_master_set(gth, master, output->port); in intel_th_gth_enable()
666 int i, id; in intel_th_gth_assign() local
674 for (i = 0, id = 0; i < TH_POSSIBLE_OUTPUTS; i++) { in intel_th_gth_assign()
678 if (othdev->id == -1 || othdev->id == id) in intel_th_gth_assign()
681 id++; in intel_th_gth_assign()
688 othdev->output.port = i; in intel_th_gth_assign()
705 int port = othdev->output.port; in intel_th_gth_unassign() local
712 othdev->output.port = -1; in intel_th_gth_unassign()
714 gth->output[port].output = NULL; in intel_th_gth_unassign()
716 if (gth->master[master] == port) in intel_th_gth_unassign()
725 int port = 0; /* FIXME: make default output configurable */ in intel_th_gth_set_output() local
736 set_bit(master, gth->output[port].master); in intel_th_gth_set_output()
737 gth->master[master] = port; in intel_th_gth_set_output()
797 gth_output_parm_get(gth, i, TH_OUTPUT_PARM(port)); in intel_th_gth_probe()
811 if (gth->output_group.attrs) in intel_th_gth_probe()