From patchwork Fri May 4 18:23:17 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lee Jones X-Patchwork-Id: 8406 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id B6FB523EAB for ; Fri, 4 May 2012 18:24:03 +0000 (UTC) Received: from mail-yx0-f180.google.com (mail-yx0-f180.google.com [209.85.213.180]) by fiordland.canonical.com (Postfix) with ESMTP id 7FE68A18068 for ; Fri, 4 May 2012 18:24:03 +0000 (UTC) Received: by mail-yx0-f180.google.com with SMTP id l4so3805924yen.11 for ; Fri, 04 May 2012 11:24:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf:from:to:cc :subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=bxHCOA//06a1FNpWphTN+Xfyfz/cP1k8oaR58HM1TTA=; b=AkvJKCWqN3vgmatXBLvKSakVl6yszkQtXF28jpHZxVfKCvOlv/mgAjJi5IRYiCa7cr YOduRj9R6qsJGcziWp5V1DXq9xi3HtXVTtVA3MWLu8ILPl1iKc2pqQdUVuJxCzMTsr7o O+OHw2YXsIzax2189oSU0UJUtA25rg4rmhUJ1XOz5WevxEa59KF5yli112w1Ym0/MII4 +Imk8kz7b49AtTmvymke58UYxdtjwvPzxoxTEEG3wftNEydPEvJDCqu0TmVf+8X7ROoR iE2jGgUVCDgSJEe4/Ftoc/pNuVq+UNQWwbnEDuTTw1DPLzQ0kG9ik2gRDnGDmeMa8EYO 4eRw== Received: by 10.50.47.131 with SMTP id d3mr3681927ign.33.1336155843113; Fri, 04 May 2012 11:24:03 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.231.137.198 with SMTP id x6csp106272ibt; Fri, 4 May 2012 11:24:02 -0700 (PDT) Received: by 10.180.97.41 with SMTP id dx9mr15225902wib.9.1336155841962; Fri, 04 May 2012 11:24:01 -0700 (PDT) Received: from mail-wg0-f50.google.com (mail-wg0-f50.google.com [74.125.82.50]) by mx.google.com with ESMTPS id m48si10975900wee.2.2012.05.04.11.24.01 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 04 May 2012 11:24:01 -0700 (PDT) Received-SPF: neutral (google.com: 74.125.82.50 is neither permitted nor denied by best guess record for domain of lee.jones@linaro.org) client-ip=74.125.82.50; Authentication-Results: mx.google.com; spf=neutral (google.com: 74.125.82.50 is neither permitted nor denied by best guess record for domain of lee.jones@linaro.org) smtp.mail=lee.jones@linaro.org Received: by mail-wg0-f50.google.com with SMTP id ds12so2965025wgb.31 for ; Fri, 04 May 2012 11:24:01 -0700 (PDT) Received: by 10.180.78.164 with SMTP id c4mr15308719wix.10.1336155841463; Fri, 04 May 2012 11:24:01 -0700 (PDT) Received: from localhost.localdomain ([89.192.128.60]) by mx.google.com with ESMTPS id fn2sm17590123wib.0.2012.05.04.11.23.59 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 04 May 2012 11:24:00 -0700 (PDT) From: Lee Jones To: linux-arm-kernel@lists.infradead.org Cc: arnd@arndb.de, linus.walleij@stericsson.com, grant.likely@secretlab.ca, cjb@laptop.org, ben-linux@fluff.org, linux-i2c@vger.kernel.org, broonie@opensource.wolfsonmicro.com, sameo@linux.intel.com, Lee Jones Subject: [PATCH 07/15] drivers/power: Carry out platform_data error checking on ab8500 devices Date: Fri, 4 May 2012 19:23:17 +0100 Message-Id: <1336155805-18554-8-git-send-email-lee.jones@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1336155805-18554-1-git-send-email-lee.jones@linaro.org> References: <1336155805-18554-1-git-send-email-lee.jones@linaro.org> X-Gm-Message-State: ALoCoQkQj4zzKOK6ejOzUjm4NBfQE1ksshcii6H4lFhUlNUGxx7IOZizYI9aSvjCd0E/uKBaKk4q In their current state the ab8500 power devices explode if platform data isn't provided. This patch prevents this from happening and informs the user of what has happened. Signed-off-by: Lee Jones --- drivers/power/ab8500_btemp.c | 12 ++++++++---- drivers/power/ab8500_charger.c | 12 ++++++++---- drivers/power/ab8500_fg.c | 12 ++++++++---- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/drivers/power/ab8500_btemp.c b/drivers/power/ab8500_btemp.c index d8bb993..a2ebcb4 100644 --- a/drivers/power/ab8500_btemp.c +++ b/drivers/power/ab8500_btemp.c @@ -964,10 +964,15 @@ static int __devinit ab8500_btemp_probe(struct platform_device *pdev) { int irq, i, ret = 0; u8 val; - struct abx500_bm_plat_data *plat_data; + struct abx500_bm_plat_data *plat_data = pdev->dev.platform_data; + struct ab8500_btemp *di; + + if (!plat_data) { + dev_err(&pdev->dev, "No platform data\n"); + return -EINVAL; + } - struct ab8500_btemp *di = - kzalloc(sizeof(struct ab8500_btemp), GFP_KERNEL); + di = kzalloc(sizeof(struct ab8500_btemp), GFP_KERNEL); if (!di) return -ENOMEM; @@ -977,7 +982,6 @@ static int __devinit ab8500_btemp_probe(struct platform_device *pdev) di->gpadc = ab8500_gpadc_get("ab8500-gpadc.0"); /* get btemp specific platform data */ - plat_data = pdev->dev.platform_data; di->pdata = plat_data->btemp; if (!di->pdata) { dev_err(di->dev, "no btemp platform data supplied\n"); diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c index e2b4acc..a4e37a8 100644 --- a/drivers/power/ab8500_charger.c +++ b/drivers/power/ab8500_charger.c @@ -2534,10 +2534,15 @@ static int __devexit ab8500_charger_remove(struct platform_device *pdev) static int __devinit ab8500_charger_probe(struct platform_device *pdev) { int irq, i, charger_status, ret = 0; - struct abx500_bm_plat_data *plat_data; + struct abx500_bm_plat_data *plat_data = pdev->dev.platform_data; + struct ab8500_charger *di; - struct ab8500_charger *di = - kzalloc(sizeof(struct ab8500_charger), GFP_KERNEL); + if (!plat_data) { + dev_err(&pdev->dev, "No platform data\n"); + return -EINVAL; + } + + di = kzalloc(sizeof(struct ab8500_charger), GFP_KERNEL); if (!di) return -ENOMEM; @@ -2550,7 +2555,6 @@ static int __devinit ab8500_charger_probe(struct platform_device *pdev) spin_lock_init(&di->usb_state.usb_lock); /* get charger specific platform data */ - plat_data = pdev->dev.platform_data; di->pdata = plat_data->charger; if (!di->pdata) { diff --git a/drivers/power/ab8500_fg.c b/drivers/power/ab8500_fg.c index c22f2f0..d88bc47 100644 --- a/drivers/power/ab8500_fg.c +++ b/drivers/power/ab8500_fg.c @@ -2446,10 +2446,15 @@ static int __devinit ab8500_fg_probe(struct platform_device *pdev) { int i, irq; int ret = 0; - struct abx500_bm_plat_data *plat_data; + struct abx500_bm_plat_data *plat_data = pdev->dev.platform_data; + struct ab8500_fg *di; + + if (!plat_data) { + dev_err(&pdev->dev, "No platform data\n"); + return -EINVAL; + } - struct ab8500_fg *di = - kzalloc(sizeof(struct ab8500_fg), GFP_KERNEL); + di = kzalloc(sizeof(struct ab8500_fg), GFP_KERNEL); if (!di) return -ENOMEM; @@ -2461,7 +2466,6 @@ static int __devinit ab8500_fg_probe(struct platform_device *pdev) di->gpadc = ab8500_gpadc_get("ab8500-gpadc.0"); /* get fg specific platform data */ - plat_data = pdev->dev.platform_data; di->pdata = plat_data->fg; if (!di->pdata) { dev_err(di->dev, "no fg platform data supplied\n");