rwtm               76 drivers/firmware/turris-mox-rwtm.c 	struct mox_rwtm *rwtm;
rwtm               79 drivers/firmware/turris-mox-rwtm.c static inline struct kobject *rwtm_to_kobj(struct mox_rwtm *rwtm)
rwtm               81 drivers/firmware/turris-mox-rwtm.c 	return &rwtm->kobj->kobj;
rwtm               86 drivers/firmware/turris-mox-rwtm.c 	return container_of(kobj, struct mox_kobject, kobj)->rwtm;
rwtm               99 drivers/firmware/turris-mox-rwtm.c static int mox_kobj_create(struct mox_rwtm *rwtm)
rwtm              101 drivers/firmware/turris-mox-rwtm.c 	rwtm->kobj = kzalloc(sizeof(*rwtm->kobj), GFP_KERNEL);
rwtm              102 drivers/firmware/turris-mox-rwtm.c 	if (!rwtm->kobj)
rwtm              105 drivers/firmware/turris-mox-rwtm.c 	kobject_init(rwtm_to_kobj(rwtm), &mox_kobj_ktype);
rwtm              106 drivers/firmware/turris-mox-rwtm.c 	if (kobject_add(rwtm_to_kobj(rwtm), firmware_kobj, "turris-mox-rwtm")) {
rwtm              107 drivers/firmware/turris-mox-rwtm.c 		kobject_put(rwtm_to_kobj(rwtm));
rwtm              111 drivers/firmware/turris-mox-rwtm.c 	rwtm->kobj->rwtm = rwtm;
rwtm              121 drivers/firmware/turris-mox-rwtm.c 	struct mox_rwtm *rwtm = to_rwtm(kobj);	\
rwtm              122 drivers/firmware/turris-mox-rwtm.c 	if (!rwtm->has_##cat)					\
rwtm              124 drivers/firmware/turris-mox-rwtm.c 	return sprintf(buf, format, rwtm->name);		\
rwtm              158 drivers/firmware/turris-mox-rwtm.c 	struct mox_rwtm *rwtm = dev_get_drvdata(cl->dev);
rwtm              161 drivers/firmware/turris-mox-rwtm.c 	rwtm->reply = *msg;
rwtm              162 drivers/firmware/turris-mox-rwtm.c 	complete(&rwtm->cmd_done);
rwtm              175 drivers/firmware/turris-mox-rwtm.c static int mox_get_board_info(struct mox_rwtm *rwtm)
rwtm              178 drivers/firmware/turris-mox-rwtm.c 	struct armada_37xx_rwtm_rx_msg *reply = &rwtm->reply;
rwtm              182 drivers/firmware/turris-mox-rwtm.c 	ret = mbox_send_message(rwtm->mbox, &msg);
rwtm              186 drivers/firmware/turris-mox-rwtm.c 	ret = wait_for_completion_timeout(&rwtm->cmd_done, HZ / 2);
rwtm              194 drivers/firmware/turris-mox-rwtm.c 		dev_warn(rwtm->dev,
rwtm              197 drivers/firmware/turris-mox-rwtm.c 		rwtm->serial_number = reply->status[1];
rwtm              198 drivers/firmware/turris-mox-rwtm.c 		rwtm->serial_number <<= 32;
rwtm              199 drivers/firmware/turris-mox-rwtm.c 		rwtm->serial_number |= reply->status[0];
rwtm              200 drivers/firmware/turris-mox-rwtm.c 			rwtm->board_version = reply->status[2];
rwtm              201 drivers/firmware/turris-mox-rwtm.c 		rwtm->ram_size = reply->status[3];
rwtm              202 drivers/firmware/turris-mox-rwtm.c 		reply_to_mac_addr(rwtm->mac_address1, reply->status[4],
rwtm              204 drivers/firmware/turris-mox-rwtm.c 		reply_to_mac_addr(rwtm->mac_address2, reply->status[6],
rwtm              206 drivers/firmware/turris-mox-rwtm.c 		rwtm->has_board_info = 1;
rwtm              209 drivers/firmware/turris-mox-rwtm.c 			rwtm->serial_number);
rwtm              210 drivers/firmware/turris-mox-rwtm.c 		pr_info("           board version %i\n", rwtm->board_version);
rwtm              211 drivers/firmware/turris-mox-rwtm.c 		pr_info("           burned RAM size %i MiB\n", rwtm->ram_size);
rwtm              215 drivers/firmware/turris-mox-rwtm.c 	ret = mbox_send_message(rwtm->mbox, &msg);
rwtm              219 drivers/firmware/turris-mox-rwtm.c 	ret = wait_for_completion_timeout(&rwtm->cmd_done, HZ / 2);
rwtm              227 drivers/firmware/turris-mox-rwtm.c 		dev_warn(rwtm->dev, "Board has no public key burned!\n");
rwtm              231 drivers/firmware/turris-mox-rwtm.c 		rwtm->has_pubkey = 1;
rwtm              232 drivers/firmware/turris-mox-rwtm.c 		sprintf(rwtm->pubkey,
rwtm              243 drivers/firmware/turris-mox-rwtm.c 	struct mox_rwtm *rwtm = (struct mox_rwtm *) rng->priv;
rwtm              252 drivers/firmware/turris-mox-rwtm.c 	msg.args[1] = rwtm->buf_phys;
rwtm              256 drivers/firmware/turris-mox-rwtm.c 		if (!mutex_trylock(&rwtm->busy))
rwtm              259 drivers/firmware/turris-mox-rwtm.c 		mutex_lock(&rwtm->busy);
rwtm              262 drivers/firmware/turris-mox-rwtm.c 	ret = mbox_send_message(rwtm->mbox, &msg);
rwtm              266 drivers/firmware/turris-mox-rwtm.c 	ret = wait_for_completion_interruptible(&rwtm->cmd_done);
rwtm              270 drivers/firmware/turris-mox-rwtm.c 	ret = mox_get_status(MBOX_CMD_GET_RANDOM, rwtm->reply.retval);
rwtm              274 drivers/firmware/turris-mox-rwtm.c 	memcpy(data, rwtm->buf, max);
rwtm              278 drivers/firmware/turris-mox-rwtm.c 	mutex_unlock(&rwtm->busy);
rwtm              284 drivers/firmware/turris-mox-rwtm.c 	struct mox_rwtm *rwtm;
rwtm              288 drivers/firmware/turris-mox-rwtm.c 	rwtm = devm_kzalloc(dev, sizeof(*rwtm), GFP_KERNEL);
rwtm              289 drivers/firmware/turris-mox-rwtm.c 	if (!rwtm)
rwtm              292 drivers/firmware/turris-mox-rwtm.c 	rwtm->dev = dev;
rwtm              293 drivers/firmware/turris-mox-rwtm.c 	rwtm->buf = dmam_alloc_coherent(dev, PAGE_SIZE, &rwtm->buf_phys,
rwtm              295 drivers/firmware/turris-mox-rwtm.c 	if (!rwtm->buf)
rwtm              298 drivers/firmware/turris-mox-rwtm.c 	ret = mox_kobj_create(rwtm);
rwtm              304 drivers/firmware/turris-mox-rwtm.c 	ret = sysfs_create_files(rwtm_to_kobj(rwtm), mox_rwtm_attrs);
rwtm              310 drivers/firmware/turris-mox-rwtm.c 	platform_set_drvdata(pdev, rwtm);
rwtm              312 drivers/firmware/turris-mox-rwtm.c 	mutex_init(&rwtm->busy);
rwtm              314 drivers/firmware/turris-mox-rwtm.c 	rwtm->mbox_client.dev = dev;
rwtm              315 drivers/firmware/turris-mox-rwtm.c 	rwtm->mbox_client.rx_callback = mox_rwtm_rx_callback;
rwtm              317 drivers/firmware/turris-mox-rwtm.c 	rwtm->mbox = mbox_request_channel(&rwtm->mbox_client, 0);
rwtm              318 drivers/firmware/turris-mox-rwtm.c 	if (IS_ERR(rwtm->mbox)) {
rwtm              319 drivers/firmware/turris-mox-rwtm.c 		ret = PTR_ERR(rwtm->mbox);
rwtm              326 drivers/firmware/turris-mox-rwtm.c 	init_completion(&rwtm->cmd_done);
rwtm              328 drivers/firmware/turris-mox-rwtm.c 	ret = mox_get_board_info(rwtm);
rwtm              332 drivers/firmware/turris-mox-rwtm.c 	rwtm->hwrng.name = DRIVER_NAME "_hwrng";
rwtm              333 drivers/firmware/turris-mox-rwtm.c 	rwtm->hwrng.read = mox_hwrng_read;
rwtm              334 drivers/firmware/turris-mox-rwtm.c 	rwtm->hwrng.priv = (unsigned long) rwtm;
rwtm              335 drivers/firmware/turris-mox-rwtm.c 	rwtm->hwrng.quality = 1024;
rwtm              337 drivers/firmware/turris-mox-rwtm.c 	ret = devm_hwrng_register(dev, &rwtm->hwrng);
rwtm              346 drivers/firmware/turris-mox-rwtm.c 	mbox_free_channel(rwtm->mbox);
rwtm              348 drivers/firmware/turris-mox-rwtm.c 	sysfs_remove_files(rwtm_to_kobj(rwtm), mox_rwtm_attrs);
rwtm              350 drivers/firmware/turris-mox-rwtm.c 	kobject_put(rwtm_to_kobj(rwtm));
rwtm              356 drivers/firmware/turris-mox-rwtm.c 	struct mox_rwtm *rwtm = platform_get_drvdata(pdev);
rwtm              358 drivers/firmware/turris-mox-rwtm.c 	sysfs_remove_files(rwtm_to_kobj(rwtm), mox_rwtm_attrs);
rwtm              359 drivers/firmware/turris-mox-rwtm.c 	kobject_put(rwtm_to_kobj(rwtm));
rwtm              360 drivers/firmware/turris-mox-rwtm.c 	mbox_free_channel(rwtm->mbox);