From patchwork Thu Jul 8 08:34:49 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karl Hiramoto X-Patchwork-Id: 58229 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id D1A69B6F05 for ; Thu, 8 Jul 2010 18:35:18 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755200Ab0GHIfO (ORCPT ); Thu, 8 Jul 2010 04:35:14 -0400 Received: from caiajhbdcbbj.dreamhost.com ([208.97.132.119]:57484 "EHLO homiemail-a36.g.dreamhost.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755143Ab0GHIfL (ORCPT ); Thu, 8 Jul 2010 04:35:11 -0400 Received: from homiemail-a36.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a36.g.dreamhost.com (Postfix) with ESMTP id D92E426320; Thu, 8 Jul 2010 01:35:10 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=hiramoto.org; h=from:to:cc :subject:date:message-id:in-reply-to:references; q=dns; s= hiramoto.org; b=u0MNTp3Opd6eiZ58des1ju1NBERIP+gPzJZ+OH3SWybeKJ0x ZUoo+SjAHNyDd9HzJ9bb2Pj8kdEqzLXLvNqRaQL6aRXBEOI0jil9G1yRdsjuzbYH yZRxzBo+56Za5lbpMD3v7OamqaCFunQlnIZDDTM6Gg8uLi6bkmLYbbF2C0s= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=hiramoto.org; h=from:to:cc :subject:date:message-id:in-reply-to:references; s=hiramoto.org; bh=e5GFg7/HCHGq1U6s8Py031ooDEM=; b=WpSvLVzidB3w11vPRRucBCadbaTx ReqZs2smMVRGATXDIRD/cHKioEQRpVysK4qpS69GHfVXT1MMUWVotSgN3g97/Q0C ncyuZ4UqDP56KfeGt5iYBiifLZdRWuf/V5FWNiw2ZnjfsMBykIOFFhJTFEUlekzd Ncf5uL5hG/0rRLE= Received: from karl-d820.zoop.org (88.Red-79-146-230.dynamicIP.rima-tde.net [79.146.230.88]) (Authenticated sender: karl@hiramoto.org) by homiemail-a36.g.dreamhost.com (Postfix) with ESMTPA id 234FB26314; Thu, 8 Jul 2010 01:35:07 -0700 (PDT) From: Karl Hiramoto To: linux-atm-general@lists.sourceforge.net, netdev@vger.kernel.org, chas@cmf.nrl.navy.mil, davem@davemloft.net Cc: Karl Hiramoto Subject: [PATCH v4 3/9] atm/adummy: add syfs DEVICE_ATTR to change signal Date: Thu, 8 Jul 2010 10:34:49 +0200 Message-Id: <1278578095-25324-4-git-send-email-karl@hiramoto.org> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1278578095-25324-1-git-send-email-karl@hiramoto.org> References: <1278578095-25324-1-git-send-email-karl@hiramoto.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Karl Hiramoto --- drivers/atm/adummy.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 39 insertions(+), 0 deletions(-) diff --git a/drivers/atm/adummy.c b/drivers/atm/adummy.c index 6d44f07..46b9476 100644 --- a/drivers/atm/adummy.c +++ b/drivers/atm/adummy.c @@ -40,6 +40,42 @@ struct adummy_dev { static LIST_HEAD(adummy_devs); +static ssize_t __set_signal(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) +{ + struct atm_dev *atm_dev = container_of(dev, struct atm_dev, class_dev); + int signal; + + if (sscanf(buf, "%d", &signal) == 1) { + + if (signal < ATM_PHY_SIG_LOST || signal > ATM_PHY_SIG_FOUND) + signal = ATM_PHY_SIG_UNKNOWN; + + atm_dev_signal_change(atm_dev, signal); + return 1; + } + return -EINVAL; +} + +static ssize_t __show_signal(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct atm_dev *atm_dev = container_of(dev, struct atm_dev, class_dev); + return sprintf(buf, "%d\n", atm_dev->signal); +} +static DEVICE_ATTR(signal, 0644, __show_signal, __set_signal); + +static struct attribute *adummy_attrs[] = { + &dev_attr_signal.attr, + NULL +}; + +static struct attribute_group adummy_group_attrs = { + .name = NULL, /* We want them in dev's root folder */ + .attrs = adummy_attrs +}; + static int __init adummy_start(struct atm_dev *dev) { @@ -128,6 +164,9 @@ static int __init adummy_init(void) adummy_dev->atm_dev = atm_dev; atm_dev->dev_data = adummy_dev; + if (sysfs_create_group(&atm_dev->class_dev.kobj, &adummy_group_attrs)) + dev_err(&atm_dev->class_dev, "Could not register attrs for adummy\n"); + if (adummy_start(atm_dev)) { printk(KERN_ERR DEV_LABEL ": adummy_start() failed\n"); err = -ENODEV;