Decompression Compression Engine (DCE)
	The DCE is a freescale hardware accelerator that can be used to offload
	compression and decompression operations that use the DEFLATE algorithm

	The DCE is represented by objects called DPDCEI. All modules that do
	compression or decompression must get a handle to a dpdcei. All work
	necessary to get access and share DPDCEI objects is simplified in the
	DCE API documented in dce.h

	An example application of the API is dce_api_time_trial.c. It performs
	basic compression and decompression and prints performance metrics.

	All DCE access must be done through dce.h, the DCE API. the DCE API
	requires that DPDCEI resources are made available in the kernel before
	it is able to provide service. the following is an example of setting up
	dpdcei objects, running an application and tearing down the setup.

	Example:

	root@ls2080ardb:~# restool dpdcei create
	--engine=DPDCEI_ENGINE_COMPRESSION --priority=1
	dpdcei.0 is created under dprc.1
	root@ls2080ardb:~#
	root@ls2080ardb:~# restool dpdcei create
	--engine=DPDCEI_ENGINE_DECOMPRESSION --priority=1
	dpdcei.1 is created under dprc.1
	root@ls2080ardb:~#
	root@ls2080ardb:~# restool dprc assign dprc.1 --object=dpdcei.0
	--plugged=1
	root@ls2080ardb:~# restool dprc assign dprc.1 --object=dpdcei.1
	--plugged=1
	root@ls2080ardb:~#
	# In this example the DCE API was built as a module so it must be loaded
	# before we can load an application that uses it
	root@ls2080ardb:~# insmod fsl-dce-api.ko
	fsl_dce_api: module is from the staging directory, the
	quality is unknown, you have been warned.
	fsl_dce_api dpdcei.0: dpdcei probe
	fsl_dce_api dpdcei.0: DPDCEI: id=0, engine=COMPRESSION
	fsl_dce_api dpdcei.0: dpdcei: probed object 0
	fsl_dce_api dpdcei.1: dpdcei probe
	fsl_dce_api dpdcei.1: DPDCEI: id=1, engine=DECOMPRESSION
	fsl_dce_api dpdcei.1: dpdcei: probed object 1
	MC object device driver fsl_dce_api registered
	root@ls2080ardb:~#
	root@ls2080ardb:~# insmod fsl-dce-api-time-trial.ko
	fsl_dce_api_time_trial: module is from the staging directory, the
	quality is unknown, you have been warned.
	Running compression test for 30 seconds ...
	Number of work units 2320000, work unit size 8192, compression
	ratio (out/in) 31%
	DCE Driver API & DCE performance = 5037889993 bit/s and time is
	30180 ms
	Running decompression test for 30 seconds ...
	Number of work units 2720000, work unit size 2612, decompression
	ratio (out/in) 313%
	DCE Driver API & DCE performance = 5881158693 bit/s and time is
	30310 ms
	Original input matches decompressed data
	root@ls2080ardb:~#
	root@ls2080ardb:~# rmmod fsl-dce-api-time-trial.ko
	dce_api_time_trial_exit
	root@ls2080ardb:~#
	root@ls2080ardb:~# echo dpdcei.0 >
	/sys/bus/fsl-mc/drivers/fsl_dce_api/unbind
	root@ls2080ardb:~# echo dpdcei.1 >
	/sys/bus/fsl-mc/drivers/fsl_dce_api/unbind
	root@ls2080ardb:~#
	root@ls2080ardb:~# restool dprc assign dprc.1 --object=dpdcei.0
	--plugged=0
	root@ls2080ardb:~# restool dprc assign dprc.1 --object=dpdcei.1
	--plugged=0
	root@ls2080ardb:~#
	root@ls2080ardb:~# rmmod fsl-dce-api.ko
	root@ls2080ardb:~#
	root@ls2080ardb:~# restool dpdcei destroy dpdcei.0
	dpdcei.0 is destroyed
	root@ls2080ardb:~#
	root@ls2080ardb:~# restool dpdcei destroy dpdcei.1
	dpdcei.1 is destroyed
	root@ls2080ardb:~#

dce_api_time_trial
	A DCE performance test that sends as many work requests as possible in a
	given number of seconds. When the time is up the test waits for any
	remaining output from DCE and checks its integrity. Performance
	numbers are then printed. The test runs in two steps. One for
	compression and the second for decompression. The test can be packaged
	as a loadable module and it takes optional parameters that specify
	time length for test in seconds, the size of each work unit, whether
	the test should run in verbose mode, and the compression level from 0 to
	3. 3 being the best possible compression and 0 being no compression
	e.g. insmod fsl-dce-api-time-trial.ko data_len=4096 test_time=90
		verbose=1 level=3

Example Output
	[ 7163.118563] DCE Driver API performance = 24517064748 bit/s and time
	is 1390 ms
	## This time is for sending all of the commands through the DCE API
	driver

	[ 7163.125802] DCE Driver API & DCE performance = 3384182720 bit/s and time is
	10070 ms
	## This data is for the total time including sending all the requests
	and waiting and receiving all DCE API responses

	[ 7163.133552] DCE performance = 3384182720 bit/s and time is 10070 ms
	## This data is for the time from the first response received from the
	DCE Driver API to the reception of the last response from the DCE
	Driver API

	[ 7163.139822] Number of times we received EBUSY 100
	## This indicates the number of times the test was unable to send a
	request to DCE
