drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
And also, add firehose support since SDX72.
Signed-off-by: Slark Xiao <slark_xiao@163.com>
---
drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
index 08844ee79654..0fd94c193fc6 100644
--- a/drivers/bus/mhi/host/pci_generic.c
+++ b/drivers/bus/mhi/host/pci_generic.c
@@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
+ MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
+ MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
};
@@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
.event_cfg = mhi_foxconn_sdx55_events,
};
+static const struct mhi_controller_config modem_foxconn_sdx72_config = {
+ .max_channels = 128,
+ .timeout_ms = 20000,
+ .ready_timeout_ms = 50000,
+ .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
+ .ch_cfg = mhi_foxconn_sdx55_channels,
+ .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
+ .event_cfg = mhi_foxconn_sdx55_events,
+};
+
static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
.name = "foxconn-sdx24",
.config = &modem_foxconn_sdx55_config,
@@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
.sideband_wake = false,
};
+static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
+ .name = "foxconn-sdx72",
+ .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
+ .config = &modem_foxconn_sdx72_config,
+ .bar_num = MHI_PCI_DEFAULT_BAR_NUM,
+ .dma_data_width = 32,
+ .mru_default = 32768,
+ .sideband_wake = false,
+};
+
static const struct mhi_channel_config mhi_mv3x_channels[] = {
MHI_CHANNEL_CONFIG_UL(0, "LOOPBACK", 64, 0),
MHI_CHANNEL_CONFIG_DL(1, "LOOPBACK", 64, 0),
@@ -680,6 +702,15 @@ static const struct pci_device_id mhi_pci_id_table[] = {
/* DW5932e (sdx62), Non-eSIM */
{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0f9),
.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx65_info },
+ /* T99W515 (sdx72) */
+ { PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe118),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_sdx72_info },
+ /* DW5934e(sdx72), With eSIM */
+ { PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe11d),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_sdx72_info },
+ /* DW5934e(sdx72), Non-eSIM */
+ { PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe11e),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_sdx72_info },
/* MV31-W (Cinterion) */
{ PCI_DEVICE(PCI_VENDOR_ID_THALES, 0x00b3),
.driver_data = (kernel_ulong_t) &mhi_mv31_info },
--
2.25.1
On Fri, May 10, 2024 at 11:26:57AM +0800, Slark Xiao wrote:
> Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
> And also, add firehose support since SDX72.
>
> Signed-off-by: Slark Xiao <slark_xiao@163.com>
> ---
> drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
> 1 file changed, 31 insertions(+)
>
> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
> index 08844ee79654..0fd94c193fc6 100644
> --- a/drivers/bus/mhi/host/pci_generic.c
> +++ b/drivers/bus/mhi/host/pci_generic.c
> @@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
> MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
> MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
> MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
> + MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
> + MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
This means SDX55 is also supporting FIREHOSE channels, which is not true I
believe.
> MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
> MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
> };
> @@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
> .event_cfg = mhi_foxconn_sdx55_events,
> };
>
> +static const struct mhi_controller_config modem_foxconn_sdx72_config = {
> + .max_channels = 128,
> + .timeout_ms = 20000,
> + .ready_timeout_ms = 50000,
> + .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
> + .ch_cfg = mhi_foxconn_sdx55_channels,
> + .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
> + .event_cfg = mhi_foxconn_sdx55_events,
> +};
> +
> static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
> .name = "foxconn-sdx24",
> .config = &modem_foxconn_sdx55_config,
> @@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
> .sideband_wake = false,
> };
>
> +static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
> + .name = "foxconn-sdx72",
> + .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
What is '.melf'? Is the firmware available somewhere? Did you plan to upstream
it to linux-firmware?
- Mani
--
மணிவண்ணன் சதாசிவம்
At 2024-05-14 22:37:41, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
>On Fri, May 10, 2024 at 11:26:57AM +0800, Slark Xiao wrote:
>> Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
>> And also, add firehose support since SDX72.
>>
>> Signed-off-by: Slark Xiao <slark_xiao@163.com>
>> ---
>> drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
>> 1 file changed, 31 insertions(+)
>>
>> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
>> index 08844ee79654..0fd94c193fc6 100644
>> --- a/drivers/bus/mhi/host/pci_generic.c
>> +++ b/drivers/bus/mhi/host/pci_generic.c
>> @@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
>> MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
>> MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
>> MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
>> + MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
>> + MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
>
>This means SDX55 is also supporting FIREHOSE channels, which is not true I
>believe.
Actually, I just verified it with my sdx55 and the answer is Yes. These channels
are common settings for Qcom device which support PCIe mode. BTW, the
default settings of Qcom and Quectel support firehose for their sdx55 products.
>
>> MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
>> MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
>> };
>> @@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
>> .event_cfg = mhi_foxconn_sdx55_events,
>> };
>>
>> +static const struct mhi_controller_config modem_foxconn_sdx72_config = {
>> + .max_channels = 128,
>> + .timeout_ms = 20000,
>> + .ready_timeout_ms = 50000,
>> + .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
>> + .ch_cfg = mhi_foxconn_sdx55_channels,
>> + .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
>> + .event_cfg = mhi_foxconn_sdx55_events,
>> +};
>> +
>> static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
>> .name = "foxconn-sdx24",
>> .config = &modem_foxconn_sdx55_config,
>> @@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
>> .sideband_wake = false,
>> };
>>
>> +static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
>> + .name = "foxconn-sdx72",
>> + .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
>
>What is '.melf'? Is the firmware available somewhere? Did you plan to upstream
>it to linux-firmware?
>
This file similar with "edl.mbn". In SDX72 product, the default "edl" file name is
"xbl_s_devprg_ns.melf". Currently we don't plan to upstream it to linux-firmware
since 2 reasons: 1: we share the same fold name sdx72m with qcom or other vendors
2: this file may be changed since sdx72 product still under developing in our side. we
may change the base line according to QCOM release.
>- Mani
>
>--
>மணிவண்ணன் சதாசிவம்
+ Qiang
On Wed, May 15, 2024 at 09:29:20AM +0800, Slark Xiao wrote:
> At 2024-05-14 22:37:41, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
> >On Fri, May 10, 2024 at 11:26:57AM +0800, Slark Xiao wrote:
> >> Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
> >> And also, add firehose support since SDX72.
> >>
> >> Signed-off-by: Slark Xiao <slark_xiao@163.com>
> >> ---
> >> drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
> >> 1 file changed, 31 insertions(+)
> >>
> >> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
> >> index 08844ee79654..0fd94c193fc6 100644
> >> --- a/drivers/bus/mhi/host/pci_generic.c
> >> +++ b/drivers/bus/mhi/host/pci_generic.c
> >> @@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
> >> MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
> >> MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
> >> MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
> >> + MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
> >> + MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
> >
> >This means SDX55 is also supporting FIREHOSE channels, which is not true I
> >believe.
> Actually, I just verified it with my sdx55 and the answer is Yes. These channels
> are common settings for Qcom device which support PCIe mode. BTW, the
> default settings of Qcom and Quectel support firehose for their sdx55 products.
Qiang, can you please confirm that SDX55 supports FIREHOSE channels?
> >
> >> MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
> >> MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
> >> };
> >> @@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
> >> .event_cfg = mhi_foxconn_sdx55_events,
> >> };
> >>
> >> +static const struct mhi_controller_config modem_foxconn_sdx72_config = {
> >> + .max_channels = 128,
> >> + .timeout_ms = 20000,
> >> + .ready_timeout_ms = 50000,
> >> + .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
> >> + .ch_cfg = mhi_foxconn_sdx55_channels,
> >> + .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
> >> + .event_cfg = mhi_foxconn_sdx55_events,
> >> +};
> >> +
> >> static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
> >> .name = "foxconn-sdx24",
> >> .config = &modem_foxconn_sdx55_config,
> >> @@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
> >> .sideband_wake = false,
> >> };
> >>
> >> +static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
> >> + .name = "foxconn-sdx72",
> >> + .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
> >
> >What is '.melf'? Is the firmware available somewhere? Did you plan to upstream
> >it to linux-firmware?
> >
> This file similar with "edl.mbn". In SDX72 product, the default "edl" file name is
> "xbl_s_devprg_ns.melf". Currently we don't plan to upstream it to linux-firmware
> since 2 reasons: 1: we share the same fold name sdx72m with qcom or other vendors
> 2: this file may be changed since sdx72 product still under developing in our side. we
> may change the base line according to QCOM release.
Then I would ask you to add support when you have a stable firmware. I do not
want to change the firmware name after some time as it will confuse users.
- Mani
--
மணிவண்ணன் சதாசிவம்
On 5/15/2024 3:41 PM, Manivannan Sadhasivam wrote:
> + Qiang
>
> On Wed, May 15, 2024 at 09:29:20AM +0800, Slark Xiao wrote:
>> At 2024-05-14 22:37:41, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
>>> On Fri, May 10, 2024 at 11:26:57AM +0800, Slark Xiao wrote:
>>>> Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
>>>> And also, add firehose support since SDX72.
>>>>
>>>> Signed-off-by: Slark Xiao <slark_xiao@163.com>
>>>> ---
>>>> drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
>>>> 1 file changed, 31 insertions(+)
>>>>
>>>> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
>>>> index 08844ee79654..0fd94c193fc6 100644
>>>> --- a/drivers/bus/mhi/host/pci_generic.c
>>>> +++ b/drivers/bus/mhi/host/pci_generic.c
>>>> @@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
>>>> MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
>>>> MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
>>>> MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
>>>> + MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
>>>> + MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
>>> This means SDX55 is also supporting FIREHOSE channels, which is not true I
>>> believe.
>> Actually, I just verified it with my sdx55 and the answer is Yes. These channels
>> are common settings for Qcom device which support PCIe mode. BTW, the
>> default settings of Qcom and Quectel support firehose for their sdx55 products.
> Qiang, can you please confirm that SDX55 supports FIREHOSE channels?
Hi Mani
Yes, SDX55 supports FIREHOSE channels.
Thanks,
Qiang
>
>>>> MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
>>>> MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
>>>> };
>>>> @@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
>>>> .event_cfg = mhi_foxconn_sdx55_events,
>>>> };
>>>>
>>>> +static const struct mhi_controller_config modem_foxconn_sdx72_config = {
>>>> + .max_channels = 128,
>>>> + .timeout_ms = 20000,
>>>> + .ready_timeout_ms = 50000,
>>>> + .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
>>>> + .ch_cfg = mhi_foxconn_sdx55_channels,
>>>> + .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
>>>> + .event_cfg = mhi_foxconn_sdx55_events,
>>>> +};
>>>> +
>>>> static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
>>>> .name = "foxconn-sdx24",
>>>> .config = &modem_foxconn_sdx55_config,
>>>> @@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
>>>> .sideband_wake = false,
>>>> };
>>>>
>>>> +static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
>>>> + .name = "foxconn-sdx72",
>>>> + .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
>>> What is '.melf'? Is the firmware available somewhere? Did you plan to upstream
>>> it to linux-firmware?
>>>
>> This file similar with "edl.mbn". In SDX72 product, the default "edl" file name is
>> "xbl_s_devprg_ns.melf". Currently we don't plan to upstream it to linux-firmware
>> since 2 reasons: 1: we share the same fold name sdx72m with qcom or other vendors
>> 2: this file may be changed since sdx72 product still under developing in our side. we
>> may change the base line according to QCOM release.
> Then I would ask you to add support when you have a stable firmware. I do not
> want to change the firmware name after some time as it will confuse users.
>
> - Mani
>
At 2024-05-15 15:41:19, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
>+ Qiang
>
>On Wed, May 15, 2024 at 09:29:20AM +0800, Slark Xiao wrote:
>> At 2024-05-14 22:37:41, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
>> >On Fri, May 10, 2024 at 11:26:57AM +0800, Slark Xiao wrote:
>> >> Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
>> >> And also, add firehose support since SDX72.
>> >>
>> >> Signed-off-by: Slark Xiao <slark_xiao@163.com>
>> >> ---
>> >> drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
>> >> 1 file changed, 31 insertions(+)
>> >>
>> >> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
>> >> index 08844ee79654..0fd94c193fc6 100644
>> >> --- a/drivers/bus/mhi/host/pci_generic.c
>> >> +++ b/drivers/bus/mhi/host/pci_generic.c
>> >> @@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
>> >> MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
>> >> MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
>> >> MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
>> >> + MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
>> >> + MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
>> >
>> >This means SDX55 is also supporting FIREHOSE channels, which is not true I
>> >believe.
>> Actually, I just verified it with my sdx55 and the answer is Yes. These channels
>> are common settings for Qcom device which support PCIe mode. BTW, the
>> default settings of Qcom and Quectel support firehose for their sdx55 products.
>
>Qiang, can you please confirm that SDX55 supports FIREHOSE channels?
>
>> >
>> >> MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
>> >> MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
>> >> };
>> >> @@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
>> >> .event_cfg = mhi_foxconn_sdx55_events,
>> >> };
>> >>
>> >> +static const struct mhi_controller_config modem_foxconn_sdx72_config = {
>> >> + .max_channels = 128,
>> >> + .timeout_ms = 20000,
>> >> + .ready_timeout_ms = 50000,
>> >> + .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
>> >> + .ch_cfg = mhi_foxconn_sdx55_channels,
>> >> + .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
>> >> + .event_cfg = mhi_foxconn_sdx55_events,
>> >> +};
>> >> +
>> >> static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
>> >> .name = "foxconn-sdx24",
>> >> .config = &modem_foxconn_sdx55_config,
>> >> @@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
>> >> .sideband_wake = false,
>> >> };
>> >>
>> >> +static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
>> >> + .name = "foxconn-sdx72",
>> >> + .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
>> >
>> >What is '.melf'? Is the firmware available somewhere? Did you plan to upstream
>> >it to linux-firmware?
>> >
>> This file similar with "edl.mbn". In SDX72 product, the default "edl" file name is
>> "xbl_s_devprg_ns.melf". Currently we don't plan to upstream it to linux-firmware
>> since 2 reasons: 1: we share the same fold name sdx72m with qcom or other vendors
>> 2: this file may be changed since sdx72 product still under developing in our side. we
>> may change the base line according to QCOM release.
>
>Then I would ask you to add support when you have a stable firmware. I do not
>want to change the firmware name after some time as it will confuse users.
>
>- Mani
If a stable firmware must be provided, I think I shall change the folder name from qcom to
fox, do you agree this?
BTW, I need to check if it works after updating 'edl fw' from xbl_s_devprg_ns.melf to
edl.mbn.
>
>--
>மணிவண்ணன் சதாசிவம்
Send again with text mode.
At 2024-05-15 09:29:20, "Slark Xiao" <slark_xiao@163.com> wrote:
>At 2024-05-14 22:37:41, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
>>On Fri, May 10, 2024 at 11:26:57AM +0800, Slark Xiao wrote:
>>> Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
>>> And also, add firehose support since SDX72.
>>>
>>> Signed-off-by: Slark Xiao <slark_xiao@163.com>
>>> ---
>>> drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
>>> 1 file changed, 31 insertions(+)
>>>
>>> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
>>> index 08844ee79654..0fd94c193fc6 100644
>>> --- a/drivers/bus/mhi/host/pci_generic.c
>>> +++ b/drivers/bus/mhi/host/pci_generic.c
>>> @@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
>>> MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
>>> MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
>>> MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
>>> + MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
>>> + MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
>>
>>This means SDX55 is also supporting FIREHOSE channels, which is not true I
>>believe.
>Actually, I just verified it with my sdx55 and the answer is Yes. These channels
>are common settings for Qcom device which support PCIe mode. BTW, the
>default settings of Qcom and Quectel support firehose for their sdx55 products.
>>
>>> MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
>>> MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
>>> };
>>> @@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
>>> .event_cfg = mhi_foxconn_sdx55_events,
>>> };
>>>
>>> +static const struct mhi_controller_config modem_foxconn_sdx72_config = {
>>> + .max_channels = 128,
>>> + .timeout_ms = 20000,
>>> + .ready_timeout_ms = 50000,
>>> + .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
>>> + .ch_cfg = mhi_foxconn_sdx55_channels,
>>> + .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
>>> + .event_cfg = mhi_foxconn_sdx55_events,
>>> +};
>>> +
>>> static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
>>> .name = "foxconn-sdx24",
>>> .config = &modem_foxconn_sdx55_config,
>>> @@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
>>> .sideband_wake = false,
>>> };
>>>
>>> +static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
>>> + .name = "foxconn-sdx72",
>>> + .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
>>
>>What is '.melf'? Is the firmware available somewhere? Did you plan to upstream
>>it to linux-firmware?
>>
>This file similar with "edl.mbn". In SDX72 product, the default "edl" file name is
>"xbl_s_devprg_ns.melf". Currently we don't plan to upstream it to linux-firmware
>since 2 reasons: 1: we share the same fold name sdx72m with qcom or other vendors
>2: this file may be changed since sdx72 product still under developing in our side. we
>may change the base line according to QCOM release.
>>- Mani
>>
And I want to say, the os or driver can't recover device with this "edl" file only. This file
only used when device needs to be changed to firehose mode. After that, we need
a tool and a complete firmware package to do the firehose download. Unfortunately,
there is no open source tool to support this download. Even Qcom PCAT tool only
supports their own VID/PID with their own driver. So the function of mhi driver is:
Put device into firehose mode and enumerate the wwan0firehose0 port. The rest
shall be done by enduser themselves.
>>--
>>மணிவண்ணன் சதாசிவம்
On Wed, May 15, 2024 at 09:43:53AM +0800, Slark Xiao wrote:
>
> Send again with text mode.
> At 2024-05-15 09:29:20, "Slark Xiao" <slark_xiao@163.com> wrote:
> >At 2024-05-14 22:37:41, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
> >>On Fri, May 10, 2024 at 11:26:57AM +0800, Slark Xiao wrote:
> >>> Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
> >>> And also, add firehose support since SDX72.
> >>>
> >>> Signed-off-by: Slark Xiao <slark_xiao@163.com>
> >>> ---
> >>> drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
> >>> 1 file changed, 31 insertions(+)
> >>>
> >>> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
> >>> index 08844ee79654..0fd94c193fc6 100644
> >>> --- a/drivers/bus/mhi/host/pci_generic.c
> >>> +++ b/drivers/bus/mhi/host/pci_generic.c
> >>> @@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
> >>> MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
> >>> MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
> >>> MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
> >>> + MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
> >>> + MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
> >>
> >>This means SDX55 is also supporting FIREHOSE channels, which is not true I
> >>believe.
> >Actually, I just verified it with my sdx55 and the answer is Yes. These channels
> >are common settings for Qcom device which support PCIe mode. BTW, the
> >default settings of Qcom and Quectel support firehose for their sdx55 products.
> >>
> >>> MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
> >>> MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
> >>> };
> >>> @@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
> >>> .event_cfg = mhi_foxconn_sdx55_events,
> >>> };
> >>>
> >>> +static const struct mhi_controller_config modem_foxconn_sdx72_config = {
> >>> + .max_channels = 128,
> >>> + .timeout_ms = 20000,
> >>> + .ready_timeout_ms = 50000,
> >>> + .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
> >>> + .ch_cfg = mhi_foxconn_sdx55_channels,
> >>> + .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
> >>> + .event_cfg = mhi_foxconn_sdx55_events,
> >>> +};
> >>> +
> >>> static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
> >>> .name = "foxconn-sdx24",
> >>> .config = &modem_foxconn_sdx55_config,
> >>> @@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
> >>> .sideband_wake = false,
> >>> };
> >>>
> >>> +static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
> >>> + .name = "foxconn-sdx72",
> >>> + .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
> >>
> >>What is '.melf'? Is the firmware available somewhere? Did you plan to upstream
> >>it to linux-firmware?
> >>
> >This file similar with "edl.mbn". In SDX72 product, the default "edl" file name is
> >"xbl_s_devprg_ns.melf". Currently we don't plan to upstream it to linux-firmware
> >since 2 reasons: 1: we share the same fold name sdx72m with qcom or other vendors
> >2: this file may be changed since sdx72 product still under developing in our side. we
> >may change the base line according to QCOM release.
> >>- Mani
> >>
> And I want to say, the os or driver can't recover device with this "edl" file only. This file
> only used when device needs to be changed to firehose mode. After that, we need
> a tool and a complete firmware package to do the firehose download. Unfortunately,
> there is no open source tool to support this download. Even Qcom PCAT tool only
> supports their own VID/PID with their own driver. So the function of mhi driver is:
> Put device into firehose mode and enumerate the wwan0firehose0 port. The rest
> shall be done by enduser themselves.
Can't you use QDL tool? https://github.com/linux-msm/qdl
- Mani
--
மணிவண்ணன் சதாசிவம்
At 2024-05-15 15:43:15, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
>On Wed, May 15, 2024 at 09:43:53AM +0800, Slark Xiao wrote:
>>
>> Send again with text mode.
>> At 2024-05-15 09:29:20, "Slark Xiao" <slark_xiao@163.com> wrote:
>> >At 2024-05-14 22:37:41, "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org> wrote:
>> >>On Fri, May 10, 2024 at 11:26:57AM +0800, Slark Xiao wrote:
>> >>> Align with Qcom SDX72, add ready timeout item for Foxconn SDX72.
>> >>> And also, add firehose support since SDX72.
>> >>>
>> >>> Signed-off-by: Slark Xiao <slark_xiao@163.com>
>> >>> ---
>> >>> drivers/bus/mhi/host/pci_generic.c | 31 ++++++++++++++++++++++++++++++
>> >>> 1 file changed, 31 insertions(+)
>> >>>
>> >>> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
>> >>> index 08844ee79654..0fd94c193fc6 100644
>> >>> --- a/drivers/bus/mhi/host/pci_generic.c
>> >>> +++ b/drivers/bus/mhi/host/pci_generic.c
>> >>> @@ -399,6 +399,8 @@ static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
>> >>> MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
>> >>> MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
>> >>> MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
>> >>> + MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
>> >>> + MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
>> >>
>> >>This means SDX55 is also supporting FIREHOSE channels, which is not true I
>> >>believe.
>> >Actually, I just verified it with my sdx55 and the answer is Yes. These channels
>> >are common settings for Qcom device which support PCIe mode. BTW, the
>> >default settings of Qcom and Quectel support firehose for their sdx55 products.
>> >>
>> >>> MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0_MBIM", 128, 2),
>> >>> MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0_MBIM", 128, 3),
>> >>> };
>> >>> @@ -419,6 +421,16 @@ static const struct mhi_controller_config modem_foxconn_sdx55_config = {
>> >>> .event_cfg = mhi_foxconn_sdx55_events,
>> >>> };
>> >>>
>> >>> +static const struct mhi_controller_config modem_foxconn_sdx72_config = {
>> >>> + .max_channels = 128,
>> >>> + .timeout_ms = 20000,
>> >>> + .ready_timeout_ms = 50000,
>> >>> + .num_channels = ARRAY_SIZE(mhi_foxconn_sdx55_channels),
>> >>> + .ch_cfg = mhi_foxconn_sdx55_channels,
>> >>> + .num_events = ARRAY_SIZE(mhi_foxconn_sdx55_events),
>> >>> + .event_cfg = mhi_foxconn_sdx55_events,
>> >>> +};
>> >>> +
>> >>> static const struct mhi_pci_dev_info mhi_foxconn_sdx24_info = {
>> >>> .name = "foxconn-sdx24",
>> >>> .config = &modem_foxconn_sdx55_config,
>> >>> @@ -448,6 +460,16 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx65_info = {
>> >>> .sideband_wake = false,
>> >>> };
>> >>>
>> >>> +static const struct mhi_pci_dev_info mhi_foxconn_sdx72_info = {
>> >>> + .name = "foxconn-sdx72",
>> >>> + .edl = "qcom/sdx72m/xbl_s_devprg_ns.melf",
>> >>
>> >>What is '.melf'? Is the firmware available somewhere? Did you plan to upstream
>> >>it to linux-firmware?
>> >>
>> >This file similar with "edl.mbn". In SDX72 product, the default "edl" file name is
>> >"xbl_s_devprg_ns.melf". Currently we don't plan to upstream it to linux-firmware
>> >since 2 reasons: 1: we share the same fold name sdx72m with qcom or other vendors
>> >2: this file may be changed since sdx72 product still under developing in our side. we
>> >may change the base line according to QCOM release.
>> >>- Mani
>> >>
>> And I want to say, the os or driver can't recover device with this "edl" file only. This file
>> only used when device needs to be changed to firehose mode. After that, we need
>> a tool and a complete firmware package to do the firehose download. Unfortunately,
>> there is no open source tool to support this download. Even Qcom PCAT tool only
>> supports their own VID/PID with their own driver. So the function of mhi driver is:
>> Put device into firehose mode and enumerate the wwan0firehose0 port. The rest
>> shall be done by enduser themselves.
>
>Can't you use QDL tool? https://github.com/linux-msm/qdl
>
>- Mani
>
No. We used this tool for USB only. This tool don't support PCIE device currently.
qdl will call the function usb_open to get device node in
/dev/bus/usb. But for PCIE device , we will communicate device with wwan0firehose0
port.
>--
>மணிவண்ணன் சதாசிவம்
© 2016 - 2025 Red Hat, Inc.