Received: by 10.213.65.68 with SMTP id h4csp217512imn; Fri, 16 Mar 2018 00:20:45 -0700 (PDT) X-Google-Smtp-Source: AG47ELsLRYjxqiDkUSRRHX5tctUc1zWuo41cYiRPsMRxPjvTbw8x5zdKF1pOqOlY2cHVhzKVShMO X-Received: by 10.99.172.10 with SMTP id v10mr647637pge.341.1521184845083; Fri, 16 Mar 2018 00:20:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521184845; cv=none; d=google.com; s=arc-20160816; b=dCFH+CoKpu98K4igU0YPIVlccZQurVUW9DxX8NX4eNSyszpPwLfNWf0H+QRC8qHcDH VZ14wYaf3DVwMPcj+83xT6ZkBBiZvolJ+1Zn1Wso80cMNm2nH18ze6pVVwBr2xImyOPs l2xO/YDgv3gVj1Q0UWbr7WKFIdFwfKMBpcMu8kJ/kkwYjHVHP238BYzy5Sy0id2DjnY3 fc8gtJGNrUQ9wljmM+OFPxOGhdMqVyg6cGZEF3qhXNKp06wbpZUreXzZ6vY0/2JX54Ph r+HyUB/qRYoAdX6A/VSmy9OUm8ebPK5GAEQKMeMivfncHKxvipvNf5MqRProdWf4A3xX 28yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:arc-authentication-results; bh=BpLj5HCGAYeKPCyM5ofAQRtG7yPWH3qrWp9+J35uKMQ=; b=JB/kpc0jwcM3vv207U7YXRCm8M+sK9cuvjZkwkMN7z/92kV6JFm3KlHlXGjpKjx1JY qCfxNJvPF/s1qGHMr9KTNtdyhVY7javxFxPKa/omh/wOA0XAx6w8nwKU/pW7X7my1NcO bZdKKa6O2PeYWN9E5E8kfhNYEK6R2gzXY75hdWtes8dP1rcnL4oqmcIWWi1GUfTsGiIh Darl8XqhbodefvlRUhdcEKjsG1+bMDIdEubYSvE2liQA1CelHiHYyaYpXwE4r32xIvWY iMI78WkikN1Bgf7Zpd0suV2AG2zQpwIXf0KocMCkncLAr++5CbLXRCsoSH01z2lm0gEf V3Kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@analog.onmicrosoft.com header.s=selector1-analog-com header.b=XSfu6GH3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j8-v6si1056813pli.9.2018.03.16.00.20.30; Fri, 16 Mar 2018 00:20:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@analog.onmicrosoft.com header.s=selector1-analog-com header.b=XSfu6GH3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753264AbeCPHSS (ORCPT + 99 others); Fri, 16 Mar 2018 03:18:18 -0400 Received: from mail-cys01nam02on0078.outbound.protection.outlook.com ([104.47.37.78]:37088 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753155AbeCPHRp (ORCPT ); Fri, 16 Mar 2018 03:17:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector1-analog-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=BpLj5HCGAYeKPCyM5ofAQRtG7yPWH3qrWp9+J35uKMQ=; b=XSfu6GH3//2AO5cLzhAY8CFof3QLjHpK3im2eqGfu/LIN8npY/PzSLNXTTFzK9ZsvsKz8E393uQx5tgZqvGy4xvW5euoWzSwwq6Eugs5PcEvSdfDBReZEcP8cRGS9GPgPjlWtSo9SD8hVvQevibBNTKKy3qQdRjSCMfHkIe81FU= Received: from DM5PR03CA0034.namprd03.prod.outlook.com (2603:10b6:4:3b::23) by BY1PR03MB1482.namprd03.prod.outlook.com (2a01:111:e400:5257::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.588.14; Fri, 16 Mar 2018 07:17:42 +0000 Received: from BY2FFO11OLC014.protection.gbl (2a01:111:f400:7c0c::124) by DM5PR03CA0034.outlook.office365.com (2603:10b6:4:3b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.588.14 via Frontend Transport; Fri, 16 Mar 2018 07:17:42 +0000 Authentication-Results: spf=pass (sender IP is 137.71.25.57) smtp.mailfrom=analog.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=bestguesspass action=none header.from=analog.com; Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta4.analog.com; Received: from nwd2mta4.analog.com (137.71.25.57) by BY2FFO11OLC014.mail.protection.outlook.com (10.1.15.48) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.527.18 via Frontend Transport; Fri, 16 Mar 2018 07:17:42 +0000 Received: from NWD2HUBCAS8.ad.analog.com (nwd2hubcas8.ad.analog.com [10.64.69.108]) by nwd2mta4.analog.com (8.13.8/8.13.8) with ESMTP id w2G7He2t018924 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK) for ; Fri, 16 Mar 2018 00:17:40 -0700 Received: from zeus.spd.analog.com (10.64.82.11) by NWD2HUBCAS8.ad.analog.com (10.64.69.108) with Microsoft SMTP Server id 14.3.301.0; Fri, 16 Mar 2018 03:17:40 -0400 Received: from aaron-OptiPlex-9010.ad.analog.com ([10.99.24.134]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id w2G7HHu3022199; Fri, 16 Mar 2018 03:17:39 -0400 From: Aaron Wu To: CC: Subject: [Blackfin removal] [PATCH 16/28] irda: Remove Blackfin IRDA support Date: Fri, 16 Mar 2018 15:08:14 +0800 Message-ID: <1521184106-24475-14-git-send-email-aaron.wu@analog.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1521184106-24475-1-git-send-email-aaron.wu@analog.com> References: <1521184106-24475-1-git-send-email-aaron.wu@analog.com> MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(396003)(376002)(39380400002)(39860400002)(346002)(2980300002)(438002)(199004)(189003)(4326008)(6916009)(8936002)(106466001)(246002)(8676002)(2906002)(47776003)(48376002)(50466002)(50226002)(5660300001)(6306002)(5890100001)(72206003)(107886003)(186003)(26005)(77096007)(305945005)(426003)(356003)(7636002)(6666003)(966005)(478600001)(2351001)(336012)(16586007)(36756003)(51416003)(86362001)(316002)(106002)(7696005)(59450400001)(76176011)(2950100002);DIR:OUT;SFP:1101;SCL:1;SRVR:BY1PR03MB1482;H:nwd2mta4.analog.com;FPR:;SPF:Pass;PTR:nwd2mail11.analog.com;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC014;1:neFSN9GK0fDb3W+fTBqv7b7nVQJ4PSPsZV7jh2baawm57r97x3EFYqIijkcXkxehL/T5uLoU8KEcONFGropNYHYTCXkM1k2gn4SpufIn1yffQj+0qKSNITSddfHk7wvf X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 78ffd802-1201-4fe9-000c-08d58b0e0211 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(4608076)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060);SRVR:BY1PR03MB1482; X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1482;3:DItHST0W3gJeE6Mhg3khClSHCV8QnexiBhSfNRmolzCllHOZIGsLNbrrvHme4m2xQifjATe7Hl7oupcRo2FNSp8kqo02PX8J3JlIeSeeGpvn9zCtsVdBd3XmlL4Y9pihxPGugXcHV7A630FBSOHjQMmXLN4vUDGPv+KGT+F7vac1tf7HyJ7a6e6UeoQTcNoGIWzBQ9ozbNK3tlpNRrKkYBm7yuPt6szAi+kg0mqm6sqBqqtSMKn3UD5+o9dIMGsfB9s/QyyjXhONAT32bCv2axqWYB5Rz8yi4QMLOXA5br1v7dIWuSMwNHhhRdlJxndLsercx/m1WuKVzwvcn0erFQ==;25:x5FWG1vVl+wshhcVI63rjfgVHnqMhZxGXFJU38se8QRO9H7j+d3Sgj4duQoOrMeuQ5DcSe0LFKlPT4hmaUa2tfQfVvtIoDhP2Eh9ZfFClU6l7CCigGLdf2/rUNWkfzDDN7E9V0P2Kv/Cwfm4Q5jGTJDTt0+j/0MaTI/CkV9UO3QxoIQmzAsu4t5O9uda4j81kE0Jws2DcTr8c98SF0qeQobF28n0YWqu4UM82pc32+x0cTqZk4D9x0s5jadTK74yyvJi31bNxld8sP2GTl95G0Ch+aGkB3uW14yZdky8RwjfscT6flKjZL7vwohbvmAUaBthkW70FfIMXgTZBfXaBQ==;31:0Lvt58zURQGT4ieriLqi8U7XyD9+PMxjiuwyIQ13sFR3W4B8bpT+U0gHck8TCSJFddMQOE06oXIx4JREVmfXn+9D9CNJp6+UNvM8bVPJoPW7BH9qIIDSkildWIWI8yBj6L1ZBO+o5TZXtJ8slS3WdJ2/qhERYA8ohXgEFvwVZNVCthbHBDU96ff3vhbFEzDCvqxVkYtuRydYaammyIDmorz49pkocWykvqVCPKs2Vng= X-MS-TrafficTypeDiagnostic: BY1PR03MB1482: X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1482;20:+cRCAkFCCcc1eZLm1gK0fcXKzkUBBKA16uYF2oB7P8lK8LmoXLXnWNcHgfv21XR+D5YvIVWGU746Yv50Vv487w2fd81QHGfRJ5iXMn/YX3GkBLJRW316137MlyLqDZxS7d/LmShFbTByvebxWVCGyGZpC7+FoTCCPF3znzGy9nWvKK8E/NkfVg8SjeshdTJvqPRwednQkl8B6u8olNnUxBeTdCldMKDAtjW0FLIBLyFPIQXTr5vWqB12nLWA3OH+qXr1Bf9ZMBABbKkB0m4VObIu9hEhELEUQgsJddVZRKvIxT/8xG0HUxgNcr07ySTaePPfyqCOdXZHi2Kg+66eqckSiZex7y1ehgNDmz2KFBd3zGqsybRd+WGvB3RjKT7x8WzWL7L6Qz7BTzotLh9CAYwhIF75sRR3jAqF/ENePmEscx0Xie8WKpq5XKG8Pu7Uiy6IBQ7AhyjFYKWDvjPI5LfKphs0zfRliwJCZOVwSXwC62/0Sa71LiY4hlIon0g/;4:agEPCaqMZe/uDePPmeKqHhvNvjaVGfZrI7oTxpTjEBBtOuYbJn4IbSTj+J+azlpJv6+q8xMTA+WKHsjDJgWwRGumKGGk4XYwFuagG/+O2lIrAim1pM0qq2Uv2XHOjJ7jMr5JMYmfpAQ2Co6tW+RXM+fXZP4hSR8P/+Byppqqt3YDVNxpCB/0WPH+EkrCBAtLFa9YkFu+VfQjSPcRLEIZO9/xpUs+sqYzCQoWRleK0dOm8uEZXCuAhVDMds2vuomfBqeDJ8S0583IN4cKMp2oAZw4zT050j87jLG0vcpaDrkk0ctSTmZIThm9Z2MCh/ee X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(232431446821674); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231221)(944501244)(52105095)(93006095)(93004095)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011);SRVR:BY1PR03MB1482;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1482; X-Forefront-PRVS: 0613912E23 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY1PR03MB1482;23:zRutGzFMYyXvYt5oPLjNfiI8WSrYYC7u5g4+GrDkj?= =?us-ascii?Q?cEqI/j6sBgwFOX2US8l66qPgqCCgR1m240dZKmHCDX8MJEENmjyS+1Qr751B?= =?us-ascii?Q?tVLn5sDnvyiKwc2P/7TMz9Nijsv0hdrCg3XwRTxmOqNBifPPKWbqnlH1O+r1?= =?us-ascii?Q?J7QVTgU+j2bzfsR/UPrOo5GUoEHvaR6fgq/novTzE/9lFNrxKM6GCjS1k14N?= =?us-ascii?Q?1Lr/rQhcuabUYiC235Bqkuv+wsT/R3VvKCHyfCg9xIvn0NgIfr+Sn8zJwMq+?= =?us-ascii?Q?gMc4AzYaOlnzmWbmbNE5e3EgvH9G8aYcRcEac0AcLSN+EzAG1G+RZn6Ocilm?= =?us-ascii?Q?X/eVaBLEIE1uKod1OWzCWDBDVC2LcDgjqJZnEqdRPay+bYyKW2h1Ju9fOuKr?= =?us-ascii?Q?d8opIiQ4i6Z09GjrUyvaSpM6LMC8NbqxVxnB+nhnZKdMzJYF1JjiG/y0sxsZ?= =?us-ascii?Q?PodtQK6myc1K8V6e4pbDevQfm69lQbbxfUP9FzzCrJVlWdZAepoTMJ1uhVUF?= =?us-ascii?Q?/dS9eJiQjNCKq+9/jzuHlptXKtCsyOWzkmQDTkRX0iyBGdln4eavIP3Y07zv?= =?us-ascii?Q?WSqR40uJa9Dvj8E/sBcf6LxCwFoJnS0I8DcDU7dZRqRhpxbxbqn9f70WnxKF?= =?us-ascii?Q?e49E/MrhLYYZ5//UrMvWFVU/eQvxoP7X+b1VH+fkipOa8scI4bk9gp6XTe6H?= =?us-ascii?Q?ANEyr+njyapObJCSmqQcPNfaRiNoUQVrR8V+KnaeCbrYMk/CtlSXFYzjtYt1?= =?us-ascii?Q?BLGtvnBmxQXmAZnRyozFWT4BD+g4rP2j3mbqgUcxrudD3VG6jHnjd/reV8ZZ?= =?us-ascii?Q?hp5Me56zCGEZdQ05ypTJZ4e7KGVVq3jmvAi4Wue961Ris5JjjU+Ip0ZCClKs?= =?us-ascii?Q?sUCSyGU6BlcgMAvcQJawmHbjgzuFP7z1z+mELGXN9FXBSwJ1Xc/ogo9dBl1q?= =?us-ascii?Q?ecIG+384W4cXHGrQs3nzVNH7j98sLVD30Nk0M3Q+tp2SntfujUl1rSRAI7EF?= =?us-ascii?Q?6yDD+GOlANRxAFlxmFa6aJfMAOFotD1ObUivWxDHDPguXYmhj5fwitUBZIVt?= =?us-ascii?Q?aLxsRDe7vS0qV1RTrvOCoLwDVMR?= X-Microsoft-Antispam-Message-Info: Zd3sgV6rcBwx5JIyanCRWAG5X8LTyaJWu7sbGK8sE6be9c106+hIgIH5rY+eM+6M0UZTSISBp24VrH0StmL+4kFtEjmGMqAazCzRBUZnEHus7fH+AlaIPvyDOTfoQvuM8NVa1cOeebOPCEzVxttgCC1T4JsBilW/ZzJBjdBf11CLW6iiH0eafuXdy58Mp7SI X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1482;6:5TfUaqZQePbtiXTSHAnFKtWdBm4xF1djpJaN77TUsKxz5P8HjxC6mp70EJE1Hv8NY6GcmHvLHLbajWVw2B5snF6x+d/TGqm/zA/w4ctRqPDayuWFX/U+NoQcs5naDgEiFq6BQ7L6wcQKeQfKE4dnPWouvcOQuq0ffqt1FdmimKnTBOEDHJE6kii69C54XOyjSnHvTGaGyBUZFYi644UDzNkfp7O+Rbt/mzfa99ztBXPwd1Njp0zcRcDF6sB0axEIIqjO8TMcGuSmn8FGFiUApOqxYQW6fO/8XCjTopAZPUI2cM0QVnvlfBHT6LG5OBlkL/dWuAfpi/FTJjmF1n5nigKlTdck9+pb1E1AwW6Vdt8=;5:t2GPsyb2jikf1btWG1w2HNH9yPA/Uus29tYFN1yawy+KiwIUgawKD045pOEaSYru+3zWoCxajRmm3hr0CoZE74vaXAAb0jkx29m5+3uGkDatkJUdtjN+ToB+pOuJusBcQA6SDK2YckrQQhpmzvyuPwpLzdBaHEIkLogN7mpjtb0=;24:fBFGvFaPbFEvvAuAozps+GfsgeEXV10PsUp/un3pngQMuAVbJ5mdoO+dC9e3S7I2FH8cmobsTwR33MMZz9dJ0OK7BL2AkjqudngJFeJwqWQ=;7:pjISe7xlBGsjiFtcSG7xQsy0vDjZT9MIcShkIie1yO8sFNiQ9XBIHuLiFXK5m65DYsSnhG89wGu0qUxsl4JeAkXmi4t68HkepKsFndfS0F8zOGnVRzKapyE0+N3jTBDrNe//OyVUniI57Fa4XW94dxygw/H3ooUsmAMiadJU7XN9HQkBydNCm1LBs1JKIDGfZoKo56cGBvwUz2mZ7Sw7i44BkmZuH/vaAzMHwlByd6hueWVV9Cn7Q+HgyT9uDdzC SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2018 07:17:42.0144 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 78ffd802-1201-4fe9-000c-08d58b0e0211 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta4.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1482 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Aaron Wu Remove Blackfin IRDA support --- drivers/staging/irda/drivers/Kconfig | 45 -- drivers/staging/irda/drivers/Makefile | 1 - drivers/staging/irda/drivers/bfin_sir.c | 819 -------------------------------- drivers/staging/irda/drivers/bfin_sir.h | 93 ---- 4 files changed, 958 deletions(-) delete mode 100644 drivers/staging/irda/drivers/bfin_sir.c delete mode 100644 drivers/staging/irda/drivers/bfin_sir.h diff --git a/drivers/staging/irda/drivers/Kconfig b/drivers/staging/irda/drivers/Kconfig index e070e12..71ac76c 100644 --- a/drivers/staging/irda/drivers/Kconfig +++ b/drivers/staging/irda/drivers/Kconfig @@ -17,51 +17,6 @@ config IRTTY_SIR If unsure, say Y. -config BFIN_SIR - tristate "Blackfin SIR on UART" - depends on BLACKFIN && IRDA - default n - help - Say Y here if your want to enable SIR function on Blackfin UART - devices. - - To activate this driver you can start irattach like: - "irattach irda0 -s" - - Saying M, it will be built as a module named bfin_sir. - - Note that you need to turn off one of the serial drivers for SIR - to use that UART. - -config BFIN_SIR0 - bool "Blackfin SIR on UART0" - depends on BFIN_SIR && !SERIAL_BFIN_UART0 - -config BFIN_SIR1 - bool "Blackfin SIR on UART1" - depends on BFIN_SIR && !SERIAL_BFIN_UART1 && (!BF531 && !BF532 && !BF533 && !BF561) - -config BFIN_SIR2 - bool "Blackfin SIR on UART2" - depends on BFIN_SIR && !SERIAL_BFIN_UART2 && (BF54x || BF538 || BF539) - -config BFIN_SIR3 - bool "Blackfin SIR on UART3" - depends on BFIN_SIR && !SERIAL_BFIN_UART3 && (BF54x) - -choice - prompt "SIR Mode" - depends on BFIN_SIR - default SIR_BFIN_DMA - -config SIR_BFIN_DMA - bool "DMA mode" - depends on !DMA_UNCACHED_NONE - -config SIR_BFIN_PIO - bool "PIO mode" -endchoice - config SH_SIR tristate "SuperH SIR on UART" depends on IRDA && SUPERH && \ diff --git a/drivers/staging/irda/drivers/Makefile b/drivers/staging/irda/drivers/Makefile index e2901b1..d5307ed 100644 --- a/drivers/staging/irda/drivers/Makefile +++ b/drivers/staging/irda/drivers/Makefile @@ -23,7 +23,6 @@ obj-$(CONFIG_MCS_FIR) += mcs7780.o obj-$(CONFIG_AU1000_FIR) += au1k_ir.o # SIR drivers obj-$(CONFIG_IRTTY_SIR) += irtty-sir.o sir-dev.o -obj-$(CONFIG_BFIN_SIR) += bfin_sir.o obj-$(CONFIG_SH_SIR) += sh_sir.o # dongle drivers for SIR drivers obj-$(CONFIG_ESI_DONGLE) += esi-sir.o diff --git a/drivers/staging/irda/drivers/bfin_sir.c b/drivers/staging/irda/drivers/bfin_sir.c deleted file mode 100644 index 59e409b..0000000 --- a/drivers/staging/irda/drivers/bfin_sir.c +++ /dev/null @@ -1,819 +0,0 @@ -/* - * Blackfin Infra-red Driver - * - * Copyright 2006-2009 Analog Devices Inc. - * - * Enter bugs at http://blackfin.uclinux.org/ - * - * Licensed under the GPL-2 or later. - * - */ -#include "bfin_sir.h" - -#ifdef CONFIG_SIR_BFIN_DMA -#define DMA_SIR_RX_XCNT 10 -#define DMA_SIR_RX_YCNT (PAGE_SIZE / DMA_SIR_RX_XCNT) -#define DMA_SIR_RX_FLUSH_JIFS (HZ * 4 / 250) -#endif - -#if ANOMALY_05000447 -static int max_rate = 57600; -#else -static int max_rate = 115200; -#endif - -static void bfin_sir_rx_dma_timeout(struct timer_list *t); - -static void turnaround_delay(int mtt) -{ - long ticks; - - mtt = mtt < 10000 ? 10000 : mtt; - ticks = 1 + mtt / (USEC_PER_SEC / HZ); - schedule_timeout_uninterruptible(ticks); -} - -static void bfin_sir_init_ports(struct bfin_sir_port *sp, struct platform_device *pdev) -{ - int i; - struct resource *res; - - for (i = 0; i < pdev->num_resources; i++) { - res = &pdev->resource[i]; - switch (res->flags) { - case IORESOURCE_MEM: - sp->membase = (void __iomem *)res->start; - break; - case IORESOURCE_IRQ: - sp->irq = res->start; - break; - case IORESOURCE_DMA: - sp->rx_dma_channel = res->start; - sp->tx_dma_channel = res->end; - break; - default: - break; - } - } - - sp->clk = get_sclk(); -#ifdef CONFIG_SIR_BFIN_DMA - sp->tx_done = 1; - timer_setup(&sp->rx_dma_timer, bfin_sir_rx_dma_timeout, 0); -#endif -} - -static void bfin_sir_stop_tx(struct bfin_sir_port *port) -{ -#ifdef CONFIG_SIR_BFIN_DMA - disable_dma(port->tx_dma_channel); -#endif - - while (!(UART_GET_LSR(port) & THRE)) { - cpu_relax(); - continue; - } - - UART_CLEAR_IER(port, ETBEI); -} - -static void bfin_sir_enable_tx(struct bfin_sir_port *port) -{ - UART_SET_IER(port, ETBEI); -} - -static void bfin_sir_stop_rx(struct bfin_sir_port *port) -{ - UART_CLEAR_IER(port, ERBFI); -} - -static void bfin_sir_enable_rx(struct bfin_sir_port *port) -{ - UART_SET_IER(port, ERBFI); -} - -static int bfin_sir_set_speed(struct bfin_sir_port *port, int speed) -{ - int ret = -EINVAL; - unsigned int quot; - unsigned short val, lsr, lcr; - static int utime; - int count = 10; - - lcr = WLS(8); - - switch (speed) { - case 9600: - case 19200: - case 38400: - case 57600: - case 115200: - - /* - * IRDA is not affected by anomaly 05000230, so there is no - * need to tweak the divisor like he UART driver (which will - * slightly speed up the baud rate on us). - */ - quot = (port->clk + (8 * speed)) / (16 * speed); - - do { - udelay(utime); - lsr = UART_GET_LSR(port); - } while (!(lsr & TEMT) && count--); - - /* The useconds for 1 bits to transmit */ - utime = 1000000 / speed + 1; - - /* Clear UCEN bit to reset the UART state machine - * and control registers - */ - val = UART_GET_GCTL(port); - val &= ~UCEN; - UART_PUT_GCTL(port, val); - - /* Set DLAB in LCR to Access THR RBR IER */ - UART_SET_DLAB(port); - SSYNC(); - - UART_PUT_DLL(port, quot & 0xFF); - UART_PUT_DLH(port, (quot >> 8) & 0xFF); - SSYNC(); - - /* Clear DLAB in LCR */ - UART_CLEAR_DLAB(port); - SSYNC(); - - UART_PUT_LCR(port, lcr); - - val = UART_GET_GCTL(port); - val |= UCEN; - UART_PUT_GCTL(port, val); - - ret = 0; - break; - default: - printk(KERN_WARNING "bfin_sir: Invalid speed %d\n", speed); - break; - } - - val = UART_GET_GCTL(port); - /* If not add the 'RPOLC', we can't catch the receive interrupt. - * It's related with the HW layout and the IR transiver. - */ - val |= UMOD_IRDA | RPOLC; - UART_PUT_GCTL(port, val); - return ret; -} - -static int bfin_sir_is_receiving(struct net_device *dev) -{ - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - - if (!(UART_GET_IER(port) & ERBFI)) - return 0; - return self->rx_buff.state != OUTSIDE_FRAME; -} - -#ifdef CONFIG_SIR_BFIN_PIO -static void bfin_sir_tx_chars(struct net_device *dev) -{ - unsigned int chr; - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - - if (self->tx_buff.len != 0) { - chr = *(self->tx_buff.data); - UART_PUT_CHAR(port, chr); - self->tx_buff.data++; - self->tx_buff.len--; - } else { - self->stats.tx_packets++; - self->stats.tx_bytes += self->tx_buff.data - self->tx_buff.head; - if (self->newspeed) { - bfin_sir_set_speed(port, self->newspeed); - self->speed = self->newspeed; - self->newspeed = 0; - } - bfin_sir_stop_tx(port); - bfin_sir_enable_rx(port); - /* I'm hungry! */ - netif_wake_queue(dev); - } -} - -static void bfin_sir_rx_chars(struct net_device *dev) -{ - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - unsigned char ch; - - UART_CLEAR_LSR(port); - ch = UART_GET_CHAR(port); - async_unwrap_char(dev, &self->stats, &self->rx_buff, ch); -} - -static irqreturn_t bfin_sir_rx_int(int irq, void *dev_id) -{ - struct net_device *dev = dev_id; - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - - spin_lock(&self->lock); - while ((UART_GET_LSR(port) & DR)) - bfin_sir_rx_chars(dev); - spin_unlock(&self->lock); - - return IRQ_HANDLED; -} - -static irqreturn_t bfin_sir_tx_int(int irq, void *dev_id) -{ - struct net_device *dev = dev_id; - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - - spin_lock(&self->lock); - if (UART_GET_LSR(port) & THRE) - bfin_sir_tx_chars(dev); - spin_unlock(&self->lock); - - return IRQ_HANDLED; -} -#endif /* CONFIG_SIR_BFIN_PIO */ - -#ifdef CONFIG_SIR_BFIN_DMA -static void bfin_sir_dma_tx_chars(struct net_device *dev) -{ - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - - if (!port->tx_done) - return; - port->tx_done = 0; - - if (self->tx_buff.len == 0) { - self->stats.tx_packets++; - if (self->newspeed) { - bfin_sir_set_speed(port, self->newspeed); - self->speed = self->newspeed; - self->newspeed = 0; - } - bfin_sir_enable_rx(port); - port->tx_done = 1; - netif_wake_queue(dev); - return; - } - - blackfin_dcache_flush_range((unsigned long)(self->tx_buff.data), - (unsigned long)(self->tx_buff.data+self->tx_buff.len)); - set_dma_config(port->tx_dma_channel, - set_bfin_dma_config(DIR_READ, DMA_FLOW_STOP, - INTR_ON_BUF, DIMENSION_LINEAR, DATA_SIZE_8, - DMA_SYNC_RESTART)); - set_dma_start_addr(port->tx_dma_channel, - (unsigned long)(self->tx_buff.data)); - set_dma_x_count(port->tx_dma_channel, self->tx_buff.len); - set_dma_x_modify(port->tx_dma_channel, 1); - enable_dma(port->tx_dma_channel); -} - -static irqreturn_t bfin_sir_dma_tx_int(int irq, void *dev_id) -{ - struct net_device *dev = dev_id; - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - - spin_lock(&self->lock); - if (!(get_dma_curr_irqstat(port->tx_dma_channel) & DMA_RUN)) { - clear_dma_irqstat(port->tx_dma_channel); - bfin_sir_stop_tx(port); - - self->stats.tx_packets++; - self->stats.tx_bytes += self->tx_buff.len; - self->tx_buff.len = 0; - if (self->newspeed) { - bfin_sir_set_speed(port, self->newspeed); - self->speed = self->newspeed; - self->newspeed = 0; - } - bfin_sir_enable_rx(port); - /* I'm hungry! */ - netif_wake_queue(dev); - port->tx_done = 1; - } - spin_unlock(&self->lock); - - return IRQ_HANDLED; -} - -static void bfin_sir_dma_rx_chars(struct net_device *dev) -{ - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - int i; - - UART_CLEAR_LSR(port); - - for (i = port->rx_dma_buf.head; i < port->rx_dma_buf.tail; i++) - async_unwrap_char(dev, &self->stats, &self->rx_buff, port->rx_dma_buf.buf[i]); -} - -static void bfin_sir_rx_dma_timeout(struct timer_list *t) -{ - struct bfin_sir_port *port = from_timer(port, t, rx_dma_timer); - struct net_device *dev = port->dev; - struct bfin_sir_self *self = netdev_priv(dev); - - int x_pos, pos; - unsigned long flags; - - spin_lock_irqsave(&self->lock, flags); - x_pos = DMA_SIR_RX_XCNT - get_dma_curr_xcount(port->rx_dma_channel); - if (x_pos == DMA_SIR_RX_XCNT) - x_pos = 0; - - pos = port->rx_dma_nrows * DMA_SIR_RX_XCNT + x_pos; - - if (pos > port->rx_dma_buf.tail) { - port->rx_dma_buf.tail = pos; - bfin_sir_dma_rx_chars(dev); - port->rx_dma_buf.head = port->rx_dma_buf.tail; - } - spin_unlock_irqrestore(&self->lock, flags); -} - -static irqreturn_t bfin_sir_dma_rx_int(int irq, void *dev_id) -{ - struct net_device *dev = dev_id; - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - unsigned short irqstat; - - spin_lock(&self->lock); - - port->rx_dma_nrows++; - port->rx_dma_buf.tail = DMA_SIR_RX_XCNT * port->rx_dma_nrows; - bfin_sir_dma_rx_chars(dev); - if (port->rx_dma_nrows >= DMA_SIR_RX_YCNT) { - port->rx_dma_nrows = 0; - port->rx_dma_buf.tail = 0; - } - port->rx_dma_buf.head = port->rx_dma_buf.tail; - - irqstat = get_dma_curr_irqstat(port->rx_dma_channel); - clear_dma_irqstat(port->rx_dma_channel); - spin_unlock(&self->lock); - - mod_timer(&port->rx_dma_timer, jiffies + DMA_SIR_RX_FLUSH_JIFS); - return IRQ_HANDLED; -} -#endif /* CONFIG_SIR_BFIN_DMA */ - -static int bfin_sir_startup(struct bfin_sir_port *port, struct net_device *dev) -{ -#ifdef CONFIG_SIR_BFIN_DMA - dma_addr_t dma_handle; -#endif /* CONFIG_SIR_BFIN_DMA */ - - if (request_dma(port->rx_dma_channel, "BFIN_UART_RX") < 0) { - dev_warn(&dev->dev, "Unable to attach SIR RX DMA channel\n"); - return -EBUSY; - } - - if (request_dma(port->tx_dma_channel, "BFIN_UART_TX") < 0) { - dev_warn(&dev->dev, "Unable to attach SIR TX DMA channel\n"); - free_dma(port->rx_dma_channel); - return -EBUSY; - } - -#ifdef CONFIG_SIR_BFIN_DMA - - set_dma_callback(port->rx_dma_channel, bfin_sir_dma_rx_int, dev); - set_dma_callback(port->tx_dma_channel, bfin_sir_dma_tx_int, dev); - - port->rx_dma_buf.buf = dma_alloc_coherent(NULL, PAGE_SIZE, - &dma_handle, GFP_DMA); - port->rx_dma_buf.head = 0; - port->rx_dma_buf.tail = 0; - port->rx_dma_nrows = 0; - - set_dma_config(port->rx_dma_channel, - set_bfin_dma_config(DIR_WRITE, DMA_FLOW_AUTO, - INTR_ON_ROW, DIMENSION_2D, - DATA_SIZE_8, DMA_SYNC_RESTART)); - set_dma_x_count(port->rx_dma_channel, DMA_SIR_RX_XCNT); - set_dma_x_modify(port->rx_dma_channel, 1); - set_dma_y_count(port->rx_dma_channel, DMA_SIR_RX_YCNT); - set_dma_y_modify(port->rx_dma_channel, 1); - set_dma_start_addr(port->rx_dma_channel, (unsigned long)port->rx_dma_buf.buf); - enable_dma(port->rx_dma_channel); - - -#else - - if (request_irq(port->irq, bfin_sir_rx_int, 0, "BFIN_SIR_RX", dev)) { - dev_warn(&dev->dev, "Unable to attach SIR RX interrupt\n"); - return -EBUSY; - } - - if (request_irq(port->irq+1, bfin_sir_tx_int, 0, "BFIN_SIR_TX", dev)) { - dev_warn(&dev->dev, "Unable to attach SIR TX interrupt\n"); - free_irq(port->irq, dev); - return -EBUSY; - } -#endif - - return 0; -} - -static void bfin_sir_shutdown(struct bfin_sir_port *port, struct net_device *dev) -{ - unsigned short val; - - bfin_sir_stop_rx(port); - - val = UART_GET_GCTL(port); - val &= ~(UCEN | UMOD_MASK | RPOLC); - UART_PUT_GCTL(port, val); - -#ifdef CONFIG_SIR_BFIN_DMA - disable_dma(port->tx_dma_channel); - disable_dma(port->rx_dma_channel); - del_timer(&(port->rx_dma_timer)); - dma_free_coherent(NULL, PAGE_SIZE, port->rx_dma_buf.buf, 0); -#else - free_irq(port->irq+1, dev); - free_irq(port->irq, dev); -#endif - free_dma(port->tx_dma_channel); - free_dma(port->rx_dma_channel); -} - -#ifdef CONFIG_PM -static int bfin_sir_suspend(struct platform_device *pdev, pm_message_t state) -{ - struct bfin_sir_port *sir_port; - struct net_device *dev; - struct bfin_sir_self *self; - - sir_port = platform_get_drvdata(pdev); - if (!sir_port) - return 0; - - dev = sir_port->dev; - self = netdev_priv(dev); - if (self->open) { - flush_work(&self->work); - bfin_sir_shutdown(self->sir_port, dev); - netif_device_detach(dev); - } - - return 0; -} -static int bfin_sir_resume(struct platform_device *pdev) -{ - struct bfin_sir_port *sir_port; - struct net_device *dev; - struct bfin_sir_self *self; - struct bfin_sir_port *port; - - sir_port = platform_get_drvdata(pdev); - if (!sir_port) - return 0; - - dev = sir_port->dev; - self = netdev_priv(dev); - port = self->sir_port; - if (self->open) { - if (self->newspeed) { - self->speed = self->newspeed; - self->newspeed = 0; - } - bfin_sir_startup(port, dev); - bfin_sir_set_speed(port, 9600); - bfin_sir_enable_rx(port); - netif_device_attach(dev); - } - return 0; -} -#else -#define bfin_sir_suspend NULL -#define bfin_sir_resume NULL -#endif - -static void bfin_sir_send_work(struct work_struct *work) -{ - struct bfin_sir_self *self = container_of(work, struct bfin_sir_self, work); - struct net_device *dev = self->sir_port->dev; - struct bfin_sir_port *port = self->sir_port; - unsigned short val; - int tx_cnt = 10; - - while (bfin_sir_is_receiving(dev) && --tx_cnt) - turnaround_delay(self->mtt); - - bfin_sir_stop_rx(port); - - /* To avoid losting RX interrupt, we reset IR function before - * sending data. We also can set the speed, which will - * reset all the UART. - */ - val = UART_GET_GCTL(port); - val &= ~(UMOD_MASK | RPOLC); - UART_PUT_GCTL(port, val); - SSYNC(); - val |= UMOD_IRDA | RPOLC; - UART_PUT_GCTL(port, val); - SSYNC(); - /* bfin_sir_set_speed(port, self->speed); */ - -#ifdef CONFIG_SIR_BFIN_DMA - bfin_sir_dma_tx_chars(dev); -#endif - bfin_sir_enable_tx(port); - netif_trans_update(dev); -} - -static int bfin_sir_hard_xmit(struct sk_buff *skb, struct net_device *dev) -{ - struct bfin_sir_self *self = netdev_priv(dev); - int speed = irda_get_next_speed(skb); - - netif_stop_queue(dev); - - self->mtt = irda_get_mtt(skb); - - if (speed != self->speed && speed != -1) - self->newspeed = speed; - - self->tx_buff.data = self->tx_buff.head; - if (skb->len == 0) - self->tx_buff.len = 0; - else - self->tx_buff.len = async_wrap_skb(skb, self->tx_buff.data, self->tx_buff.truesize); - - schedule_work(&self->work); - dev_kfree_skb(skb); - - return 0; -} - -static int bfin_sir_ioctl(struct net_device *dev, struct ifreq *ifreq, int cmd) -{ - struct if_irda_req *rq = (struct if_irda_req *)ifreq; - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - int ret = 0; - - switch (cmd) { - case SIOCSBANDWIDTH: - if (capable(CAP_NET_ADMIN)) { - if (self->open) { - ret = bfin_sir_set_speed(port, rq->ifr_baudrate); - bfin_sir_enable_rx(port); - } else { - dev_warn(&dev->dev, "SIOCSBANDWIDTH: !netif_running\n"); - ret = 0; - } - } - break; - - case SIOCSMEDIABUSY: - ret = -EPERM; - if (capable(CAP_NET_ADMIN)) { - irda_device_set_media_busy(dev, TRUE); - ret = 0; - } - break; - - case SIOCGRECEIVING: - rq->ifr_receiving = bfin_sir_is_receiving(dev); - break; - - default: - ret = -EOPNOTSUPP; - break; - } - - return ret; -} - -static struct net_device_stats *bfin_sir_stats(struct net_device *dev) -{ - struct bfin_sir_self *self = netdev_priv(dev); - - return &self->stats; -} - -static int bfin_sir_open(struct net_device *dev) -{ - struct bfin_sir_self *self = netdev_priv(dev); - struct bfin_sir_port *port = self->sir_port; - int err; - - self->newspeed = 0; - self->speed = 9600; - - spin_lock_init(&self->lock); - - err = bfin_sir_startup(port, dev); - if (err) - goto err_startup; - - bfin_sir_set_speed(port, 9600); - - self->irlap = irlap_open(dev, &self->qos, DRIVER_NAME); - if (!self->irlap) { - err = -ENOMEM; - goto err_irlap; - } - - INIT_WORK(&self->work, bfin_sir_send_work); - - /* - * Now enable the interrupt then start the queue - */ - self->open = 1; - bfin_sir_enable_rx(port); - - netif_start_queue(dev); - - return 0; - -err_irlap: - self->open = 0; - bfin_sir_shutdown(port, dev); -err_startup: - return err; -} - -static int bfin_sir_stop(struct net_device *dev) -{ - struct bfin_sir_self *self = netdev_priv(dev); - - flush_work(&self->work); - bfin_sir_shutdown(self->sir_port, dev); - - if (self->rxskb) { - dev_kfree_skb(self->rxskb); - self->rxskb = NULL; - } - - /* Stop IrLAP */ - if (self->irlap) { - irlap_close(self->irlap); - self->irlap = NULL; - } - - netif_stop_queue(dev); - self->open = 0; - - return 0; -} - -static int bfin_sir_init_iobuf(iobuff_t *io, int size) -{ - io->head = kmalloc(size, GFP_KERNEL); - if (!io->head) - return -ENOMEM; - io->truesize = size; - io->in_frame = FALSE; - io->state = OUTSIDE_FRAME; - io->data = io->head; - return 0; -} - -static const struct net_device_ops bfin_sir_ndo = { - .ndo_open = bfin_sir_open, - .ndo_stop = bfin_sir_stop, - .ndo_start_xmit = bfin_sir_hard_xmit, - .ndo_do_ioctl = bfin_sir_ioctl, - .ndo_get_stats = bfin_sir_stats, -}; - -static int bfin_sir_probe(struct platform_device *pdev) -{ - struct net_device *dev; - struct bfin_sir_self *self; - unsigned int baudrate_mask; - struct bfin_sir_port *sir_port; - int err; - - if (pdev->id >= 0 && pdev->id < ARRAY_SIZE(per) && \ - per[pdev->id][3] == pdev->id) { - err = peripheral_request_list(per[pdev->id], DRIVER_NAME); - if (err) - return err; - } else { - dev_err(&pdev->dev, "Invalid pdev id, please check board file\n"); - return -ENODEV; - } - - err = -ENOMEM; - sir_port = kmalloc(sizeof(*sir_port), GFP_KERNEL); - if (!sir_port) - goto err_mem_0; - - bfin_sir_init_ports(sir_port, pdev); - - dev = alloc_irdadev(sizeof(*self)); - if (!dev) - goto err_mem_1; - - self = netdev_priv(dev); - self->dev = &pdev->dev; - self->sir_port = sir_port; - sir_port->dev = dev; - - err = bfin_sir_init_iobuf(&self->rx_buff, IRDA_SKB_MAX_MTU); - if (err) - goto err_mem_2; - err = bfin_sir_init_iobuf(&self->tx_buff, IRDA_SIR_MAX_FRAME); - if (err) - goto err_mem_3; - - dev->netdev_ops = &bfin_sir_ndo; - dev->irq = sir_port->irq; - - irda_init_max_qos_capabilies(&self->qos); - - baudrate_mask = IR_9600; - - switch (max_rate) { - case 115200: - baudrate_mask |= IR_115200; - case 57600: - baudrate_mask |= IR_57600; - case 38400: - baudrate_mask |= IR_38400; - case 19200: - baudrate_mask |= IR_19200; - case 9600: - break; - default: - dev_warn(&pdev->dev, "Invalid maximum baud rate, using 9600\n"); - } - - self->qos.baud_rate.bits &= baudrate_mask; - - self->qos.min_turn_time.bits = 1; /* 10 ms or more */ - - irda_qos_bits_to_value(&self->qos); - - err = register_netdev(dev); - - if (err) { - kfree(self->tx_buff.head); -err_mem_3: - kfree(self->rx_buff.head); -err_mem_2: - free_netdev(dev); -err_mem_1: - kfree(sir_port); -err_mem_0: - peripheral_free_list(per[pdev->id]); - } else - platform_set_drvdata(pdev, sir_port); - - return err; -} - -static int bfin_sir_remove(struct platform_device *pdev) -{ - struct bfin_sir_port *sir_port; - struct net_device *dev = NULL; - struct bfin_sir_self *self; - - sir_port = platform_get_drvdata(pdev); - if (!sir_port) - return 0; - dev = sir_port->dev; - self = netdev_priv(dev); - unregister_netdev(dev); - kfree(self->tx_buff.head); - kfree(self->rx_buff.head); - free_netdev(dev); - kfree(sir_port); - - return 0; -} - -static struct platform_driver bfin_ir_driver = { - .probe = bfin_sir_probe, - .remove = bfin_sir_remove, - .suspend = bfin_sir_suspend, - .resume = bfin_sir_resume, - .driver = { - .name = DRIVER_NAME, - }, -}; - -module_platform_driver(bfin_ir_driver); - -module_param(max_rate, int, 0); -MODULE_PARM_DESC(max_rate, "Maximum baud rate (115200, 57600, 38400, 19200, 9600)"); - -MODULE_AUTHOR("Graf Yang "); -MODULE_DESCRIPTION("Blackfin IrDA driver"); -MODULE_LICENSE("GPL"); diff --git a/drivers/staging/irda/drivers/bfin_sir.h b/drivers/staging/irda/drivers/bfin_sir.h deleted file mode 100644 index d47cf14..0000000 --- a/drivers/staging/irda/drivers/bfin_sir.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Blackfin Infra-red Driver - * - * Copyright 2006-2009 Analog Devices Inc. - * - * Enter bugs at http://blackfin.uclinux.org/ - * - * Licensed under the GPL-2 or later. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#undef DRIVER_NAME - -#ifdef CONFIG_SIR_BFIN_DMA -struct dma_rx_buf { - char *buf; - int head; - int tail; -}; -#endif - -struct bfin_sir_port { - unsigned char __iomem *membase; - unsigned int irq; - unsigned int lsr; - unsigned long clk; - struct net_device *dev; -#ifdef CONFIG_SIR_BFIN_DMA - int tx_done; - struct dma_rx_buf rx_dma_buf; - struct timer_list rx_dma_timer; - int rx_dma_nrows; -#endif - unsigned int tx_dma_channel; - unsigned int rx_dma_channel; -}; - -struct bfin_sir_port_res { - unsigned long base_addr; - int irq; - unsigned int rx_dma_channel; - unsigned int tx_dma_channel; -}; - -struct bfin_sir_self { - struct bfin_sir_port *sir_port; - spinlock_t lock; - unsigned int open; - int speed; - int newspeed; - - struct sk_buff *txskb; - struct sk_buff *rxskb; - struct net_device_stats stats; - struct device *dev; - struct irlap_cb *irlap; - struct qos_info qos; - - iobuff_t tx_buff; - iobuff_t rx_buff; - - struct work_struct work; - int mtt; -}; - -#define DRIVER_NAME "bfin_sir" - -#include - -static const unsigned short per[][4] = { - /* rx pin tx pin NULL uart_number */ - {P_UART0_RX, P_UART0_TX, 0, 0}, - {P_UART1_RX, P_UART1_TX, 0, 1}, - {P_UART2_RX, P_UART2_TX, 0, 2}, - {P_UART3_RX, P_UART3_TX, 0, 3}, -}; -- 2.7.4