Lines Matching refs:devbus
80 struct devbus {
86 static int get_timing_param_ps(struct devbus *devbus,
96 dev_err(devbus->dev, "%pOF has no '%s' property\n",
101 *ticks = (time_ps + devbus->tick_ps - 1) / devbus->tick_ps;
103 dev_dbg(devbus->dev, "%s: %u ps -> 0x%x\n",
108 static int devbus_get_timing_params(struct devbus *devbus,
115 err = of_property_read_u32(node, "devbus,bus-width", &r->bus_width);
117 dev_err(devbus->dev,
118 "%pOF has no 'devbus,bus-width' property\n",
132 dev_err(devbus->dev, "invalid bus width %d\n", r->bus_width);
136 err = get_timing_param_ps(devbus, node, "devbus,badr-skew-ps",
141 err = get_timing_param_ps(devbus, node, "devbus,turn-off-ps",
146 err = get_timing_param_ps(devbus, node, "devbus,acc-first-ps",
151 err = get_timing_param_ps(devbus, node, "devbus,acc-next-ps",
156 if (of_device_is_compatible(devbus->dev->of_node, "marvell,mvebu-devbus")) {
157 err = get_timing_param_ps(devbus, node, "devbus,rd-setup-ps",
162 err = get_timing_param_ps(devbus, node, "devbus,rd-hold-ps",
167 err = of_property_read_u32(node, "devbus,sync-enable",
170 dev_err(devbus->dev,
171 "%pOF has no 'devbus,sync-enable' property\n",
177 err = get_timing_param_ps(devbus, node, "devbus,ale-wr-ps",
182 err = get_timing_param_ps(devbus, node, "devbus,wr-low-ps",
187 err = get_timing_param_ps(devbus, node, "devbus,wr-high-ps",
195 static void devbus_orion_set_timing_params(struct devbus *devbus,
225 writel(value, devbus->base);
228 static void devbus_armada_set_timing_params(struct devbus *devbus,
244 dev_dbg(devbus->dev, "read parameters register 0x%p = 0x%x\n",
245 devbus->base + ARMADA_READ_PARAM_OFFSET,
248 writel(value, devbus->base + ARMADA_READ_PARAM_OFFSET);
256 dev_dbg(devbus->dev, "write parameters register: 0x%p = 0x%x\n",
257 devbus->base + ARMADA_WRITE_PARAM_OFFSET,
260 writel(value, devbus->base + ARMADA_WRITE_PARAM_OFFSET);
269 struct devbus *devbus;
274 devbus = devm_kzalloc(&pdev->dev, sizeof(struct devbus), GFP_KERNEL);
275 if (!devbus)
278 devbus->dev = dev;
279 devbus->base = devm_platform_ioremap_resource(pdev, 0);
280 if (IS_ERR(devbus->base))
281 return PTR_ERR(devbus->base);
293 devbus->tick_ps = 1000000000 / rate;
295 dev_dbg(devbus->dev, "Setting timing parameter, tick is %lu ps\n",
296 devbus->tick_ps);
298 if (!of_property_read_bool(node, "devbus,keep-config")) {
300 err = devbus_get_timing_params(devbus, node, &r, &w);
305 if (of_device_is_compatible(node, "marvell,orion-devbus"))
306 devbus_orion_set_timing_params(devbus, node, &r, &w);
308 devbus_armada_set_timing_params(devbus, node, &r, &w);
324 { .compatible = "marvell,mvebu-devbus" },
325 { .compatible = "marvell,orion-devbus" },
333 .name = "mvebu-devbus",