Qualcomm Femtocell (FSM99XX) Peripheral Image Loader

pil-femto-modem is a peripheral image loader (PIL) driver. It is used for
loading firmware images on multiple modems resident on the FSM99XX platform.

The top-level device tree entry has the following properties:

Required properties:
- compatible:           Must be "qcom,pil-femto-modem".
- reg:                  Pair of physical base address and region size of the
                        QDSP6[0] control registers.
- reg-names:            "qdsp6_base" is required.
- qcom,firmware-name:   Base name of the MBA firmware image ("mba").
                        Maximum size is 4 characters.
- qcom,max-num-modems:  Number of modem child nodes specified.

One child node per modem that must be loaded is required.

Required properties:
- compatible:           Must be "qcom,pil-femto-modem-desc".
- reg:                  Pair of physical base address and region size of the
                        Relay Message Buffer (RMB) registers for this modem.
- reg-names:            "rmb_base" is required.
- qcom,firmware-name:   Base filename of the firmware image (e.g. "mdm0").
                        Maximum size is 4 characters.
- qcom,modem-id:        Unique ID of this modem.  This is not a logical
                        index.
- qcom,max-num-images:  The maximum number of images that will be loaded to
                        this modem.
Optional properties:
- qcom,pil-skip-entry-check:
                        Some entry pointers are virtual addresses,
                        which will cause the PIL entry address check
                        to fail.  This parameter will disable the
                        check.
- qcom,restart-group: List of subsystems that will need to restart together.

Example:
        qcom,modem-femto@fbc00000 {
                compatible = "qcom,pil-femto-modem";
                #address-cells=<1>;
                #size-cells=<1>;
                ranges;
                reg = <0xfbc00000 0x100>;
                reg-names = "qdsp6_base";
                qcom,firmware-name = "mba";
                qcom,max-num-modems = <5>;

                qcom,modem@fd4a7000 {
                        compatible = "qcom,pil-femto-modem-desc";
                        reg = <0xfd4a7000 0x20>;
                        reg-names = "rmb_base";
                        qcom,firmware-name = "mdm0";
                        qcom,modem-id = <0>;
                        qcom,max-num-images = <1>;
                };

                qcom,modem@fd4a7030 {
                        compatible = "qcom,pil-femto-modem-desc";
                        reg = <0xfd4a7030 0x20>;
                        reg-names = "rmb_base";
                        qcom,firmware-name = "mdm1";
                        qcom,modem-id = <1>;
                        qcom,max-num-images = <1>;
                };

                qcom,modem@fd4a7060 {
                        compatible = "qcom,pil-femto-modem-desc";
                        reg = <0xfd4a7060 0x20>;
                        reg-names = "rmb_base";
                        qcom,firmware-name = "mdm2";
                        qcom,modem-id = <2>;
                        qcom,max-num-images = <1>;
                };

                qcom,modem@fd4a7090 {
                        compatible = "qcom,pil-femto-modem-desc";
                        reg = <0xfd4a7090 0x20>;
                        reg-names = "rmb_base";
                        qcom,firmware-name = "mdm3";
                        qcom,modem-id = <3>;
                        qcom,max-num-images = <1>;
                };

                qcom,modem@fd4a70c0 {
                        compatible = "qcom,pil-femto-modem-desc";
                        reg = <0xfd4a70c0 0x20>;
                        reg-names = "rmb_base";
                        qcom,firmware-name = "mdm4";
                        qcom,modem-id = <4>;
                        qcom,max-num-images = <8>;
                        qcom,pil-skip-entry-check;
                };
        };
