Skip to content

Commit b5fa8dc

Browse files
committed
drivers: modem: HL78XX Modem Driver Low Power
Adding Low Power Functionalities Signed-off-by: Zafer SEN <zafersn93@gmail.com>
1 parent dcaba7b commit b5fa8dc

File tree

8 files changed

+1644
-275
lines changed

8 files changed

+1644
-275
lines changed

drivers/modem/hl78xx/Kconfig.hl78xx

Lines changed: 216 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Sierra Wireless HL78XX driver driver options
1+
#Sierra Wireless HL78XX driver driver options
22

3-
# Copyright (c) 2025 Netfeasa Ltd.
4-
# SPDX-License-Identifier: Apache-2.0
3+
#Copyright(c) 2025 Netfeasa Ltd.
4+
#SPDX - License - Identifier : Apache - 2.0
55

66
config MODEM_HL78XX
77
bool "HL78XX modem driver"
@@ -492,27 +492,48 @@ config MODEM_HL78XX_PSM
492492
help
493493
Enable Power Save Mode (PSM)
494494

495+
if !MODEM_HL78XX_EDRX && !MODEM_HL78XX_PSM
496+
497+
config MODEM_HL78XX_POWER_DOWN
498+
bool "Turn OFF"
499+
depends on MODEM_HL78XX_LOW_POWER_MODE
500+
help
501+
Power off modem
502+
503+
endif # If eDRX or PSM is enabled, the modem will not power down.
504+
495505
if MODEM_HL78XX_EDRX
496506

497507
config MODEM_HL78XX_EDRX_VALUE
498-
string "Requested eDRX timer"
499-
default "0101"
508+
int "Requested eDRX timer"
509+
default 5
510+
range 0 15
500511
help
501512
Half a byte in a 4-bit format. The eDRX value refers to bit 4 to 1
502513
of octet 3 of the Extended DRX parameters information element.
503-
Default value is 81.92 seconds.
514+
Default value is 5 (81.92) seconds.
515+
refer to Requested_eDRX_value
516+
517+
config MODEM_HL78XX_PTW_VALUE
518+
int "Requested eDRX Paging Time Window (PTW) timer"
519+
default 0
520+
help
521+
The PTW value refers to bits 8 to 5 of octet 3 of the Extended DRX
522+
parameters information element
523+
· CAT-M1 - actual PTW length = 1.28 sec x (1 + PTW)
524+
· NB-IoT - actual PTW length = 2.56 sec x (1 + PTW)
504525

505526
endif # MODEM_HL78XX_EDRX
506527

507528
if MODEM_HL78XX_PSM
508529

509530
config MODEM_HL78XX_PSM_PERIODIC_TAU
510531
string "Requested extended periodic TAU timer"
511-
default "10000010"
532+
default "10101111"
512533
help
513534
Requested extended periodic TAU (tracking area update) value (T3412)
514535
to be allocated to the UE in E-UTRAN. One byte in an 8-bit format.
515-
Default value is 1 minute.
536+
Default value is 15 minute.
516537

517538
config MODEM_HL78XX_PSM_ACTIVE_TIME
518539
string "Requested active time"
@@ -523,6 +544,62 @@ config MODEM_HL78XX_PSM_ACTIVE_TIME
523544

524545
endif # MODEM_HL78XX_PSM
525546

547+
if MODEM_HL78XX_POWER_DOWN
548+
549+
choice MODEM_HL78XX_POWER_DOWN_MODE
550+
prompt "Power Down Mode"
551+
default MODEM_HL78XX_USE_DELAY_BASED_POWER_DOWN
552+
help
553+
Choose the logic used to determine when the HL78XX modem powers down.
554+
Only one method can be selected:
555+
- 'Use delay after last data activity'
556+
- 'Use active time after RRC connection'
557+
558+
config MODEM_HL78XX_USE_DELAY_BASED_POWER_DOWN
559+
bool "Use delay after last data activity"
560+
help
561+
Power down the modem after a specified delay (MODEM_HL78XX_POWER_DOWN_DELAY)
562+
following the last socket closure or data transmission.
563+
564+
config MODEM_HL78XX_USE_ACTIVE_TIME_BASED_POWER_DOWN
565+
bool "Use active time after RRC connection"
566+
help
567+
Power down the modem based on a PSM-like active time (MODEM_HL78XX_POWER_DOWN_ACTIVE_TIME)
568+
starting after establishing an RRC connection.
569+
* This timer is reset only when a new RRC connection is established.
570+
571+
endchoice
572+
573+
if MODEM_HL78XX_USE_DELAY_BASED_POWER_DOWN
574+
575+
config MODEM_HL78XX_POWER_DOWN_DELAY
576+
int "Delay in seconds before power down"
577+
default 15
578+
range 10 600
579+
help
580+
Delay in seconds before powering down the modem after the last
581+
data transfer.
582+
583+
endif # MODEM_HL78XX_USE_DELAY_BASED_POWER_DOWN
584+
585+
if MODEM_HL78XX_USE_ACTIVE_TIME_BASED_POWER_DOWN
586+
587+
config MODEM_HL78XX_POWER_DOWN_ACTIVE_TIME
588+
int "Modem active time before power down"
589+
default 30
590+
range 20 600
591+
help
592+
The active time value to be allocated to the UE before
593+
powering down the modem. One byte in an 8-bit format.
594+
Default value is 30 seconds.
595+
This setting is used to keep the modem active for a short period
596+
before powering it down.
597+
598+
endif # MODEM_HL78XX_USE_ACTIVE_TIME_BASED_POWER_DOWN
599+
endif # MODEM_HL78XX_POWER_DOWN
600+
601+
if !MODEM_HL78XX_POWER_DOWN
602+
526603
choice MODEM_DEFAULT_SLEEP_LEVEL
527604
prompt "Default Sleep Level"
528605
default MODEM_HL78XX_SLEEP_LEVEL_HIBERNATE
@@ -555,9 +632,111 @@ endchoice
555632
config MODEM_HL78XX_SLEEP_DELAY_AFTER_REBOOT
556633
int "Delay in seconds before sleep after reboot"
557634
default 10
558-
635+
endif # !MODEM_HL78XX_POWER_DOWN
559636
endif # MODEM_HL78XX_LOW_POWER_MODE
560637

638+
choice MODEM_HL78XX_NETWORK_REG_STATUS_REPORT_CFG
639+
prompt "Network Registration Status Report Configuration"
640+
default MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_PSM_AND_CAUSE
641+
help
642+
· 0 — Disable network registration unsolicited result code.
643+
· 1 — Enable network registration unsolicited result code +CEREG: <stat>
644+
· 2 — Enable network registration and location information unsolicited result
645+
code:
646+
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>]]
647+
· 3 — Enable network registration, location information and EMM cause value
648+
information unsolicited result code:
649+
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,<cause_type>, <reject_cause>]]
650+
· 4 — For a UE that wants to apply PSM, enable network registration and
651+
location information unsolicited result code:
652+
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,,[,[<Active- Time>],[<PeriodicTAU>]]]]
653+
· 5 — For a UE that wants to apply PSM, enable network registration, location
654+
information and EMM cause value information unsolicited result code:
655+
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,[<cause_type>],[<reject_-
656+
cause>][,[<Active-Time>] [<Periodic-TAU>]]]]
657+
658+
config MODEM_HL78XX_DISABLE_NETWORK_STATUS_URC_REPORT
659+
bool "Disable network status URC report"
660+
help
661+
Disable network registration unsolicited result code.
662+
663+
config MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT
664+
bool "Network status URC report"
665+
help
666+
Enable network registration unsolicited result code +CEREG: <stat>
667+
668+
config MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_LOCATION
669+
bool "Network status URC report with location"
670+
help
671+
Enable network registration and location information unsolicited result
672+
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>]]
673+
674+
config MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_LOCATION_AND_CAUSE
675+
bool "Network status URC report with location and cause"
676+
help
677+
Enable network registration, location information and EMM cause value
678+
information unsolicited result code:
679+
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,<cause_type>, <reject_cause>]]
680+
681+
config MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_PSM
682+
bool "Network status URC report with PSM"
683+
help
684+
For a UE that wants to apply PSM, enable network registration and
685+
location information unsolicited result code:
686+
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,,[,[<Active- Time>],[<PeriodicTAU>]]]]
687+
688+
config MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_PSM_AND_CAUSE
689+
bool "Network status URC report with PSM and cause"
690+
help
691+
For a UE that wants to apply PSM, enable network registration, location
692+
information and EMM cause value information unsolicited result code:
693+
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,[<cause_type>],[<reject_-
694+
cause>][,[<Active-Time>] [<Periodic-TAU>]]]]
695+
696+
endchoice
697+
698+
config MODEM_HL78XX_NETWORK_REG_STATUS_REPORT_CFG_CODE
699+
string
700+
default "5" if MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_PSM_AND_CAUSE
701+
default "4" if MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_PSM
702+
default "3" if MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_LOCATION_AND_CAUSE
703+
default "2" if MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT_WITH_LOCATION
704+
default "1" if MODEM_HL78XX_ENABLE_NETWORK_STATUS_URC_REPORT
705+
default "0" if MODEM_HL78XX_DISABLE_NETWORK_STATUS_URC_REPORT
706+
help
707+
This setting is used to configure the network registration status report
708+
configuration code. It is used in the AT+CREG/CEREG command to set the network
709+
registration status report configuration.
710+
711+
config MODEM_MIN_ALLOWED_SIGNAL_STRENGTH
712+
int "Minimum allowed RSRP signal strength (dBm)"
713+
default -140
714+
range -140 0
715+
help
716+
The average power received from a single Reference signal,
717+
and Its typical range is around -44dbm (good) to -140dbm(bad).
718+
Note: (Anything < - 115 dBm unusable/unreliable)
719+
EXCELLENT_SIGNAL_STRENGTH
720+
bool ">= -80(dBm)"
721+
default -80
722+
range - 80 0
723+
GOOD_SIGNAL_STRENGTH
724+
bool ">= -90(dBm)"
725+
default -90
726+
range - 90 0
727+
MID_CELL_SIGNAL_STRENGTH
728+
bool ">= -100(dBm)"
729+
default -100
730+
range - 100 0
731+
CELL_EDGE_SIGNAL_STRENGTH
732+
bool "<= -100(dBm)"
733+
default -110
734+
range - 110 0
735+
POOR_SIGNAL_STRENGTH
736+
bool ">= -140(dBm)"
737+
default -140
738+
range - 140 0
739+
561740
config MODEM_HL78XX_ADVANCED_SOCKET_CONFIG
562741
bool "Advanced socket configuration"
563742
help
@@ -603,6 +782,34 @@ bool "Verbose debug output in the HL78xx"
603782
Enabling this setting will turn on VERY heavy debugging from the
604783
modem. Do NOT leave on for production.
605784

785+
config MODEM_HL78XX_DEV_POWER_PULSE_DURATION
786+
int "Duration of the power-on pulse in milliseconds."
787+
default 1500
788+
help
789+
Trigger a power-on sequence by setting a power on GPIO pin high
790+
for a specific amount of time.
791+
792+
config MODEM_HL78XX_DEV_RESET_PULSE_DURATION
793+
int "Duration of the power-reset pulse in milliseconds."
794+
default 100
795+
help
796+
Trigger a power-reset sequence by setting a reset GPIO pin high
797+
for a specific amount of time.
798+
799+
config MODEM_HL78XX_DEV_STARTUP_TIME
800+
int "Wait before assuming the device is ready."
801+
default 1000
802+
help
803+
The expected time (in milliseconds) the modem needs to fully power on
804+
and become operational.
805+
806+
config MODEM_HL78XX_DEV_SHUTDOWN_TIME
807+
int "Wait before assuming the device is completely off."
808+
default 1000
809+
help
810+
The amount of time (in milliseconds) the system should wait for the modem
811+
to fully shut down
812+
606813
config MODEM_HL78XX_DEV_INIT_PRIORITY
607814
int "Sierra Wireless HL78XX device driver init priority"
608815
default 80

0 commit comments

Comments
 (0)