Lines Matching full:engine

3  * Generic Error-Correcting Code (ECC) engine
10 * This file describes the abstraction of any NAND ECC engine. It has been
13 * There are three main situations where instantiating this ECC engine makes
15 * - external: The ECC engine is outside the NAND pipeline, typically this
16 * is a software ECC engine, or an hardware engine that is
18 * - pipelined: The ECC engine is inside the NAND pipeline, ie. on the
23 * - ondie: The ECC engine is inside the NAND pipeline, on the chip's side.
28 * - prepare: Prepare an I/O request. Enable/disable the ECC engine based on
30 * engine, this step may involve to derive the ECC bytes and place
35 * hardware specific stuff to do, like shutting down the engine to
51 * [external ECC engine]
65 * [pipelined ECC engine]
66 * - pipelined + prepare + raw + read: disable the controller's ECC engine if
69 * - pipelined + prepare + raw + write: disable the controller's ECC engine if
72 * - pipelined + prepare + ecc + read: enable the controller's ECC engine if
76 * - pipelined + prepare + ecc + write: enable the controller's ECC engine if
80 * [ondie ECC engine]
82 * engine if activated
85 * engine if activated
88 * engine if deactivated
92 * engine if deactivated
107 * nand_ecc_init_ctx - Init the ECC engine context
114 if (!nand->ecc.engine || !nand->ecc.engine->ops->init_ctx) in nand_ecc_init_ctx()
117 return nand->ecc.engine->ops->init_ctx(nand); in nand_ecc_init_ctx()
122 * nand_ecc_cleanup_ctx - Cleanup the ECC engine context
127 if (nand->ecc.engine && nand->ecc.engine->ops->cleanup_ctx) in nand_ecc_cleanup_ctx()
128 nand->ecc.engine->ops->cleanup_ctx(nand); in nand_ecc_cleanup_ctx()
140 if (!nand->ecc.engine || !nand->ecc.engine->ops->prepare_io_req) in nand_ecc_prepare_io_req()
143 return nand->ecc.engine->ops->prepare_io_req(nand, req); in nand_ecc_prepare_io_req()
155 if (!nand->ecc.engine || !nand->ecc.engine->ops->finish_io_req) in nand_ecc_finish_io_req()
158 return nand->ecc.engine->ops->finish_io_req(nand, req); in nand_ecc_finish_io_req()
343 if (of_property_read_bool(np, "nand-no-ecc-engine")) in of_get_nand_ecc_engine_type()
346 if (of_property_read_bool(np, "nand-use-soft-ecc-engine")) in of_get_nand_ecc_engine_type()
349 eng_np = of_parse_phandle(np, "nand-ecc-engine", 0); in of_get_nand_ecc_engine_type()
489 /* ECC engine driver internal helpers */
620 int nand_ecc_register_on_host_hw_engine(struct nand_ecc_engine *engine) in nand_ecc_register_on_host_hw_engine() argument
624 if (!engine) in nand_ecc_register_on_host_hw_engine()
627 /* Prevent multiple registrations of one engine */ in nand_ecc_register_on_host_hw_engine()
629 if (item == engine) in nand_ecc_register_on_host_hw_engine()
633 list_add_tail(&engine->node, &on_host_hw_engines); in nand_ecc_register_on_host_hw_engine()
640 int nand_ecc_unregister_on_host_hw_engine(struct nand_ecc_engine *engine) in nand_ecc_unregister_on_host_hw_engine() argument
642 if (!engine) in nand_ecc_unregister_on_host_hw_engine()
646 list_del(&engine->node); in nand_ecc_unregister_on_host_hw_engine()
666 struct nand_ecc_engine *engine = NULL; in nand_ecc_get_on_host_hw_engine() local
674 /* Check for an explicit nand-ecc-engine property */ in nand_ecc_get_on_host_hw_engine()
675 np = of_parse_phandle(dev->of_node, "nand-ecc-engine", 0); in nand_ecc_get_on_host_hw_engine()
681 engine = nand_ecc_match_on_host_hw_engine(&pdev->dev); in nand_ecc_get_on_host_hw_engine()
685 if (!engine) in nand_ecc_get_on_host_hw_engine()
689 if (engine) in nand_ecc_get_on_host_hw_engine()
690 get_device(engine->dev); in nand_ecc_get_on_host_hw_engine()
692 return engine; in nand_ecc_get_on_host_hw_engine()
698 put_device(nand->ecc.engine->dev); in nand_ecc_put_on_host_hw_engine()
703 * In the case of a pipelined engine, the device registering the ECC
704 * engine is not necessarily the ECC engine itself but may be a host controller.
706 * which actually represents the ECC engine.
715 * it in order to get the right ECC engine device we are looking for. in nand_ecc_get_engine_dev()
717 np = of_parse_phandle(host->of_node, "nand-ecc-engine", 0); in nand_ecc_get_engine_dev()
735 MODULE_DESCRIPTION("Generic ECC engine");