Skip to content

Commit b961fbc

Browse files
authored
Merge branch 'main' into bugfix/soc/NCSIDB-1773_Handle_extmem
2 parents 7a9d913 + 3b0588e commit b961fbc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+1107
-410
lines changed

doc/releases/migration-guide-4.4.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ Device Drivers and Devicetree
3535
Bluetooth
3636
*********
3737

38+
Bluetooth Host
39+
==============
40+
41+
* :kconfig:option:`CONFIG_BT_SIGNING` has been deprecated.
42+
* :c:macro:`BT_GATT_CHRC_AUTH` has been deprecated.
43+
* :c:member:`bt_conn_le_info.interval` has been deprecated. Use
44+
:c:member:`bt_conn_le_info.interval_us` instead. Note that the units have changed: ``interval``
45+
was in units of 1.25 milliseconds, while ``interval_us`` is in microseconds.
46+
3847
Networking
3948
**********
4049

doc/releases/release-notes-4.4.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,21 @@ Deprecated APIs and options
6262
* The callback :c:member:`output_number` in :c:struct:`bt_mesh_prov` structure was deprecated.
6363
Applications should use :c:member:`output_numeric` callback instead.
6464

65+
* Host
66+
67+
* :c:member:`bt_conn_le_info.interval` has been deprecated. Use
68+
:c:member:`bt_conn_le_info.interval_us` instead. Note that the units have changed:
69+
``interval`` was in units of 1.25 milliseconds, while ``interval_us`` is in microseconds.
70+
6571
New APIs and options
6672
====================
6773

74+
* Bluetooth
75+
76+
* Host
77+
78+
* :c:func:`bt_gatt_cb_unregister` Added an API to unregister GATT callback handlers.
79+
6880
..
6981
Link to new APIs here, in a group if you think it's necessary, no need to get
7082
fancy just list the link, that should contain the documentation. If you feel

drivers/serial/uart_nrfx_uarte.c

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2832,27 +2832,35 @@ static void uarte_nrfx_irq_tx_enable(const struct device *dev)
28322832
{
28332833
NRF_UARTE_Type *uarte = get_uarte_instance(dev);
28342834
struct uarte_nrfx_data *data = dev->data;
2835+
bool already_enabled;
28352836

2836-
if (IS_ENABLED(CONFIG_PM_DEVICE_RUNTIME)) {
2837-
pm_device_runtime_get(dev);
2838-
}
2837+
pm_device_runtime_get(dev);
28392838

28402839
unsigned int key = irq_lock();
28412840

2842-
data->int_driven->disable_tx_irq = false;
2843-
data->int_driven->tx_irq_enabled = true;
2844-
nrf_uarte_int_enable(uarte, NRF_UARTE_INT_TXSTOPPED_MASK);
2841+
already_enabled = data->int_driven->tx_irq_enabled;
2842+
if (!already_enabled) {
2843+
data->int_driven->disable_tx_irq = false;
2844+
data->int_driven->tx_irq_enabled = true;
2845+
nrf_uarte_int_enable(uarte, NRF_UARTE_INT_TXSTOPPED_MASK);
2846+
}
28452847

28462848
irq_unlock(key);
2849+
2850+
if (already_enabled) {
2851+
pm_device_runtime_put(dev);
2852+
}
28472853
}
28482854

28492855
/** Interrupt driven transfer disabling function */
28502856
static void uarte_nrfx_irq_tx_disable(const struct device *dev)
28512857
{
28522858
struct uarte_nrfx_data *data = dev->data;
2853-
/* TX IRQ will be disabled after current transmission is finished */
2854-
data->int_driven->disable_tx_irq = true;
2855-
data->int_driven->tx_irq_enabled = false;
2859+
if (data->int_driven->tx_irq_enabled) {
2860+
/* TX IRQ will be disabled after current transmission is finished */
2861+
data->int_driven->disable_tx_irq = true;
2862+
data->int_driven->tx_irq_enabled = false;
2863+
}
28562864
}
28572865

28582866
/** Interrupt driven transfer ready function */
@@ -2888,15 +2896,23 @@ static void uarte_nrfx_irq_rx_enable(const struct device *dev)
28882896
{
28892897
NRF_UARTE_Type *uarte = get_uarte_instance(dev);
28902898

2891-
nrf_uarte_int_enable(uarte, NRF_UARTE_INT_ENDRX_MASK);
2899+
if (!nrf_uarte_int_enable_check(uarte, NRF_UARTE_INT_ENDRX_MASK)) {
2900+
pm_device_runtime_get(dev);
2901+
2902+
nrf_uarte_int_enable(uarte, NRF_UARTE_INT_ENDRX_MASK);
2903+
}
28922904
}
28932905

28942906
/** Interrupt driven receiver disabling function */
28952907
static void uarte_nrfx_irq_rx_disable(const struct device *dev)
28962908
{
28972909
NRF_UARTE_Type *uarte = get_uarte_instance(dev);
28982910

2899-
nrf_uarte_int_disable(uarte, NRF_UARTE_INT_ENDRX_MASK);
2911+
if (nrf_uarte_int_enable_check(uarte, NRF_UARTE_INT_ENDRX_MASK)) {
2912+
pm_device_runtime_put_async(dev, K_NO_WAIT);
2913+
2914+
nrf_uarte_int_disable(uarte, NRF_UARTE_INT_ENDRX_MASK);
2915+
}
29002916
}
29012917

29022918
/** Interrupt driven error enabling function */

0 commit comments

Comments
 (0)