tree f7c6a8751cffbc5532dd45edc847fac808b6f842
parent 84e9cd6b5c42d021cc0a2dac7d6e49e9d9dfa037
author Nicky Chorley <ndchorley@gmail.com> 1414304464 +0000
committer Greg Kroah-Hartman <gregkh@linuxfoundation.org> 1414575654 +0800

Staging: ft1000: ft1000-pcmcia: Fix whitespace issues

This patch fixes the following errors and warnings
identified by checkpatch.pl:

WARNING: please, no spaces at the start of a line
814: FILE: ft1000_hw.c:814:
    tempword = ft1000_read_reg(dev, FT1000_REG_DOORBELL);$

WARNING: please, no spaces at the start of a line
815: FILE: ft1000_hw.c:815:
    i=0;$

ERROR: spaces required around that '=' (ctx:VxV)
815: FILE: ft1000_hw.c:815:
    i=0;

WARNING: please, no spaces at the start of a line
816: FILE: ft1000_hw.c:816:
    while (tempword & FT1000_DB_DPRAM_TX) {$

ERROR: code indent should use tabs where possible
817: FILE: ft1000_hw.c:817:
        mdelay(10);$

WARNING: please, no spaces at the start of a line
817: FILE: ft1000_hw.c:817:
        mdelay(10);$

ERROR: code indent should use tabs where possible
818: FILE: ft1000_hw.c:818:
        i++;$

WARNING: please, no spaces at the start of a line
818: FILE: ft1000_hw.c:818:
        i++;$

ERROR: code indent should use tabs where possible
819: FILE: ft1000_hw.c:819:
        if (i==10) {$

WARNING: please, no spaces at the start of a line
819: FILE: ft1000_hw.c:819:
        if (i==10) {$

WARNING: suspect code indent for conditional statements (8, 12)
819: FILE: ft1000_hw.c:819:
        if (i==10) {
            spin_unlock_irqrestore(&info->dpram_lock, flags);

ERROR: spaces required around that '==' (ctx:VxV)
819: FILE: ft1000_hw.c:819:
        if (i==10) {

ERROR: code indent should use tabs where possible
820: FILE: ft1000_hw.c:820:
            spin_unlock_irqrestore(&info->dpram_lock, flags);$

WARNING: please, no spaces at the start of a line
820: FILE: ft1000_hw.c:820:
            spin_unlock_irqrestore(&info->dpram_lock, flags);$

ERROR: code indent should use tabs where possible
821: FILE: ft1000_hw.c:821:
            return;$

WARNING: please, no spaces at the start of a line
821: FILE: ft1000_hw.c:821:
            return;$

ERROR: code indent should use tabs where possible
822: FILE: ft1000_hw.c:822:
        }$

WARNING: please, no spaces at the start of a line
822: FILE: ft1000_hw.c:822:
        }$

ERROR: code indent should use tabs where possible
823: FILE: ft1000_hw.c:823:
        tempword = ft1000_read_reg(dev, FT1000_REG_DOORBELL);$

WARNING: please, no spaces at the start of a line
823: FILE: ft1000_hw.c:823:
        tempword = ft1000_read_reg(dev, FT1000_REG_DOORBELL);$

WARNING: please, no spaces at the start of a line
824: FILE: ft1000_hw.c:824:
    }$

Signed-off-by: Nicky Chorley <ndchorley@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
