Example #1
0
void
serialVFD_close_parallel (Driver *drvthis)
{
#ifdef HAVE_PCSTYLE_LPT_CONTROL
	PrivateData *p = drvthis->private_data;

	debug(RPT_DEBUG, "%s: Closing parallelport at: 0x%X", __FUNCTION__, p->port);
	if (port_deny_multiple(p->port,3)) {
		report(RPT_ERR, "%s: port_deny_multiple() of 0x%X failed (%s)\n", __FUNCTION__, p->port, strerror(errno));
	}
#endif
}
/**
 * API: Close the driver (do necessary clean-up).
 */
MODULE_EXPORT void
sdeclcd_close(Driver *drvthis)
{
	PrivateData *p = (PrivateData *) drvthis->private_data;

	if (p) {
		if (p->framebuf)
			free(p->framebuf);
		if (p->framelcd)
			free(p->framelcd);
		if (p->vbar_cg)
			free(p->vbar_cg);
		if (p->hbar_cg)
			free(p->hbar_cg);
		free(p);
	}

	if (!port_deny_multiple(LPT_DEFAULT, 3)) {
		report(RPT_WARNING, "%s: cannot release IO-permission for 0x%03X!",
		       drvthis->name, LPT_DEFAULT);
	}
	drvthis->store_private_ptr(drvthis, NULL);
}