Re: [jes:rtl8723au-devel 206/499] WARNING: __func__ should be used instead of gcc specific __FUNCTION__
Fengguang Wu fengguang...@intel.com writes: tree: git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8723au-devel head: 07068767ab5cc9eb549dc85cb858e00c384ade4c commit: 068bf12cd5cc11f85a5b4d5423e629b640e12df7 [206/499] staging: rtl8723au: hal/usb_ops_linux.c: Various cleanups scripts/checkpatch.pl 0001-staging-rtl8723au-hal-usb_ops_linux.c-Various-cleanu.patch # many are suggestions rather than must-fix WARNING: quoted string split across lines #27: drivers/staging/rtl8723au/hal/usb_ops_linux.c:41: + (usbctrl_vendorreq:(padapter-bSurpriseRemoved|| + adapter-pwrctrlpriv.pnp_bstop_trx)!!!\n)); WARNING: __func__ should be used instead of gcc specific __FUNCTION__ #35: drivers/staging/rtl8723au/hal/usb_ops_linux.c:48: + __FUNCTION__); WARNING: Missing a blank line after declarations #57: drivers/staging/rtl8723au/hal/usb_ops_linux.c:100: + struct hal_data_8723a *pHalData; + pHalData = GET_HAL_DATA(padapter); Hi Fengguang, Thanks for the report, I fixed the above. The rest of the reports here seem to have been fixed already through other patches. Cheers, Jes ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 03/10] staging: rtl8723au: rtw_sta_mgt.c: Use ether_addr_{copy, equal}()
From: Jes Sorensen jes.soren...@redhat.com Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c index 14a82be..62e35dd 100644 --- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c @@ -126,7 +126,7 @@ rtw_alloc_stainfo23a(struct sta_priv *pstapriv, u8 *hwaddr, gfp_t gfp) psta-padapter = pstapriv-padapter; - memcpy(psta-hwaddr, hwaddr, ETH_ALEN); + ether_addr_copy(psta-hwaddr, hwaddr); index = wifi_mac_hash(hwaddr); @@ -363,10 +363,10 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr) list_for_each(plist, phead) { psta = container_of(plist, struct sta_info, hash_list); - if (!memcmp(psta-hwaddr, addr, ETH_ALEN)) { - /* if found the matched address */ + /* if found the matched address */ + if (ether_addr_equal(psta-hwaddr, addr)) break; - } + psta = NULL; } spin_unlock_bh(pstapriv-sta_hash_lock); @@ -422,7 +422,7 @@ bool rtw_access_ctrl23a(struct rtw_adapter *padapter, u8 *mac_addr) list_for_each(plist, phead) { paclnode = container_of(plist, struct rtw_wlan_acl_node, list); - if (!memcmp(paclnode-addr, mac_addr, ETH_ALEN)) { + if (ether_addr_equal(paclnode-addr, mac_addr)) { if (paclnode-valid) { match = true; break; -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 00/10] staging: rtl8723au: sparse fixes and some cleanups
From: Jes Sorensen jes.soren...@redhat.com Greg, A couple of sparse fixes (a fix from Clement Calmels and one reported by Fengguang Wu) as well as some cleanups removing dead code. Cheers, Jes Clément Calmels (1): staging: rtl8723au: fix sparse warning Jes Sorensen (9): staging: rtl8723au: usb_ops_linux.c: Add blank line between declaration and usage staging: rtl8723au: rtw_sta_mgt.c: Use ether_addr_{copy,equal}() staging: rtl8723au: rtw_sta_mgt.c: One copy of the broadcast address should suffice staging: rtl8723au: rtw_allow_stainfo23a(): Make hwaddr argument const staging: rtl8723au: Remove unused rtw_sreset_get_wifi_status() staging: rtl8723au: Wifi_Error_Status isn't used for anything staging: rtl8723au: sreset_priv-dbg_trigger_point is never set staging: rtl8723au: Remove no-op rtl8723a_sreset_linked_status_check() staging: rtl8723au: Remove unused rtw_pwr_wakeup_ex() drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +- drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 - drivers/staging/rtl8723au/core/rtw_sreset.c| 47 -- drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 21 +- drivers/staging/rtl8723au/hal/rtl8723a_sreset.c| 19 - drivers/staging/rtl8723au/hal/usb_ops_linux.c | 11 - .../staging/rtl8723au/include/rtl8723a_sreset.h| 1 - drivers/staging/rtl8723au/include/rtw_mlme.h | 2 +- drivers/staging/rtl8723au/include/rtw_pwrctrl.h| 2 - drivers/staging/rtl8723au/include/rtw_sreset.h | 20 - drivers/staging/rtl8723au/include/sta_info.h | 2 +- drivers/staging/rtl8723au/os_dep/usb_ops_linux.c | 2 - 12 files changed, 13 insertions(+), 118 deletions(-) -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 09/10] staging: rtl8723au: Remove no-op rtl8723a_sreset_linked_status_check()
From: Jes Sorensen jes.soren...@redhat.com Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 -- drivers/staging/rtl8723au/hal/rtl8723a_sreset.c | 4 drivers/staging/rtl8723au/include/rtl8723a_sreset.h | 1 - 3 files changed, 7 deletions(-) diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c index 09e5a59..3655ee5 100644 --- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c @@ -5215,8 +5215,6 @@ void linked_status_chk23a(struct rtw_adapter *padapter) struct mlme_ext_info *pmlmeinfo = pmlmeext-mlmext_info; struct sta_priv *pstapriv = padapter-stapriv; - rtl8723a_sreset_linked_status_check(padapter); - if (is_client_associated_to_ap23a(padapter)) { /* linked infrastructure client mode */ diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c index 54a08a1..3c46294 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c @@ -53,7 +53,3 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) } } } - -void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter) -{ -} diff --git a/drivers/staging/rtl8723au/include/rtl8723a_sreset.h b/drivers/staging/rtl8723au/include/rtl8723a_sreset.h index 82af6a2..6197910 100644 --- a/drivers/staging/rtl8723au/include/rtl8723a_sreset.h +++ b/drivers/staging/rtl8723au/include/rtl8723a_sreset.h @@ -20,6 +20,5 @@ #include rtw_sreset.h void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter); -void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter); #endif -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 02/10] staging: rtl8723au: usb_ops_linux.c: Add blank line between declaration and usage
From: Jes Sorensen jes.soren...@redhat.com This fixes a minor sparse warning. Reported-by: Fengguang Wu fengguang...@intel.com Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- drivers/staging/rtl8723au/hal/usb_ops_linux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c index 8e9e61c..6acb0e3 100644 --- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c +++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c @@ -28,7 +28,6 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, { struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); struct usb_device *udev = pdvobjpriv-pusbdev; - unsigned int pipe; int status = 0; u8 reqtype; @@ -97,6 +96,7 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, padapter-bSurpriseRemoved = true; else { struct hal_data_8723a *pHalData; + pHalData = GET_HAL_DATA(padapter); pHalData-srestpriv.Wifi_Error_Status = USB_VEN_REQ_CMD_FAIL; -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 08/10] staging: rtl8723au: sreset_priv-dbg_trigger_point is never set
From: Jes Sorensen jes.soren...@redhat.com No point carrying a bunch of code around that is never going to get called. Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- drivers/staging/rtl8723au/core/rtw_sreset.c | 7 --- drivers/staging/rtl8723au/hal/rtl8723a_sreset.c | 14 -- drivers/staging/rtl8723au/include/rtw_sreset.h | 8 3 files changed, 29 deletions(-) diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c index c19831c..c152aef 100644 --- a/drivers/staging/rtl8723au/core/rtw_sreset.c +++ b/drivers/staging/rtl8723au/core/rtw_sreset.c @@ -37,13 +37,6 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter) psrtpriv-last_tx_complete_time = 0; } -void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp) -{ - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - pHalData-srestpriv.dbg_trigger_point = tgp; -} - bool rtw_sreset_inprogress(struct rtw_adapter *padapter) { struct rtw_adapter *primary_adapter = GET_PRIMARY_ADAPTER(padapter); diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c index 4374036..54a08a1 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c @@ -52,22 +52,8 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) } } } - - if (psrtpriv-dbg_trigger_point == SRESET_TGP_XMIT_STATUS) { - psrtpriv-dbg_trigger_point = SRESET_TGP_NULL; - rtw_sreset_reset(padapter); - return; - } } void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter) { - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - struct sreset_priv *psrtpriv = pHalData-srestpriv; - - if (psrtpriv-dbg_trigger_point == SRESET_TGP_LINK_STATUS) { - psrtpriv-dbg_trigger_point = SRESET_TGP_NULL; - rtw_sreset_reset(padapter); - return; - } } diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h index 4799614..60fa829 100644 --- a/drivers/staging/rtl8723au/include/rtw_sreset.h +++ b/drivers/staging/rtl8723au/include/rtw_sreset.h @@ -18,19 +18,11 @@ #include osdep_service.h #include drv_types.h -enum { - SRESET_TGP_NULL = 0, - SRESET_TGP_XMIT_STATUS = 1, - SRESET_TGP_LINK_STATUS = 2, -}; - struct sreset_priv { struct mutexsilentreset_mutex; u8 silent_reset_inprogress; unsigned long last_tx_time; unsigned long last_tx_complete_time; - - s32 dbg_trigger_point; }; #include rtl8723a_hal.h -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 04/10] staging: rtl8723au: rtw_sta_mgt.c: One copy of the broadcast address should suffice
From: Jes Sorensen jes.soren...@redhat.com Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 9 - 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c index 62e35dd..f13a470 100644 --- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c +++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c @@ -22,6 +22,8 @@ #include sta_info.h #include rtl8723a_hal.h +static u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + static void _rtw_init_stainfo(struct sta_info *psta) { memset((u8 *)psta, 0, sizeof (struct sta_info)); @@ -344,7 +346,6 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr) struct sta_info *psta = NULL; u32 index; const u8 *addr; - u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; if (hwaddr == NULL) return NULL; @@ -379,9 +380,8 @@ int rtw_init_bcmc_stainfo23a(struct rtw_adapter* padapter) struct sta_info *psta; struct tx_servq *ptxservq; int res = _SUCCESS; - unsigned char bcast_addr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - psta = rtw_alloc_stainfo23a(pstapriv, bcast_addr, GFP_KERNEL); + psta = rtw_alloc_stainfo23a(pstapriv, bc_addr, GFP_KERNEL); if (psta == NULL) { res = _FAIL; RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_err_, @@ -399,9 +399,8 @@ struct sta_info *rtw_get_bcmc_stainfo23a(struct rtw_adapter *padapter) { struct sta_info *psta; struct sta_priv *pstapriv = padapter-stapriv; - u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; -psta = rtw_get_stainfo23a(pstapriv, bc_addr); + psta = rtw_get_stainfo23a(pstapriv, bc_addr); return psta; } -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 06/10] staging: rtl8723au: Remove unused rtw_sreset_get_wifi_status()
From: Jes Sorensen jes.soren...@redhat.com Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- drivers/staging/rtl8723au/core/rtw_sreset.c| 29 -- drivers/staging/rtl8723au/include/rtw_sreset.h | 1 - 2 files changed, 30 deletions(-) diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c index 18a42a2..8142dd1 100644 --- a/drivers/staging/rtl8723au/core/rtw_sreset.c +++ b/drivers/staging/rtl8723au/core/rtw_sreset.c @@ -39,35 +39,6 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter) psrtpriv-last_tx_complete_time = 0; } -u8 rtw_sreset_get_wifi_status(struct rtw_adapter *padapter) -{ - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - struct sreset_priv *psrtpriv = pHalData-srestpriv; - u8 status = WIFI_STATUS_SUCCESS; - u32 val32 = 0; - - if (psrtpriv-silent_reset_inprogress) - return status; - val32 = rtl8723au_read32(padapter, REG_TXDMA_STATUS); - if (val32 == 0xeaeaeaea) { - psrtpriv-Wifi_Error_Status = WIFI_IF_NOT_EXIST; - } else if (val32 != 0) { - DBG_8723A(txdmastatu(%x)\n, val32); - psrtpriv-Wifi_Error_Status = WIFI_MAC_TXDMA_ERROR; - } - - if (WIFI_STATUS_SUCCESS != psrtpriv-Wifi_Error_Status) { - DBG_8723A(==%s error_status(0x%x)\n, __func__, psrtpriv-Wifi_Error_Status); - status = (psrtpriv-Wifi_Error_Status ~(USB_READ_PORT_FAIL|USB_WRITE_PORT_FAIL)); - } - DBG_8723A(== %s wifi_status(0x%x)\n, __func__, status); - - /* status restore */ - psrtpriv-Wifi_Error_Status = WIFI_STATUS_SUCCESS; - - return status; -} - void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h index 77cc794..a4c45cb 100644 --- a/drivers/staging/rtl8723au/include/rtw_sreset.h +++ b/drivers/staging/rtl8723au/include/rtw_sreset.h @@ -47,7 +47,6 @@ struct sreset_priv { void rtw_sreset_init(struct rtw_adapter *padapter); void rtw_sreset_reset_value(struct rtw_adapter *padapter); -u8 rtw_sreset_get_wifi_status(struct rtw_adapter *padapter); bool rtw_sreset_inprogress(struct rtw_adapter *padapter); void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status); void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp); -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH 07/10] staging: rtl8723au: Wifi_Error_Status isn't used for anything
From: Jes Sorensen jes.soren...@redhat.com Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- drivers/staging/rtl8723au/core/rtw_sreset.c | 11 --- drivers/staging/rtl8723au/hal/rtl8723a_sreset.c | 1 - drivers/staging/rtl8723au/hal/usb_ops_linux.c| 11 --- drivers/staging/rtl8723au/include/rtw_sreset.h | 11 --- drivers/staging/rtl8723au/os_dep/usb_ops_linux.c | 2 -- 5 files changed, 36 deletions(-) diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c index 8142dd1..c19831c 100644 --- a/drivers/staging/rtl8723au/core/rtw_sreset.c +++ b/drivers/staging/rtl8723au/core/rtw_sreset.c @@ -23,7 +23,6 @@ void rtw_sreset_init(struct rtw_adapter *padapter) mutex_init(psrtpriv-silentreset_mutex); psrtpriv-silent_reset_inprogress = false; - psrtpriv-Wifi_Error_Status = WIFI_STATUS_SUCCESS; psrtpriv-last_tx_time = 0; psrtpriv-last_tx_complete_time = 0; } @@ -34,18 +33,10 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter) struct sreset_priv *psrtpriv = pHalData-srestpriv; psrtpriv-silent_reset_inprogress = false; - psrtpriv-Wifi_Error_Status = WIFI_STATUS_SUCCESS; psrtpriv-last_tx_time = 0; psrtpriv-last_tx_complete_time = 0; } -void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status) -{ - struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); - - pHalData-srestpriv.Wifi_Error_Status = status; -} - void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp) { struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); @@ -213,8 +204,6 @@ void rtw_sreset_reset(struct rtw_adapter *active_adapter) DBG_8723A(%s\n, __func__); - psrtpriv-Wifi_Error_Status = WIFI_STATUS_SUCCESS; - mutex_lock(psrtpriv-silentreset_mutex); psrtpriv-silent_reset_inprogress = true; pwrpriv-change_rfpwrstate = rf_off; diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c index 0680e29..4374036 100644 --- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c +++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c @@ -46,7 +46,6 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter) } else { diff_time = jiffies_to_msecs(jiffies - psrtpriv-last_tx_complete_time); if (diff_time 4000) { - /* padapter-Wifi_Error_Status = WIFI_TX_HANG; */ DBG_8723A(%s tx hang\n, __func__); rtw_sreset_reset(padapter); } diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c index 6acb0e3..23af718 100644 --- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c +++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c @@ -94,13 +94,6 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request, if (status 0) { if (status == -ESHUTDOWN || status == -ENODEV) padapter-bSurpriseRemoved = true; - else { - struct hal_data_8723a *pHalData; - - pHalData = GET_HAL_DATA(padapter); - pHalData-srestpriv.Wifi_Error_Status = - USB_VEN_REQ_CMD_FAIL; - } } else { /* status != len status = 0 */ if (status 0) { if (requesttype == 0x01) { @@ -647,7 +640,6 @@ static void usb_read_port_complete(struct urb *purb) struct recv_buf *precvbuf = (struct recv_buf *)purb-context; struct rtw_adapter *padapter = (struct rtw_adapter *)precvbuf-adapter; struct recv_priv *precvpriv = padapter-recvpriv; - struct hal_data_8723a *pHalData; RT_TRACE(_module_hci_ops_os_c_, _drv_err_, (usb_read_port_complete!!!\n)); @@ -726,9 +718,6 @@ static void usb_read_port_complete(struct urb *purb) break; case -EPROTO: case -EOVERFLOW: - pHalData = GET_HAL_DATA(padapter); - pHalData-srestpriv.Wifi_Error_Status = - USB_READ_PORT_FAIL; rtl8723au_read_port(padapter, RECV_BULK_IN_ADDR, 0, precvbuf); break; diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h index a4c45cb..4799614 100644 --- a/drivers/staging/rtl8723au/include/rtw_sreset.h +++
Re: [PATCH net-next] hyperv: Add handler for RNDIS_STATUS_NETWORK_CHANGE event
On Mon, Jun 23, Haiyang Zhang wrote: Yes, there is a link down/up event from the host, we currently call netif_carrier_off() / netif_carrier_on() with these events. Will hotplug scripts be triggered by netif_carrier_off/on? Where are the scripts located at (SLES)? In /etc/sysconfig/network/ifcfg-eth0 STARTMODE= should be set to ifplugd, this will most likely fix this sort of setup. Olaf ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: unisys: remove unused macros
The macros CONFIG_SPAR_GUEST, GUESTDRIVERBUILD, and NOAUTOVERSION are defined in Makefiles for the Unisys SPAR driver. They are never used. Remove the lines that define these macros. Signed-off-by: Paul Bolle pebo...@tiscali.nl --- Compile tested only, on top of next-20140626, by fiddling with BROKEN and setting all CONFIG_UNISYS* options to y. drivers/staging/unisys/channels/Makefile | 2 -- drivers/staging/unisys/uislib/Makefile | 3 --- drivers/staging/unisys/virthba/Makefile | 3 --- drivers/staging/unisys/virtpci/Makefile | 3 --- drivers/staging/unisys/visorchannel/Makefile | 2 -- drivers/staging/unisys/visorchipset/Makefile | 2 -- drivers/staging/unisys/visorutil/Makefile| 1 - 7 files changed, 16 deletions(-) diff --git a/drivers/staging/unisys/channels/Makefile b/drivers/staging/unisys/channels/Makefile index e60b0aef4dcd..adc184206035 100644 --- a/drivers/staging/unisys/channels/Makefile +++ b/drivers/staging/unisys/channels/Makefile @@ -9,5 +9,3 @@ visorchannelstub-y := channel.o chanstub.o ccflags-y += -Idrivers/staging/unisys/include ccflags-y += -Idrivers/staging/unisys/common-spar/include ccflags-y += -Idrivers/staging/unisys/common-spar/include/channels -ccflags-y += -DCONFIG_SPAR_GUEST -DGUESTDRIVERBUILD -DNOAUTOVERSION - diff --git a/drivers/staging/unisys/uislib/Makefile b/drivers/staging/unisys/uislib/Makefile index 6e44d49458f5..08e620d17497 100644 --- a/drivers/staging/unisys/uislib/Makefile +++ b/drivers/staging/unisys/uislib/Makefile @@ -12,6 +12,3 @@ ccflags-y += -Idrivers/staging/unisys/visorchipset ccflags-y += -Idrivers/staging/unisys/sparstopdriver ccflags-y += -Idrivers/staging/unisys/common-spar/include ccflags-y += -Idrivers/staging/unisys/common-spar/include/channels - -ccflags-y += -DCONFIG_SPAR_GUEST -DGUESTDRIVERBUILD -DNOAUTOVERSION - diff --git a/drivers/staging/unisys/virthba/Makefile b/drivers/staging/unisys/virthba/Makefile index 632b1c08b975..ba55ae12488e 100644 --- a/drivers/staging/unisys/virthba/Makefile +++ b/drivers/staging/unisys/virthba/Makefile @@ -11,6 +11,3 @@ ccflags-y += -Idrivers/staging/unisys/visorchipset ccflags-y += -Idrivers/staging/unisys/virtpci ccflags-y += -Idrivers/staging/unisys/common-spar/include ccflags-y += -Idrivers/staging/unisys/common-spar/include/channels - -ccflags-y += -DCONFIG_SPAR_GUEST -DGUESTDRIVERBUILD -DNOAUTOVERSION - diff --git a/drivers/staging/unisys/virtpci/Makefile b/drivers/staging/unisys/virtpci/Makefile index f9399aabddd1..a26c696219a5 100644 --- a/drivers/staging/unisys/virtpci/Makefile +++ b/drivers/staging/unisys/virtpci/Makefile @@ -8,6 +8,3 @@ ccflags-y += -Idrivers/staging/unisys/include ccflags-y += -Idrivers/staging/unisys/uislib ccflags-y += -Idrivers/staging/unisys/common-spar/include ccflags-y += -Idrivers/staging/unisys/common-spar/include/channels - -ccflags-y += -DCONFIG_SPAR_GUEST -DGUESTDRIVERBUILD -DNOAUTOVERSION - diff --git a/drivers/staging/unisys/visorchannel/Makefile b/drivers/staging/unisys/visorchannel/Makefile index f0060be55bc5..e079c96b1cdf 100644 --- a/drivers/staging/unisys/visorchannel/Makefile +++ b/drivers/staging/unisys/visorchannel/Makefile @@ -10,5 +10,3 @@ ccflags-y += -Idrivers/staging/unisys/include ccflags-y += -Idrivers/staging/unisys/common-spar/include ccflags-y += -Idrivers/staging/unisys/common-spar/include/channels ccflags-y += -Idrivers/staging/unisys/visorutil -ccflags-y += -DCONFIG_SPAR_GUEST -DGUESTDRIVERBUILD -DNOAUTOVERSION - diff --git a/drivers/staging/unisys/visorchipset/Makefile b/drivers/staging/unisys/visorchipset/Makefile index ead4b9c02715..5071878e57da 100644 --- a/drivers/staging/unisys/visorchipset/Makefile +++ b/drivers/staging/unisys/visorchipset/Makefile @@ -14,5 +14,3 @@ ccflags-y += -Idrivers/staging/unisys/common-spar/include ccflags-y += -Idrivers/staging/unisys/common-spar/include/channels ccflags-y += -Idrivers/staging/unisys/visorutil ccflags-y += -Iinclude/generated -ccflags-y += -DCONFIG_SPAR_GUEST -DGUESTDRIVERBUILD -DNOAUTOVERSION - diff --git a/drivers/staging/unisys/visorutil/Makefile b/drivers/staging/unisys/visorutil/Makefile index 3f463888dcec..d871bbb78cef 100644 --- a/drivers/staging/unisys/visorutil/Makefile +++ b/drivers/staging/unisys/visorutil/Makefile @@ -8,4 +8,3 @@ visorutil-y := charqueue.o easyproc.o periodic_work.o procobjecttree.o \ memregion_direct.o visorkmodutils.o ccflags-y += -Idrivers/staging/unisys/include -ccflags-y += -DCONFIG_SPAR_GUEST -DGUESTDRIVERBUILD -DNOAUTOVERSION -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 1/4] Staging: unisys: remove references to __DATE__ and __TIME__
On 06/25/2014 10:57 PM, Greg KH wrote: On Wed, Jun 25, 2014 at 11:48:23AM -0500, Ken Cox wrote: --snip-- .id_table = virthba_id_table, .probe = virthba_probe, .remove = virthba_remove, @@ -1413,9 +1413,6 @@ info_proc_read(struct file *file, char __user *buf, size_t len, loff_t *offset) length += sprintf(vbuf + length, \nvirthba result queue poll wait:%d usecs.\n, rsltq_wait_usecs); - length += sprintf(vbuf + length, - \nModule build: Date:%s Time:%s\n, - __DATE__, __TIME__); length += sprintf(vbuf + length, \ninterrupts_rcvd = %llu, interrupts_disabled = %llu\n, virthbainfo-interrupts_rcvd, virthbainfo-interrupts_disabled); Why not just delete this proc file entirely? You'll have to do that eventually anyway :) Ben Romer is working on a patch set to remove all the proc files for the Unisys drivers. He is travelling right now but I think he will be submitting it in the next few days. Is it ok to leave this for now and let his patches remove all proc entries at the same time? ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH RFC v2 3/8] component: add support for component match array
Hi Russell, On Tue, Jun 24, 2014 at 9:29 PM, Russell King rmk+ker...@arm.linux.org.uk wrote: [...] +/* + * Add a component to be matched. + * + * The match array is first created or extended if necessary. + */ +void component_match_add(struct device *dev, struct component_match **matchptr, + int (*compare)(struct device *, void *), void *compare_data) +{ + struct component_match *match = *matchptr; + + if (IS_ERR(match)) + return; + + if (!match || match-num == match-alloc) { + size_t new_size = match ? match-alloc + 16 : 15; + + match = component_match_realloc(dev, match, new_size); + + *matchptr = match; + + if (IS_ERR(match)) + return; + } + + match-compare[match-num].fn = compare; + match-compare[match-num].data = compare_data; + match-num++; +} component_match_add should be exported. regards Philipp ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 1/4] Staging: unisys: remove references to __DATE__ and __TIME__
On Thu, Jun 26, 2014 at 05:37:35AM -0500, Ken Cox wrote: On 06/25/2014 10:57 PM, Greg KH wrote: On Wed, Jun 25, 2014 at 11:48:23AM -0500, Ken Cox wrote: --snip-- .id_table = virthba_id_table, .probe = virthba_probe, .remove = virthba_remove, @@ -1413,9 +1413,6 @@ info_proc_read(struct file *file, char __user *buf, size_t len, loff_t *offset) length += sprintf(vbuf + length, \nvirthba result queue poll wait:%d usecs.\n, rsltq_wait_usecs); - length += sprintf(vbuf + length, - \nModule build: Date:%s Time:%s\n, - __DATE__, __TIME__); length += sprintf(vbuf + length, \ninterrupts_rcvd = %llu, interrupts_disabled = %llu\n, virthbainfo-interrupts_rcvd, virthbainfo-interrupts_disabled); Why not just delete this proc file entirely? You'll have to do that eventually anyway :) Ben Romer is working on a patch set to remove all the proc files for the Unisys drivers. He is travelling right now but I think he will be submitting it in the next few days. Is it ok to leave this for now and let his patches remove all proc entries at the same time? That is fine. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: wlan-ng/hfa384x_usb.c: add blank line after declarations
This patch fixes the following checkpatch.pl issues in hfa384x_usb.c: WARNING: Missing a blank line after declarations Signed-off-by: Quentin Lee lee.rhaps...@gmail.com --- drivers/staging/wlan-ng/hfa384x_usb.c |1 + 1 file changed, 1 insertion(+) diff --git a/drivers/staging/wlan-ng/hfa384x_usb.c b/drivers/staging/wlan-ng/hfa384x_usb.c index 98343ff7..07cee56 100644 --- a/drivers/staging/wlan-ng/hfa384x_usb.c +++ b/drivers/staging/wlan-ng/hfa384x_usb.c @@ -3705,6 +3705,7 @@ static void hfa384x_usbout_callback(struct urb *urb) case -EPIPE: { hfa384x_t *hw = wlandev-priv; + netdev_warn(hw-wlandev-netdev, %s tx pipe stalled: requesting reset\n, wlandev-netdev-name); -- 1.7.9.5 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH RFC v2 3/8] component: add support for component match array
On Thu, Jun 26, 2014 at 02:34:17PM +0200, Philipp Zabel wrote: Hi Russell, On Tue, Jun 24, 2014 at 9:29 PM, Russell King rmk+ker...@arm.linux.org.uk wrote: [...] +/* + * Add a component to be matched. + * + * The match array is first created or extended if necessary. + */ +void component_match_add(struct device *dev, struct component_match **matchptr, + int (*compare)(struct device *, void *), void *compare_data) +{ + struct component_match *match = *matchptr; + + if (IS_ERR(match)) + return; + + if (!match || match-num == match-alloc) { + size_t new_size = match ? match-alloc + 16 : 15; + + match = component_match_realloc(dev, match, new_size); + + *matchptr = match; + + if (IS_ERR(match)) + return; + } + + match-compare[match-num].fn = compare; + match-compare[match-num].data = compare_data; + match-num++; +} component_match_add should be exported. Fixed, thanks. -- FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly improving, and getting towards what was expected from it. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 0/2] Staging: unisys: Remove references to __DATE__ and __TIME__
This series removes all references to __DATE__ and __TIME__ from the unisys drivers and also removes BROKEN from the Kconfig so the drivers can be built. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 1/2] Staging: unisys: remove references to __DATE__ and __TIME__
The use of __DATE__ and __TIME__ is no longer allowed in the kernel so this commit removes those. They were once useful when the drivers were being built externally, but now that the drivers are in the kernel the use of the macros is redundant since the kernel already has the same information elsewhere. In addition, using these macros breaks the build if using gcc 4.9.0 Reported-by: Greg Kroah-Hartman gre...@linuxfoundation.org Signed-off-by: Ken Cox j...@redhat.com --- drivers/staging/unisys/include/vbushelper.h | 8 +++- drivers/staging/unisys/uislib/uisutils.c| 11 --- drivers/staging/unisys/virthba/virthba.c| 5 - drivers/staging/unisys/virtpci/virtpci.c| 14 +++--- drivers/staging/unisys/virtpci/virtpci.h| 2 -- drivers/staging/unisys/visorchipset/visorchipset_main.c | 4 ++-- 6 files changed, 12 insertions(+), 32 deletions(-) diff --git a/drivers/staging/unisys/include/vbushelper.h b/drivers/staging/unisys/include/vbushelper.h index 93e35f0..ed94375 100644 --- a/drivers/staging/unisys/include/vbushelper.h +++ b/drivers/staging/unisys/include/vbushelper.h @@ -28,8 +28,7 @@ static inline void BusDeviceInfo_Init(ULTRA_VBUS_DEVICEINFO *pBusDeviceInfo, const char *deviceType, const char *driverName, - const char *ver, const char *verTag, - const char *buildDate, const char *buildTime) + const char *ver, const char *verTag) { memset(pBusDeviceInfo, 0, sizeof(ULTRA_VBUS_DEVICEINFO)); snprintf(pBusDeviceInfo-devType, sizeof(pBusDeviceInfo-devType), @@ -37,11 +36,10 @@ BusDeviceInfo_Init(ULTRA_VBUS_DEVICEINFO *pBusDeviceInfo, snprintf(pBusDeviceInfo-drvName, sizeof(pBusDeviceInfo-drvName), %s, (driverName) ? driverName : unknownDriver); snprintf(pBusDeviceInfo-infoStrings, -sizeof(pBusDeviceInfo-infoStrings), %s\t%s\t%s %s\t%s, +sizeof(pBusDeviceInfo-infoStrings), %s\t%s\t%s, (ver) ? ver : unknownVer, (verTag) ? verTag : unknownVerTag, -(buildDate) ? buildDate : noBuildDate, -(buildTime) ? buildTime : nobuildTime, TARGET_HOSTNAME); +TARGET_HOSTNAME); } #endif diff --git a/drivers/staging/unisys/uislib/uisutils.c b/drivers/staging/unisys/uislib/uisutils.c index 0f1bb73..07e5535 100644 --- a/drivers/staging/unisys/uislib/uisutils.c +++ b/drivers/staging/unisys/uislib/uisutils.c @@ -96,9 +96,8 @@ uisctrl_register_req_handler(int type, void *fptr, return 0; } if (chipset_DriverInfo) - BusDeviceInfo_Init(chipset_DriverInfo, - chipset, uislib, - VERSION, NULL, __DATE__, __TIME__); + BusDeviceInfo_Init(chipset_DriverInfo, chipset, uislib, + VERSION, NULL); return 1; } @@ -149,10 +148,8 @@ uisctrl_register_req_handler_ex(uuid_le switchTypeGuid, Away: if (rc) { if (chipset_DriverInfo) - BusDeviceInfo_Init(chipset_DriverInfo, - chipset, uislib, - VERSION, NULL, - __DATE__, __TIME__); + BusDeviceInfo_Init(chipset_DriverInfo, chipset, + uislib, VERSION, NULL); } else LOGERR(failed to register type %pUL.\n, switchTypeGuid); diff --git a/drivers/staging/unisys/virthba/virthba.c b/drivers/staging/unisys/virthba/virthba.c index 5c5aa70..4d1347a 100644 --- a/drivers/staging/unisys/virthba/virthba.c +++ b/drivers/staging/unisys/virthba/virthba.c @@ -139,8 +139,6 @@ static struct virtpci_driver virthba_driver = { .name = uisvirthba, .version = VERSION, .vertag = NULL, - .build_date = __DATE__, - .build_time = __TIME__, .id_table = virthba_id_table, .probe = virthba_probe, .remove = virthba_remove, @@ -1413,9 +1411,6 @@ info_proc_read(struct file *file, char __user *buf, size_t len, loff_t *offset) length += sprintf(vbuf + length, \nvirthba result queue poll wait:%d usecs.\n, rsltq_wait_usecs); - length += sprintf(vbuf + length, - \nModule build: Date:%s Time:%s\n, - __DATE__, __TIME__); length += sprintf(vbuf + length, \ninterrupts_rcvd = %llu, interrupts_disabled = %llu\n, virthbainfo-interrupts_rcvd, virthbainfo-interrupts_disabled); diff --git a/drivers/staging/unisys/virtpci/virtpci.c b/drivers/staging/unisys/virtpci/virtpci.c index 71246fe..5ab17e7 100644 ---
[PATCH v2 2/2] Staging: unisys Remove BROKEN from Kconfig to allow compilation
The unisys drivers now properly check to make sure they are running on the s-Par platform before they will initialize. This was fixed in commit fcd0157ece so it is safe to allow the unisys drivers to be built. This has been tested in the same qemu environment that originally produced the panic and the kernel now runs as expected. Reported-by: Fengguang Wu fengguang...@intel.com Reported-by: Sasha Levin sasha.le...@oracle.com Tested-by: Ken Cox j...@redhat.com Signed-off-by: Ken Cox j...@redhat.com --- drivers/staging/unisys/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/unisys/Kconfig b/drivers/staging/unisys/Kconfig index 6bae2af..ac080c9 100644 --- a/drivers/staging/unisys/Kconfig +++ b/drivers/staging/unisys/Kconfig @@ -3,7 +3,7 @@ # menuconfig UNISYSSPAR bool Unisys SPAR driver support - depends on X86_64 BROKEN + depends on X86_64 ---help--- Support for the Unisys SPAR drivers -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: Question about patches for bcm
On 26-06-2014 10:58:20, Kevin McKinney wrote: On Thu, Jun 26, 2014 at 10:42 AM, Matthias Beyer m...@beyermatthias.de wrote: Hi, I have a question related to some patches I send in. (I send them to de...@driverdev.osuosl.org, but they show up in the archives of this list... so I'm asking here) I send 6 patch sets since the beginning of the month. Some of them where reviewed, some not. None of them is upstream by now. Did something got stuck? I did some research and found a message in the archives[0] related to the bcm driver. It seems that there is still work in progress on this driver, so I guess my patches are not obsolete, right? I have more cleanup patchsets for this driver lying around (about 70 patches overall, ca 1/4 already submitted but not yet applied). I don't want to send all of them at once, as this just leads to confusion (as they are split up into 13 branches/patchsets). I almost patched all files in the driver. My second iteration would contain some refactoring of the type / member names, moving headers around, maybe splitting files, etc. Is this okay for you? Is there someone out there who actively works on the driver? Maybe I could send my patches to this person instead to the ML, so we can sync up our workflow to get this stuff done faster? Hi Matthias, I have been working on this driver for a while now. I am currently fixing a 64 bit casting bug; and I think I have a fix but I trying to get the hardware so I can test. A I believe it has to do with the ntohl function only accepting 32 bit values, and not 64 bit. But I need the hardware in order to test this theory. A We can work together to get this driver completed faster if you like. A I can review your patches? Can you resend your last iteration of patches? A I hope to have the hardware soon, and we can really get some good testing going on. A Hi Kevin, I can send the patches, sure. Shall I send them directly to you or with this ML in CC? Should I send the 6 already submitted patchsets or should I submit all patches I have done so far? I guess you do just reviewing, greg k-h still applies them, right? I do not have the hardware, I do my patches, compile them and run them through checkpatch.pl, but I have no hardware to test. All my patches are just cleanup patches (line shortening, code simplifications, oursourcing of code chunks into functions and the like), I just got into kernel stuff (and I love doing it :-) ). -- Mit freundlichen Grüßen, Kind regards, Matthias Beyer Proudly sent with mutt. Happily signed with gnupg. pgpXcqzXE0oy5.pgp Description: PGP signature ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
RE: [PATCH net-next] hyperv: Add handler for RNDIS_STATUS_NETWORK_CHANGE event
-Original Message- From: Olaf Hering [mailto:o...@aepfle.de] Sent: Thursday, June 26, 2014 4:46 AM To: Haiyang Zhang Cc: Greg KH; net...@vger.kernel.org; jasow...@redhat.com; driverdev- de...@linuxdriverproject.org; linux-ker...@vger.kernel.org; da...@davemloft.net Subject: Re: [PATCH net-next] hyperv: Add handler for RNDIS_STATUS_NETWORK_CHANGE event On Mon, Jun 23, Haiyang Zhang wrote: Yes, there is a link down/up event from the host, we currently call netif_carrier_off() / netif_carrier_on() with these events. Will hotplug scripts be triggered by netif_carrier_off/on? Where are the scripts located at (SLES)? In /etc/sysconfig/network/ifcfg-eth0 STARTMODE= should be set to ifplugd, this will most likely fix this sort of setup. Thanks for the info! I'll let our team know. - Haiyang ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: Question about patches for bcm
Hi, your email client sends HTML-Emails. Can you switch this off? Maybe that's also the reason why your emails don't show up in the archives[0]! I will send my patches tomorrow, no time now. Regards, Matthias [0]: http://driverdev.linuxdriverproject.org/pipermail/driverdev-devel/2014-June/thread.html On 26-06-2014 11:11:40, Kevin McKinney wrote: On Thu, Jun 26, 2014 at 11:02 AM, Matthias Beyer m...@beyermatthias.de wrote: On 26-06-2014 10:58:20, Kevin McKinney wrote: A A On Thu, Jun 26, 2014 at 10:42 AM, Matthias Beyer m...@beyermatthias.de A A wrote: A A A Hi, A A A I have a question related to some patches I send in. A A A (I send them to de...@driverdev.osuosl.org, but they show up in the A A A archives of this list... so I'm asking here) A A A I send 6 patch sets since the beginning of the month. Some of them A A A where reviewed, some not. None of them is upstream by now. Did A A A something got stuck? A A A I did some research and found a message in the archives[0] related to A A A the bcm driver. It seems that there is still work in progress on this A A A driver, so I guess my patches are not obsolete, right? A A A I have more cleanup patchsets for this driver lying around (about 70 A A A patches overall, ca 1/4 already submitted but not yet applied). A A A I don't want to send all of them at once, as this just leads to A A A confusion (as they are split up into 13 branches/patchsets). A A A I almost patched all files in the driver. My second iteration would A A A contain some refactoring of the type / member names, moving headers A A A around, maybe splitting files, etc. Is this okay for you? A A A Is there someone out there who actively works on the driver? Maybe I A A A could send my patches to this person instead to the ML, so we can A A A sync up our workflow to get this stuff done faster? A A Hi Matthias, A A I have been working on this driver for a while now. I am currently fixing A A a 64 bit casting bug; and I think I have a fix but I trying to get the A A hardware so I can test. A I believe it has to do with the ntohl function A A only accepting 32 bit values, and not 64 bit. But I need the hardware in A A order to test this theory. A We can work together to get this driver A A completed faster if you like. A I can review your patches? Can you resend A A your last iteration of patches? A I hope to have the hardware soon, and we A A can really get some good testing going on. A A A Hi Kevin, I can send the patches, sure. Shall I send them directly to you or with this ML in CC? Should I send the 6 already submitted patchsets or should I submit all patches I have done so far? Yes, please send to ML and CC me. A I guess you do just reviewing, greg k-h still applies them, right? Yes, Greg always reviews and applies patches. A There are also other reviewers with a lot more experience than me :) A I do not have the hardware, I do my patches, compile them and run them through checkpatch.pl, but I have no hardware to test. All my patches are just cleanup patches (line shortening, code simplifications, oursourcing of code chunks into functions and the like), I just got into kernel stuff (and I love doing it :-) ). That's okay about not having the hardware. A -- Mit freundlichen GrA 1/4A*en, Kind regards, Matthias Beyer Proudly sent with mutt. Happily signed with gnupg. -- Mit freundlichen Grüßen, Kind regards, Matthias Beyer Proudly sent with mutt. Happily signed with gnupg. pgpP1enWdS2Mc.pgp Description: PGP signature ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: Question about patches for bcm
On Thu, Jun 26, 2014 at 11:14 AM, Matthias Beyer m...@beyermatthias.de wrote: Hi, your email client sends HTML-Emails. Can you switch this off? Maybe that's also the reason why your emails don't show up in the archives[0]! Yeh, sorry about that. During the day I use gmail instead of mutt and I forget to turn off HTML emails. I will send my patches tomorrow, no time now. No problem, I typically work in the evenings EST. Regards, Matthias [0]: http://driverdev.linuxdriverproject.org/pipermail/driverdev-devel/2014-June/thread.html On 26-06-2014 11:11:40, Kevin McKinney wrote: On Thu, Jun 26, 2014 at 11:02 AM, Matthias Beyer m...@beyermatthias.de wrote: On 26-06-2014 10:58:20, Kevin McKinney wrote: A A On Thu, Jun 26, 2014 at 10:42 AM, Matthias Beyer m...@beyermatthias.de A A wrote: A A A Hi, A A A I have a question related to some patches I send in. A A A (I send them to de...@driverdev.osuosl.org, but they show up in the A A A archives of this list... so I'm asking here) A A A I send 6 patch sets since the beginning of the month. Some of them A A A where reviewed, some not. None of them is upstream by now. Did A A A something got stuck? A A A I did some research and found a message in the archives[0] related to A A A the bcm driver. It seems that there is still work in progress on this A A A driver, so I guess my patches are not obsolete, right? A A A I have more cleanup patchsets for this driver lying around (about 70 A A A patches overall, ca 1/4 already submitted but not yet applied). A A A I don't want to send all of them at once, as this just leads to A A A confusion (as they are split up into 13 branches/patchsets). A A A I almost patched all files in the driver. My second iteration would A A A contain some refactoring of the type / member names, moving headers A A A around, maybe splitting files, etc. Is this okay for you? A A A Is there someone out there who actively works on the driver? Maybe I A A A could send my patches to this person instead to the ML, so we can A A A sync up our workflow to get this stuff done faster? A A Hi Matthias, A A I have been working on this driver for a while now. I am currently fixing A A a 64 bit casting bug; and I think I have a fix but I trying to get the A A hardware so I can test. A I believe it has to do with the ntohl function A A only accepting 32 bit values, and not 64 bit. But I need the hardware in A A order to test this theory. A We can work together to get this driver A A completed faster if you like. A I can review your patches? Can you resend A A your last iteration of patches? A I hope to have the hardware soon, and we A A can really get some good testing going on. A A A Hi Kevin, I can send the patches, sure. Shall I send them directly to you or with this ML in CC? Should I send the 6 already submitted patchsets or should I submit all patches I have done so far? Yes, please send to ML and CC me. A I guess you do just reviewing, greg k-h still applies them, right? Yes, Greg always reviews and applies patches. A There are also other reviewers with a lot more experience than me :) A I do not have the hardware, I do my patches, compile them and run them through checkpatch.pl, but I have no hardware to test. All my patches are just cleanup patches (line shortening, code simplifications, oursourcing of code chunks into functions and the like), I just got into kernel stuff (and I love doing it :-) ). That's okay about not having the hardware. A -- Mit freundlichen GrA 1/4A*en, Kind regards, Matthias Beyer Proudly sent with mutt. Happily signed with gnupg. -- Mit freundlichen Grüßen, Kind regards, Matthias Beyer Proudly sent with mutt. Happily signed with gnupg. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 9/16] staging: comedi: ni_stc.h: the boardinfo 'name' should be first
By convention, the first member of the boardinfo is a 'const char *' to the board name, especially for those comedi drivers that rely on the comedi core to set dev-board_ptr to the entry matching the board name when doing a legacy (*attach) to a comedi driver. Modify the ni_board_struct appropriately for consistency, although the board name is only used for informational purposes by this driver (only the driver name is matched by the comedi core). For aesthetics, also move the members in the boardinfo declarations. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- v2: modify commit message based on comments from Ian Abbott patches 1-8 and 10-16 have not changed drivers/staging/comedi/drivers/ni_atmio.c | 16 drivers/staging/comedi/drivers/ni_mio_cs.c | 12 ++-- drivers/staging/comedi/drivers/ni_stc.h| 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_atmio.c b/drivers/staging/comedi/drivers/ni_atmio.c index 3ea49c7..230879f 100644 --- a/drivers/staging/comedi/drivers/ni_atmio.c +++ b/drivers/staging/comedi/drivers/ni_atmio.c @@ -107,9 +107,9 @@ are not supported. static const struct ni_board_struct ni_boards[] = { { + .name = at-mio-16e-1, .device_id = 44, .isapnp_id = 0x, /* XXX unknown */ - .name = at-mio-16e-1, .n_adchan = 16, .adbits = 12, .ai_fifo_depth = 8192, @@ -124,9 +124,9 @@ static const struct ni_board_struct ni_boards[] = { .num_p0_dio_channels = 8, .caldac = { mb88341 }, }, { + .name = at-mio-16e-2, .device_id = 25, .isapnp_id = 0x1900, - .name = at-mio-16e-2, .n_adchan = 16, .adbits = 12, .ai_fifo_depth = 2048, @@ -141,9 +141,9 @@ static const struct ni_board_struct ni_boards[] = { .num_p0_dio_channels = 8, .caldac = { mb88341 }, }, { + .name = at-mio-16e-10, .device_id = 36, .isapnp_id = 0x2400, - .name = at-mio-16e-10, .n_adchan = 16, .adbits = 12, .ai_fifo_depth = 512, @@ -157,9 +157,9 @@ static const struct ni_board_struct ni_boards[] = { .num_p0_dio_channels = 8, .caldac = { ad8804_debug }, }, { + .name = at-mio-16de-10, .device_id = 37, .isapnp_id = 0x2500, - .name = at-mio-16de-10, .n_adchan = 16, .adbits = 12, .ai_fifo_depth = 512, @@ -174,9 +174,9 @@ static const struct ni_board_struct ni_boards[] = { .caldac = { ad8804_debug }, .has_8255 = 1, }, { + .name = at-mio-64e-3, .device_id = 38, .isapnp_id = 0x2600, - .name = at-mio-64e-3, .n_adchan = 64, .adbits = 12, .ai_fifo_depth = 2048, @@ -191,9 +191,9 @@ static const struct ni_board_struct ni_boards[] = { .num_p0_dio_channels = 8, .caldac = { ad8804_debug }, }, { + .name = at-mio-16xe-50, .device_id = 39, .isapnp_id = 0x2700, - .name = at-mio-16xe-50, .n_adchan = 16, .adbits = 16, .ai_fifo_depth = 512, @@ -207,9 +207,9 @@ static const struct ni_board_struct ni_boards[] = { .num_p0_dio_channels = 8, .caldac = { dac8800, dac8043 }, }, { + .name = at-mio-16xe-10, .device_id = 50, .isapnp_id = 0x, /* XXX unknown */ - .name = at-mio-16xe-10, .n_adchan = 16, .adbits = 16, .ai_fifo_depth = 512, @@ -225,9 +225,9 @@ static const struct ni_board_struct ni_boards[] = { .num_p0_dio_channels = 8, .caldac = { dac8800, dac8043, ad8522 }, }, { + .name = at-ai-16xe-10, .device_id = 51, .isapnp_id = 0x, /* XXX unknown */ - .name = at-ai-16xe-10, .n_adchan = 16, .adbits = 16,
Re: [PATCH 00/16] staging: comedi: remove some cruft from the NI drivers
On 2014/06/20 07:10 PM, H Hartley Sweeten wrote: The National Instruments MIO drivers, ni_pcimio, ni_mio_cs, and ni_atmio, all include the ni_mio_common.c source file to provide the common functionality for the drivers. Including source files is a bit ugly. Remove some cruft from the NI drivers in preparation of converting ni_mio_common to a kernel module. H Hartley Sweeten (16): staging: comedi: ni_pcimio: remove forward declarations staging: comedi: ni_mio_common.c: remove interrupt_pin() macros staging: comedi: ni_mio_common drivers: remove NI_E_IRQ_FLAGS defines staging: comedi: ni_mio_common.c: remove IRQ_POLARITY defines staging: comedi: ni_atmio: remove '= 0' boardinfo data staging: comedi: ni_atmio: remove NI_SIZE define staging: comedi: ni_mio_cs: remove NI_SIZE define staging: comedi: ni_atmio: tidy up the boardinfo staging: comedi: ni_stc.h: the boardinfo 'name' should be first staging: comedi: ni_pcimio: remove DRV_NAME define staging: comedi: ni_atmio: remove ATMIO and PCIMIO defines staging: comedi: ni_mio_cs: remove ATMIO and PCIMIO defines staging: comedi: ni_pcimio: remove ATMIO and PCIMIO defines staging: comedi: mite.h: remove mite_irq() staging: comedi: mite.h: remove mite_device() staging: comedi: mite: cleanup mite_unsetup() Reviewed-by: Ian Abbott abbo...@mev.co.uk with the revised commit message for PATCH 09/16 from message-id 1403802788-38959-1-git-send-email-hswee...@visionengravers.com, subject [PATCH v2 9/16] staging: comedi: ni_stc.h: the boardinfo 'name' should be first -- -=( Ian Abbott @ MEV Ltd.E-mail: abbo...@mev.co.uk )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 13/18] staging: comedi: ni_65xx: update the MODULE_DESCRIPTION
Update the MODULE_DESCRIPTION to better describe the driver. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index 3b56359..e547c2f 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -781,5 +781,5 @@ static struct pci_driver ni_65xx_pci_driver = { module_comedi_pci_driver(ni_65xx_driver, ni_65xx_pci_driver); MODULE_AUTHOR(Comedi http://www.comedi.org;); -MODULE_DESCRIPTION(Comedi low-level driver); +MODULE_DESCRIPTION(Comedi driver for NI PCI-65xx static dio boards); MODULE_LICENSE(GPL); -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 03/18] staging: comedi: ni_65xx: cleanup recurring register map
Convert the inline functions used to calculate the offsets to the recurring port registers and rename them to remove the CamelCase. Define all the recurring registers. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 88 ++-- 1 file changed, 37 insertions(+), 51 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index 42d2c24..83e4144 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -96,34 +96,22 @@ except maybe the 6514. #define NI_65XX_WDOG_STATUS_EXP(1 0) #define NI_65XX_WDOG_INTERVAL_REG 0x18 /* 32-bit */ +/* Recurring port registers (8-bit) */ +#define NI_65XX_PORT(x)((x) * 0x10) +#define NI_65XX_IO_DATA_REG(x) (0x40 + NI_65XX_PORT(x)) +#define NI_65XX_IO_SEL_REG(x) (0x41 + NI_65XX_PORT(x)) +#define NI_65XX_IO_SEL_OUTPUT (0 0) +#define NI_65XX_IO_SEL_INPUT (1 0) +#define NI_65XX_RISE_EDGE_ENA_REG(x) (0x42 + NI_65XX_PORT(x)) +#define NI_65XX_FALL_EDGE_ENA_REG(x) (0x43 + NI_65XX_PORT(x)) +#define NI_65XX_FILTER_ENA(x) (0x44 + NI_65XX_PORT(x)) +#define NI_65XX_WDOG_HIZ_REG(x)(0x46 + NI_65XX_PORT(x)) +#define NI_65XX_WDOG_ENA(x)(0x47 + NI_65XX_PORT(x)) +#define NI_65XX_WDOG_HI_LO_REG(x) (0x48 + NI_65XX_PORT(x)) +#define NI_65XX_RTSI_ENA(x)(0x49 + NI_65XX_PORT(x)) + #define NI_65XX_MAX_NUM_PORTS 12 static const unsigned ni_65xx_channels_per_port = 8; -static const unsigned ni_65xx_port_offset = 0x10; - -static inline unsigned Port_Data(unsigned port) -{ - return 0x40 + port * ni_65xx_port_offset; -} - -static inline unsigned Port_Select(unsigned port) -{ - return 0x41 + port * ni_65xx_port_offset; -} - -static inline unsigned Rising_Edge_Detection_Enable(unsigned port) -{ - return 0x42 + port * ni_65xx_port_offset; -} - -static inline unsigned Falling_Edge_Detection_Enable(unsigned port) -{ - return 0x43 + port * ni_65xx_port_offset; -} - -static inline unsigned Filter_Enable(unsigned port) -{ - return 0x44 + port * ni_65xx_port_offset; -} enum ni_65xx_boardid { BOARD_PCI6509, @@ -333,7 +321,7 @@ static int ni_65xx_config_filter(struct comedi_device *dev, } writeb(devpriv-filter_enable[port], - devpriv-mmio + Filter_Enable(port)); + devpriv-mmio + NI_65XX_FILTER_ENA(port)); return 2; } @@ -357,14 +345,16 @@ static int ni_65xx_dio_insn_config(struct comedi_device *dev, if (s-type != COMEDI_SUBD_DIO) return -EINVAL; devpriv-dio_direction[port] = COMEDI_OUTPUT; - writeb(0, devpriv-mmio + Port_Select(port)); + writeb(NI_65XX_IO_SEL_OUTPUT, + devpriv-mmio + NI_65XX_IO_SEL_REG(port)); return 1; break; case INSN_CONFIG_DIO_INPUT: if (s-type != COMEDI_SUBD_DIO) return -EINVAL; devpriv-dio_direction[port] = COMEDI_INPUT; - writeb(1, devpriv-mmio + Port_Select(port)); + writeb(NI_65XX_IO_SEL_INPUT, + devpriv-mmio + NI_65XX_IO_SEL_REG(port)); return 1; break; case INSN_CONFIG_DIO_QUERY: @@ -419,9 +409,10 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev, bits = devpriv-output_bits[port]; if (board-invert_outputs) bits = ~bits; - writeb(bits, devpriv-mmio + Port_Data(port)); + writeb(bits, devpriv-mmio + NI_65XX_IO_DATA_REG(port)); } - port_read_bits = readb(devpriv-mmio + Port_Data(port)); + port_read_bits = readb(devpriv-mmio + + NI_65XX_IO_DATA_REG(port)); if (s-type == COMEDI_SUBD_DO board-invert_outputs) { /* Outputs inverted, so invert value read back from * DO subdevice. (Does not apply to boards with DIO @@ -547,21 +538,15 @@ static int ni_65xx_intr_insn_config(struct comedi_device *dev, if (data[0] != INSN_CONFIG_CHANGE_NOTIFY) return -EINVAL; - writeb(data[1], devpriv-mmio + Rising_Edge_Detection_Enable(0)); - writeb(data[1] 8, - devpriv-mmio + Rising_Edge_Detection_Enable(0x10)); - writeb(data[1] 16, - devpriv-mmio + Rising_Edge_Detection_Enable(0x20)); - writeb(data[1] 24, - devpriv-mmio + Rising_Edge_Detection_Enable(0x30)); - - writeb(data[2], devpriv-mmio + Falling_Edge_Detection_Enable(0)); - writeb(data[2] 8,
[PATCH v2 14/18] staging: comedi: ni_65xx: tidy ni_65xx_intr_insn_bits() declaration
For aesthetics, tidy up the whitespace of this function declarations to follow the form in the rest of the driver. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index e547c2f..46d4ebc 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -511,7 +511,8 @@ static int ni_65xx_intr_cancel(struct comedi_device *dev, static int ni_65xx_intr_insn_bits(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data) + struct comedi_insn *insn, + unsigned int *data) { data[1] = 0; return insn-n; -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 16/18] staging: comedi: ni_65xx: use the subdevice 'io_bits' to handle the 'invert_outputs'
Some of the boards supported by this driver have output ports that are inverted from the comedi view of the output state. For these boards the read values from the output ports needs to be inverted before being modified and inverted again before being written back in the (*insn_bits) operation. Currently the subdevice type and the boardinfo is checked in the (*insn_bits) to determine if the inverted outputs need to be handled. Since thise driver does not use the subdevice 'io_bits', simplify the driver a bit by initializing the 'io_bits' during the attach to handle the inversion. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 15 ++- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index a6d5fde..3e25e4e 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -362,19 +362,13 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - const struct ni_65xx_board *board = comedi_board(dev); struct ni_65xx_private *devpriv = dev-private; unsigned long base_port = (unsigned long)s-private; unsigned int base_chan = CR_CHAN(insn-chanspec); int last_port_offset = NI_65XX_CHAN_TO_PORT(s-n_chan - 1); - unsigned invert = 0x00; unsigned read_bits = 0; int port_offset; - /* handle inverted outputs if necessary */ - if (s-type == COMEDI_SUBD_DO board-invert_outputs) - invert = 0xff; - for (port_offset = NI_65XX_CHAN_TO_PORT(base_chan); port_offset = last_port_offset; port_offset++) { unsigned port = base_port + port_offset; @@ -399,16 +393,16 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev, /* update the outputs */ if (port_mask) { bits = readb(devpriv-mmio + NI_65XX_IO_DATA_REG(port)); - bits ^= invert; + bits ^= s-io_bits; /* invert if necessary */ bits = ~port_mask; bits |= (port_data port_mask); - bits ^= invert; + bits ^= s-io_bits; /* invert back */ writeb(bits, devpriv-mmio + NI_65XX_IO_DATA_REG(port)); } /* read back the actual state */ bits = readb(devpriv-mmio + NI_65XX_IO_DATA_REG(port)); - bits ^= invert; + bits ^= s-io_bits; /* invert if necessary */ if (bitshift 0) bits = bitshift; else @@ -662,6 +656,9 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, /* the output ports always start after the input ports */ s-private = (void *)(unsigned long)board-num_di_ports; + + /* use the io_bits to handle the inverted outputs */ + s-io_bits = (board-invert_outputs) ? 0xff : 0x00; } else { s-type = COMEDI_SUBD_UNUSED; } -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 09/18] staging: comedi: ni_65xx: tidy up the port-chan conversions
Introduce some convienence macros to handle the port to channel, channel to port, and channel mask calculations based on the 8 channels per port of the hardware. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 40 ++-- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index 742d3cd..5218e67 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -110,8 +110,10 @@ except maybe the 6514. #define NI_65XX_WDOG_HI_LO_REG(x) (0x48 + NI_65XX_PORT(x)) #define NI_65XX_RTSI_ENA(x)(0x49 + NI_65XX_PORT(x)) -#define NI_65XX_MAX_NUM_PORTS 12 -static const unsigned ni_65xx_channels_per_port = 8; +#define NI_65XX_MAX_NUM_PORTS 12 +#define NI_65XX_PORT_TO_CHAN(x)((x) * 8) +#define NI_65XX_CHAN_TO_PORT(x)((x) / 8) +#define NI_65XX_CHAN_TO_MASK(x)(1 ((x) % 8)) enum ni_65xx_boardid { BOARD_PCI6509, @@ -258,11 +260,6 @@ static const struct ni_65xx_board ni_65xx_boards[] = { }, }; -static inline unsigned ni_65xx_port_by_channel(unsigned channel) -{ - return channel / ni_65xx_channels_per_port; -} - static inline unsigned ni_65xx_total_num_ports(const struct ni_65xx_board *board) { @@ -282,8 +279,8 @@ static int ni_65xx_dio_insn_config(struct comedi_device *dev, struct ni_65xx_private *devpriv = dev-private; unsigned long base_port = (unsigned long)s-private; unsigned int chan = CR_CHAN(insn-chanspec); - unsigned int chan_mask = 1 (chan % ni_65xx_channels_per_port); - unsigned port = base_port + ni_65xx_port_by_channel(chan); + unsigned int chan_mask = NI_65XX_CHAN_TO_MASK(chan); + unsigned port = base_port + NI_65XX_CHAN_TO_PORT(chan); unsigned int interval; unsigned int val; @@ -345,23 +342,23 @@ static int ni_65xx_dio_insn_config(struct comedi_device *dev, static int ni_65xx_dio_insn_bits(struct comedi_device *dev, struct comedi_subdevice *s, -struct comedi_insn *insn, unsigned int *data) +struct comedi_insn *insn, +unsigned int *data) { const struct ni_65xx_board *board = comedi_board(dev); - unsigned long base_port = (unsigned long)s-private; struct ni_65xx_private *devpriv = dev-private; - int base_bitfield_channel; + unsigned long base_port = (unsigned long)s-private; + unsigned int base_chan = CR_CHAN(insn-chanspec); + int last_port_offset = NI_65XX_CHAN_TO_PORT(s-n_chan - 1); unsigned read_bits = 0; - int last_port_offset = ni_65xx_port_by_channel(s-n_chan - 1); int port_offset; - base_bitfield_channel = CR_CHAN(insn-chanspec); - for (port_offset = ni_65xx_port_by_channel(base_bitfield_channel); + for (port_offset = NI_65XX_CHAN_TO_PORT(base_chan); port_offset = last_port_offset; port_offset++) { unsigned port = base_port + port_offset; - int base_port_channel = port_offset * ni_65xx_channels_per_port; + int base_port_channel = NI_65XX_PORT_TO_CHAN(port_offset); unsigned port_mask, port_data, port_read_bits; - int bitshift = base_port_channel - base_bitfield_channel; + int bitshift = base_port_channel - base_chan; if (bitshift = 32) break; @@ -623,8 +620,7 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, if (board-num_di_ports) { s-type = COMEDI_SUBD_DI; s-subdev_flags = SDF_READABLE; - s-n_chan = - board-num_di_ports * ni_65xx_channels_per_port; + s-n_chan = NI_65XX_PORT_TO_CHAN(board-num_di_ports); s-range_table = range_digital; s-maxdata = 1; s-insn_config = ni_65xx_dio_insn_config; @@ -640,8 +636,7 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, if (board-num_do_ports) { s-type = COMEDI_SUBD_DO; s-subdev_flags = SDF_READABLE | SDF_WRITABLE; - s-n_chan = - board-num_do_ports * ni_65xx_channels_per_port; + s-n_chan = NI_65XX_PORT_TO_CHAN(board-num_do_ports); s-range_table = range_digital; s-maxdata = 1; s-insn_bits = ni_65xx_dio_insn_bits; @@ -656,8 +651,7 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, if (board-num_dio_ports) { s-type = COMEDI_SUBD_DIO; s-subdev_flags = SDF_READABLE |
[PATCH v2 11/18] staging: comedi: ni_65xx: tidy up the comedi_driver declaration
For aesthetics, add some whitespace to the comedi_driver declaration. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index 07d5949..6c194fc 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -714,10 +714,10 @@ static void ni_65xx_detach(struct comedi_device *dev) } static struct comedi_driver ni_65xx_driver = { - .driver_name = ni_65xx, - .module = THIS_MODULE, - .auto_attach = ni_65xx_auto_attach, - .detach = ni_65xx_detach, + .driver_name= ni_65xx, + .module = THIS_MODULE, + .auto_attach= ni_65xx_auto_attach, + .detach = ni_65xx_detach, }; static int ni_65xx_pci_probe(struct pci_dev *dev, -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 01/18] staging: comedi: ni_65xx: filter interval register is 32-bit
According to the register programming manual, the filter interval register is 32-bit. Fix the writes to this register. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index d6c1140..292355b 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -299,7 +299,7 @@ static int ni_65xx_config_filter(struct comedi_device *dev, data[1] = interval * filter_resolution_ns; if (interval != devpriv-filter_interval) { - writeb(interval, devpriv-mmio + Filter_Interval); + writel(interval, devpriv-mmio + Filter_Interval); devpriv-filter_interval = interval; } @@ -689,7 +689,7 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, writeb(0x00, devpriv-mmio + Master_Interrupt_Control); /* Set filter interval to 0 (32bit reg) */ - writeb(0x, devpriv-mmio + Filter_Interval); + writel(0x, devpriv-mmio + Filter_Interval); ret = request_irq(dev-irq, ni_65xx_interrupt, IRQF_SHARED, ni_65xx, dev); -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 17/18] staging: comedi: ni_65xx: fix digital output reset during attach
During the attach of this driver, the digital output ports are all initialized to a known state. Some of the boards supported by this driver have output ports that are inverted from the comedi view of the output state. For these boards the values written to the ports needs to be inverted. Currently, only bit 0 of each port is inverted when the boardinfo indicates that the outputs are inverted. This results in channels 0, 8, 16, etc. being set to '0' and all other channels being set to '1'. If the boardinfo does not indicate that the outputs are inverted, all the channels are set to '0'. This initialization is unnecessary for the input only ports. The input/output ports also do not need to be initialized since they are configured as inputs during the attach. Move the output port initialization so it occurs when the digital output subdevice is setup. Use the 's-io_bits' value to initialize the ports so that the correct inverted/non-inverted state is used for the comedi '0' value. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 14 -- 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index 3e25e4e..a0deb01 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -659,6 +659,13 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, /* use the io_bits to handle the inverted outputs */ s-io_bits = (board-invert_outputs) ? 0xff : 0x00; + + /* reset all output ports to comedi '0' */ + for (i = 0; i board-num_do_ports; ++i) { + writeb(s-io_bits, /* inverted if necessary */ + devpriv-mmio + + NI_65XX_IO_DATA_REG(board-num_di_ports + i)); + } } else { s-type = COMEDI_SUBD_UNUSED; } @@ -702,13 +709,8 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, s-cancel = ni_65xx_intr_cancel; } - for (i = 0; i ni_65xx_total_num_ports(board); ++i) { + for (i = 0; i ni_65xx_total_num_ports(board); ++i) writeb(0x00, devpriv-mmio + NI_65XX_FILTER_ENA(i)); - if (board-invert_outputs) - writeb(0x01, devpriv-mmio + NI_65XX_IO_DATA_REG(i)); - else - writeb(0x00, devpriv-mmio + NI_65XX_IO_DATA_REG(i)); - } /* Set filter interval to 0 (32bit reg) */ writel(0x, devpriv-mmio + NI_65XX_FILTER_REG); -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 15/18] staging: comedi: ni_65xx: remove 'output_bits' from private data
Remove the need for the 'output_bits' in the private data by just reading the current state of the data port when updating the output channels in the (*insn_bits) function. Add a local variable to handle the inverting of the hardware values when the boardinfo indicates that the outputs are inverted. Rename the local variable 'port_read_bits' to 'bits' so that we can use it for updating the output channels and reading back the actual state to return to the user. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 41 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index 46d4ebc..a6d5fde 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -129,7 +129,6 @@ #define NI_65XX_WDOG_HI_LO_REG(x) (0x48 + NI_65XX_PORT(x)) #define NI_65XX_RTSI_ENA(x)(0x49 + NI_65XX_PORT(x)) -#define NI_65XX_MAX_NUM_PORTS 12 #define NI_65XX_PORT_TO_CHAN(x)((x) * 8) #define NI_65XX_CHAN_TO_PORT(x)((x) / 8) #define NI_65XX_CHAN_TO_MASK(x)(1 ((x) % 8)) @@ -287,7 +286,6 @@ static inline unsigned ni_65xx_total_num_ports(const struct ni_65xx_board struct ni_65xx_private { void __iomem *mmio; - unsigned short output_bits[NI_65XX_MAX_NUM_PORTS]; }; static int ni_65xx_dio_insn_config(struct comedi_device *dev, @@ -369,14 +367,19 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev, unsigned long base_port = (unsigned long)s-private; unsigned int base_chan = CR_CHAN(insn-chanspec); int last_port_offset = NI_65XX_CHAN_TO_PORT(s-n_chan - 1); + unsigned invert = 0x00; unsigned read_bits = 0; int port_offset; + /* handle inverted outputs if necessary */ + if (s-type == COMEDI_SUBD_DO board-invert_outputs) + invert = 0xff; + for (port_offset = NI_65XX_CHAN_TO_PORT(base_chan); port_offset = last_port_offset; port_offset++) { unsigned port = base_port + port_offset; int base_port_channel = NI_65XX_PORT_TO_CHAN(port_offset); - unsigned port_mask, port_data, port_read_bits; + unsigned port_mask, port_data, bits; int bitshift = base_port_channel - base_chan; if (bitshift = 32) @@ -392,30 +395,26 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev, } port_mask = 0xff; port_data = 0xff; + + /* update the outputs */ if (port_mask) { - unsigned bits; - devpriv-output_bits[port] = ~port_mask; - devpriv-output_bits[port] |= - port_data port_mask; - bits = devpriv-output_bits[port]; - if (board-invert_outputs) - bits = ~bits; + bits = readb(devpriv-mmio + NI_65XX_IO_DATA_REG(port)); + bits ^= invert; + bits = ~port_mask; + bits |= (port_data port_mask); + bits ^= invert; writeb(bits, devpriv-mmio + NI_65XX_IO_DATA_REG(port)); } - port_read_bits = readb(devpriv-mmio + - NI_65XX_IO_DATA_REG(port)); - if (s-type == COMEDI_SUBD_DO board-invert_outputs) { - /* Outputs inverted, so invert value read back from -* DO subdevice. (Does not apply to boards with DIO -* subdevice.) */ - port_read_bits ^= 0xFF; - } + + /* read back the actual state */ + bits = readb(devpriv-mmio + NI_65XX_IO_DATA_REG(port)); + bits ^= invert; if (bitshift 0) - port_read_bits = bitshift; + bits = bitshift; else - port_read_bits = -bitshift; + bits = -bitshift; - read_bits |= port_read_bits; + read_bits |= bits; } data[1] = read_bits; return insn-n; -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 18/18] staging: comedi: ni_65xx: factor input filter disable out of (*auto_attach)
For aesthetics, factor the code that disables the input filters out of ni_65xx_auto_attach(). Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 31 --- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index a0deb01..cad2c28 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -278,16 +278,29 @@ static const struct ni_65xx_board ni_65xx_boards[] = { }, }; -static inline unsigned ni_65xx_total_num_ports(const struct ni_65xx_board - *board) -{ - return board-num_dio_ports + board-num_di_ports + board-num_do_ports; -} - struct ni_65xx_private { void __iomem *mmio; }; +static void ni_65xx_disable_input_filters(struct comedi_device *dev) +{ + const struct ni_65xx_board *board = comedi_board(dev); + struct ni_65xx_private *devpriv = dev-private; + unsigned num_ports; + int i; + + num_ports = board-num_dio_ports + + board-num_di_ports + + board-num_do_ports; + + /* disable input filtering on all ports */ + for (i = 0; i num_ports; ++i) + writeb(0x00, devpriv-mmio + NI_65XX_FILTER_ENA(i)); + + /* set filter interval to 0 (32bit reg) */ + writel(0x, devpriv-mmio + NI_65XX_FILTER_REG); +} + static int ni_65xx_dio_insn_config(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_insn *insn, @@ -709,11 +722,7 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, s-cancel = ni_65xx_intr_cancel; } - for (i = 0; i ni_65xx_total_num_ports(board); ++i) - writeb(0x00, devpriv-mmio + NI_65XX_FILTER_ENA(i)); - - /* Set filter interval to 0 (32bit reg) */ - writel(0x, devpriv-mmio + NI_65XX_FILTER_REG); + ni_65xx_disable_input_filters(dev); return 0; } -- 1.9.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2 06/18] staging: comedi: ni_65xx: remove the need for the subdevice private data
There is only one member in the subdevice private data, an unsigned value that is the 'base_port' that the subdevice uses to access the port registers. Just cast the appropriate value into s-private instead of allocating the private data for each subdevice. The casts are a bit of a nusance but it removes the unnecessary allocations. Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com Cc: Ian Abbott abbo...@mev.co.uk Cc: Greg Kroah-Hartman gr...@linuxfoundation.org --- drivers/staging/comedi/drivers/ni_65xx.c | 39 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_65xx.c b/drivers/staging/comedi/drivers/ni_65xx.c index 4b3f504..7e562f1 100644 --- a/drivers/staging/comedi/drivers/ni_65xx.c +++ b/drivers/staging/comedi/drivers/ni_65xx.c @@ -274,25 +274,16 @@ struct ni_65xx_private { unsigned short output_bits[NI_65XX_MAX_NUM_PORTS]; }; -struct ni_65xx_subdevice_private { - unsigned base_port; -}; - -static inline struct ni_65xx_subdevice_private *sprivate(struct comedi_subdevice -*subdev) -{ - return subdev-private; -} - static int ni_65xx_dio_insn_config(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data) { struct ni_65xx_private *devpriv = dev-private; + unsigned long base_port = (unsigned long)s-private; unsigned int chan = CR_CHAN(insn-chanspec); unsigned int chan_mask = 1 (chan % ni_65xx_channels_per_port); - unsigned port = sprivate(s)-base_port + ni_65xx_port_by_channel(chan); + unsigned port = base_port + ni_65xx_port_by_channel(chan); unsigned int interval; unsigned int val; @@ -357,6 +348,7 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { const struct ni_65xx_board *board = comedi_board(dev); + unsigned long base_port = (unsigned long)s-private; struct ni_65xx_private *devpriv = dev-private; int base_bitfield_channel; unsigned read_bits = 0; @@ -366,7 +358,7 @@ static int ni_65xx_dio_insn_bits(struct comedi_device *dev, base_bitfield_channel = CR_CHAN(insn-chanspec); for (port_offset = ni_65xx_port_by_channel(base_bitfield_channel); port_offset = last_port_offset; port_offset++) { - unsigned port = sprivate(s)-base_port + port_offset; + unsigned port = base_port + port_offset; int base_port_channel = port_offset * ni_65xx_channels_per_port; unsigned port_mask, port_data, port_read_bits; int bitshift = base_port_channel - base_bitfield_channel; @@ -563,7 +555,6 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, struct pci_dev *pcidev = comedi_to_pci_dev(dev); const struct ni_65xx_board *board = NULL; struct ni_65xx_private *devpriv; - struct ni_65xx_subdevice_private *spriv; struct comedi_subdevice *s; unsigned i; int ret; @@ -609,10 +600,9 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, s-maxdata = 1; s-insn_config = ni_65xx_dio_insn_config; s-insn_bits = ni_65xx_dio_insn_bits; - spriv = comedi_alloc_spriv(s, sizeof(*spriv)); - if (!spriv) - return -ENOMEM; - spriv-base_port = 0; + + /* the input ports always start at port 0 */ + s-private = (void *)0; } else { s-type = COMEDI_SUBD_UNUSED; } @@ -626,10 +616,9 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, s-range_table = range_digital; s-maxdata = 1; s-insn_bits = ni_65xx_dio_insn_bits; - spriv = comedi_alloc_spriv(s, sizeof(*spriv)); - if (!spriv) - return -ENOMEM; - spriv-base_port = board-num_di_ports; + + /* the output ports always start after the input ports */ + s-private = (void *)(unsigned long)board-num_di_ports; } else { s-type = COMEDI_SUBD_UNUSED; } @@ -644,10 +633,10 @@ static int ni_65xx_auto_attach(struct comedi_device *dev, s-maxdata = 1; s-insn_config = ni_65xx_dio_insn_config; s-insn_bits = ni_65xx_dio_insn_bits; - spriv = comedi_alloc_spriv(s, sizeof(*spriv)); - if (!spriv) - return -ENOMEM; - spriv-base_port = 0; + + /* the input/output ports always start at port 0 */ + s-private = (void *)0; + /* configure all ports for input */
Re: Anybody working on ced1401?
On Thu, Jun 26, 2014 at 09:36:17AM +0200, Alois Schloegl wrote: On 2014-06-18 13:33, Kristina Martšenko wrote: Hi Alois, I'm helping Greg do a bit of cleanup in the staging tree. I noticed that nobody seems to have worked towards moving ced1401 out of staging in over a year. Are there any plans to clean it up and move it out soon? Because otherwise we're going to have to delete the driver, as we don't want staging to become a permanent place for unfinished code. Thanks, Kristina Hi Kristina, thanks for the notice. Please, give me some time for checking here how we want to go forward with this. What do you mean by this? You all have had a lot of time, with no real progress at all? How about we delete the driver and if you decide to continue to work on it, we can revert that deletion and go from there? thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] Tools: hv: fix file overwriting of hv_fcopy_daemon
From: Yue Zhang yue...@microsoft.com hv_fcopy_daemon fails to overwrite a file if the target file already exits. Add O_TRUNC flag on opening. Signed-off-by: Yue Zhang yue...@microsoft.com --- tools/hv/hv_fcopy_daemon.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/hv/hv_fcopy_daemon.c b/tools/hv/hv_fcopy_daemon.c index fba1c75..01eee6b 100644 --- a/tools/hv/hv_fcopy_daemon.c +++ b/tools/hv/hv_fcopy_daemon.c @@ -88,7 +88,8 @@ static int hv_start_fcopy(struct hv_start_fcopy *smsg) } } - target_fd = open(target_fname, O_RDWR | O_CREAT | O_CLOEXEC, 0744); + target_fd = open(target_fname, + O_RDWR | O_CREAT | O_TRUNC | O_CLOEXEC, 0744); if (target_fd == -1) { syslog(LOG_INFO, Open Failed: %s, strerror(errno)); goto done; -- 1.9.1 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
RE: [PATCH] video: hyperv: hyperv_fb: refresh the VM screen by force on VM panic
MS-TFS: 157532 What is this line for? Hi Greg, This line is for our internal bug repository. We have an automated system to correlate bugs with fixes so that our test team knows when a bug fix has been accepted upstream and they need to write a new test case for it. The MS-TFS line has appeared in the commit description for a while if you search for it in 'git log' of linux-next. Please let us know if you have further comments. Please don't add marker lines like this that provide no relevancy to anyone else. I don't allow gerrit ids for the same reason. If you want to refer to a public bug tracker, that's great, otherwise, don't include it. greg k-h Ok, I'll remove the line and re-submit a v2 patch(the patch itself will be the same). Thanks, -- Dexuan ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2] video: hyperv: hyperv_fb: refresh the VM screen by force on VM panic
Currently the VSC has no chance to notify the VSP of the dirty rectangle on VM panic because the notification work is done in a workqueue, and in panic() the kernel typically ends up in an infinite loop, and a typical kernel config has CONFIG_PREEMPT_VOLUNTARY=y and CONFIG_PREEMPT is not set, so a context switch can't happen in panic() and the workqueue won't have a chance to run. As a result, the VM Connection window can't refresh until it's closed and we re-connect to the VM. We can register a handler on panic_notifier_list: the handler can notify the VSC and switch the framebuffer driver to a synchronous mode, meaning the VSC flushes any future framebuffer change to the VSP immediately. v2: removed the MS-TFS line in the commit message Signed-off-by: Dexuan Cui de...@microsoft.com Reviewed-by: Haiyang Zhang haiya...@microsoft.com --- drivers/video/fbdev/hyperv_fb.c | 58 ++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c index e23392e..291d171 100644 --- a/drivers/video/fbdev/hyperv_fb.c +++ b/drivers/video/fbdev/hyperv_fb.c @@ -226,11 +226,16 @@ struct hvfb_par { u8 recv_buf[MAX_VMBUS_PKT_SIZE]; }; +static struct fb_info *hvfb_info; + static uint screen_width = HVFB_WIDTH; static uint screen_height = HVFB_HEIGHT; static uint screen_depth; static uint screen_fb_size; +/* If true, the VSC notifies the VSP on every framebuffer change */ +static bool synchronous_fb; + /* Send message to Hyper-V host */ static inline int synthvid_send(struct hv_device *hdev, struct synthvid_msg *msg) @@ -532,6 +537,20 @@ static void hvfb_update_work(struct work_struct *w) schedule_delayed_work(par-dwork, HVFB_UPDATE_DELAY); } +static int hvfb_on_panic(struct notifier_block *nb, + unsigned long e, void *p) +{ + if (hvfb_info) + synthvid_update(hvfb_info); + + synchronous_fb = true; + + return NOTIFY_DONE; +} + +static struct notifier_block hvfb_panic_nb = { + .notifier_call = hvfb_on_panic, +}; /* Framebuffer operation handlers */ @@ -582,14 +601,41 @@ static int hvfb_blank(int blank, struct fb_info *info) return 1; /* get fb_blank to set the colormap to all black */ } +static void hvfb_cfb_fillrect(struct fb_info *p, + const struct fb_fillrect *rect) +{ + cfb_fillrect(p, rect); + + if (unlikely(synchronous_fb)) + synthvid_update(p); +} + +static void hvfb_cfb_copyarea(struct fb_info *p, + const struct fb_copyarea *area) +{ + cfb_copyarea(p, area); + + if (unlikely(synchronous_fb)) + synthvid_update(p); +} + +static void hvfb_cfb_imageblit(struct fb_info *p, + const struct fb_image *image) +{ + cfb_imageblit(p, image); + + if (unlikely(synchronous_fb)) + synthvid_update(p); +} + static struct fb_ops hvfb_ops = { .owner = THIS_MODULE, .fb_check_var = hvfb_check_var, .fb_set_par = hvfb_set_par, .fb_setcolreg = hvfb_setcolreg, - .fb_fillrect = cfb_fillrect, - .fb_copyarea = cfb_copyarea, - .fb_imageblit = cfb_imageblit, + .fb_fillrect = hvfb_cfb_fillrect, + .fb_copyarea = hvfb_cfb_copyarea, + .fb_imageblit = hvfb_cfb_imageblit, .fb_blank = hvfb_blank, }; @@ -801,6 +847,9 @@ static int hvfb_probe(struct hv_device *hdev, par-fb_ready = true; + hvfb_info = info; + atomic_notifier_chain_register(panic_notifier_list, hvfb_panic_nb); + return 0; error: @@ -820,6 +869,9 @@ static int hvfb_remove(struct hv_device *hdev) struct fb_info *info = hv_get_drvdata(hdev); struct hvfb_par *par = info-par; + atomic_notifier_chain_unregister(panic_notifier_list, hvfb_panic_nb); + hvfb_info = NULL; + par-update = false; par-fb_ready = false; -- 1.9.1 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
RE: [PATCH] Tools: hv: fix file overwriting of hv_fcopy_daemon
-Original Message- From: Yue Zhang [mailto:yue...@microsoft.com] Sent: Thursday, June 26, 2014 2:09 PM To: KY Srinivasan; Haiyang Zhang; driverdev-devel@linuxdriverproject.org; linux-ker...@vger.kernel.org; o...@aepfle.de; jasow...@redhat.com; a...@canonical.com Cc: Dexuan Cui; Thomas Shao Subject: [PATCH] Tools: hv: fix file overwriting of hv_fcopy_daemon From: Yue Zhang yue...@microsoft.com hv_fcopy_daemon fails to overwrite a file if the target file already exits. Add O_TRUNC flag on opening. Signed-off-by: Yue Zhang yue...@microsoft.com --- tools/hv/hv_fcopy_daemon.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/hv/hv_fcopy_daemon.c b/tools/hv/hv_fcopy_daemon.c index fba1c75..01eee6b 100644 --- a/tools/hv/hv_fcopy_daemon.c +++ b/tools/hv/hv_fcopy_daemon.c @@ -88,7 +88,8 @@ static int hv_start_fcopy(struct hv_start_fcopy *smsg) } } - target_fd = open(target_fname, O_RDWR | O_CREAT | O_CLOEXEC, 0744); + target_fd = open(target_fname, + O_RDWR | O_CREAT | O_TRUNC | Please align O_RDWR to align with the first argument (target_fname). K. Y ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v14 04/10] imx-drm: use defines for clock polarity settings
On Wed, Jun 25, 2014 at 11:44:47AM +0200, Denis Carikli wrote: On 06/25/2014 06:48 AM, Sascha Hauer wrote: +#define ENABLE_POL_LOW 0 +#define ENABLE_POL_HIGH1 Adding defines without a proper namespace (IPU_) outside a driver private header file is not nice. Anyway, instead of adding the defines ... Fixed in imx-drm: use defines for clock polarity settings and in imx-drm: Use drm_display_mode timings flags.. Denis, can you send just this one updated patch, so I can update the one I have here with this change. Once you've done that, I'll send the first four off to Greg. Thanks. -- FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly improving, and getting towards what was expected from it. ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
RE: [PATCH] Tools: hv: fix file overwriting of hv_fcopy_daemon
-Original Message- From: KY Srinivasan -Original Message- From: Yue Zhang [mailto:yue...@microsoft.com] hv_fcopy_daemon fails to overwrite a file if the target file already exits. Add O_TRUNC flag on opening. Signed-off-by: Yue Zhang yue...@microsoft.com --- tools/hv/hv_fcopy_daemon.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/hv/hv_fcopy_daemon.c b/tools/hv/hv_fcopy_daemon.c index fba1c75..01eee6b 100644 --- a/tools/hv/hv_fcopy_daemon.c +++ b/tools/hv/hv_fcopy_daemon.c @@ -88,7 +88,8 @@ static int hv_start_fcopy(struct hv_start_fcopy *smsg) } } -target_fd = open(target_fname, O_RDWR | O_CREAT | O_CLOEXEC, 0744); +target_fd = open(target_fname, +O_RDWR | O_CREAT | O_TRUNC | Please align O_RDWR to align with the first argument (target_fname). Thanks. I will fix it. K. Y ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: Anybody working on line6?
On Tue, Jun 24, 2014 at 10:12:03PM +0800, Stefan Hajnoczi wrote: On Tue, Jun 24, 2014 at 9:52 PM, Greg KH gre...@linuxfoundation.org wrote: On Tue, Jun 24, 2014 at 11:54:10AM +0800, Stefan Hajnoczi wrote: On Tue, Jun 24, 2014 at 4:23 AM, Kristina Martšenko kristina.martse...@gmail.com wrote: I'm helping Greg do a bit of cleanup in the staging tree. I noticed that nobody seems to have worked towards moving line6 out of staging in over a year. Are there any plans to clean it up and move it out soon? Because otherwise we're going to have to delete the driver, as we don't want staging to become a permanent place for unfinished code. I do not have time to resume the work and am moving to new hardware in a few weeks. Do you know of anyone else using this hardware on Linux? Markus Grabner is the maintainer and still the best person to involve. People have popped up from time to time on the line6linux-devel mailing list but no one has stuck around: http://sourceforge.net/p/line6linux/mailman/line6linux-devel/ It's a shame since the driver is in a pretty good position for further cleanups and a move out of staging/. There's not that much left to do but the rate of progress at the moment is zero. If the code is almost ready to move, what do you think is left to do? 1. Run checkpatch.pl again to make sure there are no coding style issues remaining. 2. Audit remaining sysfs attributes and drop them where possible. I killed off the easy ones which just sent MIDI messages that userspace can send just as easily. Now only the weird ones are left: drivers/staging/line6/pcm.c:static DEVICE_ATTR_RW(impulse_volume); drivers/staging/line6/pcm.c:static DEVICE_ATTR_RW(impulse_period); drivers/staging/line6/pod.c:static DEVICE_ATTR_RO(device_id); drivers/staging/line6/pod.c:static DEVICE_ATTR_RO(firmware_version); drivers/staging/line6/pod.c:static DEVICE_ATTR_RO(serial_number); drivers/staging/line6/toneport.c:static DEVICE_ATTR(led_red, S_IWUSR | S_IRUGO, line6_nop_read, drivers/staging/line6/toneport.c:static DEVICE_ATTR(led_green, S_IWUSR | S_IRUGO, line6_nop_read, Are sysfs attributes appropriate userspace ABIs for these parameters? Should ioctls be used instead? Are these even needed at all? Do people care about them? serial number and firmware version seems trivial and not needed. leds should use the led kernel interface instead. device_id is not needed as that's in the sysfs name already. So that leaves impulse_volume and period. What are these? Are there any MIDI interfaces that use them? thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: ACPI Support for HP Pavillion laptops
On Wed, Jun 25, 2014 at 08:19:52AM +0530, Chetal Patil wrote: Hi, I recently joined the Linux Driver Development mailing list and would like to contribute to the Linux Driver Project. Specifically, I would like to contribute by working on ACPI Support for HP Pavillion laptops (Referred list at http://www.linuxdriverproject.org/mediawiki/index.php/Drivers_Needed). Regarding this, I humbly seek answer to the following questions. 1). Is anyone currently working on this project? 2). If any kind of contribution is still needed, can anyone please provide me details? Do you have the hardware here, and have any chance to get the specs for what the hardware provides? And why would ACPI support for a specific laptop be needed? Linux supports ACPI quite well these days, are you sure this isn't already done? thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 1/3] staging: rtl8188eu: core: Remove unnecessary conditionals
On Sun, Jun 22, 2014 at 01:01:50PM +0200, Thomas Vegas wrote: The variable 'pxmitbuf' is already set to NULL when entering the function. We can remove the first conditional. When _rtw_queue_empty() returns false, 'pxmitbuf' if not NULL. We can merge the second and third conditional. Signed-off-by: Thomas Vegas tho...@grouk.net --- drivers/staging/rtl8188eu/core/rtw_xmit.c | 7 +-- 1 file changed, 1 insertion(+), 6 deletions(-) Due to changes by others in this file, your patches do not apply anymore, sorry. greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH 2/6] Staging: bcm: Indentation fixes
On Mon, Jun 23, 2014 at 01:41:05PM -0700, j...@joshtriplett.org wrote: On Mon, Jun 23, 2014 at 11:42:29AM +0200, Matthias Beyer wrote: This patch fixes some indentation errors, where multi-line statements where not indented. Signed-off-by: Matthias Beyer m...@beyermatthias.de This patch also fixes some whitespace issues, such as a lack of space before '/', which should probably go into the previous patch. Yeah, can you please redo this whole series based on the comments here? thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH] staging: winbond: remove driver
On Mon, Jun 23, 2014 at 06:41:29PM +0300, Kristina Martšenko wrote: The driver hasn't been cleaned up and nobody is working to do so, so remove it. Signed-off-by: Kristina Martšenko kristina.martse...@gmail.com Cc: Pavel Machek pa...@ucw.cz This patch didn't apply to my tree for some odd reason, can you please refresh it and resend? thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH] staging: wlan-ng/hfa384x_usb.c: add blank line after declarations
On Thu, Jun 26, 2014 at 10:43:55PM +0800, Cheng-Wei Lee wrote: This patch fixes the following checkpatch.pl issues in hfa384x_usb.c: WARNING: Missing a blank line after declarations Signed-off-by: Quentin Lee lee.rhaps...@gmail.com --- drivers/staging/wlan-ng/hfa384x_usb.c |1 + 1 file changed, 1 insertion(+) diff --git a/drivers/staging/wlan-ng/hfa384x_usb.c b/drivers/staging/wlan-ng/hfa384x_usb.c index 98343ff7..07cee56 100644 --- a/drivers/staging/wlan-ng/hfa384x_usb.c +++ b/drivers/staging/wlan-ng/hfa384x_usb.c @@ -3705,6 +3705,7 @@ static void hfa384x_usbout_callback(struct urb *urb) case -EPIPE: { hfa384x_t *hw = wlandev-priv; + netdev_warn(hw-wlandev-netdev, %s tx pipe stalled: requesting reset\n, wlandev-netdev-name); -- 1.7.9.5 You have sent a bunch of patches, and no version information as to which ones to apply and which ones superseed others. So I've deleted them all from my inbox, can you please resend the proper ones that you wish to have applied? thanks, greg k-h ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel