Lines Matching defs:sl

189 u32 cpsw_sl_reg_read(struct cpsw_sl *sl, enum cpsw_sl_regs reg)
193 if (sl->regs[reg] == CPSW_SL_REG_NOTUSED) {
194 dev_err(sl->dev, "cpsw_sl: not sup r reg: %04X\n",
195 sl->regs[reg]);
199 val = readl(sl->sl_base + sl->regs[reg]);
200 dev_dbg(sl->dev, "cpsw_sl: reg: %04X r 0x%08X\n", sl->regs[reg], val);
204 void cpsw_sl_reg_write(struct cpsw_sl *sl, enum cpsw_sl_regs reg, u32 val)
206 if (sl->regs[reg] == CPSW_SL_REG_NOTUSED) {
207 dev_err(sl->dev, "cpsw_sl: not sup w reg: %04X\n",
208 sl->regs[reg]);
212 dev_dbg(sl->dev, "cpsw_sl: reg: %04X w 0x%08X\n", sl->regs[reg], val);
213 writel(val, sl->sl_base + sl->regs[reg]);
235 struct cpsw_sl *sl;
237 sl = devm_kzalloc(dev, sizeof(struct cpsw_sl), GFP_KERNEL);
238 if (!sl)
240 sl->dev = dev;
241 sl->sl_base = sl_base;
245 dev_err(sl->dev, "cpsw_sl: dev_id %s not found.\n", device_id);
248 sl->regs = sl_dev_id->regs;
249 sl->control_features = sl_dev_id->control_features;
250 sl->idle_mask = sl_dev_id->idle_mask;
251 sl->sl_base += sl_dev_id->regs_offset;
253 return sl;
256 void cpsw_sl_reset(struct cpsw_sl *sl, unsigned long tmo)
261 cpsw_sl_reg_write(sl, CPSW_SL_SOFT_RESET, CPSW_SL_SOFT_RESET_BIT);
266 } while ((cpsw_sl_reg_read(sl, CPSW_SL_SOFT_RESET) &
270 if (cpsw_sl_reg_read(sl, CPSW_SL_SOFT_RESET) & CPSW_SL_SOFT_RESET_BIT)
271 dev_err(sl->dev, "cpsw_sl failed to soft-reset.\n");
274 u32 cpsw_sl_ctl_set(struct cpsw_sl *sl, u32 ctl_funcs)
278 if (ctl_funcs & ~sl->control_features) {
279 dev_err(sl->dev, "cpsw_sl: unsupported func 0x%08X\n",
280 ctl_funcs & (~sl->control_features));
284 val = cpsw_sl_reg_read(sl, CPSW_SL_MACCONTROL);
286 cpsw_sl_reg_write(sl, CPSW_SL_MACCONTROL, val);
291 u32 cpsw_sl_ctl_clr(struct cpsw_sl *sl, u32 ctl_funcs)
295 if (ctl_funcs & ~sl->control_features) {
296 dev_err(sl->dev, "cpsw_sl: unsupported func 0x%08X\n",
297 ctl_funcs & (~sl->control_features));
301 val = cpsw_sl_reg_read(sl, CPSW_SL_MACCONTROL);
303 cpsw_sl_reg_write(sl, CPSW_SL_MACCONTROL, val);
308 void cpsw_sl_ctl_reset(struct cpsw_sl *sl)
310 cpsw_sl_reg_write(sl, CPSW_SL_MACCONTROL, 0);
313 int cpsw_sl_wait_for_idle(struct cpsw_sl *sl, unsigned long tmo)
319 } while (!(cpsw_sl_reg_read(sl, CPSW_SL_MACSTATUS) &
320 sl->idle_mask) && time_after(timeout, jiffies));
322 if (!(cpsw_sl_reg_read(sl, CPSW_SL_MACSTATUS) & sl->idle_mask)) {
323 dev_err(sl->dev, "cpsw_sl failed to soft-reset.\n");